您现在所在的是:

工控论坛

回帖:4个,阅读:2796 [上一页] [1] [下一页]
1751
zhujilucj 版主
文章数:312
年度积分:68
历史总积分:1751
注册时间:2018/12/20
发站内信
发表于:2019/8/20 15:00:02
#0楼
测试LabVIEW程序,LZ以前的习惯都是首先考虑OPC服务器的,因为集成很多的通讯协议,不必纠结通讯程序的时序逻辑。

但是这次遇到的问题是现场干扰比较大,OPC通讯过几个小时就会出现一次中断,而OPC服务器自身的错误处理又缺乏资料,没搞懂,所以编写了一个Modbus串口通讯程序。
第一步,初始化串口,检测串口状态,如果通讯没建立则进入复位程序
附件 微信截图_20190820144003.jpg


第二步,读取离散量和寄存器,如果成功则进入写寄存器程序,不成功进入复位程序

附件 微信截图_20190820144018.jpg

第三步,写离散量和寄存器,如果成功回到杜寄存器,不成功进入复位程序


附件 微信截图_20190820144029.jpg

第四步,复位程序,先关闭串口,然后重新初始化串口

附件 微信截图_20190820144040.jpg


这个程序在出现错误的时候,会不停关闭串口重新打开串口,把串口线拔掉再插上也可以自己恢复通讯
附件:
[本地下载]
[此贴子已经被作者于2019/8/20 15:02:53编辑过]
白玉堂前春解舞,东风卷得均匀。蜂围蝶阵乱纷纷。几曾随逝水?岂必委芳尘?
万缕千丝终不改,任他随聚随分。韶华休笑本无根。好风凭借力,送我上青云。
817
jij0365674
文章数:18
年度积分:50
历史总积分:817
注册时间:2010/10/18
发站内信
发表于:2020/3/3 16:54:30
#1楼
嗯,不错,跟我想法挺接近的,我最近在思考通讯错误处理,我是先通讯读取,出错了就直接退出程序。
1751
zhujilucj 版主
文章数:312
年度积分:68
历史总积分:1751
注册时间:2018/12/20
发站内信
发表于:2020/3/7 20:19:47
#2楼
回复 #1楼 jij0365674
其实就是一个错误处理机制,这个在项目化编程中还是很有用的
白玉堂前春解舞,东风卷得均匀。蜂围蝶阵乱纷纷。几曾随逝水?岂必委芳尘?
万缕千丝终不改,任他随聚随分。韶华休笑本无根。好风凭借力,送我上青云。
50
zh_CN
文章数:1
年度积分:50
历史总积分:50
注册时间:2021/2/22
发站内信
发表于:2021/2/22 10:03:14
#3楼
回复 #2楼 zhujilucj
版主,自己写modbus程序的话,怎么做到跟OPC一样周期通讯呢?我现在是把modbus读写程序和其他程序都写在一个While循环里面,但是这样的话周期性通讯就受其他程序的影响。还有一个想法就是通讯程序跟其他程序分别写一个while循环,同时运行,不知道是否可行。不知道版主你是怎么实现的
53
1270498687
文章数:264
年度积分:53
历史总积分:53
注册时间:2019/7/3
发站内信
发表于:2022/5/13 14:24:33
#4楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004