还在用 modbus 协议?You out 了

[复制链接]
楼主: wh6ic
手机看帖
扫描二维码
随时随地手机跟帖
wh6ic|  楼主 | 2019-6-22 10:51 | 显示全部楼层
R2D2 发表于 2019-6-21 18:57
波特率是1位占用时间的倒数。MODBUS/RTU协议规定新的一帧是总线空闲3.5字节以上。 ...

这个帖子首贴你看看,帮着 洗洗地 呗

https://bbs.21ic.com/icview-2508056-1-1.html

使用特权

评论回复
评论
wh6ic 2019-6-23 13:39 回复TA
@R2D2 :真不欢迎 只会 靠满嘴喷 Shit 的低脑容量货色。 哪 Shit 多哪去吧,啊。 
R2D2 2019-6-23 13:38 回复TA
@wh6ic :你这条丧了家的乏走狗就别满地打滚了。 
wh6ic 2019-6-23 13:36 回复TA
@R2D2 :是呀,是呀,我是条比你低档得多的自由野狗,哪比得上你这条高贵的“弃家犬” 
R2D2 2019-6-23 13:33 回复TA
@wh6ic :你开的帖子别人就不能进来了?滚回家吃奶去,这个绝对没人会评头论足。 
wh6ic 2019-6-23 13:30 回复TA
@R2D2 :你 该 滚 远点,这是我开的帖子。你来凑个什么? 发表一下自己的看法,你个脑容量不足的货凑上来就开口骂人,真不是为你哪个 主子 来洗地的??难以置信呀 
R2D2 2019-6-23 13:22 回复TA
滚!这事儿跟我没有任何关系,跟主贴也没有任何关系。想挨打找别人去,我没兴趣搭理你这条野狗。 
wh6ic|  楼主 | 2019-6-22 10:58 | 显示全部楼层
coody 发表于 2019-6-22 10:38
我跟PLC通信都是用的MODBUS-RTU协议,没觉得有什么不好。如果这个协议不好,国外大牌的PLC早丢弃了,但实际 ...

应用规模大,明知有Bug,后来者也只好捏着鼻子跟随而已。   但不代表这个协议很好。
  一个串口协议,干嘛打个3.5U的空闲这个额外增加处理的补丁。好协议就应该处理简单、功能完整、适应性强

使用特权

评论回复
评论
wh6ic 2019-6-23 13:26 回复TA
@R2D2 :41楼不关你事,那就是你的主子是高级得多的 白皮猪 啰,真了不起呀。 
wh6ic 2019-6-23 13:24 回复TA
@R2D2 :应该你 滚远点 才是,这是我开的帖子,你来凑什么热闹呀,闻到shit味了? 
R2D2 2019-6-23 13:21 回复TA
@wh6ic :你这条狗腿子总是有主子的,不知道堂堂正正的人是什么样子的吧。41楼关我屁事,滚! 
wh6ic 2019-6-23 13:10 回复TA
@R2D2 :现在是42楼,你看看41楼呗。也许能帮你 主子的主子 洗洗地 捞点实惠,快去快去。 
wh6ic 2019-6-23 13:08 回复TA
@R2D2 :合法的特征字头包处理结束,整包被丢弃,就算最差劲的程序员,大概也是不会去理睬包内可能出现的特征字的。 担心这个,辛苦你了啊。 
R2D2 2019-6-23 12:04 回复TA
又开始满嘴喷sh1t了。3.5个字符的空闲时间根本就不是什么补丁,因为RTU可以有任意字符,你这种智力低下搞出来的帧头帧尾有可能出现在中间数据中发生严重错误,只能用时间来决定帧起始。MODBUS-ASCII限定了中间数据字符的范围,才可以用特定字符来表达帧头帧尾。当年制定MODBUS协议的人,素质不知道比你高到哪里去了。 
zyj9490| | 2019-6-22 11:55 | 显示全部楼层
wh6ic 发表于 2019-6-22 10:58
应用规模大,明知有Bug,后来者也只好捏着鼻子跟随而已。   但不代表这个协议很好。
  一个串口协议,干 ...

485的硬件信号层抗干扰还是较强的,232在工业现埸就难以推,光赁软件层解决(或恢复过滤干扰)很难的。只能是丢弃,导致整个崩。双绞线,加屏BI是标配。强,弱电走线分开是原则,选好的485驱动IC是很必要的。

