技术论坛

【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复

作者 主题
奇侠

经验值: 8142
发帖数: 843
精华帖: 14
主题:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
精华帖精华帖星级3级 推荐帖


只看楼主 只看精华 楼主 2022-05-06 10:41:25

这是最后做出来的程序,基本没有再添加功能的地方了,分享出来是给大家使用。

新程序是全新创作的程序,子程序内除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
精华帖版主置评: 这个程序还是很好的。 标准化有模有样了。 镇江方法指日可待!@恒顺众生 赞一个!
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1760741&b_id=64&s_id=0&num=61

奇侠

经验值: 5104
发帖数: 520
精华帖: 7
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 1楼 2022-05-07 11:45:53

那么好的帖子怎么没有人关注呢


认真做事,低调做人
以下网友喜欢您的帖子:

  
奇侠

经验值: 8142
发帖数: 843
精华帖: 14
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 楼主 2楼 2022-05-07 12:42:22
以下是引用--意孤行在2022-05-07 11:45:53的发言 >1楼

那么好的帖子怎么没有人关注呢

因为看到好东西太多已经麻木了


13478405725
以下网友喜欢您的帖子:

  
游民

经验值: 128
发帖数: 4
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 3楼 2022-05-11 11:13:36

好贴,必需顶。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 760
发帖数: 86
精华帖: 1
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 4楼 2022-05-12 17:36:05

感谢分享,受益匪浅!!!


 
以下网友喜欢您的帖子:

  
游民

经验值: 52
发帖数: 1
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 5楼 2022-05-15 21:46:29

好东西  谢谢分享


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 6楼 2022-05-19 10:47:33

无私分享,值得点赞


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
游民

经验值: 63
发帖数: 2
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 7楼 2022-05-19 14:00:15

感谢分享,不过对我来说一点用都没有,原因如下

1:看不懂没有详细说明

2:不知道如果根据我的实际需求更改


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8142
发帖数: 843
精华帖: 14
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 楼主 8楼 2022-05-19 18:22:55
以下是引用忘记星在2022-05-19 14:00:15的发言 >7楼

感谢分享,不过对我来说一点用都没有,原因如下

1:看不懂没有详细说明

2:不知道如果根据我的实际需求更改

感谢你的回复,你的两个问题回答你一下:

1、看不懂不是别人的错,你看别人的程序一样没有详细说明,更何况这个程序还挻复杂的,想修改你得先读懂程序

2、帖子上已经写到:程序的所有参数由数据块进行给定。


13478405725
以下网友喜欢您的帖子:

  
新手

经验值: 23
发帖数: 1
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 9楼 2022-05-20 15:47:35

感谢分享    感谢分享


 
以下网友喜欢您的帖子:

  
新手

经验值: 36
发帖数: 1
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 11楼 2022-05-27 12:28:51

学习学习!这么好的东西。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 12楼 2022-06-21 11:01:28

其实吧,对我来说楼主说的下面这段要求才是这个程序的价值吧。


这个程序是做为标准化编程的一个对象存在的。

在标准化编程里通信是读写IO的工具。IO同样做为对象存在的。

通信不应受到工艺逻辑的影响。通信程序中也不应有工艺逻辑存在。

比如与变频器,仪表通信,读写的数据都做为PLC的外设IO存在。


通讯事务必须满足这段要求才能使用这个程序,如果不符合就要增加一个通讯事务子程序来专门修改数据块对应的读、写次序了,不过这样就得改L001ModbusRtuComm了....

再有就是,整个程序不能存在非标准化的符号表占用,否则可能会被坑得很惨....比如L001ModbusRtuComm中的sBits,如果L001ModbusRtuComm前面的L区值带入到L001ModbusRtuComm感觉会很可怕(以前这样用一个子程序多次调用被坑过),所以不能有非标准化的应用...这局限啊....


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8142
发帖数: 843
精华帖: 14
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 楼主 13楼 2022-06-21 11:36:20
以下是引用Zaxife在2022-06-21 11:01:28的发言 >12楼

其实吧,对我来说楼主说的下面这段要求才是这个程序的价值吧。


这个程序是做为标准化编程的一个对象存在的。

在标准化编程里通信是读写IO的工具。IO同样做为对象存在的。

通信不应受到工艺逻辑的影响。通信程序中也不应有工艺逻辑存在。

比如与变频器,仪表通信,读写的数据都做为PLC的外设IO存在。


