以下为水表格式,用自由口?
水表类型――19H
厂商代码――33 78H
表 地 址――由5个字节组成,每个字节为2位BCD码格式,低地址在前,高地址在后
表当前读数-由4个字节组成,每个字节为2位BCD码格式,第1个字节为小数位,后3个字节为整数位,低位在前,高位在后。
结算日累积流量――由4个字节组成,未使用该功能,数据默认为0。
实时时间――由7个字节组成,未使用该功能,数据默认为0。
数据长度――表示从数据标识开始到校验码之前的所有字节数
校验码―――从帧起始符开始到校验码之前的所有字节进行二进制算术累加,不计超过FFH的溢出值。
广播地址――广播地址只能应用于点对点的通讯中。
计量单位――吨,用2CH表示
1、读表数据(例如表地址:12345678,表盘示数:123456)数据格式如下:
下发给表计数据格式:
FE FE 68 19 78 56 34 12 00
33 78 01 03 1F 90 01 F4 16
说明:FE FE-引导字符;68-帧起始符;19-表类型;78 56 34 12 00-表地址;33 78-厂商代码;01-读表数据控制码;03-数据长度;1F 90-数据标识;01-序列号;F4-校验码;16-帧结束符。
表计上传数据格式:
FE FE 68 19 78 56 34 12 00
33 78 81 16 1F 90 01 00 56
34 12 2C 00 00 00 00 2C 00
00 00 00 00 00 00 00 00 7B
16
说明:FE FE-引导字符;68-帧起始符;19-表类型;78 56 34 12 00-表地址;33 78-厂商代码;81-读表数据应答控制码;16-数据长度;1F 90 -数据标识;01-序列号;00 56 34 12-表当前读数;2C-单位;00 00 00 00-结算日累积流量;00 00 00 00 00 00 00 -实时时间;00 00-表计状态;7B-校验码;16-结束符。
2、读表地址(读取表地址为12345678号的表地址)
下发给表计数据格式:
FE FE 68 19 AA AA AA AA AA
AA AA 03 03 0A 81 01 B9 16
说明:FE FE-引导字符;68-帧起始符;19-表类型;AA AA AA AA AA AA AA:广播地址;03-读表地址控制码;03-数据长度;0A 81-数据标识;01-序列号;B9-校验码;16-结束符。
表计上传数据格式:
FE FE 68 19 78 56 34 12 00
33 78 01 03 0A 81 01 52 16
说明:FE FE-引导字符;68-帧起始符;19-表类型;78 56 34 12 00-表地址;33 78-厂商代码;83-读表地址应答控制码;03-数据长度;0A 81 -数据标识;01-序列号;52-校验码;16-结束符。
3、写表地址(如表计地址为1号,需要改为12345678号)
出厂后的表计设置了出厂启用地址保护功能,直接对表计设置表地址是不成功的,需要先对表计设置清出厂启用,然后设置表地址,最后设置出厂启用
最佳答案
当然用自由口,有多少表?
第一步:把地址搞定
工具就是串口软件,最好是带很多校验的那种串口软件。
目的是知道每个表的地址,方便编程,如果表上注明有地址,那可以省略这步。
用默认地址还是改成你喜欢用的地址都无所谓,主要是地址不能有重复的。
读取表地址和改地址的方法,在规约里已经写的很清楚了,就是用串口软件来读取和改写。
第二步:对单个水表调试
工具就是串口软件。
目的是确认和水表能正确通讯,熟悉读表数据的格式,如果这个工作不能完成,那后面的工作遇到问题时将不好处理。
方法就是用串口软件按读表数据的格式来调试。
第三步:编写程序
1 建议把所有表的请求帧先编写好,放在数据块里,这样直接发送就可以了,免的程序里再计算再校验。
2 读水表采用轮询的方法,假如有4块水表,那就是问水表1收水表1问水表2收水表2问水表3收水表3问水表4收水表4问水表1收水表1………无限循环下去
3 先给水表1发送,发送中断里接收水表1,接收完成中断里执行定时中断,定时中断里给水表2发信息,发送中断里接收水表2,接收完成中断里执行定时中断,定时中断里给水表3发信息,依次循环。
对发送和接收都采用间接寻址的方法,水表再多,只要3个中断即完成。
第四步:把水表的通讯口和200PLC的通讯口连接起来。
第五步:下载程序调试
祝你成功!
提问者对于答案的评价:
谢谢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354171.html