一、时间指令简介
01时钟指令的认识
西门子S7-200SMART时钟指令分为设置时钟和读取时钟两类,通过设置时钟指令可对CPU的系统时钟进行修改而通过读取时钟指令可读取CPU的系统时钟,时钟指令分为读取和设置时钟指令与读取和设置扩展时钟指令,如图1所示。
图1:时钟指令(左侧为读取时钟指令,右侧为设置时钟指令)
①读取时钟指令:当指令EN端条件满足时读取实时时钟指令从CPU 读取当前时间和日期,并将其装载到从字节地址T 开始的 8字节时间缓冲区中。
②设置时钟指令:设置实时时钟指令通过由T 分配的 8字节时间缓冲区数据将新的时间和日期写入到CPU。
需要注意的是读取出来的值和需要设定的值均需要进行数据格式的转换才行。
02时钟指令存储区格式说明
所有日期和时间值必须采用BCD格式(BCD码通俗的说法是用16进制的形式来表示2进制数)分配(例如,16#12 代表2012年)。00至99的BCD值范围可分配范围为2000至2099的年份;时间缓冲区如图2所示。
时钟指令的管脚T就是缓冲区的起始字节地址,可以由用户自由设置(在CPU允许的V存储区范围内)。如果设置T为VB10,那么读取时钟后,“年”的信息就会保存在VB10中,“月”保存在VB11中。
03时钟库指令的认识
除了时钟指令之外,西门子官方还提供了与时钟指令功能类似的时钟库指令;时钟库指令中的T管脚需要以指针的格式进行填写,所填写的是缓冲区的起始字节地址。由于S7-200时钟指令的数据格式是BCD码,使用该库指令可以直接读取S7-200CPU时钟并以整数格式输出所读取的值。必须定义8个字节的V 存储区为库存储区。
图2:时钟库指令(上面为读取时钟库指令,下侧为设置时钟库指令)
二、时钟指令应用
接下来我们通过一个简单的应用示例来充分理解时钟库指令;要求如下:
1、风机可设定每周5天、每周7天工作制。还可以设定每周一、三、五或二、四、六工作制2、同时每天可进行最多2段开关风机运行时间设置,可供运维人员设定。3、具备手动功能(不在任何工作模式下可以手动测试)
功能实现
根据控制要求,我们首先需要读取系统时钟进行与设定时间进行比较,其次还需要在HMI上面设置不同时段的启停时间;另外还需要设定不同的工作模式,便于操作员选择不同的工作模式;
为了使各时段的启停时间更精准,可以把时分秒换算成秒的单位进行与系统时间比较。当系统时间≥设置的启动时间,同时系统时间≤设置的停止时间时,就可以输出风机运行。
程序一共有三部分,分别是工作模式设定子程序、时间换算子程序、调用时钟库指令;接着在主程序中分别调用子程序。
由于篇幅原因,以下仅展示部分程序。
图4:部分程序截图
三、总结
通过本示例的分享,相信大家已经掌握了其基本的使用。下面为大家分享关于时钟库指令的几点需要注意的:
(1)进行时钟的设定时,只需要导通一个周期即可把设定值写入。不能一直导通EN端,否则读取时钟库指令的时间将会出错。(2)调用时钟库指令时建议在EN位中使用SM0.5系统时钟进行触发。(3)时钟库指令需要使用连续的8个字节作为时间缓冲区的存储,其中缓冲区中的第6个字节为保留,并且这连续的8个字节不能和其他存储区重复使用。(4)调用时钟库指令后需要分配8个字节进行库存储区运算。且不能与程序中其他字节地址重叠。