硬件部:李千里

   

一、确认控制器与仪表的通讯方式,通讯地址,波特率,停止位,数据位,校验位一致。控制器的各项参数,可以在配套设参软件中查看和修改;仪表的各项参数,一般在配套说明书或者通讯协议中都有提到,有些仪表也可以通过软件或者特殊指令读取或者修改参数。 

  

二、用电脑串口调试助手监视控制器发数。 

1、保持控制器与仪表连接正常。RS485通讯把两根线并到控制器A,B上;RS232通讯把电脑端RX接控制器TX,电脑端GND接控制器GND。 

2、打开串口调试助手,设置成与控制器和仪表相同的波特率,停止位,数据位,校验位,选择16进制显示,观察接收面板有无数据(如果控制器是DATA-6301或DATA-7208,需要通过设参软件看下串口采集间隔(采集间隔过长可以适当先修改下间隔),如果控制器是DATA-6216,需要唤醒液晶触发采集)。 

3、如果接收面板一直没有收数,检查下串口板、串口参数(RS232或RS485、停止位、数据位、校验位)是否匹配;如果收数与实际发数相差很多,检查下波特率是否匹配。 

  

三、用电脑串口调试助手监视仪表回数。 

1、保持控制器与仪表连接正常。RS485通讯与上述接线方法一样,可以同时检测收发;RS232通讯把电脑端RX改接控制器RX,只能监听收数。如果没有回数,检查下通讯地址是否正确。确认地址正确,还没有回数,如果是RS485通讯,可能是RS485切换太慢,仪表回数没有接收到,需要减小切换间隔。 

2、有些仪表在供电后需要一定启动时间,如果是控制器控制供电,可以延长串口稳定供电时间。 

  

四、如果回数正常,控制器没有存上数据,这种情况一般在测试情况下发生。首先检查下程序中是不是中断函数把数据接收了。 

其次,看下数据校验函数是不是存在BUG。如果数据字节较多,看下数据接收缓冲区的BUF开得够不够大。 

排除上面问题,还不能正常收数,可以把接收的数据通过set_com_channel函数通过其他串口打印出来。如果打出来的数据跟仪表回数的数据不一样,可能是硬件(串口板、串口转换模块)的问题,逐一换硬件重新试下。有时候在波特率较低数据较多,应计算下数据传过来的时间,如果大于控制器中成帧超时时间,应适当增加成帧超时时间。