西门子s7-200时间设定读取编程实例

作者:老电工时间:2015-10-18 05:54:48

西门子s7-200时间设定读取编程实例

读实时时钟(todr)指令从硬件时钟中读当前时间和日期,并把它装载到一个8字节,起始地址为t的时间缓冲区中。写实时时钟(todw)指令将当前时间和日期写入硬件时钟,当前时钟存储在以地址t开始的8字节时间缓冲区中。

必须按照bcd码的格式编码所有的日期和时间值(例如:用16#97表示1997年)。时间缓冲区(t)的格式:t:年00~99;t+1:月01~12;t+2:日01~31;t+3:小时00~23;t+4:分钟00~59;t+5:秒00~59;t+6:0;t+7:0~7。对于星期表示法,1表示星期日,7表示星期六,0禁止星期表示法。

时间日期(tod)时钟在电源掉电或内存丢失后,初始化为下列日期和时间:日期:01--jan--90;时间:00:00:00;星期:星期日。

s7-200 cpu不会检查和核实日期与星期是否合理。

无效日期february 30(2月30日)可能被接受。

故必须确保输入的数据是正确的。不要同时在主程序和中断程序中使用todr/todw指令。如果这样做,而在执行tod指令时出现了执行tod指令的中断,则中断程序中的tod指令不会被执行。sm4.3指示了试图对时钟进行两个同时的访问(非致命错误0007)。s7-200 plc只使用年信息的后两位,不会受到世纪跨越的影响。

但是,用到年份进行计算或比较的用户程序必须考虑两位的表示方法和世纪的变化。在2096年之前可以进行闰年的正确处理。

西门子s7-200设定与读取时间的程序实例。
 

复制代码 代码示例:
organization_block main:ob1
title=程序注释
begin
network 1 // 将当前时间设定到s7-200当中
//vb100:年  vb101:月  vb102:日  vb103:时  vb104:秒  vb107:星期  
// 将当前时间移动到vb100--vb107
ld     m0.0
movb   16#09, vb100
movb   16#03, vb101
movb   16#26, vb102
movb   16#09, vb103
movb   16#30, vb104
movb   16#0, vb105
movb   16#0, vb106
movb   16#04, vb107
network 2 // 通过m0.0的一个上升沿将上一步设定的时间写入到s7-200的时钟当中。
// 当m0.0出现一次上升沿,将上面所设定的时间写入到plc当中
ld     m0.0
eu
todw   vb100
network 3 // 设定时间后,可以通过这句话实时读取plc当中的时间
// 从plc中读出当前的时间
ld     sm0.0
todr   vb110
network 4 // 将读到的结果从bcd码格式转换到整数格式。
//vw200:年  vw202:月  vb102:日  vb103:时  vb104:秒  vb107:星期 
// 将当前时间移动到vb100--vb107
ld     sm0.0
lps
bti    vb110, vw200
aeno
bcdi   vw200
lrd
bti    vb111, vw202
aeno
bcdi   vw202
lrd
bti    vb112, vw204
aeno
bcdi   vw204
lrd
bti    vb113, vw206
aeno
bcdi   vw206
lrd
bti    vb114, vw208
aeno
bcdi   vw208
lrd
bti    vb115, vw210
aeno
bcdi   vw210
lrd
bti    vb116, vw212
aeno
bcdi   vw212
lpp
bti    vb117, vw214
aeno
bcdi   vw214
end_organization_block

本站仅提供信息发布平台,文章仅代表作者个人观点。

猜你喜欢

首页 > plc > 西门子plc