通讯事务必须满足这段要求才能使用这个程序,如果不符合就要增加一个通讯事务子程序来专门修改数据块对应的读、写次序了,不过这样就得改L001ModbusRtuComm了....

再有就是,整个程序不能存在非标准化的符号表占用,否则可能会被坑得很惨....比如L001ModbusRtuComm中的sBits,如果L001ModbusRtuComm前面的L区值带入到L001ModbusRtuComm感觉会很可怕(以前这样用一个子程序多次调用被坑过),所以不能有非标准化的应用...这局限啊....

@Zaxife

总结一下你说的两个问题:

1、通讯事务必须满足这段要求才能使用这个程序,如果不符合就要增加一个通讯事务子程序来专门修改数据块对应的读、写次序了,不过这样就得改L001ModbusRtuComm了....

目前程序通信中的轮询就只是按照通信任务的数量来做的,至于通讯事务想怎么排列是用户用了算,修改数据块或参数的程序块就可以。至于写是不分次序的,因为只有写的数据发生变化才会有写操作。

2、整个程序不能存在非标准化的符号表占用,否则可能会被坑得很惨....比如L001ModbusRtuComm中的sBits,如果L001ModbusRtuComm前面的L区值带入到L001ModbusRtuComm感觉会很可怕(以前这样用一个子程序多次调用被坑过),所以不能有非标准化的应用...这局限啊....

首先我不知道你有没有看懂我的程序,你说的问题是不存在的。在你没看懂我的程序之前,不要妄下判断。欢迎你留下电话或打我电话13478405725探讨。


13478405725
以下网友喜欢您的帖子:

  
游民

经验值: 108
发帖数: 3
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 14楼 2022-07-03 22:44:16

谢谢老师分享


 
以下网友喜欢您的帖子:

  
新手

经验值: 9
发帖数: 2
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 15楼 2022-07-23 13:58:42

培训机构的广告贴,没有任何实际使用意义,哗众取宠,PLC控制本来计不需要标准化,都是非标定制产品!


 
以下网友喜欢您的帖子:

  
新手

经验值: 9
发帖数: 2
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 16楼 2022-07-23 13:59:19

培新机构的广告贴,故弄玄虚


 
以下网友喜欢您的帖子:

  
至圣

经验值: 12725
发帖数: 1586
精华帖: 1
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
推荐帖


只看楼主 只看精华 17楼 2022-07-23 17:13:12
以下是引用手机用户20190705321157在2022-07-23 13:59:19的发言 >16楼

培新机构的广告贴,故弄玄虚

从哪看出是培训机构的广告贴的!

程序我真心看不懂,那是我水平有限。

我感觉:

如果真的是培训机构做出这样的程序,那是也值得傲娇一把了


努力学习西门子
以下网友喜欢您的帖子:

  
至圣

经验值: 15532
发帖数: 1735
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 19楼 2022-07-24 14:45:13
以下是引用不欲勿施13478405725在2022-05-06 10:41:25的发言 >楼主

这是最后做出来的程序,基本没有再添加功能的地方了,分享出来是给大家使用。

新程序是全新创作的程序,子程序内除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


总结:在一个子程序里用有限的局部变量实现这么复杂的通信程序还是挺不容易的,在程序中依然没办法全部用符号编程,因为局部变量的复用。作为一个子程序封装的存在,使用起来很方便了,免去了从头编程的麻烦,在数据块里填好参数就行了,但别填错了,哈哈哈,填错了程序不干活。


smart200标准化实践modbus20220505.smart.zip


有朋友说在数据块里填参数这种应用方式,在修改了数据后必须下载数据块,这样导致PLC的保持型数据会复位,所以在程序中创建了一个modbus的参数程序块。

smart200标准化实践modbus20220522.smart.zip


谢谢分享,话不多讲,必须鼓掌!


海纳百川,厚德务实!
以下网友喜欢您的帖子:

  
游民

经验值: 68
发帖数: 10
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 20楼 2022-07-28 17:36:05

先点赞,再学习,谢谢分享


 
以下网友喜欢您的帖子:

  
PBK
侠圣

经验值: 3275
发帖数: 238
精华帖: 0
回复:【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复


只看楼主 只看精华 21楼 2022-08-03 11:21:46

很简单的通讯,就占了11KB,简单的事复杂化


成功=能力+态度+机遇+包装展示
以下网友喜欢您的帖子:

  
收起
【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。