1. 项目基本信息
basic project information
石油化工、s7-400、et200m、cp341与第三方的设备做modbus通讯
2. 现场问题描述
the problem description
cp341做主站、第三方的设备做从站。但通讯没有建立起来。
3. 现场问题分析
problem analysis
1、首先检查cp341参数设置情况。选择的是modbus主站模式。接收线的参数配置是否正确。
由于现场做的modbus是两线的通讯方式,所以接收线对于modbus来说有两种选择。
根据rs-485的电气特性:rs485总线上的数据的0、1状态是根据ab的电压差确定逻辑1:uab=+2v ~ +6v 逻辑0:uab= -2v ~ -6v 高阻状态:-2v~+2v。
通常情况下,发送驱动器a、b之间的正电平在+2~+6v,是一个逻辑状态,负电平在-2~6v,是另一个逻辑状态。另有一个信号地c,在rs-485中还有一使能端,而在rs-422中这是可用可不用的。使能端是用于控制发送驱动器与传输线的切断与连接。当使能端起作用时,发送驱动器处于高阻状态,称作第三态,即它是有别于逻辑1与0的第三态。
所以一般情况下我们选择参数“signal r(a) 0 volt signal r(b) 5volt”方式。所以参数设置正常。
2、检查rs485电缆,通讯只需要r(a)、r(b)两根,通过万用表测量电缆 接线正常。
3、使用pc和设备自带软件检测设备的设置和通讯情况。通过设备自带的设置软件,以及rs485转rs232的转换器进行检测。可以并两根线到接收线上,再连接转换器。
通过软件可以显示已经找到的设备的地址,波特率、校验位、停止位、数据位
通过软件获取通道中的数据正常。设备通讯设置是正常的。
4、在pc上通过以下工具软件作为接收终端来接收从cp341来的modbus数据。
发现收的都是误码,检查接收线没有接错。
这里我们需要了解一下modbus的数据帧结构:
所以做modbus通讯主站发出一个请求,从站收到后会给个应答:
所以按照目前收到的代码是不正确的。按照误码的情况分析,因该是接收线上存在干扰导致的。
按照rs485的要求需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。但在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。
现场的线路没有加电阻,但距离只有30米,所以在允许的范围内。
5、再次检查接收线,在15针的接头上发现cp341接头上有两根短接线。
用户告诉可能接线的员工看到我们的线路上内部2—4、9—11之间是短接的所以就焊上去了。
4. 现场问题处理步骤
problem solving steps
将两根短接线去掉。通讯便正常了。
5. 处理结果
the final result
分析产生误码的原因:此电路图为内部原理图,用户的错理解,在外部额外增加的这两根线导致信号在线路中反射后叠加从而产生误码。由于前期简单询问接线状况后,没有经过二次拆线检查,导致延长了解决问题时间。排查通信问题务必要保证从通信协议osi七层模型的最底层-物理层查起,然后再一层层排查。
并非多多益善,原理图的工作我内部完成了,外部的额外接线就免了吧,cp341喃喃地说。