fzlkui
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 110 点
下载积分: 428 分
在线时间: 20(小时)
注册时间: 2020-12-21
最后登录: 2024-11-12
查看fzlkui的 主题 / 回贴
楼主  发表于: 2022-07-03 21:19
图片:
图片:
图片:
图片:
如题,我自己处理的写多个站数据没问题,读多个站数据就不行了。

我的思路是这样:d0=0的时候,RS D20 K8 D30 K7,d0=1的时候RS D40 K8 D50 K7。

把值用M8000的常开触点传送进D20-D25   D40-D45,并CRC校验。

D0=0的时候上升沿置位M8122,同时D0=0的时候等待M8123接通,接通后将数据传送到别的寄存器,再使D0=1,接着复位M8123。

D0=1的时候同上,但是实际写到PLC里面轮询会有问题。

程序部分截图见附图,程序也上传,请大家帮忙解答一下。
附件: 485 RS两站轮询.zip (176 K) 下载次数:170
网站提示: 请不要用迅雷下载附件,容易出错
fzlkui
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 110 点
下载积分: 428 分
在线时间: 20(小时)
注册时间: 2020-12-21
最后登录: 2024-11-12
查看fzlkui的 主题 / 回贴
1楼  发表于: 2022-07-06 16:17
已解决,感谢回复。
不直接set m8122了,置位了多个中间继电器,中间继电器+m8122常闭 延时0.1S再上升沿置位8122,已经正常了。
fzlkui
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 110 点
下载积分: 428 分
在线时间: 20(小时)
注册时间: 2020-12-21
最后登录: 2024-11-12
查看fzlkui的 主题 / 回贴
2楼  发表于: 2022-07-06 16:17
引用
引用第3楼anlyl2014于2022-07-04 18:12发表的  :

你的问题原因是:读第一条数据跟读第二条数据之间没有间隔时间,加个250MS延迟就可以了

已解决,感谢回复。
不直接set m8122了,置位了多个中间继电器,中间继电器+m8122常闭 延时0.1S再上升沿置位8122,已经正常了。
fzlkui
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 110 点
下载积分: 428 分
在线时间: 20(小时)
注册时间: 2020-12-21
最后登录: 2024-11-12
查看fzlkui的 主题 / 回贴
3楼  发表于: 2022-07-06 16:18
引用
引用第1楼tingfenghu于2022-07-04 12:32发表的  :
之前写的,也是采用循环处理
[attachment=269712]

已解决,感谢回复。
不直接set m8122了,置位了多个中间继电器,中间继电器+m8122常闭 延时0.1S再上升沿置位8122,已经正常了。
fzlkui
级别: 探索解密
精华主题: 0
发帖数量: 50 个
工控威望: 110 点
下载积分: 428 分
在线时间: 20(小时)
注册时间: 2020-12-21
最后登录: 2024-11-12
查看fzlkui的 主题 / 回贴
4楼  发表于: 2022-07-06 16:19
引用
引用第2楼shen19820317于2022-07-04 14:44发表的  :
可以参考这个试一下,读写都是没有问题的。通讯数量可更改。

已解决,感谢回复。
不直接set m8122了,置位了多个中间继电器,中间继电器+m8122常闭 延时0.1S再上升沿置位8122,已经正常了。