【plc编程实例】西门子s7-200时间设定与读取编程的例子

作者:老电工时间:2020-04-08 11:45:46

有关西门子s7-200时间设定与读取编程的例子,读实时时钟(todr)指令从硬件时钟中读当前时间和日期,写实时时钟(todw)指令将当前时间和日期写入硬件时钟。

西门子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)。(电工技术之家 www.dgjs123.com)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