首页 上一页 1 2 下一页 尾页

modbus的通讯问题,谁能帮我啊? 点击:3606 | 回复:21



cifu2011

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-10-18 12:00:14
楼主

单位让我做Modbus通讯程序,我用了03,06两个功能,PC机做上位机(主机),我们的产品变频器是从机。1台主机,3台从机。我调试有一段时间了,06的功能我加上了,03的功能我也加了,可是会丢数,即便是读一个地址,也是会丢的。大家能帮我分析分析原因吗?

1.06不丢,03丢。

2.03功能如果是手动发送,回数据正常,如果是自动发送,3台里就丢1台的数据。

 具体现象:手动发送,先1#机读一个地址,1#机回复。再2#机读一个地址,2#机回复,3#机读一个地址,3#机回复。从读一个地址到10个地址,都是可以的。

自动发送:轮流读3台从机的一个地址,一开始都有回复,一段时间后(十分钟吧)就只有2台了。有一台就好像是死机了是的,怎么发指令都不管用。而且这两台回复的数据也有丢失。读一个地址是这样,读多个地址也这样,指令间隔从200ms到1000ms都这样。

3.我们的程序是PWM的中断级别最高,通讯是在定时器中断里的。CPU是DSP2808,没用通讯自己的中断(以前用过,通讯丢数,后来不用了),用的是FIFO,在定时器中断中查询FIFO接收的个数,够1帧就处理。

现在我想不出原因,是CRC校验码程序耗时太长,导致一部分指令没收到,所以就不能回复,导致丢失?还是硬件有局限,导致这样?好烦啊,领导老催我,好像我是万能的,什么问题都能解决。




bt001

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 167回
  • 年度积分:0
  • 历史总积分:540
  • 注册:2009年5月21日
发表于:2011-10-19 18:44:31
1楼

嘿嘿,CPU绝对是没有问题的。要从自身找原因,技术饭不是那么好吃的。

每个子程序的耗时可以使用软件模拟器或者直接硬件仿真来测试确定。

够一帧就处理是很不好的策略,没有考虑到现场干扰或偶发丢失数据等问题。例如每一帧10个字节,结果你收到了这次的9个字节和下帧的1个字节,校验就肯定不通过了。而且这个错误会不断累计到下次通信处理上。

如果使用软件查询法,可建立一个通信FIFO,滑动判断是否存在特定的帧结构数据,然后校验帧尾的方式来判断是否获得完整的数据帧。

如果使用中断法,根据每个接收字节之间的延迟时间可以判断出数据帧的开始和结束。

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-10-24 15:34:39
2楼

我们现在从机(变频器)接收采用FIFO,软件查询法。发送没采用FIFO.。我自己大概也猜到是程序的原因,但是因为对变频器来说,PWM中断始终是最高级的,所以我总是担心通讯的反应不够及时。您说的滑动判断是指判断一帧的开始吗?然后再判断帧尾。程序我思前想后改动了好多回了,一直都没起色,直到我把判断帧结束的语句放在PWM中断里,死机问题才解决。丢数的问题还在改进中。我觉得做一个程序员挺累的,如果一个问题偶尔发生一次,原因不好找,如果老发生,原因反倒好找。大家有同感吗?我有时觉得自己快江郎才尽了。程序员是否是吃青春饭的?我有时觉得自己老了。

imgg

  • 精华:7帖
  • 求助:1帖
  • 帖子:98帖 | 1694回
  • 年度积分:0
  • 历史总积分:5386
  • 注册:2002年4月03日
发表于:2011-10-24 16:15:00
3楼

山重水复疑无路,柳暗花明又一村。

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2011-10-26 10:54:06
4楼
偶发故障最麻烦,有规律的问题就容易寻找故障点。技术上的突破,也是经验的长期积累。楼主hold住。

gougunsk

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 113回
  • 年度积分:0
  • 历史总积分:273
  • 注册:2007年2月24日
发表于:2011-10-27 10:52:11
5楼

专为Modbus PLUS(MB+)总线光传输提供的完善的产品和技术解决方案


--------------------------------------------------------------------------------


NS230系列产品是参考Modicon的Modbus PLUS系列光纤中继器产品的功能,采用多项最新技术研发而成的Modbus PLUS(MB+)总线光纤链路模块。它可以完成通过光纤传输Modbus PLUS现场总线,在功能上可以代替490NRP253,490NRP254,NWFR85D200等产品。此产品具有的优点有:体积小、低功耗、工业级设计、电源适应性、优美的外观与导轨式安装机壳等等……,同时,还有如下几个突出的特点:金属铸造工艺外壳,特有的LisRing解环协议、型号丰富的系列化产品等。

NS230系列产品的总线接口采用DB9-F同轴接口,兼容Modicon的MB+总线规范。本产品采用TrueBus总线技术,真正逻辑上的全对等总线,支持Modbus总线速率,在性能上与Modicon的产品相当。

www.gougunsk.com

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-10-27 14:59:10
6楼
大家有使过台达和富凌的变频器吗?他们的modbus通讯功能好使吗?

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-11-08 17:14:16
7楼

