打印

还在用 modbus 协议?You out 了

[复制链接]
楼主: wh6ic
手机看帖
扫描二维码
随时随地手机跟帖
21
R2D2| | 2019-6-21 17:22 | 只看该作者 回帖奖励 |倒序浏览
提示: 该帖被管理员或版主屏蔽
22
R2D2| | 2019-6-21 17:26 | 只看该作者
连MODBUS-ASCII都不知道也敢到这里大放厥词?楼主的脸皮是城墙做的吗?

使用特权

评论回复
23
R2D2| | 2019-6-21 17:28 | 只看该作者
在MODBUS-RTU中,有3.5字节时间总线空闲作为帧头标记,有CRC16校验帧数据有效性,楼主的程序写的要有多垃圾才能检出乱码啊?

使用特权

评论回复
24
wh6ic|  楼主 | 2019-6-21 17:41 | 只看该作者
R2D2 发表于 2019-6-21 17:28
在MODBUS-RTU中,有3.5字节时间总线空闲作为帧头标记,有CRC16校验帧数据有效性,楼主的程序写的要有多垃圾 ...

OkOk,Stop。
没什么兴趣跟一个不知道 算不算 人 的残次品 说什么话。
物理层出来的乱码,也可以拿到程序头上

使用特权

评论回复
评论
R2D2 2019-6-21 17:49 回复TA
物理层搞出来的乱码能被协议层过滤掉,那么这个协议层就是个好的协议层。你搞不出来只能说明你的智商极度低下,怪MODBUS你是咬错屎了。 
25
叶春勇| | 2019-6-21 18:11 | 只看该作者
zuoanhuafeng 发表于 2019-6-21 16:43
请问,以太网与modbus相比,有哪些优势?

组网太强大,成本略高

使用特权

评论回复
评论
叶春勇 2019-6-21 18:44 回复TA
@R2D2 :前面说过,不过一般modbus被认为是串口 
R2D2 2019-6-21 18:19 回复TA
MODBUS/TCP就是在以太网上面跑的MODBUS协议,你这回复属于文盲水平。 
26
zyj9490| | 2019-6-21 18:37 | 只看该作者
oufuqiang 发表于 2019-6-21 16:40
其实不是协议的问题,是写程序的人的问题。很少有人把接口写的健壮的。讲得简单点,一堆乱码里面插一帧正常 ...

能做到3.5字节空闲时间能处理的程序吗?高波特率要放宽吧。MCU中断也反央不过来。

使用特权

评论回复
27
zyj9490| | 2019-6-21 18:41 | 只看该作者
R2D2 发表于 2019-6-21 17:28
在MODBUS-RTU中,有3.5字节时间总线空闲作为帧头标记,有CRC16校验帧数据有效性,楼主的程序写的要有多垃圾 ...

实际上3.5T大大多于这个时间的,特别在高波特率的情况下,MCU的运算能力不够。除非只有一个串口中断在起作用。

使用特权

评论回复
28
R2D2| | 2019-6-21 18:44 | 只看该作者
zyj9490 发表于 2019-6-21 18:37
能做到3.5字节空闲时间能处理的程序吗?高波特率要放宽吧。MCU中断也反央不过来。 ...

115200bps,8,N,1 发送一个字节80us,3.5个字节时间是280us,你是4位单片机处理不过来吗?更何况现场基本不可能跑115200这么快的速度。

使用特权

评论回复
29
zyj9490| | 2019-6-21 18:49 | 只看该作者
R2D2 发表于 2019-6-21 18:44
115200bps,8,N,1 发送一个字节80us,3.5个字节时间是280us,你是4位单片机处理不过来吗?更何况现场基本 ...

你算错了吧,T是8.68US,3.5T是30US。对低端MCU是一个难度的呵。

使用特权

