| 作者 | 主题 |
|---|---|
|
不欲勿施 奇侠
经验值:8882 发帖数:835 精华帖:16 |
楼主
主题:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
这是最后做出来的程序,基本没有再添加功能的地方了,分享出来是给大家使用。 新程序是全新创作的程序,子程序内除AC3用于指针外,再无全局变量。 子程序运行的所有参数由一个指针给定。 程序的所有参数由数据块进行给定。 程序添加掉站的通信任务跳过功能,定时掉站恢复功能 如果要使用modbus rtu Master2指令,替换L001子程序内的指令,并分配库存储区地址即可。 这个程序是做为标准化编程的一个对象存在的。 在标准化编程里通信是读写IO的工具。IO同样做为对象存在的。 通信不应受到工艺逻辑的影响。通信程序中也不应有工艺逻辑存在。 比如与变频器,仪表通信,读写的数据都做为PLC的外设IO存在。 简述一下程序的使用 1、所有子程序必须无条件调用,就说子程序EN端必须接SM0.0。 2、L000程序必须在OB1中第一网络调用。 3、L001程序参数由指针指定,参数的值在数据块里指定。这 关于指针双字的赋值,看一下下面的帖子了解一下。 https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1732543&b_id=64&s_id=83&num=12#anch 感兴趣的小伙伴可以先看看基础篇 https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1730780&b_id=64&s_id=0&pno=#1731036 总结:在一个子程序里用有限的局部变量实现这么复杂的通信程序还是挺不容易的,在程序中依然没办法全部用符号编程,因为局部变量的复用。作为一个子程序封装的存在,使用起来很方便了,免去了从头编程的麻烦,在数据块里填好参数就行了,但别填错了,哈哈哈,填错了程序不干活。 有朋友说在数据块里填参数这种应用方式,在修改了数据后必须下载数据块,这样导致PLC的保持型数据会复位,所以在程序中创建了一个modbus的参数程序块。 请看最新的帖子 【S7-200 Smart开源标准化编程】modbus rtu再次封装 https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1794991&b_id=64&s_id=0&num=20
13478405725
|