请问如让上位PC机能与下位的台达PLC实现全双工通讯? 点击:865 | 回复:3



Benisys

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 26回
  • 年度积分:0
  • 历史总积分:140
  • 注册:2002年10月07日
发表于:2011-02-24 14:57:32
楼主
如题所示,用的是台达的PLC,我想让PC与PLC实现全双工通讯,PC作主站,PLC作从站,之前用过MODBUS,但只能写或只能读,两种状态不能同时进行,这样的话我的设备的有些状态要实时告诉PC,并且PC运算的结果也要实时传给PLC,这种情况就无法实现。请问达人,有没有能够实现全双工通讯的方式,或加什么样的模块能实现的?有人说用MODBUS分时通讯,如果用MODBUS分时通讯,怎么作时序上的规划,比如说,机器的急停开关,安全门开关等状态是要被PC实时轮询的,而且从程序启动到结束都要做这个动作,可是运行中,PC还要实时将运算结果写入PLC,所以这中间一定会冲突,类似这种情况,怎么样实现分时通讯呢?请高人指点。



一棵葱

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 971回
  • 年度积分:0
  • 历史总积分:1506
  • 注册:2007年4月04日
发表于:2011-02-25 17:45:55
1楼

台达应该是半双工,就算是全双工,每次通讯间也会有间隔。一笔MODBUS数据通过485总线传输大概是要20多ms。就算读写同时进行,两次采集间也是需要时间间隔,这个和你的控制要求有关系,到底是要多块。如果需要快,建议你使用CAN或者以太网来进行通讯。你同时进行的话,我觉得和半双工模式差距就是一个效率的问题。也就是说目前的方式是大概40ms写一次以及读一次,全双工则是20ms。(如果数据量大的话时间会增加)如果你觉得这个控制周期还是太长,那么我建议你可以使用别的通讯方式,CAN或者以太网。

如果说只要满足读取,写入相对同时进行,不是很关注每次完成时间,也就是说大概80ms以内完成一次读取一次写入可以接受的话,你还是可以通过通讯座轮询,当然这个时序你必须控制好。我不知道你PC端是用什么区实现的,通讯大致有这几种结果。1.通讯成功 2.通讯逾时  3.通讯错误   如果通讯完成(成功,逾时,错误),你PC端都可以继续发下一次的数据(无论读写)。当然发下一笔数据的前提必须是通讯成功!如果PC端发了,PLC没有回你就继续直接发下一笔的话,可能会和回来的数据有冲突导致通讯失败。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2011-02-26 08:59:09
2楼

我觉得,单纯说你上面的急停开关的速度响应时间,因为是人手操作,80毫秒完全没有区别。

说到数据的话,不会是用于插补吧?如果是插补、电子凸轮、跟踪等的话就只能这样了。不是的话,有什么通讯要这么大量数据这么密集的收发?

看看达人们有些什么好的推荐了。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2011-02-26 15:27:36
3楼

曾经用OMRON 的CPM2A的RS232口做过自发自收的实验,发现它的确可以同时进行收发虽然它没有提供通讯方面的中断给用户,问题是通讯双方总得对一方发出的数据给个响应吧,在回应响应时你没法把自己想发给对方的数据按LZ的意思实时同时发出去.可能的办法:通讯双方只管发但不提供和接收对方响应,然后在通讯双方检测自己接收到的数据是否应该采用,这样只要有了新数据就立即发送,对方也是同步接收.


热门招聘
相关主题

官方公众号

智造工程师