打印

还在用 modbus 协议?You out 了

[复制链接]
5443|123
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wh6ic|  楼主 | 2019-6-21 12:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前老看到谁、谁、谁的产品使用了 modbus 协议,感觉真是 “高大上”。  只是俺老土,一直是用私有协议,用起来还行,就一直没有玩这个协议。
今天碰到个用 modbus 的出问题的,仔细看协议,WTF,这是什么鬼! 包前面多了几个乱码,居然就找不到命令、回复了。这种四五十年前的土鳖协议,该扔了。

使用特权

评论回复
评论
wh6ic 2019-6-23 13:52 回复TA
@xch : 去本贴 41 楼去看看,也许能 挣到点 小钱钱哟 
Harvard 2019-6-21 21:06 回复TA
@xch :正解 
xch 2019-6-21 20:31 回复TA
@wh6ic :不知道猪界有这定律,几十年过去猪就能超越人类?5千年过去也没见一只啊! 
xch 2019-6-21 18:43 回复TA
@wh6ic :当然不敢骂人,骂猪的胆子还是有点。 
wh6ic 2019-6-21 18:09 回复TA
@xch :个半吊子,还敢出来乱骂人 
wh6ic 2019-6-21 18:08 回复TA
@xch :几十年前的老东西。 有问题,怎么就不能提?你爹的东西吗? 
xch 2019-6-21 18:06 回复TA
@wh6ic :猪才到处喷,连modbus都喷。知道你几斤几两?猪肉涨价了就不知天高地厚了? 
wh6ic 2019-6-21 15:55 回复TA
@xch :我惹到你了?你说猪是个什么意思 !!不会说人话,就不要到处喷 
wh6ic 2019-6-21 13:33 回复TA
@xch :你说猪是什么意思?!!! 
xch 2019-6-21 13:16 回复TA
它的协议栈小。一般猪都无法设计出这种几百字节就能搞定的协议栈。 

相关帖子

沙发
叶春勇| | 2019-6-21 12:47 | 只看该作者
的确很少用了,现在基本以太网了。

使用特权

评论回复
评论
叶春勇 2019-6-21 12:54 回复TA
@zyj9490 :modbus是高级协议。可以用串口,也可以用以太网。我串口modbus代码都扔到github开源了。不折腾了。 
zyj9490 2019-6-21 12:52 回复TA
成本啊,最简便,最灵活,最通用的协议。私有协议不利于大规模组网,还要加通信管理机(协议中转),定制化的设备代价很不便宜。 
板凳
zyj9490| | 2019-6-21 12:55 | 只看该作者
叶春勇 发表于 2019-6-21 12:47
的确很少用了,现在基本以太网了。

工控,低层设备应用得很多。

使用特权

评论回复
地板
zyj9490| | 2019-6-21 12:57 | 只看该作者
叶春勇 发表于 2019-6-21 12:47
的确很少用了,现在基本以太网了。

MODBUS-RTU,MODBUS-TCP,适用于不同的网络,资源不够的MCU串口的RTU比较实用。

使用特权

评论回复
5
叶春勇| | 2019-6-21 13:01 | 只看该作者
zyj9490 发表于 2019-6-21 12:55
工控,低层设备应用得很多。

参考北京和利时,美国foxboro的dcs系统。
模块与模块之间的通讯协议是用profibus。但是stm32的崛起,can总线还是不错的。
分模块与服务器的通讯还是以太网。

485组网,多挂几个从站,各种问题。

使用特权

评论回复
6
zyj9490| | 2019-6-21 13:05 | 只看该作者
叶春勇 发表于 2019-6-21 13:01
参考北京和利时,美国foxboro的dcs系统。
模块与模块之间的通讯协议是用profibus。但是stm32的崛起,can ...

现在那一种现埸总线还没有一统天下的能力,各有各的优点和不足点。

使用特权

评论回复
7
叶春勇| | 2019-6-21 13:10 | 只看该作者
我搞电子初期,就是搞定了modbus和三菱plc的通讯协议。这是我熟悉的东西。后来stm32f407+以太网,在也不想用串口。

