C# 串口添加 modbus rtu协议

泊安 2018-09-18 03:33:29
需要给串口加上 modbus rtu 是一问一答的形式发送和接受数据
我现在已经实现了串口的基本发送和接收,但是不知道怎么加上 modbus rtu
...全文
1203 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
泊安 2018-11-15
  • 打赏
  • 举报
回复
终于知道怎么给分了·····
kekezhu0000 2018-09-28
  • 打赏
  • 举报
回复
按照规范做,协议都是定的,先找一个正确的看一下应该是什么样子,然后在套用测试
rehuo 2018-09-28
  • 打赏
  • 举报
回复
modbus是协议规范,规定了交互的格式,你需要关注的发包的格式和收包的格式,和串口本身没有直接的关系,比如读指令以及读指令的响应,这些都是有规范的
泊安 2018-09-19
  • 打赏
  • 举报
回复
因为之前没接触过C# 串口方面,开始用的Commix发现和普通的串口调试只是加了modbus RTU。
自己实现的时候,实现了串口的发送和接收,想着怎么加上modbus RTU就行了。。。。
Commix附图:
wanghui0380 2018-09-19
  • 打赏
  • 举报
回复
modbus协议主从站的设计本身就只能是一问一答,不存在“双工”直接反向推的概念。

至于rtu,跟串口其实没有关系,他只是协议包本身。如果你不理解rtu,那么请先理解他modbus asc码过程

modbus asc码过程是,asc码你是知道的,就是发送一串字符串,我也不想具体展示他的协议,但是大致上就是,你向串口写一串字符串,对方同样返回你结果字符串

A:“请告诉我线圈A现在的值是多少”
B:“线圈A现在的值是25”

同样rtu只是把这个过程改了协议封包的字节 ,我同样不想具体展示他的协议,只简单随手意思一下
“01 01 02 03”---------01编号的那台机器,请告诉我功能号02的标准,03地址处的值
wanghui0380 2018-09-19
  • 打赏
  • 举报
回复
额,modbus只能是一问一答,所以别问我们如何实现一问一答。这是协议本身就这样规定的,就如同html协议最初的设计就是“一遍又一遍的刷新”一样

当然同楼上说的,如果你不知道怎么处理,那就直接找别人已经处理好的东西把,楼上那个库可用
圣殿骑士18 2018-09-19
  • 打赏
  • 举报
回复
引用 4 楼 qq_36067962 的回复:
因为之前没接触过C# 串口方面,开始用的Commix发现和普通的串口调试只是加了modbus RTU。
自己实现的时候,实现了串口的发送和接收,想着怎么加上modbus RTU就行了。。。。
Commix附图:

你说的应该是,勾选了modbusRTU之后,按它的协议解析并显示数据吧。

那按正规的来说,你就自己找一下modbus协议规范,自己解析。
如果你想省事,那就:不勾选时,用你现在的串口处理方式;勾选时,换用他人已经封装好的modbus的类库来解析信息并显示。
圣殿骑士18 2018-09-18
  • 打赏
  • 举报
回复
modbus对对串口发送的封装,用了modbus rtu就不用对串口进行直接读写处理了。
所谓“加上 modbus rtu”是不对的把。
你使用这个类库就行
https://github.com/NModbus4/NModbus4/releases

17,747

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