有小伙伴使用西门子PLC仿真软件对我前段时间写的文章《西门子SCL编程实例-计算设备运行时间(2)》进行了测试,发现OB10中的代码并没有执行,他问是不是代码有问题?尤其是这条语句:
"myEquipmentData".equipment_data[0].totalRunningTime += 1;
这种"+="的写法对吗?
因为我基本不用PLC仿真软件,所以我也不确定是不是仿真软件没有循环中断的功能。但是我有PLC硬件——CPU1214FC,所以我们下载到PLC里来实际测试下吧。
首先,解释下这行代码:
"myEquipmentData".equipment_data[0].totalRunningTime += 1;
代码中的"+="是"相加并赋值"的意思。比如"C+=1;"等同于"C:=C+1;"
我最早学习这种语法是在计算机C语言中,现在西门子SCL语言也支持这种语法,能让代码更加简洁;所以这里,并没有问题;
接下来我把代码下载到CPU 1214FC中,并在线监控。
起初,我发现OB10中的值并没有像预期的那样增加。问题出在哪里呢?
打开OB10的属性,查看时间中断的开始时间为2020/1/1-0:00,判断的依据的是系统时间,如下图:
那么目前系统时间是多少呢?
转到【在线访问】-【功能】-【设置时间】,可以看到PLC当前系统时间为2012-1-19 10:06:53,如下图所示:
这个时间还没有到我们设定的时间,因此OB10并没有启动运行;
勾选【从PG/PC】获取选项,点击【应用】按钮,可将PLC的系统时间设置成PG/PC的当前时间,如下图所示:
设置好时间后,重新对PLC进行在线监控,可以看到计时功能已经启用了。
下图是系统运行了2分钟:
下图是系统运行了5分钟:
好了,关于设备运行时间的SCL代码测试就介绍到这里了。感谢提出问题的小伙伴,在这种提问-回答的过程中,其实对你我都有帮助。大家以后学习过程中有什么问题,欢迎多交流。最后推荐下我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》
感兴趣的小伙伴点击下面的链接看看哦。
新书《西门子S7-200 SMART PLC应用技术》出版了
已经买书还没有进读书群的的小伙伴记得在后台留言哦,拉你进读书群。
发表评论