http://bbs.gongkong.com/d/202203/881943/881943_1.shtml
这是上次发过的帖子,可以看一下!!!
PLC 1台 型号DVP-32EH
温度模块1个 支持modbus 通讯
现在的问题是PLC接收不到温度模块返回的数据
用电脑的USB转485接口,用串口助手发送 01 03 00 02 00 01 25 CA 给温度模块(这个数据是温度模块手册给的)
温度模块可以正确的返回当前测量温度
然后用PLC编写了一个读取温度的程序,用485接口发送01 03 00 02 00 01 25 CA
这么一组数据到温度模块( 使用MODRW K1 K3 H2 D50 K1 指令)
温度模块返回的数据PLC收不到,在PLC对应的数据接收寄存器里面没有数据(监控显示是1),
后来尝试用串口助手发送温度数据给PLC也是一样的效果。。。
程序非常简单就是一个读取温度的modbus协议的程序。
是不是梯形图要编写一个接收数据的程序,我在官方例程手册上面没有看到接收数据的梯形图
上面的这个程序可以正确的发送数据,串口助手可以正确收到,就是返回的数据收不到
温度模块发送的数据也收不到
我想问一个问题,就上面这1小段程序能不能收到从站发送的数据,是不是还缺少一小段接收程序?
//-----------------------------------
下面这个图是温度模块的一些基本信息,
首先通过串口助手发送读取命令的数据 温度模块是可以正确返回数据给串口助手的,
证明温度模块没有问题
然后PLC编写的程序 通讯参数设置的也是和温度模块的一样,为什么温度模块发送的数据PLC接收不到
楼主最近还看过
"关育谋" 的回复,发表在1楼
对内容: 【用串口调试助手监视PLC发出来的指令,看看是不是你用串口调试助手发给温控的那条命令,等你反馈。...】进行回复:
-----------------------------------------------------------------
这个试过了的,
我的测试方法是plc和温度模块正常连接
然后usb转485的接口和plc485接口连接
等同于一个plc接了2个从站(其中有一个是电脑串口)
用电脑串口可以发现plc能正确发送读取温度指令
温度模块也能正常发送温度数据,
问题就是plc没有办法收到数据!
"一颗小小草" 的回复,发表在5楼
对内容: 【你监控看看D1296~D1311的值。使用PLC的那个COM口(COM1?COM2?COM3?),使用ASCII或者RTU,程序特殊寄存器以及储存地址是不一样的。参考一下台达的例子程序,感觉应该是程序...】进行回复:
-----------------------------------------------------------------
COM2口是485的接口
最开始我是按照视频教程上的程序测试的,发现PLC可以发送数据读取不到数据(和视频教程的PLC型号一样,程序也是一模一样),
然后我按照台达的例子程序 程序完全是照着抄写的,问题还是一样的,PLC可以发送数据,读取不到数据!!!
帖子上的程序是我慢慢减掉了一些没有必要的功能,每次按下按键,发送一个读取指令,用串口监控发现,按下按键PLC发送了读取指令(发送的读取指令是正确的,温度模块也返回来正确的温度数据),但是PLC对应的数据寄存器里面不是正确的温度值
"落叶归根87" 的回复,发表在4楼
对内容: 【"C预言" 的回复,发表在3楼 对内容: 【"关育谋" 的回复,发表在1楼 对内容: 【用串口调试助手监视PLC发出来的指令,看看是不是你用串口调试助手发给温控的那条命令,...】进行回复:
-----------------------------------------------------------------
RS指令没有试过 用台达的 读数据指令试过 问题一样
用读写指令测试也是一样的问题,总是感觉PLC接收不到数据,可以确定 温度模块有发送数据出来,就是PLC没有办法收到数据
"gkatydid" 的回复,发表在10楼
对内容: 【你用COM2口时,数据返回在D3 D4 D5 D6 .......中,D0为1是地址,D1是功能码03.之前已经回你了。仔细阅读说明书,com3时又不一样。连续监控D0-D15值,就有你想要的结果。...】进行回复:
-----------------------------------------------------------------
问题已经找到了,
你说的数据存储位置我之前有看到,这次犯了低级错误,测试modbus的时候最开始我是用电脑软件模拟从站的方式,当时把从站配置错误导致数据接收不到,后来就买了个温度模块进行测温(这个时候通讯参数没有问题)。反复调试了几次之后寄存器数值都是1,我以为程序有问题或者是PLC问题,白天上班,晚上才有空学PLC,刚好晚上室内温度是在257-265(这个数值除以10就是实际温度),对应的16进制就是101-109,然后PLC存储数据的时候时候,比如16进制的101(对应温度257除以10就是25.7度) ,存储的时候是把0102(也就是102数据),01存储在D4 02存储在D5,然后分别读取D4 号D5的时候 他们都只是 1 和4,实际上这里D4是要和D5组合一下,D4的数据要放在高8位的寄存器中才是真实的温度数据。
还是基础不扎实犯了个低级错误,