使用特权

评论回复
8
zyj9490| | 2019-6-21 13:21 | 只看该作者
61850体糸中,各部件都是用以太网来联网,在应用层上跑61850协议。在电力行业,此协义太超前,目前难推(新站,先进的变电站,发电厂)。对于改造型的项目难以推。

使用特权

评论回复
9
叶春勇| | 2019-6-21 13:30 | 只看该作者
zyj9490 发表于 2019-6-21 13:21
61850体糸中,各部件都是用以太网来联网,在应用层上跑61850协议。在电力行业,此协义太超前,目前难推(新 ...

的确,工业协议进步很缓慢。
2002年我在一家电厂,看着上万个io,dcs系统。
一套系统数百万元,几个工程师日夜不停的组态。当时的高科技。现在不值钱了。
比如以太网,stm32f407,一套系统不过百元。
以前串口+以太网。
现在全以太网不成问题。

使用特权

评论回复
10
叶春勇| | 2019-6-21 13:45 | 只看该作者
楼主私有协议什么样的?能不能借鉴下。看看效率如何?

使用特权

评论回复
评论
叶春勇 2019-6-21 18:39 回复TA
@R2D2 :谢谢指点,我软件比硬件强,以后多交流。 
R2D2 2019-6-21 18:34 回复TA
最近十多年自己能定软硬件协议的场合都改成CAN了,物理层就比485好太多。用MODBUS都是大型工业控制网络里面,你总要跟别人接口吧,MODBUS协议就是事实上的工业标准,这个很难改的,就算物理层在向TCPIP迁移,协议层还要MODBUS。 
11
wh6ic|  楼主 | 2019-6-21 13:56 | 只看该作者
叶春勇 发表于 2019-6-21 13:45
楼主私有协议什么样的?能不能借鉴下。看看效率如何?

至少要加个比较有特征的识别用包头吧。比如0x5A;或者 0x55,0xAA 之类的包头
  按这个modbus,收到什么垃圾都要进入解包程序,稍微不小心,程序不够健壮,收到乱码,就玩不下去多杯具。

使用特权

评论回复
评论
wh6ic 2019-6-21 17:17 回复TA
@R2D2 :原来是个二百五,你自己楼底 16:54 提起的485,十分钟转个眼就忘了。原来你还是个健忘货,果然是个残次品,那对老**蛮值得同情 
R2D2 2019-6-21 17:05 回复TA
**,我说的是MODBUS,你说485干什么?转移话题只能说明你的智力低下。赶紧回家找你母亲喝奶去吧。 
wh6ic 2019-6-21 17:02 回复TA
@R2D2 :你个半吊子,你奸父**制造出来的一只会满嘴喷 米田共 的次品,跑这来学人说话,快回炉去吧。485地线出问题或者电路设计问题监听时很容易识别出一堆乱码,总线空闲个屁。 
R2D2 2019-6-21 16:54 回复TA
半瓶子醋,你裤裆里面没有小钢**就敢满大街乱跑???MODBUS在485上面有两种模式,RTU适合实时性非常强的设备,以3.5个字节周期的总线空闲作为新一帧包头的标志。ASCII模式就是你说的有特征的包头包尾,:是包头,CRLF是包尾,中间只能由0~9,A~F十六种字符。 
12
叶春勇| | 2019-6-21 14:03 | 只看该作者
wh6ic 发表于 2019-6-21 13:56
至少要加个比较有特征的识别用包头吧。比如0x5A;或者 0x55,0xAA 之类的包头
  按这个modbus,收到什么 ...

0x55,0xaa开头,那你的协议只能用ascii通讯了,比如整数0xffff,只能发'f''f''f'f'ascii码了。
modbus有crc校验,乱码没事的。
modbus有freemodbus库,这些老东西移植一下就能用,不用看协议。

使用特权

评论回复
评论
叶春勇 2019-6-21 18:40 回复TA
@wh6ic :后面的0xaa 0x55怎么办。 
wh6ic 2019-6-21 18:14 回复TA
@叶春勇 :0x11 不是包头,直接扔了 
叶春勇 2019-6-21 18:10 回复TA
@wh6ic :假设出现半包0x11。。。。0xaa 0x55.。。。。 
wh6ic 2019-6-21 16:51 回复TA
@叶春勇 :如果有特征包头字(节),合法的包处理完就全部丢弃了,根本就不会去识别包内可能有的特征字。 
叶春勇 2019-6-21 16:27 回复TA
@叶春勇 :如果通讯包出现0x55,0xaa量怎么办? 
叶春勇 2019-6-21 16:23 回复TA
@wh6ic :modbus-rtu,用的是t3.5间隔,乱码帧过不了crc。 你用0xaa,0x55,汽车lin总线就有,不要晶振的串口。 
wh6ic 2019-6-21 14:23 回复TA
十六进制码而已,关 ascii 什么事? 另外,CRC校验码在最后面,收到乱码也要老老实实 完整 读取整个包,无法提前丢弃,也无法在处理后丢弃整包数据,只能一个字节一个字节丢弃,无谓增加协议的处理量 
13
hobbye501| | 2019-6-21 15:43 | 只看该作者
我们都用的MODBUS-RTU

使用特权

评论回复
14
zyj9490| | 2019-6-21 16:27 | 只看该作者
本帖最后由 zyj9490 于 2019-6-21 18:24 编辑
wh6ic 发表于 2019-6-21 13:56
至少要加个比较有特征的识别用包头吧。比如0x5A;或者 0x55,0xAA 之类的包头
  按这个modbus,收到什么 ...

在中断里处理放一个状态字,第一状态,目标主机是否一致,不是,复回,第二步功能码,是否本从机兼容的功能码,第三步,正常接收的状态码,这样可以加快坏包处理。如果不论好坏,做全包处理,会大大加重MCU的负担。

使用特权

评论回复
评论
叶春勇 2019-6-21 18:19 回复TA
这种类似三菱plc的通讯协议。 
15
oufuqiang| | 2019-6-21 16:40 | 只看该作者
其实不是协议的问题,是写程序的人的问题。很少有人把接口写的健壮的。讲得简单点,一堆乱码里面插一帧正常数据帧,能正常响应的太少了。

使用特权

评论回复
16
zuoanhuafeng| | 2019-6-21 16:43 | 只看该作者
叶春勇 发表于 2019-6-21 13:10
我搞电子初期,就是搞定了modbus和三菱plc的通讯协议。这是我熟悉的东西。后来stm32f407+以太网,在也不想 ...

请问,以太网与modbus相比,有哪些优势?

使用特权

评论回复
17
zuoanhuafeng| | 2019-6-21 16:43 | 只看该作者
叶春勇 发表于 2019-6-21 13:10
我搞电子初期,就是搞定了modbus和三菱plc的通讯协议。这是我熟悉的东西。后来stm32f407+以太网,在也不想 ...

请问,以太网与modbus相比,有哪些优势?

使用特权

评论回复
18
xyz549040622| | 2019-6-21 16:56 | 只看该作者
zuoanhuafeng 发表于 2019-6-21 16:43
请问,以太网与modbus相比,有哪些优势?

应用场合不同,仅此而已,没可比性。

使用特权

评论回复
19
xyz549040622| | 2019-6-21 16:57 | 只看该作者
工控上基本好多modbus的天下,毕竟串口两根线,多方便,成本也低,兼容性也好。

使用特权

评论回复
评论
lihui567 2019-6-24 08:58 回复TA
目前这个应用挺多的 
20
R2D2| | 2019-6-21 16:58 | 只看该作者
zuoanhuafeng 发表于 2019-6-21 16:43
请问,以太网与modbus相比,有哪些优势?

MODBUS/TCP就是在以太网上面跑的MODBUS协议,你这问题属于文盲水平。

使用特权

评论回复
评论
zyj9490 2019-6-21 18:17 回复TA
直男啊 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

3943

帖子

42

粉丝