登录
首页 PLC论坛 台达PLC
回帖 发帖
正文

主题:台达S系列RS通讯问题

点击:520 回复:6

台达PLC(14SS2)COM2口与单片机连接RS485通讯,单片机发,PLC收。PLC端使用RS指令设置发送数据量0,接收数据量4,现在通讯没有问题,问题是单片机那边停止发送数据后,PLC端没法判断,不能把之前接收到的数据清零。
例如:单片机发送设备速度(4个字节数据),设备停止,单片机停止发送数据(通讯口停止发送),PLC这边RS指令一直激活运行,只是接收不到任何数据,存储器中一直保持着单片机停发前最后一次发送的数据。也就是设备速度为0,但PLC端仍旧显示设备停机前的最后速度。
有关RS指令的特殊寄存器基本都试过了,好像没有一个能判断通讯伙伴是否发送数据的特殊位寄存器。大家有什么好的办法解决这个问题?
最后修改:2023/9/2 16:23:22
23-09-02 16:13
假设接受的数据放在D0里面,可以把D0传给D10,用延时判断D0里面的数据有没有变化,
比如设定3秒钟没有变化,就把传送节点断开,同时给D10赋值0
23-09-03 10:15

引用 qjj740210 在 2023/9/2 16:13:21 发言【内容省略】

通信协议为什么不用标准协议呢?比如Modbus RTU或者Modbus ASCII
23-09-03 10:25
假如设备速度恒定,一直是某个值(或者在一定时间内维持某个值),这样的话,一定时间内收到的值没有变,就不能认定为设备停机(实质设备恒速运转)。
23-09-04 14:56
您意思:如果是标准的MODBUS RTU或者ASCII协议,我们可以利用数据帧之间的间隙时间,在间隙时间长度内如果数据一直保持不变就认为对方(单片机)停止发送数据了。是这样吗?
现在问题:我仔细看了台达RS指令,这个指令是每隔一定时间激活收发一次,压根没有规定数据帧之间的间隙时间。
23-09-04 15:04

引用 qjj740210 在 2023/9/4 14:56:42 发言【内容省略】

那可以直接给接收的寄存器赋一个值,这个值是正常情况下不会出现的。
如果在设定时间内没有变化,就认定是通讯出了问题。
因为如果通讯正常会变化的
23-09-04 16:22
好办法!高!感谢您!
23-09-04 16:58

工控新闻

更多新闻资讯