三菱PLC通讯问题,请高手们帮帮忙!谢谢! 点击:1382 | 回复:11



sequel2010

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-20 02:01:18
楼主
我现在用的PLC是FX1S的(这个是目前的一个小项目用的FX1S,后面有个项目估计要用FX2N或者3U的,所以得先弄清这个通讯的问题),然后用了485BD通讯板,和公司的控制器(下面简称EVC)进行通讯,采用的是485半双工方式进行通讯,也就是2线制的,用的是无协议通讯方式,就是用RS指令,当我发送命令数据给EVC并要求EVC返回数据给PLC时,PLC在接收数据的时候,我分配的那些接收数据寄存器里面的数据起初是PLC发送的数据,然后接收到EVC返回的数据,这样数据寄存器里面的内容就被覆盖,出现闪的情况,每次通讯时,都会出现这样的情况,现在是想如何处理接收端过滤掉接收到了是PLC发送的那些数据,问三菱技术支持,说是回波通讯的问题,不知道通过软件编程能否解决这样的问题,请高手们帮帮忙,不胜感激!例如我发送的指令是 RS D0 K29 D30 K29,为什么是发送和接收的数据寄存器个数都是29(其实我真正发送命令的数据只有8个,但第八个后面的数据都是0),是由于我发现如果是不一样的话,按照书上说的RS指令格式来,我接收到的数据是错误的,是循环错位的,不知道为什么,是不是由于2线制的原因?但如果分配的个数一样多,那我接收的数据就是都是正确的,当M8122前面的脉冲开光接通发送数据后,数据寄存器D30-D58里面的数据一开始是PLC之前发送的数据,之后立马闪烁为EVC返回的数据,当到下一个脉冲发送数据时,又出现这样的现象,不知道到如何去解决,希望有经验的大侠们帮帮小弟!在此再感谢阅读并回复帖子的朋友们!



dianqisu

  • 精华:5帖
  • 求助:0帖
  • 帖子:23帖 | 804回
  • 年度积分:1
  • 历史总积分:9138
  • 注册:2008年12月19日
发表于:2010-11-20 08:44:19
1楼

   我觉得你应该再仔细想想你的思路是不是有问题.你可以变通一下.如果你只要发送数据给下位机,你可以把读数据设为0,那它就只发不收了.相反如果你只要收,你就把发数据字节设0就行了.

还有 同时都要的时候,也就是说你既要发,也要收 你可以用M8123 做标志位,把你收到的数据立即转移出去, 这样你就不会把数据给覆盖掉了 ...!

多写两步程序,就能解决你的问题了...

sequel2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-20 10:22:22
2楼
回复内容:
对:dianqisu 关于

   我觉得你应该再仔细想想你的思路是不是有问题.你可以变通一下.如果你只要发送数据给下位机,你可以把读数据设为0,那它就只发不收了.相反如果你只要收,你就把发数据字节设0就行了.

还有 同时都要的时候,也就是说你既要发,也要收 你可以用M8123 做标志位,把你收到的数据立即转移出去, 这样你就不会把数据给覆盖掉了 ...!

多写两步程序,就能解决你的问题了...

内容的回复:呵呵,我试了,用M8123做标志位把接收的数据转移,不行的,还是会出现这样的情况,起初我也编了CRC的校验程序,通过这个去获取我想要的数据,但如果加了这个程序,接收的数据是错误的


远飞鸟

  • 精华:1帖
  • 求助:0帖
  • 帖子:6帖 | 177回
  • 年度积分:4
  • 历史总积分:1358
  • 注册:2002年8月24日
发表于:2010-11-20 10:29:32
3楼

1、你把发送的时间设的长一点,

2、把发送和接收用标志位互锁。

3、我之前也遇到此类问题,发的时候前面的数发过去了,后面的没有变化。我后来把发送时间设长,后来解决了

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-11-20 11:02:31
4楼

RS D0 K29 D30 K29

你实际发送与接受的数据是K8,那你就把以上程序中的K29换成一个寄存器来表示,你希望是K8时,就将该寄存器赋给K8,希望是K29,就将该寄存器赋给K29。

