我CP 341 用ASCII 和仪表通信
我首先用串口调试助手和他通信
在RTU 的情况下
我用 08 04 00 00 00 04 31 56 能够读取到数据
08 (8号站号)04(功能码)00 00 (数据起始地址)00 04(4个数据)
31 56 (效验)
但是现在我要用 ACSII 通信
我应该 发什么样的指令给仪表???
我今天下午 反复试了一下午 然后质询厂家
厂家说 直接发 08 04 00 00 00 04 3156 但是我始终通信不上
还有就是我资料上 说 ASCII 协议是 3A开头 0D 0A 结束 LRC 效验
我今天好像试了也不行
把08 04 00 00 00 04 3156 改成
30 38 30 34 30 30 30 30 30 30 30 34 33 31 35 36 我不记得是否测试了
如果 这样发送 数据的话 是在串口调试软件上
按HEX 发送 还是ASCII发送
是否 要加 3A 开头 0D 0A 结束 然后 换成ASCII 的 LRC 效验
这个方法我好像试也试了
有的朋友说 直接在串口调试软件 上选择 ASCII 发送
输入 08 04 00 00 00 0D 31 56
这个我好像没试
或者还是 用其他方法
问厂家 打了 十几个电话 厂家 最后自己说 自己也不知道
通信口 串口调试 软件 都没问题
除非仪表本身不支持ASCII 通信 其他 原因可以都排除
厂家说仪表支持 ASCII
求大家帮忙啊 公司老催回去
客户 到是不急 老是改东 改西 一个几十万的项目 陆陆续续来个
2个月了 哎 急啊
最佳答案
一般仪表支持ModbusRTU,从你测试的情况来看,是支持的,ModbusASCII就不一定支持了
这里我想你对CP341的ASCII协议理解错了,它并不是ModbusASCII协议,只是以ASCII字符方式通讯,就相当于S7-200的自由口通讯,也就是自定义协议,我想你是没有买ModbusRTU协议转换插件吧(俗称狗),所以用ASCII协议要自编校验程序,你按ModbusRTU协议来编写就可以了。
以下网友编的Modbus程序你可以参考一下
http://bbs.e10000.cn/a/a.asp?B=302&ID=1136979&p=2&q=1&r=127841
提问者对于答案的评价:
ok
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc297970.html