使用特权

评论回复
cjseng| | 2019-6-22 12:33 | 显示全部楼层
zyj9490 发表于 2019-6-21 18:49
你算错了吧,T是8.68US,3.5T是30US。对低端MCU是一个难度的呵。

处理时间应该是1帧数据+3.5T时间,而不是3.5T时间

使用特权

评论回复
评论
叶春勇 2019-6-22 16:06 回复TA
看过你的帖子,你是实战派高手。 
zyj9490| | 2019-6-22 12:53 | 显示全部楼层
cjseng 发表于 2019-6-22 12:33
处理时间应该是1帧数据+3.5T时间,而不是3.5T时间

真正的处理是发送帧时间+3.5T+1-5T响应时间,前面的二个时间完全是检测接收是否完成。过后才是真正处理命令帧。针对485半双工网络架构模式。

使用特权

评论回复
评论
cjseng 2019-6-22 13:09 回复TA
那就完全来得及处理啊 
xouou_53320| | 2019-6-22 21:42 | 显示全部楼层
modbus挺好的呀

使用特权

评论回复
yiyouci| | 2019-6-22 23:21 | 显示全部楼层
冒泡

使用特权

评论回复
yiyouci| | 2019-6-22 23:22 | 显示全部楼层
叶春勇 发表于 2019-6-21 12:47
的确很少用了,现在基本以太网了。

围观

使用特权

评论回复
Harvard| | 2019-6-23 23:35 | 显示全部楼层
modbus rtu 还是非常流行的 . 和自动化,plc ,组态软件无缝对接.

使用特权

评论回复
叶春勇| | 2019-6-24 07:54 | 显示全部楼层
各位别激动,modbus没什么大不了的东西。和谐,和谐。

使用特权

评论回复
cooldog123pp| | 2019-6-24 14:58 | 显示全部楼层
工控的估计比较严格吧,我们自有产品都是自有协议,感觉没那么多要求,估计需求比较简单吧。

使用特权

评论回复
叶春勇| | 2019-6-24 15:07 | 显示全部楼层
cooldog123pp 发表于 2019-6-24 14:58
工控的估计比较严格吧,我们自有产品都是自有协议,感觉没那么多要求,估计需求比较简单吧。 ...

也不是严格,modbus很多组态软件都支持,可以快速开发出友好的工控界面。
如果自己写一套,上位机都不支持,自己就要去写个gui+驱动。
modbus具有组网能力,通过将电子产品模块化,每个模块电路复杂性降低。从而有精力去提高模块的质量。
如果从电子的角度去一步一步去实现,是需要很多积累的。否则很多功能集成在一块,各种电路混在一起。分析问题复杂多了。

使用特权

评论回复
dukedz| | 2019-6-24 22:14 | 显示全部楼层
本帖最后由 dukedz 于 2019-6-24 22:19 编辑

加帧头的好处:降低实时性要求,但帧头不可以在内容中重复,如果重复,内容中的数据需要转义(譬如 ppp 协议),这样会导致数据处理耗时增加、数据长度增加且不定。如果不转义,协议会不可靠,通常要加时间间隔以弥补,但加了时间间隔之后,头又变的有些多余了。

另外,你可以参考下增强的 rs485 多主对等的 cdbus 协议,它的前两个字节是「源地址」和「目的地址」,在总线通讯时,有实时性环境,所以跟 modbus 一样,通过空闲时间隔开数据帧;
而在 rs232、ttl-uart、usb-cdc 等场合,主机地址可以固定为 0xaa,从机地址固定为 0x55,这样就相当于用 0xaa 0x55 或者 0x55 0xaa 做头,用头来区分数据帧。
(如果接收检测到错误,丢弃所有接收缓存数据,等空闲一段时间后再重新接收数据,因为为了统一和省事,正文没有转义。丢弃所有缓存数据就是为了防止把正文数据当成帧头。)

相当于 cdbus 兼顾了楼主想要帧头和 modbus 的简洁(无帧头。其它我不觉得简洁,特别是回覆数据的定义)。
https://github.com/dukelec/cdbus_ip

用时间做间隔是设计时的基本要素,而非你所说的补丁。



使用特权

