台达DVP-ES2-485通讯问题 点击:1052 | 回复:11



zjhd

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-06 19:22:17
楼主

     COM3-9600、8、N、1  RTU通讯,PLC和其他仪表例如压力传感器、水表等等485通讯都是成功的,都能读取到各自设备的参数。

     但是唯独和水质监测的设备仪器进行485通讯时读取不到数据,(他们自己的软件能读到参数)。

     和PLC的com3口接好线,他们的仪表上有显示数据的接收和发出,不过处于异常状态。水质仪表设置的通讯格式也是标准的RTU通讯,和PLC一致,就是各自站号不同而已。

     这其中有可能存在的原因有哪些呢?

1.仪表和PLC485通讯是否真的正常?

2.如果通讯正常,那么是读取寄存器的地址有问题?用modrw指令读仪表寄存器40002 ,是不是只能写入16#9c42。写10进制-40002编译后报错,如果写16进制,应该是一样的吧?

3.是不是还有其他原因呢?请多多指点!


1分不嫌少!


楼主最近还看过



请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8548回
  • 年度积分:24
  • 历史总积分:335295
  • 注册:2011年4月25日
发表于:2022-05-07 12:29:01
1楼

你通信设备多了,看看站号是否冲突,其次看看波特率等参数是否设置一样,再次就是看看你通信线接线有没有问题,虚接或者接反了

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8548回
  • 年度积分:24
  • 历史总积分:335295
  • 注册:2011年4月25日
发表于:2022-05-07 12:29:48
2楼

可以看看用串口调试助手测试一下能不能读取到数据

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-07 16:07:59
3楼

"请叫我王老湿" 的回复,发表在1楼
        对内容: 【你通信设备多了,看看站号是否冲突,其次看看波特率等参数是否设置一样,再次就是看看你通信线接线有没有问题,虚接或者接反了...】进行回复:

        -----------------------------------------------------------------

站号都分的很清楚,没有冲突的。波特率等参数也一一对照过,都是一样的。通信线没接反,接反试过,没有数据的收发。

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-07 16:11:31
4楼

"请叫我王老湿" 的回复,发表在2楼
        对内容: 【可以看看用串口调试助手测试一下能不能读取到数据】进行回复:

        -----------------------------------------------------------------


串口调试助手调试的结果是这样的。仪表的地址为16。

发送:10 03 00 00 00 01

接收:10 83 02 90 f4

无论发送什么指令,修改起始地址以及数据长度,接收到的都是同样的回复。这可能是什么原因呢?搞不懂这个

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-07 16:25:39
5楼

今天也问了台达售后,像寄存器地址为40002之类的,就直接是读取2就行。

后来发现一个问题,com3的通讯错误代码D1253始终为3-接受信息有Exception Code

告诉我这个原因可能是地址不合法,是读取仪表寄存器地址不对吗?用modrw读取的地址修改了很多遍进行尝试,比如16#0007、K0007、7、07等等,读取数据的长度也改了几次。结果都没有变化,错误代码一直为3。

仪表的参数是32位float型,参数地址就是7、9之类的,那么台达能直接读取浮点数吗?

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-07 16:36:26
6楼

现在读不到参数,我都不知道是我编程的原因呢,还是仪表和台达的PLC之间是不是需要做什么?

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:622帖 | 8548回
  • 年度积分:24
  • 历史总积分:335295
  • 注册:2011年4月25日
发表于:2022-05-07 17:04:38
7楼

"zjhd" 的回复,发表在6楼
        对内容: 【现在读不到参数,我都不知道是我编程的原因呢,还是仪表和台达的PLC之间是不是需要做什么?...】进行回复:

        -----------------------------------------------------------------


你先用串口调试助手试一下,不过通信手册要多看,错一个字差别很大

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-09 11:00:24
8楼

给大家说明一下,返回的数据流,10 83 02 90 F4

10:从设备地址16

83:80+03  80:modbus协议规范里有详细说明,03读取指功能码

02:modbus异常码,指的是非法数据地址

90 F4 :应该是校验

image.png

这种为题是从设备的问题吗?该怎么解决呢?

关育谋

  • [版主]
  • 精华:5帖
  • 求助:22帖
  • 帖子:738帖 | 5640回
  • 年度积分:68
  • 历史总积分:84034
  • 注册:2004年5月28日
发表于:2022-05-09 13:35:35
9楼

引用 "zjhd" 的回复,发表在8楼
        内容: 给大家说明一下,返回的数据流,10 83 02 90 F410:从设备地址1683:80+03  80:modbus协议规范里有详细说明,03读取指功能码02:modbus异常码,指的是非法数据地址9...

读40002这个寄存器,那么它的实际地址就是16进制的0001

发送命令就是01 03 00 01 00 01 ** **

其中01 03分别是从站地址和功能码

00 01是寄存器地址,对应寄存器编号为40002或者400002

00 01是预读的寄存器数量

** **是CRC校验

zjhd

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 19回
  • 年度积分:58
  • 历史总积分:400
  • 注册:2020年12月18日
发表于:2022-05-09 20:36:55
10楼

问题基本上解决了,做个小结。

  1. 水质仪表厂家给的协议不明确,最终是用04功能码读取,地址1开始

  2. 用台达COM3口通讯读这款仪表参数,无论是modrd还是modrw都读不了,D1253会有错误3。换成COM2口通讯去读取数据就可以。

禺鸟

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:51
  • 注册:2018年9月09日
发表于:2022-05-27 19:36:46
11楼

学习了,谢谢分享


热门招聘
相关主题

官方公众号

智造工程师