denvice 发表于 2011-11-17 20:57

485通信出错

本帖最后由 denvice 于 2011-11-18 11:54 编辑

最近在研究485通信,结果遇到了问题;公司有两种产品一种是温控器,采用485总线通信,协议是Modbus协议,另外一种是我设计的一种协议转换器,使用的协议也Modbus协议;一开始编程序的时候,我的转换器接收数据的方法是将3082设置为接收模式,一收完数据马上置为发送模式,如果数据不是发送给我的那么我将3082置为接收模式。这么设计的话通信过程中传递55个字节都是很正常的,但是如果传送的数据量大了就会丢失一两个数据;比如发送205个结果收到了203个,我用示波器观察过数据,数据是没有丢失的,我怀疑中途有某个数据的起始位或者是结束位等受到了破坏。后来我将程序改了一下,程序一上来3082是接收模式,如果发送的数据是给我的那么我将转换器置为发送模式,如果不是我不做任何更改,这么处理的话我的数据传输不会出错,但是我发现如果将我的协议转换器和温控器联网,我的没有任何问题,但是温控器会有传输数据丢失的情况;我的转换器影响了别的产品的通信;我觉得有我的问题也有温控器的问题;首先我的产品应该是存在干扰的,然后温控器的程序的抗干扰性做的不好;希望有类似经验的同志指导!!!

denvice 发表于 2011-11-18 20:09

问题得以解决是因为我的每个转换器的通信线A B都添加了 上拉电阻和下拉电阻,由于每个地方的电压参考标准不一样所以会出现这种数据丢失的现象;

jchaodong 发表于 2011-11-20 10:57

楼主的经验值得借鉴,学习了

chunyang 发表于 2011-11-21 15:48

注意,只有该发送数据的时候才能置本节点为输出模式,否则一律为输入模式,另外,置为输出模式后要延时至少1mS后再开始发送数据。
页: [1]
查看完整版本: 485通信出错