评论回复
m564522634| | 2019-6-24 23:25 | 显示全部楼层
wh6ic 发表于 2019-6-22 10:49
你仔细看一下原因再来说这个乱码的问题吧。估计你做的东西更多是在实验室环境的?批量上现场你敢保证没有 ...

PLC到现在都在有用modbus 协议你觉得别人不比你懂modbus。 不管怎么好的协议也看使用的人的水平了,就你现在表现出来的水平说实话你用什么协议都是扯淡了。

使用特权

评论回复
handlike| | 2019-6-25 00:49 | 显示全部楼层
3.5T有点累人,我一般用接收超时中断为一帧数据,校验合法收下,非法PASS。

使用特权

评论回复
zyj9490| | 2019-6-26 12:58 | 显示全部楼层
dukedz 发表于 2019-6-24 22:14
加帧头的好处:降低实时性要求,但帧头不可以在内容中重复,如果重复,内容中的数据需要转义(譬如 ppp 协 ...

怎么克服主机间的打架。低层机理是什么,侦听,等总线空闲吗?

使用特权

评论回复
评论
dukedz 2019-6-28 18:09 回复TA
两个模式: CDBUS-A 模式跟 CAN FD 的差不多,区别是高速部分是推挽输出。 另一个是 CDBUS-BS 模式,通过 break 字符做同步(原本可能发生的数据冲突让 break 字符代替了,break 字符冲突没有副作用),适合节点较少、更高速的场景。 具体波形示例可以参考上面给出的 github 链接,看波形很好理解。 
R2D2| | 2019-6-27 13:43 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
R2D2| | 2019-6-28 10:56 | 显示全部楼层
傻13楼主的帖子,顶上去。

使用特权

评论回复
pilieren| | 2019-8-9 10:15 | 显示全部楼层
各有所长!

使用特权

评论回复
515192147| | 2019-10-14 20:52 | 显示全部楼层
本帖最后由 515192147 于 2019-10-14 20:57 编辑

1)工业物联网通信领域三大主流技术的分类说明:
    工业以太网、现场总线、工业无线 是目前工业物联网通信领域的三大主流技术;将现场总线、以太网、无线技术融合到控制网络中,保证了系统的稳定,增强了系统的开放性和互操作性,完善了信息服务;
2)工业以太网: 速度快,可达100MBPS~1GBPS,可传送大数据包,通过网线(专用4对双绞线)或光纤通信,用于控制器、人机界面、编程器、现场总线网关等设备之间通信,接口成本高;综上所述,以太网不是工业现场总线!
3)现场总线:速度一般1MBPS左右,传送小数据包,通过双绞线通信,用于控制器、现场总线网关、现场总线仪表、现场总线执行机构、变频器、远程IO模块、现场总线中继器等设备之间通信,接口成本低;
4)在国内广范使用的RS485通信总线,因为只支持单主站\多从站排队轮询问答协议,从站设备多时,实时性不能保证,RS485通信不能称为 正真意义上的“现场总线”。
5)CAN总线不是现场总线,CAN总线编程复杂,需对CAN包拆包、并包,并对Id的过滤进行设置;CAN总线的高层协议是现场总线,如CANWeb、CANOpen、DeviceNet、J1939、ISO11783、CANKingdom、SDS、iCAN等 CAN总线的高层协议,CAN总线的高层协议编程简单,只需调用几个函数就能完成,调试方便,通过Web浏览就能监控总线数据的变化。
6)外国的现场总线标准:
   目前,国际上各种各样的现场总线有几百种之多,统一的国际标准尚未建立;较著名的有基金会现场总线(FF)、HART现场总线、CAN高层协议CANWeb和CANOpen、DeviceNet、LONWORKS现场总线、PROFIBUS现场总线、、PHEONIX公司的INTERBUS、AS-INTERFACE总线等。
详细介绍见QQ群204408503:01B工控领域最流行的九大现场总线.pdf
7)国内的现场总线标准:
    百度搜“国产现场总线标准”,除 搜到“CANWeb”,没有搜到其他;
8)现场总线的优点:
一对双绞线上可挂接多个控制设备, 便于节省安装费用;节省维护开销;
提高了系统的可靠性;为用户提供了更为灵活的系统集成主动权。
详细介绍见附件: 01A工业现场总线CANWeb介绍.zip (1.6 MB)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则