实时时钟(Time-of-day Clock)在是在CPU断电时由超级电容提供的能量保证时钟的运行。CPU上电至少24h后,超级电容充的能量可供时钟运行10天。打开在线与诊断视图,可以设置实时时钟的时间值(见图5-62)。也可以用时钟指令来读、写实时时钟。
1.日期时间的数据类型
1)数据类型time的长度为4B,取值范围为T#-24d_20h_31m_23s_648ms~T#24d_20h_31m_23s_647ms(-2147483648 ms~2147483647ms)。
2)数据结构DTL(日期时间)如表4-12所示。可以在全局数据块或块的界面区中定义DTL变量。
表4-12 数据结构DTL
2.T_CONV指令(时间转换)
T_CONV如图4-89所示。用于将数据类型Time转换为DInt,或者作反向的转换。IN和输出参数OUT均可以取数据类型Time和DInt。
图4-89 T_CONV指令
输入程序时,需要用指令名称下面的下拉式列表来选择某些实时时钟指令输入、输出参数的数据类型。
3.T_ADD指令(时间值相加)
T_ADD和T_SUB的输入参数IN1和输出参数OUT的数据类型可选DTL或Time,它们的数据类型应相同,IN2的数据类型为Time。T-ADD的输入参数IN1的值与IN2的值相加,参数OUT用来指定保存运算结果的地址。可以做下列两种数据类型的运算:Time+Time=Time或DTL+Time=DTL。
4.T_SUB指令(时间值相减)
T_SUB的输入参数IN1的值减去IN2的值,参数OUT用来指定保存运算结果的地址。可以做下列两种数据类型的运算:Time-Time=Time或DTL-Time=DTL。
5.T_DIFF指令(时间差)(www.xing528.com)
T_DIFF的输入IN1的DTL值减去IN2的DTL值,参数OUT提供数据类型为Time的差值,即DTL-DTL=Time。如果DTL或Time值无效,ENO为0,参数OUT为0。
如果IN2指定的时间大于IN1指定的时间,OUT输出的结果为负值。如果运算结果超出允许的范围,运算结果被限幅,ENO被置为0状态。
6.时钟指令
时钟指令用来设置和读取系统时钟(见图4-90)。数据类型DTL用于提供日期和时间值。
1)指令WR_SYS_T(写系统时间)将输入IN的DTL值写入PLC的实时时钟。这个时间值不包括对本地时区和夏令时的补偿。输出RET_VAL是返回的指令执行的状态信息,数据类型为Int。
图4-90 读写实时时钟指令
2)RD_SYS_T(读系统时间)将读取的PLC当前系统时间保存在输出OUT中,数据类型为DTL。这个时间值不包括对本地时区和夏令时的补偿。输出RET_VAL是返回的指令执行的状态信息。
3)RD_LOC_T(读本地时间)的输出OUT提供数据类型为DTL的PLC中的当前本地时间。为了保证读取到正确的时间,在组态CPU的属性时,应设置实时时间(日时间)的时区为北京,不设置夏令时。在读取实时时间时,应调用RD_LOC_T指令。
【例4-10】用实时时钟指令控制路灯的定时接通和断开,20:00开灯,06:00关灯。
如图4-91是梯形图程序。
首先用RD_LOC_T读取实时时间,保存在数据类型为DTL的局部变量DT5中,其中的HOUR是小时值,其变量名称为DT5.HOUR。用Q0.0来控制路灯,20:00~0:00时,上面的比较触点接通;0:00~6:00时,下面的比较触点接通。
图4-91 路灯控制梯形图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。