sequel2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-20 11:04:20
5楼
回复内容:
对:远飞鸟 关于

1、你把发送的时间设的长一点,

2、把发送和接收用标志位互锁。

3、我之前也遇到此类问题,发的时候前面的数发过去了,后面的没有变化。我后来把发送时间设长,后来解决了

内容的回复:有这样的例子 可以给我参考下吗?邮箱253773563@qq.com ,我的情况是后面接收的数据是PLC之前发送的和EVC返回的,都接收了


sequel2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-20 19:44:38
6楼
我的通讯M8161为ON,即8位的,例如我发送的数据是01 03 02 00 00 0C CRC_L CRC_H (01是设备地址,03是读指令,0200是设备数据寄存器地址,00 0C是读取12个设备寄存器数据的个数),设备EVC会返回的数据格式是:01 03 18 ......... CRC_L CRC_H (...中是24个数据),总共也就是29个,RS指令写成RS D0 K29 D30 K29,(D8-D28均为0,不影响通讯,因为EVC在接收到数据的CRC校验的数据后,后面的数据是不做响应的)为什么发送的数据寄存器我也要分配成29个,是由于如果写成是K8,那么我通讯的时候,接收的数据是错误的,发现循环错位的现象。写成RS D0 K29 D30 K29时,不会出现那样的情况,接收到的数据也是正确的,但是发现一个问题是,每次脉冲信号发送数据后,D30-D58起初接收的数据是PLC发送的,也就是D30=01,D31=03,D32=02,D33=00,D34=00,D35=00,D36=0C依次类推,D38-D58为0,之后D30到D58的数据寄存器立马闪烁显示为EVC返回的数据,也就是此时D30=01,D31=03,D32=18,依次类推,D33-D56为24个数据,D57,D58为CRC校验的低8位,高8位。所以每次脉冲发送数据通讯时D30-D58数据寄存器内的内容都会跳动显示,而我只要EVC返回的数据,不知道如何去解决这样的问题?请大家帮帮忙!

fireT

  • 精华:0帖
  • 求助:2帖
  • 帖子:16帖 | 55回
  • 年度积分:19
  • 历史总积分:589
  • 注册:2009年2月07日
发表于:2010-11-21 20:38:52
7楼

最近做个一个FX2N 与两个PT650D称重仪表485通讯项目,采用RS方式。开始也是接收到得数据也是循环移位,后面改变编程方式后接收数据正常,目前使用2个月,通讯正常。主要采用步进方式与超时检测配合使用,希望可以多多交流

fireT

  • 精华:0帖
  • 求助:2帖
  • 帖子:16帖 | 55回
  • 年度积分:19
  • 历史总积分:589
  • 注册:2009年2月07日
发表于:2010-11-21 20:44:38
8楼

如果有仪表数据返回的话说明通讯成功,至于数据凌乱的话就是发送接收机制有问题,如果是两块以上仪表的话注意一下终端电阻连接(遇到过,要不然只能通讯一块仪表)

sequel2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-21 23:36:34
9楼
回复内容:
对:fireT 关于

如果有仪表数据返回的话说明通讯成功,至于数据凌乱的话就是发送接收机制有问题,如果是两块以上仪表的话注意一下终端电阻连接(遇到过,要不然只能通讯一块仪表)

内容的回复:你好,不知道具体的程序里面是如何实现的,能否发份这段的程序借鉴下,我的邮箱253773563@qq.com或者sequel2005@163.com,谢谢!


fireT

  • 精华:0帖
  • 求助:2帖
  • 帖子:16帖 | 55回
  • 年度积分:19
  • 历史总积分:589
  • 注册:2009年2月07日
发表于:2010-11-22 11:37:19
10楼
程序发到你的QQ邮箱。不知道收到没有。还请多指教

sequel2010

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 9回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2010年7月28日
发表于:2010-11-22 23:56:02
11楼
回复内容:
对:fireT 关于程序发到你的QQ邮箱。不知道收到没有。还请多指教 内容的回复:


邮件已收到,多谢!我看看

热门招聘
相关主题

官方公众号

智造工程师