评论回复
评论
叶春勇 2019-6-21 19:29 回复TA
@R2D2 :还有个三菱fx2n 上位机协议,用python写的。 
R2D2 2019-6-21 19:26 回复TA
@叶春勇 :对不起,本世纪我没用过51 
叶春勇 2019-6-21 19:09 回复TA
@R2D2 :modbus-rtu我能独立实现 https://github.com/qmycy/modbus_sdcc_51 是我的开源代码。 
R2D2 2019-6-21 19:05 回复TA
@叶春勇 :你也去读freemodbus源码。 
叶春勇 2019-6-21 19:03 回复TA
@R2D2 :avr有timer compare中断。老51只能设定初值。stm32直接用串口空闲中断。 
R2D2 2019-6-21 19:01 回复TA
@叶春勇 :你要自己算,不要被别人牵着鼻子走。 
叶春勇 2019-6-21 18:56 回复TA
@zyj9490 :设定定时器初值,接收到数据,定时器恢复初值。如果没数据就触发定时器中断。 不过老51没用过。 
zyj9490 2019-6-21 18:54 回复TA
@叶春勇 ,如果标准51的话,10US触发一次,其他时事情做不做啊。 
叶春勇 2019-6-21 18:52 回复TA
定时器比较中断可以搞定。 
30
R2D2| | 2019-6-21 18:57 | 只看该作者
zyj9490 发表于 2019-6-21 18:49
你算错了吧,T是8.68US,3.5T是30US。对低端MCU是一个难度的呵。

波特率是1占用时间的倒数。MODBUS/RTU协议规定新的一帧是总线空闲3.5字节以上。

使用特权

评论回复
31
zyj9490| | 2019-6-21 19:00 | 只看该作者
有些响应是做主程序里,响应延时更加不确定。

使用特权

评论回复
32
R2D2| | 2019-6-21 19:04 | 只看该作者
zyj9490 发表于 2019-6-21 19:00
有些响应是做主程序里,响应延时更加不确定。

给你发张读书卡——“FreeModbus 源码详解”

使用特权

评论回复
33
chenyongand| | 2019-6-21 21:11 | 只看该作者
发现有个狂人,逮谁怼谁,不可一世的姿态....

使用特权

评论回复
34
m564522634| | 2019-6-22 08:37 | 只看该作者
是不是自己写个私有协议可以在一垃圾数据中找个数据头就就很NB了,先进了,只能说你目前水平真的低

使用特权

评论回复
35
m564522634| | 2019-6-22 08:49 | 只看该作者
oufuqiang 发表于 2019-6-21 16:40
其实不是协议的问题,是写程序的人的问题。很少有人把接口写的健壮的。讲得简单点,一堆乱码里面插一帧正常 ...

写的很健壮了,垃圾包过来不符合modbus协议直接丢这是很稳建的处理方式。他应该关注的是自己为什么会出现乱码的问题的

使用特权

评论回复
36
coody| | 2019-6-22 10:38 | 只看该作者
我跟PLC通信都是用的MODBUS-RTU协议,没觉得有什么不好。如果这个协议不好,国外大牌的PLC早丢弃了,但实际依旧在用啊。

使用特权

评论回复
37
sszxxm| | 2019-6-22 10:45 | 只看该作者
zyj9490 发表于 2019-6-21 18:49
你算错了吧,T是8.68US,3.5T是30US。对低端MCU是一个难度的呵。

一般波特率超过19200bps之后的3.5T延时,都是按照19200bps时的时间来定,低于这个波特率的,才是实际波特率对应的3.5T。
不过一般MODBUS-RTU很少跑115200bps这么高吧,除非近距离。

使用特权

评论回复
38
wh6ic|  楼主 | 2019-6-22 10:47 | 只看该作者
R2D2 发表于 2019-6-21 18:57
波特率是1位占用时间的倒数。MODBUS/RTU协议规定新的一帧是总线空闲3.5字节以上。 ...

它干嘛要 龟腚 这个3.5U的空闲? 就是因为有Bug,才被迫打的这么一个不伦不类的补丁,真有这么好,打什么补丁呀。

使用特权

评论回复
39
zhangyi0320| | 2019-6-22 10:49 | 只看该作者
谢谢分享

使用特权

评论回复
40
wh6ic|  楼主 | 2019-6-22 10:49 | 只看该作者
m564522634 发表于 2019-6-22 08:49
写的很健壮了,垃圾包过来不符合modbus协议直接丢这是很稳建的处理方式。他应该关注的是自己为什么会出现 ...

你仔细看一下原因再来说这个乱码的问题吧。估计你做的东西更多是在实验室环境的?批量上现场你敢保证没有乱码问题?软件包打天下?

使用特权

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

本版积分规则