2008-11-14
1.介绍:
下文介绍如何实现用中心站同步远程站的系统时间。
一个包含 S7-200 CPU 和 SINAUT MD720-3 调制解调器的远程站是通过 GPRS 连接到中心站的( 图 01 )。中心站的 SINAUT MICRO SC 与所有的配置好的远程站通信。
通过时钟同步,您可以认为 SINAUT MICRO SC 总是把 PC 的 UTC 时间传送出去。并没有自动转换到远程站的本地时区。本文提供一个功能块用于实现转换远程站的本地时间。并且描述了为实现成功同步实时时钟您必须组态的远程站的步骤。
2. 组态 SINAUT MICRO SC
通过如下步骤激活实时时钟传送:
编号 | 程序 ( 见 图 01) |
1 | 打开 SINAUT MICRO SC |
2 | 标识远程站。 |
3 | 点击 “编辑”。 |
4 | 选择“通过时钟同步进行状态监控”。 |
5 | 指定 SINAUT MICRO SC 传送时间的间隔。 ( 默认:15 分钟 ) |
6 | 点击“确定”。 |
每隔 15 分钟发送一个时间戳到远程站。
3. 配置远程站:
3.1 时间校正总览
图 02 说明整个时钟同步的过程。
图 02:转换本地时间的时钟同步
3.2 接收时钟同步报文
SINAUT MICRO SC 库中的程序块 “ WDC_RECEIVE ” ( 图. 03 ) 是用于接收时间的。 这个程序块通过接收 SINAMUT MICRO SC 发送的新报文更新 “NEWTIME” 8个字节缓冲区。这样,输出变量“ NEWTIME_RECEIVED” 在每个循环中置一。
图 03:程序块“ WDC_RECEIVE ”
时间接收缓冲区的起始地址必须用指针传送。这些可以在例程中看到时间缓冲区的地址为 &VB600 开始的地址。(表 02)。
字节 | 描述 |
VB600 | 年 (0-99) |
VB601 | 月 (1-12) |
VB602 | 日 (1-31) |
VB603 | 小时 (0-23) |
VB604 | 分钟 (0-59) |
VB605 | 秒 (0-59) |
VB607 | 保留 - 总是为 0 |
VB608 | 星期 (1-7) - 1 = 星期日 , 2 = 星期一 等等. |
3.3 调用时间转换程序块
如果 SINAUT MICRO SC 发送一个时钟报文,报文被存储到一个时钟缓冲区内。该时钟是对应于 UTC 时间,不考虑本地的时区。如果您希望使用该时钟设置 S7-200 CPU 的实时时钟,首先需要转换。可以下载的程序块“Time_Correct”( 图 04 ) 处理该转换。 您可以按如下步骤把该功能使用到您的程序中:
如下的程序块“Time_Correct”参数必须要设置:
参数 | 数据大小 | 描述 |
Correct | INT | CPU 的时间与 UTC 时间的偏差 (-12 to 12) |
Recv_Time | 8 字节 | 8 字节时钟缓冲区的起始地址,在程序块 WDC_RECEIVE 的输入参数“NEWTIME”定义的。 起始地址使用指针传递。 |
Corr_Time | 8 字节 | 8 字节时钟缓冲区的起始地址用于校正后的时间存放。起始地址使用指针传递。 |
图 04: 程序块“Time_Correct”
3.4 设置实时时钟
需要设置 CPU 的实时时钟,您必须调用程序块“SET_RTC” 并指定转换后的时间地址。 (图 05)。 您应该同样的在新时钟收到后调用“SET_RTC”。
图 05: 程序块“SET_RTC”
评论1