大家有使过台达的modbus通讯吗?他们有没有丢指令的情形?丢的多吗?

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-11-08 17:44:00
8楼
我现在的modbus通讯工作接近尾声了,剩下一个问题,通讯很长一段时间(6个小时)左右,有一台机子就死了(通讯死了,其他功能正常),我知道是程序的问题,我改了一下,看看今晚还死不死?希望到明天他们还活着,这样我就可以交差了。干了3个多月了,尽管接这个工作之前我还不知道modbus是啥,而且公司就让我一个人做,所以时间就拖了这么久。有的时候没人商量,有个团队该多好啊!加班还有个伴呢!我也不想这么长的,但有的时候找问题的时间比解决问题的时间还长。

王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-08 21:46:39
9楼
我用过施耐德的,当时用自己做的MODBUS主站,访问从站后等待从站应答的时间留短了,好久也不正常.后来试着慢慢加长等待应答时间就调出来了.

bhdxzgp

  • 精华:5帖
  • 求助:8帖
  • 帖子:141帖 | 5451回
  • 年度积分:0
  • 历史总积分:21609
  • 注册:2006年4月16日
发表于:2011-11-08 21:58:04
10楼
应该是程序的问题;还要好好想一下策略!

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-11-09 16:18:13
11楼
10楼,你好,MODBUS主站怎么做啊?我做的应该是从站的部分,主站就是上位机(计算机了)。应答时间为什么要变长,我的程序里没有应答时间的设置啊?

王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-09 21:39:33
12楼

你好,我当时做的是一个PROFIBUS 与MODBUS的协议转换器,它的MODBUS口是MODBUS主站,PROFIBUS口是PROFIBUS从站,MODBUS口访问MODBUS从站的参数由PROFIBUS主站配置下来.里面用的WPC3芯片.

王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-09 21:51:13
13楼
PC机做MODBUS主站是没问题的.只是在编程时要想到主站呼叫某一个从站后要等正确收到了应答或者等到规定的时间还没有应答才能再呼叫下一个从站.这个规定的时间就是等待应答时间.

王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-09 23:00:23
14楼
还补一点,不管是主站还是从站在发完指令或应答之后都应及时释放总线.

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-11-16 14:20:15
15楼

王高炉,你好。你说的应答等待时间应该是主站的设置吧,我作的是从机,只需要回复,不需要发指令,所以可以没有应答等待时间吧?

王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-17 14:38:21
16楼
回复内容:
对:cifu2011 关于

王高炉,你好。你说的应答等待时间应该是主站的设置吧,我作的是从机,只需要回复,不需要发指令,所以可以没有应答等待时间吧?

内容的回复:你好,从站不用考虑应答时间,但应在收到呼叫后尽快回答主站.我碰到的施耐德变频器,还有欧陆的电子秤表响应主站呼叫都有点慢,都是在调整应答等待时间后搞通的.


王高炉

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 17回
  • 年度积分:0
  • 历史总积分:119
  • 注册:2003年9月23日
发表于:2011-11-17 15:41:23
17楼

又仔细看了你说的现象,用手工分别呼叫3台从机通信正确,说明从机没问题.你的主站是不是用PC的串口加一个RS232转RS485的转换器再用串口助手做的.如是这样要注意转换器的数据流方向控制情况.一般它是自动的,但比较迟钝.这就有可能引起你说的丢些接收数据现象.(主站呼叫已发完,但主站还控制着总线,从站回答数据时确控制不了总线,主站收不到从站数据).也许是这样吧.

wlqmutou4

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 86回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-12-12 10:02:20
18楼
我们 济南伦渠公司 的 RS232/RS485转换器能传输3000米远的距离 生产1:各种PLC编程电缆 人机编程电缆 触摸屏电缆 变频器 下载线 西门子MPI编程电缆 以太网转换器.   2:rs232-rs485/422/can/lon/光纤/以太网转换器 隔离器 中继器串口服务器 光纤交换机 RS485转换器 3:光纤收发器 光纤转换器 光端机 视频光端机 光猫 光缆 联络 I3O7534842I

cifu2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 26回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2011年8月09日
发表于:2011-12-28 11:16:41
19楼
大家好!我的modbus通讯最重要的死机问题好像解决了。原来的时候,通讯一段时间后就有1台没反应了。通讯是没反应了,但是变频器的其他功能还是正常的,比如面板操作,端子操作。所以一直为这个苦恼。有一天,做通宵通讯试验,到早上都是正常的,但是我打开电脑(先前电脑待机了)的一瞬间,死掉1台。我在程序中增加了串口复位功能,没发现死机现象了。也许是干扰导致串口死掉,大家用过DSP2808的有没有出现过跟我一样的问题?至于丢数问题,现在把主机的指令发送间隔时间变长后,丢数会变很少了。这个程序定了一个版本,暂告一段落。我和同事出差去了客户那里,但是他们要求功能码16是必须有的。我现在正加这个程序。他们上位机上使的通讯软件我也拷回来了。刚测试成功。距离他们的要求还有一定距离,还需努力啊!

一杯红酒

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 112回
  • 年度积分:1
  • 历史总积分:154
  • 注册:2017年8月05日
发表于:2019-07-02 11:47:30
20楼

看看,学习一下,学习一下,学习一下,学习一下


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页