触摸屏其实内部是有时间的I/O域的,不过长时间触摸屏不上电时间就会丢失,还需要重新设置,实际应用中很烦很烦,在西门子S7-200 CPU224 以上的版本才会有内部的时钟,其他型号的CPU是没有内部时钟的,所以想让触摸屏显示PLC的时钟,PLC必须是224的CPU,否则无法读取内部时钟。
其实呢读写时钟是2件事,而让触摸屏显示出PLC的时间和修改PLC的时间又是2件事,所以一共加起来是4件事,一句话两句话说不明白,咱们从头开始缕一缕!
首先从PLC这块说起……
当PLC与PC通讯正常以后可以首先对PLC时钟与PC时钟进行校正
点击PLC菜单中的“实时时钟”
然后读取PC的时间
PC的时间成功读取到,但PLC内还是没有时间的
点击设置才会把时钟设定到PLC的内部时钟里面!
这样我们就成功的给PLC一个时间了,接下来就是需要一个指令来实现对时钟的读、写!
在左侧的指令树里面有一个专门的“时钟”指令,而READ-RTC就是读取实时时钟,SET-RTC就是设置实时时钟,一共有四个指令,后面的扩展读写后面都有X,证明此指令不适合此PLC的CPU。
那么我们来看看这两个指令如何使用?
首先比较重要的是我们要知道读取的时间是存储在以“T”为起始位的连续8个字节里面,T这个符号是一个字节,比如说VB100,而不同的字节带表不同的意义,比如T=VB100:
那么 VB100=年
VB101=月
VB102=日
VB103=时
VB104=分
VB105=秒
VB106=0
并且读取到的VB100为起始位的八个字节都是BCD码,也就是说是16进制的数,如果我们想知道具体是多少需要进行一系列的转换才能够读出来,需要先把字节转换成整数,再把整数的BCD码转换成整数。
在这里我们把时钟读取到以VB110为起始位的八个字节里面,并且SM0.5每秒读取一次,确保时钟的实时性。
读取完以后把数值经过转换,以10进制字的形式输出到VW存储区。
到这一步,我们PLC部分的读取部分就完成了,这里面我们看到了最后结果输出到变量VW200里面。
接下来是对PLC的写时钟,也就是设定时钟,因为我们不能总是把PLC连接到PC上去同步时间,一旦时间错误我们可以利用触摸屏去修改时间。
这个是设置时钟的指令,在前端利用一个变量来触发设置,把以字节VB100为起始位的连续8位写入到时钟里面,需要注意的是此时的VB ……都是16进制的
触发条件为M0.0闭合就会把以VB300为起始位的连续8位字节(16进制)传送到VB100中,这段程序要写在设置程序的前面。
只要M0.0闭合一次,就会把变量VB300-VB307中的16进制数传送到VB100-VB107的时钟里,来保证时钟的成功设置。
此时我们PLC的所有准备工作就都完成了!接下来是触摸屏部分的组态!
我们要在变量管理里面新建大量的变量,其中包含了读取时钟存储到VW200-VW214,前面有提到把BCD码转换成10进制的整数,他们都是十进制的变量。
并且我们还要把设置时钟的变量VB300-VB307建立变量,并且是16进制的变量!
利用文本域、I/O域组建出时钟显示的样子
将I/O域与之前的变量相关联,这是读取到最后的十进制数值“年”
而设置时钟这部分在关联变量的同时也要注意把数据类型更改为16进制!否则无法成功写入到PLC内部。
我们要组态一个按钮触发M0.0
至此触摸屏来显示时间、设置时间的过程我们就都组态完成了,我都实验过程序完美运行。
如果大家还有什么问题可以随时在文章里评论。
我在组态画面里面还特意给你们准备了小姐姐!
读写程序全家福
最后放上读写所有程序。
联系客服