仪表通讯问题相关分析

发表于 2019-05-21 17:13:33 收藏 已收藏
赞(0) •  评论(0

仪表通讯问题相关分析

发表于 2019-05-21 17:13:33
+关注

1、硬件问题——接线错误造成的无法连接、无数据返回、返回数据错乱等。需要注意,请务必将未使用的接线用绝缘胶布单独包好,以防造成干扰。

2、针对modbus-rtu命令,地址错误。

3、软件设置错误导致没有数据返回或返回数据错乱。

4、正确有效的数据返回后,由于客户对数据处理有误而造成的读取数据与水表实际参数不同。

针对第1、2、3情况,这里提供查看通讯是否正常工作的方法:

a.电脑带485接口线,单独连接水表的485,通过串口助手发送01 03 00 00 00 02 C4 0B;水表返回数据01 03 04 00 00 00 00 FA 33。此时瞬时流量为0 。

b.或者发送字符:ESN  会返回水表的序列号。

以上均可验证水表通讯是正常工作的。

很多客户说所采集到数据和显示值及运算值不一样,从而认为表是坏的,其实是因为客户没能把读取到的数据换算正确,这里针对这种客户不能有效解析所读取数据的情况做以下分析:

常用有以下两种数据类型:

整形数据  :正累积流量,负累计流量,正累计热量等。

Long数据有32位,存在4个字节中。

单精度数据:瞬时流量,瞬时热量等。

REAL4数据有32位,存在4个字节中。

在此着重说明两个问题:

一:数据发送顺序。水表默认先发低字节,后发高字节。那么客户接受的顺序就是先收低字节,后收高字节。按照接受顺序显示的话一定是错误的。所以客户要把收到的字节前后(高低位)顺序调换一下。

二:modbus地址问题。资料给的modbus地址是按照国际规定执行的。从40001开始,十进制表示。但是我们水表内部地址从0000开始,十六进制表示。所以要求客户将资料中的寄存器地址换算为16进制后减一再运算。访问运算后的地址就能得到正确的数据。

查询修改modbus地址方法:使用V51setup软件。或者发送字符命令MBUSADD? (发送新行/回车、换行)命令为查询地址,发送字符命令MBUSADD=1 (发送新行/回车、换行)命令为设置地址为1(默认地址为1,广播地址FF).

三、以下的例子我们只取两种代表性的数据:瞬时流量和正累计流量。

1.瞬时流量 real4数据处理。

通过串口调试助手发送Simulation Mode Timer=3600 ,让表头进入模拟运行。这个时候显示流量为36.00 。(此处是因表没有安装在管道上处于实验室状态或已安装但实际没有流量,或是空管状态,若表已安装且实际有瞬时流量请忽略此步骤)

瞬时流量存放在0001和0002寄存器,单片机(表内部地址)地址为0000和0001 。

使用串口调试助手发送:

01 03 00 00 00 02 C4 0B

收到01 03 04 00 00 42 10 CB 5F 

有效数据是00 00 42 10。

使用modscan软件收到

仪表通讯问题相关分析

在40001寄存器里面是:0000

在40002寄存器里面是:4210

数据一致,需要注意的是:4210是高字节的数据,0000是低字节的数据。

用户必须调整高低位数据为42100000 。通过后续的转换将单精度32位数据42100000显示为十进制小数就是36.00 。

仪表通讯问题相关分析

不提供单精度转换程序,请客户自行处理。

2、读取正累积流量

内部累积量使用了长整数和小数组合的方式。在一般使用时,用户只需要读出长整数部分即可,小数部分可以忽略。

假设 N 表示是长整数的值 (例如对于正累积流量,REG 0009, 0010 中的 32 比特数值是一个长整数)

Nf  表示小数部分  (例如对于正累积流量,REG 0011, 0012 中的 32 比特浮点数)

n  表示小数点位置  (例如对于累积流量,REG 1439).

那么最终的总累积流量 = ( N + Nf ) ×10n-3

以上详见通讯协议(下载)

3、通过一个例子具体说明

仪表通讯问题相关分析

此通讯演示软件可下载

以下是PLC的一个例子

仪表通讯问题相关分析

客户读出的数据,找不到对应关系了,仔细观察一下。客户的寄存器是8位的,我们的水表是16位的。客户犯错的原因是把8位寄存器的地址安装到16位地址上了。水表通讯资料里面的REG09、REG10寄存器放的是正累积流量。客户就把上面列表的7008 ,7010单元的数值作为正累积量,但是怎么也对不上。那到底应该是哪个呢?我们水表的REG 09寄存器的数值是16位的,根据减一(上文第二项所述)的原则放在客户的7016里了,由此可见,REG10寄存器的16位数据是存放在7018里。

根据我们水表的协议规则,高地位转化后的数据是7018在前7016在后。完整的32位数据是

0000 0000 0100 1010 1101 0010 0111 1110

四、在修改参数的时候,会出现 #010通讯不上等问题时候,可能存在的原因:

1、数据线没有连接好。

2、数据线连接错误,AB接反。

3、数据线不符合连接要求,需要屏蔽双绞的好线。

4、通讯协议不搭配。

5、通讯设置不一致,波特率,数据位,校验位等。

五、现场数据通讯出现跃变,数据不稳定的情况分析如下:

客户现场的设备供电一般不存在地线结构,很多情况下只有火线和零线两根线供电。普通情况下现场的电压转换为AC220V-DC24V。

无论是开关电源模式还是线性电源模式都是经过变压器转换,变压器进行电源隔离,滤除高频谐波,减小干扰。

客户绝大多数情况下不会将DC24V接地,而是将DC24V悬浮使用,在这种情况下,DC24V设备和我们的水表通讯的时候就会出现各种干扰,比如数据的突变,参数的自动改变等。这些问题大都是没有接地引起的,希望客户将DC24V的负端接地使用。

如果客户现场不能提供接地线,如下处理:

仪表通讯问题相关分析

用户设备和水表用屏蔽双绞线连接,双绞线连接彼此的485A和485B。屏蔽层一端接客户的DC24V-,另外一端屏蔽层连接现场的法兰。

关于V51版选型说明:

1)4~20mA 不能与DC8~30V同时使用(注意是8~30V不是36)

2)4~20mA 不能与485同时使用

3)4~20mA 不能与TTL-USART(TXD/RXD)同时使用

4)4~20mA 不能与C1/C2同时使用

5)4~20mA 不能与M-BUS同时使用(硬件已经测试通过,但未经客户尝试)

6)选择OCT后必须选择DC8~30V供电或4~20mA(可作为供电使用也可以作为电流传输使用)

7)OTC为光耦隔离输出,最高耐压36V最大驱动电流50mA

以上我们是不建议客户使用4-20mA输出的,如果执意要4-20mA输出,请配合隔离器使用。

收藏

相关话题

评论(0)

加载更多评论

分享到

QQ空间 QQ好友 微博
取消