添加 clock_integer 指令库
clock_integer 指令库编程应用 - 读取系统时钟
clock_integer 指令库编程应用 - 设置系统时钟
clock_integer 指令库应用例程
常问问题:
问题详细描述:
我想写入s7200 的时钟,set_rtc但是报错,把vb500重新赋值也不行,其他无调用vb500的地方,这个为啥呢??
我可以用read_rtc正确读出s7200的时间,是正确的。我把sm0.0改为m10.0一次触发,但是也是不行,触发时也是红色的,也不写s7200数据
佳答案:
系统时钟是以bcd码的格式表示的,你的指令红色说明数据格式不正确,建议使用时钟库指令,直接是十进制表示的:
clock_integer 指令库及其使用
使用 s7-200 的 read_rtc(读取实时时钟)和 set_rtc(设置实时时钟)指令时, 读取和设置的数据格式都是 bcd 码的。如果觉得不便计算、处理,可使用 clock integer 指令库。
clock_integer 指令库用于将 bcd 码格式的 s7-200 日期、时间转换为十进制整数格式,以及将十进制整数格式的日期、时间值设定为 s7-200 时钟。
注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
要使用 clock_integer 指令库,须遵循下列步骤:
取得 clock_integer 指令库文件,并添加到编程软件 step 7-micro/win 中;
按照要求编写用户程序调用 clock_integer 指令库。
添加 clock_integer 指令库
点击上面的链接下载 clock_integer 指令库到本地计算机硬盘,建议保存在 micro/win 安装目录的 lib 文件夹中。以下是一个完整路径的例子:
c:\program files\siemens\step 7-micro/win v4.0\lib
然后将指令库库手动添加到 micro/win 软件中。
成功添加指令库后,用户可以在step7 micro/win的指令树中找到‘clock_integer (v1.0)'
图1.clock_integer 库
clock_integer 指令库编程应用 - 读取系统时钟
1、调用 read_rtc_i,读取 plc 时钟 ,并将其转换为十进制整数格式 :
图 2. read_rtc_i
表 1. read_rtc_i参数
参数
数据类型
注释
en
bool
信号为‘1’时激活库指令
address
dword
起始偏移地址,转换为十进制格式的 plc 时钟被保存在以此地址为起始地址的 8 个字节中
2、分配库存储区:
调用指令 read_rtc_i 或 set_rtc_i 后,必须定义 8 位(一个字节)的 v 存储区为库存储区。
参考:分配库指令数据区
表2. 8 字节时间缓冲区的格式
address
年
address+1
月
address+2
日
address+3
小时
address+4
分钟
address+5
秒
address+6
保留
address+7
星期(1)
(1) 1 = 星期天;7 = 星期日;0 = 禁止星期
如图 2 所示,当 v50.0 为 ‘1’ 时,转换后的实时时钟被存储在 vb10 至 vb17 中。
在状态表中用户可以看到:
图3.状态表
可以看出,此时的 plc 时钟为: 2006 年 4 月 6 日,23 时 48 分 1 秒,星期四。
注意:此指令库读取的整数格式时钟数据以连续字节的形式保存,而后续的整数运算需要一个字(两个字节)长度的数据。编程时要注意这一点。
clock_integer 指令库编程应用 - 设置系统时钟
1、调用 set_rtc_i,将以十进制整数格式存储的日期时间设定为 plc 时钟
图4.set_rtc_i
参数
数据类型
注释
en
bool
信号为‘1’时激活库指令
address
dword
起始偏移地址,以此地址为起始地址的 8 个字节中,应已经存储着用户时间数据
表 3. set_rtc_i 参数
8 字节时间缓冲区的格式同表 2。
2、分配库存储区:
调用指令 read_rtc_i 或 set_rtc_i 后,必须定义 8 位(一个字节)的 v 存储区为库存储区。
参考:分配库指令数据区
clock_integer 指令库应用例程
clock_integer 指令库例子程序
注意:该例程必须使用 micro/win v4.0 sp3 或以上版本软件打开。
注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
注意:
cpu221、cpu222 没有内置的实时时钟,需要外插“时钟/电池卡”才能获得此功能。
只有 step7 micro/win v3.2+sp4 和 v4.0 版本才支持使用该指令库。
在使用 ‘set_rtc_i’ 设定 plc 时钟时,被设定的时间必须有实际意义,否则设定操作不能成功完成。例如: 不能将月份设为 13,或者将分钟设为 61 等。
address 端必须输入地址指针,如:&vb10,&vb20;或者为双字地址,如:vd100,md10,ac0等,在该地址中存有地址。
常问问题:
clock_integer 指令库和 micro/win 指令树中的读、写实时时钟指令有什么不同?
clock_integer 指令库读出或写入的 plc 时钟是以十进制整数格式存储;而读、写实时时钟指令读出或写入的 plc 时钟为 bcd 码格式。