OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6666|回复: 40

奖金1000元处理MODBUS通讯问题

[复制链接]

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
发表于 2017-3-22 19:09:53 | 显示全部楼层 |阅读模式
1金钱
故障现象:多台机相互与上位机通讯反复重启,死机现象。RS485通讯。
芯片是STM32F103RBT6
通讯协议:MODBUS RTU
通讯芯片是MAX485ESC
解决不掉这个问题我就要被开除了。
设备本身是个全桥电源,现在和触摸屏485通讯调节功率,远程开关机。协议也是才添加到程序里。问题是写某一个到寄存器里,就会死机。如果几台设备485并联就会死机反复重启复位,如同上电复位一样。搞了好几天,485也使用485专用的隔离模块,目前确定是程序内部问题,现请有经验的老师处理一下,解决后立马兑现。单台通讯可以读取和写入。2台就不能并联,一并就死机。通讯就失败。有意者联系我。272203534

最佳答案

查看完整内容[请看2#楼]

从你的话: 问题是写某一个到寄存器里,就会死机。 看来你的程序是做为主站的。 1.先不要用你写的程序作主站。在电脑上安装个modbus测试软件作为主站,用于和其他的从站进行通信,看看能否正常。 2.如果用modbus测试软件作为主站时,能够与其他从站正常通信, 则检查你的主站程序中,发送逻辑是否是执行完一条读/写从站指令后,再执行下一条读/写从站指令的。 (不能上一次的读/写操作还未完成,就再次往线路上发 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2012-11-9
在线时间
86 小时
发表于 2017-3-22 19:09:54 | 显示全部楼层
本帖最后由 luobin189 于 2017-3-22 23:55 编辑

从你的话: 问题是写某一个到寄存器里,就会死机。
看来你的程序是做为主站的。

1.先不要用你写的程序作主站。在电脑上安装个modbus测试软件作为主站,用于和其他的从站进行通信,看看能否正常。

2.如果用modbus测试软件作为主站时,能够与其他从站正常通信,
    则检查你的主站程序中,发送逻辑是否是执行完一条读/写从站指令后,再执行下一条读/写从站指令的。
    (不能上一次的读/写操作还未完成,就再次往线路上发指令,这会造成冲突)


    如果modbus测试软件作为主站时也不能与其他从站进行正常通信,
      则监控它们的通信数据,认真检查每一帧数据,找出与预期不符的通信帧,看是哪个站点发出的,再对应的解决。
   
回复

使用道具 举报

83

主题

400

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2420
金钱
2420
注册时间
2013-8-26
在线时间
236 小时
发表于 2017-3-22 21:59:42 | 显示全部楼层
本帖最后由 ws_zdyz 于 2017-3-22 22:01 编辑

1.先看看485总线连接的有问题没?
2.如果一个主机对单个485 没问题的话,一接多个就有问题的话,看看从机在接受的时候数据的是否合理。3.一般485多机通讯是个很成熟的东西,不应该有什么问题的。。
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-3-23 00:11:57 | 显示全部楼层
本帖最后由 操作系统 于 2017-3-23 00:15 编辑

modbus ,你难道从机没有设置不同的地址??留的电话也不写个手机.公司电话有没有一个区号.谁知道你在哪个地区呢?反复重启复位,可能是看门狗动作了..你是不是有什么地方用了死等循环.并且时间过长.造成看门狗复位了.或者有中断标志位没有清,常进中断服务程序呢.这种可以重现的问题,如果是通讯数据引脚的问题,上逻辑分析仪抓波形出来..就知道问题出在哪里了.
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2017-3-23 09:28:31 | 显示全部楼层
你的问题描述得不够清晰,1、485总线上的设备,网络拓扑是怎样的? 2、每个设备是否有单独的地址? 3、是否试过先不添加modbus协议,先进行一些简单的数据通信以保证硬件没问题?
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

fengyijia 该用户已被删除
发表于 2017-3-23 09:29:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-23
在线时间
6 小时
发表于 2017-3-23 17:05:46 | 显示全部楼层
是不是因为Slave从机地址冲突了?
仔细检查一下连接线,然后用modbus poll挨个通讯试试看。
>>> 友情推荐 >>> 《Modbus软件开发实战指南》
清华出版社: http://t.cn/RiFOFSc
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:43:50 | 显示全部楼层
ws_zdyz 发表于 2017-3-22 21:59
1.先看看485总线连接的有问题没?
2.如果一个主机对单个485 没问题的话,一接多个就有问题的话,看看从机 ...

触摸屏做主站,这个设备做从站。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:44:13 | 显示全部楼层
yklstudent 发表于 2017-3-22 22:05
1、设备是从机,上位机是主机?
2、2台并联就死机,其两台都同时死机?
3、远程调试主机发送设置数据时, ...

这个我太懂,我不是程序员。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:44:39 | 显示全部楼层
luobin189 发表于 2017-3-22 23:42
从你的话: 问题是写某一个到寄存器里,就会死机。
看来你的程序是做为主站的。

目前不会使用串口调试查找问题
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:45:59 | 显示全部楼层
操作系统 发表于 2017-3-23 00:11
modbus ,你难道从机没有设置不同的地址??留的电话也不写个手机.公司电话有没有一个区号.谁知道你在哪个地区 ...

老师你好,我只是替朋友发帖,公司电话021-61992237 手机18221887640 ,看门狗关闭后就死在那里,按键啊什么操作都不能用了,
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:48:27 | 显示全部楼层
小温 发表于 2017-3-23 09:28
你的问题描述得不够清晰,1、485总线上的设备,网络拓扑是怎样的? 2、每个设备是否有单独的地址? 3、是否 ...

设备都设定不同的站位号,。但是不能同时通讯两个从机,触摸屏显示是两个从机交替通讯,比如1号机通讯后2号机重启,2号机通讯正常1号机重启,就是这样反复,3号和4号就一直处于死机状态,
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:48:53 | 显示全部楼层
fengyijia 发表于 2017-3-23 09:29
符件是我做的一个项目,用的NXP的LPC1114,Modbus从站程序,在100us中断里面,给你参考一下。

谢谢这位兄弟,我会转告
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:50:18 | 显示全部楼层
yklstudent 发表于 2017-3-22 22:05
1、设备是从机,上位机是主机?
2、2台并联就死机,其两台都同时死机?
3、远程调试主机发送设置数据时, ...

死在了硬件故障中断里
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:51:55 | 显示全部楼层
ws_zdyz 发表于 2017-3-22 21:59
1.先看看485总线连接的有问题没?
2.如果一个主机对单个485 没问题的话,一接多个就有问题的话,看看从机 ...

总线很简单的4台板子和一个昆仑通态的触摸屏。什么其他的东西都没有,也不存在电路环境干扰,在办公室实验桌上实验的。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:54:06 | 显示全部楼层
操作系统 发表于 2017-3-23 00:11
modbus ,你难道从机没有设置不同的地址??留的电话也不写个手机.公司电话有没有一个区号.谁知道你在哪个地区 ...

这个程序老版运行是没有任何问题的,已经运行2年了,现在是前几天加入的通讯协议程序,出现这个问题,程序员的水平有限,小公司,所以来这请老师,你看我是昨天才注册的用户,我不是程序员。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 18:57:23 | 显示全部楼层
小温 发表于 2017-3-23 09:28
你的问题描述得不够清晰,1、485总线上的设备,网络拓扑是怎样的? 2、每个设备是否有单独的地址? 3、是否 ...

老师可以加你QQ吗?每个从机都有不同的地址,如果用触摸屏连接一台是没问题的,比如1,2,3,4,一对一可以连接,如果同时连接1234这个4个,就乱了1234全部死机重启,反映的情况就像电脑死机一样什么操作都不行,鼠标砸烂了也没反映、就这样OK?只有关电再上电就继续死机。反正就是死来死去。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 19:13:45 | 显示全部楼层
操作系统 发表于 2017-3-23 00:11
modbus ,你难道从机没有设置不同的地址??留的电话也不写个手机.公司电话有没有一个区号.谁知道你在哪个地区 ...

2344455.png 就是这样的连接方式
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-3-23
在线时间
9 小时
发表于 2017-3-23 19:54:10 | 显示全部楼层
基于单台能成功两台却不能成功的基础提供1个方法:就是主机分时连接各台从机
做到分时连接各台从机有2个方法:1. 软件,通过主机发布的广播命令来指示连接哪台从机,跟键盘扫描一样,若是没有一个从机信息就固定时间轮流扫描。2.硬件,设置一块开关板子,上面接4个从机和主机,只需要主机多出2个IO用来控制通断就好,从机多出1个IO来读取是否连接,这样就可以一对一了,这个电路很简单。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-23
在线时间
6 小时
发表于 2017-3-23 20:04:32 | 显示全部楼层
QL1988 发表于 2017-3-23 19:13
就是这样的连接方式

应该是控制板的程序有问题。
正常的发送方式是:触摸屏发req到1,1回复; 触摸屏发req到2,2回复。。。。。
依次循环才是对的。。。。
>>> 友情推荐 >>> 《Modbus软件开发实战指南》
清华出版社: http://t.cn/RiFOFSc
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 21:17:36 | 显示全部楼层
skyformat99 发表于 2017-3-23 20:04
应该是控制板的程序有问题。
正常的发送方式是:触摸屏发req到1,1回复; 触摸屏发req到2,2回复。。。。 ...

就是不回复,站号位也设置了1 2 3 4不同的地址,组态里读寄存器的地址也是分开比如
站号1 功能码03 地址是0000  0001 写在组态地址是4区寄存器 地址0001 16位无符号整数型
维纶通屏读是4X0001  地址偏移1 写地址是6X0001
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 21:18:32 | 显示全部楼层
岁月无情 发表于 2017-3-23 19:54
基于单台能成功两台却不能成功的基础提供1个方法:就是主机分时连接各台从机
做到分时连接各台从机有2个方 ...

不懂啊,不太懂程序
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-23 21:21:48 | 显示全部楼层
luobin189 发表于 2017-3-22 23:42
从你的话: 问题是写某一个到寄存器里,就会死机。
看来你的程序是做为主站的。

用测试软件只能通讯一个,几个一起怎么通讯,目前就是几台从机连接死机
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-3-23
在线时间
9 小时
发表于 2017-3-23 21:47:22 | 显示全部楼层
QL1988 发表于 2017-3-23 21:18
不懂啊,不太懂程序

MODBUS必须有且仅有1个主机,你的图片上面的哪台是主机?
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2017-3-23
在线时间
9 小时
发表于 2017-3-23 21:49:09 | 显示全部楼层
QL1988 发表于 2017-3-23 21:18
不懂啊,不太懂程序

看到有4个控制器,如果主机是4个控制器中的一个的话,其他3个就得为从机,4个主机肯定不行的。
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-23
在线时间
6 小时
发表于 2017-3-23 22:19:53 | 显示全部楼层
QL1988 发表于 2017-3-23 21:17
就是不回复,站号位也设置了1 2 3 4不同的地址,组态里读寄存器的地址也是分开比如
站号1 功能码03 地 ...

建议在485网络的开始端和结束端并接120Ω电阻,试试看
>>> 友情推荐 >>> 《Modbus软件开发实战指南》
清华出版社: http://t.cn/RiFOFSc
回复

使用道具 举报

2

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2012-11-9
在线时间
86 小时
发表于 2017-3-23 22:50:16 | 显示全部楼层
QL1988 发表于 2017-3-23 21:21
用测试软件只能通讯一个,几个一起怎么通讯,目前就是几台从机连接死机

用Modbus Poll作为主站,代替你的昆仑通态。Modbus Poll中可以监控多路从站及不同功能码的。昆仑通态屏的站地址设置了没有?
1.jpg
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2017-3-23 23:54:58 | 显示全部楼层
QL1988 发表于 2017-3-23 18:54
这个程序老版运行是没有任何问题的,已经运行2年了,现在是前几天加入的通讯协议程序,出现这个问题,程 ...

解决这个问题的办法,应该比较简单吧,从机可以有多个,主机只能有一个.主机发指令.从机回复.主机的指令里面第一个字节是从机的地址.主机的发的数据里面的地址,不是本从机的.不要回复任何消息 ,直接丢弃.保存沉默.这样子问题不是解决了吧.这就是MODBUS总线.
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2017-3-24 08:59:48 | 显示全部楼层
QL1988 发表于 2017-3-23 18:57
老师可以加你QQ吗?每个从机都有不同的地址,如果用触摸屏连接一台是没问题的,比如1,2,3,4,一对一可以 ...

你的网络拓扑是总线型的?还是星型的?我用485总线型的网络拓扑结构,总线上每个设备都有单独的地址,从网络结构上,不存在什么主机或者从机,但可以人为定义主从机
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

19

主题

113

帖子

0

精华

高级会员

Rank: 4

积分
988
金钱
988
注册时间
2013-4-21
在线时间
307 小时
发表于 2017-3-24 10:30:16 | 显示全部楼层
考虑RS485通信的终端电阻
淘宝小店(一嵌在线):https://shop126340021.taobao.com
QQ:3287952605
QQ群:491729196
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2017-3-24 15:34:59 | 显示全部楼层
一看就是程序问题,调试下程序吧,特别是占用总线超时 溢出
1-1
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
发表于 2017-3-24 15:47:00 | 显示全部楼层
Modbus Poll主机   Modbus  Slave从机 一个一个替换看看问题出在那就知道了 ModBusPoll.4.3.4 Slave.zip (3.46 MB, 下载次数: 307)
回复

使用道具 举报

1

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2011-10-20
在线时间
88 小时
发表于 2017-3-24 20:06:32 | 显示全部楼层
感觉像是120R电阻问题,整个RS485网络中只能使用2个120R电阻,不要使用多了。
回复

使用道具 举报

6

主题

80

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2016-9-24
在线时间
80 小时
发表于 2017-3-25 10:02:14 | 显示全部楼层
兄弟,我最近也搞了STM32F103C8T6几块板子做从机和威纶通触摸屏通信,也遇到过这样的问题。软件检查也确认没有问题了,就是多机一通信也你这样。
后来无意中发现总线上并联一个USB转485的宇泰转换接头(接头需要供电)就特么完全正常了,具体什么原因至今没有明白,浪费一个接头成本几十元也还可以接受,现在就一直这么用了,总线上吊一个宇泰转换接头...
你可以参考试试。。。。。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-25 19:12:46 | 显示全部楼层
回复所有参与这次讨论的技术人员。问题已经请苏州的一位通信工程师到本公司解决了,就是程序的问题。现在一切正常。报销差旅费,奖金1000已经当面兑现。
此贴终结。具体解决方案不太清楚,可能是些中断函数的问题和数据处理等等方面,好几个问题。
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-25 19:14:04 | 显示全部楼层
mygod 发表于 2017-3-24 15:34
一看就是程序问题,调试下程序吧,特别是占用总线超时 溢出

回复所有参与这次讨论的技术人员。问题已经请苏州的一位通信工程师到本公司解决了,就是程序的问题。现在一切正常。报销差旅费,奖金1000已经当面兑现。
此贴终结。具体解决方案不太清楚,可能是些中断函数的问题和数据处理等等方面,好几个问题
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-25 19:14:17 | 显示全部楼层
操作系统 发表于 2017-3-23 23:54
解决这个问题的办法,应该比较简单吧,从机可以有多个,主机只能有一个.主机发指令.从机回复.主机的指令里面 ...

回复所有参与这次讨论的技术人员。问题已经请苏州的一位通信工程师到本公司解决了,就是程序的问题。现在一切正常。报销差旅费,奖金1000已经当面兑现。
此贴终结。具体解决方案不太清楚,可能是些中断函数的问题和数据处理等等方面,好几个问题
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-25 19:14:34 | 显示全部楼层
luobin189 发表于 2017-3-23 22:50
用Modbus Poll作为主站,代替你的昆仑通态。Modbus Poll中可以监控多路从站及不同功能码的。昆仑通态屏的 ...

回复所有参与这次讨论的技术人员。问题已经请苏州的一位通信工程师到本公司解决了,就是程序的问题。现在一切正常。报销差旅费,奖金1000已经当面兑现。
此贴终结。具体解决方案不太清楚,可能是些中断函数的问题和数据处理等等方面,好几个问题
回复

使用道具 举报

9

主题

53

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-3-22
在线时间
21 小时
 楼主| 发表于 2017-3-25 19:14:59 | 显示全部楼层
skyformat99 发表于 2017-3-23 22:19
建议在485网络的开始端和结束端并接120Ω电阻,试试看

和电阻没关系,是程序问题
回复

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2017-3-28 08:11:57 | 显示全部楼层
这外块真好赚,哎,可惜我太远了
1-1
回复

使用道具 举报

5

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-5-25
在线时间
86 小时
发表于 2017-3-28 15:24:24 | 显示全部楼层
怀疑你通信协议有BUG
笑着熬下去@_@
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-22 17:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表