特立独行
级别: 略有小成
精华主题: 0
发帖数量: 6 个
工控威望: 205 点
下载积分: 470 分
在线时间: 2(小时)
注册时间: 2017-11-05
最后登录: 2018-03-22
查看特立独行的 主题 / 回贴
楼主  发表于: 2017-11-15 10:00
现在用的是FX3U与步进电机驱动器通过485双线通讯,即半双工。现在出现的问题是PLC能正常的发送数据给驱动器,但不能正常的接收驱动器返回的数据,接收到的数据混乱,偶尔能接收到正常的。通讯格式设置的是H0C81,RS指令见附件。求教各位,应该怎么解决?步进电机驱动器已经用电脑的串口监视过,收发没问题。PLC也是。 程序(部分)


zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-27
查看zhangqi_1234的 主题 / 回贴
1楼  发表于: 2017-11-15 10:41
这是三菱RS指令的问题,收发数据几乎是同时进行,中间没有时间的间隔,容易收到回传的数据。解决的方法有两种:
1、改用四线制连接,发送和接收的线路分开。
2、修改RS指令,发送数据时,设定接收0个数据,然后延时3.5个字节时间(9600bps,约30ms),再发送0个数据,接收n个数据。
第2种方法是否有效,需要验证。我采用的是第1种方法。
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-27
查看zhangqi_1234的 主题 / 回贴
2楼  发表于: 2017-11-16 21:03
RS232转485,转换了信号电平,但不能使收发数据线分开。如果用RS指令,还是容易出现收到反射回来的数据。我还是那个意见:如果用第二种方法,发送数据时,设置接收0个数据,中间延时一段时间,再发送0个数据,接收n个数据。难度在于延时时间的调节,30ms不行,就调成10ms、20ms、40ms尝试。实在不行,只有在硬件上增加FX3U-485ADP-MB适配器,使用ADPRW指令。另外,如果PLC使用RS232通信功能板,那么就按RS232方式设置通信参数。
[ 此帖被zhangqi_1234在2017-11-16 21:45重新编辑 ]
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-27
查看zhangqi_1234的 主题 / 回贴
3楼  发表于: 2017-11-17 19:51
1、使某个位元件置1(如M10),执行发送数据的RS指令,接着把数据传送到发射缓冲区。然后用边沿脉冲使M8122置1,开始发送数据。收到回复后M8123置1,需要同时对M10和M8123复位,避免发送数据的指令一直有效。你的程序中使用的是T200,程序中没有看到对T200的复位。
2、间隔一段时间(间隔时间与通信速率有关,如9600,表示每秒发送1200个字节,间隔3.5个字符,约3ms左右,可适当调节。如果间隔时间太短,就降低通信速率)后,使某个位元件置1(如M11),执行接收数据的RS指令,然后用边沿脉冲使M8122置1,开始接收数据,收到回复后M8123置1,需要同时对M11和M8123复位。
在论坛上有人提过,采用这种方式能收到二线式连接从站回复的数据。祝你好运!
[ 此帖被zhangqi_1234在2017-11-17 19:56重新编辑 ]