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


特立独行
级别: 略有小成
精华主题: 0
发帖数量: 6 个
工控威望: 205 点
下载积分: 470 分
在线时间: 2(小时)
注册时间: 2017-11-05
最后登录: 2018-03-22
查看特立独行的 主题 / 回贴
1楼  发表于: 2017-11-15 10:15
由于PLC非正版,485接口只提供了A、B两条线,未提供地线连接。
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-12
查看zhangqi_1234的 主题 / 回贴
2楼  发表于: 2017-11-15 10:41
这是三菱RS指令的问题,收发数据几乎是同时进行,中间没有时间的间隔,容易收到回传的数据。解决的方法有两种:
1、改用四线制连接,发送和接收的线路分开。
2、修改RS指令,发送数据时,设定接收0个数据,然后延时3.5个字节时间(9600bps,约30ms),再发送0个数据,接收n个数据。
第2种方法是否有效,需要验证。我采用的是第1种方法。
特立独行
级别: 略有小成
精华主题: 0
发帖数量: 6 个
工控威望: 205 点
下载积分: 470 分
在线时间: 2(小时)
注册时间: 2017-11-05
最后登录: 2018-03-22
查看特立独行的 主题 / 回贴
3楼  发表于: 2017-11-15 11:34
引用
引用第2楼zhangqi_1234于2017-11-15 10:41发表的  :
这是三菱RS指令的问题,收发数据几乎是同时进行,中间没有时间的间隔,容易收到回传的数据。解决的方法有两种:
1、改用四线制连接,发送和接收的线路分开。
2、修改RS指令,发送数据时,设定接收0个数据,然后延时3.5个字节时间(9600bps,约30ms),再发送0个数据,接收n个数据。
第2种方法是否有效,需要验证。我采用的是第1种方法。

目前的设备情况无法改成4线制的。由于485设备是收到PLC的指令后立刻响应一串数据,因此若设置延时,将收不到设备响应的数据。
现在我想尝试用232口做通讯,然后经过232转485的转换器连接到485设备上。但我现在没有搞明白:怎么选择通讯口,我现在只能从
485口读到数据,232口读不到数据。想请问怎么选择使用232口做通讯。
我现在将232口和485口通过usb转换都连接到电脑上,通过串口调试助手监控。232口无法进行传输数据
[ 此帖被特立独行在2017-11-15 11:40重新编辑 ]
小满和老鸟
专注,坚持!
级别: 略有小成
精华主题: 0
发帖数量: 256 个
工控威望: 371 点
下载积分: 904 分
在线时间: 83(小时)
注册时间: 2017-08-27
最后登录: 2024-07-24
查看小满和老鸟的 主题 / 回贴
4楼  发表于: 2017-11-15 19:32
正在学习PLC串行通信,祝好运。
lizi707
级别: 探索解密
精华主题: 0
发帖数量: 18 个
工控威望: 145 点
下载积分: 598 分
在线时间: 15(小时)
注册时间: 2013-06-26
最后登录: 2023-03-30
查看lizi707的 主题 / 回贴
5楼  发表于: 2017-11-16 11:05
个人意见,发送太快,还没接收完成
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-12
查看zhangqi_1234的 主题 / 回贴
6楼  发表于: 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重新编辑 ]
特立独行
级别: 略有小成
精华主题: 0
发帖数量: 6 个
工控威望: 205 点
下载积分: 470 分
在线时间: 2(小时)
注册时间: 2017-11-05
最后登录: 2018-03-22
查看特立独行的 主题 / 回贴
7楼  发表于: 2017-11-17 09:56
图片:
图片:
我已经尝试设置延时,从10ms到30ms,隔5ms尝试一次。收到的数据均为0。程序如图
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-11-12
查看zhangqi_1234的 主题 / 回贴
8楼  发表于: 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重新编辑 ]
harrison0621
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看harrison0621的 主题 / 回贴
9楼  发表于: 2017-11-18 10:59
命令字串如不对,也有问题。可先透过电脑下命令确认命令字串是否正确比较快
ywf2008
级别: 探索解密
精华主题: 0
发帖数量: 61 个
工控威望: 173 点
下载积分: 433 分
在线时间: 197(小时)
注册时间: 2014-02-06
最后登录: 2024-10-15
查看ywf2008的 主题 / 回贴
10楼  发表于: 2017-11-19 16:45
  


正在学习PLC串行通信,祝好运。
按图索骥
级别: 正式会员
精华主题: 0
发帖数量: 3 个
工控威望: 91 点
下载积分: 523 分
在线时间: 11(小时)
注册时间: 2016-04-23
最后登录: 2018-07-15
查看按图索骥的 主题 / 回贴
11楼  发表于: 2017-11-19 21:50
因为是半双工,RS指令应该由上升沿触发,否则持续发送,没有接收数据
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go