关于CPM2AH无协议通讯的问题 点击:2243 | 回复:15



microtomato

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:85帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于:2006-06-14 09:12:00
楼主
我准备使用CPM2AH自带的RS232口实现ModbusRTU从站协议,由于ModbusRTU协议没有结束码,而是用3.5个字符的静止时间的来确定帧的结束。而对于无协议通讯,其结束码只有3种选择:1是接收指定的字节数,2是使用CR+LF结束码,3是使用指定的结束码。
对于功能码1,2,3,4,5,6,主站发送的命令帧长度都是8个字符,所以可以使用第一种选择,而对于功能码15和16,由于其命令帧的长度是可变的,所以这3种选择可能都不行。请问对于15和16功能码,我应该如何实现才行?



cxdxyz

  • 精华:2帖
  • 求助:0帖
  • 帖子:8帖 | 269回
  • 年度积分:0
  • 历史总积分:630
  • 注册:2005年3月28日
发表于:2006-06-14 18:48:00
1楼
我没做过CPM2A的MODBUS通讯,所以要问CPM2AH支持MODBUS吗?我做过CPM2A的无协议通讯,使用RXD,TXD。发送数据需要执行TXD才行!而MODBUS的通讯我也做过,他是主从协议,从站被动响应主站请求。而CPM2A能自动响应MODBUS主的请求吗?
我觉得你的想法是不能实现的

老鬼daren

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 36回
  • 年度积分:0
  • 历史总积分:65
  • 注册:2004年10月19日
发表于:2006-06-14 20:29:00
2楼
CXDXYZ,能向你请教一下CPM2AH和DANFOSS VLT2900 RS485的通讯问题嘛??程序在发送的时候,CPM2AH的COM灯在闪,但是变频器没有任何的反应。
我的邮箱是kimdax@163.com,望能赐教!

microtomato

  • 精华:1帖
  • 求助:0帖
  • 帖子:85帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于:2006-06-16 09:40:00
3楼
cpm2ah的机器要实现modbus协议,唯一的办法就是使用无协议通讯来实现。我的想法怎么可能无法实现呢?当然由于机器指令集的限制(不支持for循环,jme指令必须放在jmp指令之后,jmp指令的跳转号最大为49),实现起来会比较困难。但也不是不可能实现的。如果能自动响应modbus请求我还上这里问啊,早搞定了

SIEMENS——1

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 71回
  • 年度积分:0
  • 历史总积分:73
  • 注册:2002年11月01日
发表于:2006-06-24 10:11:00
4楼
先做校验,然后发送,可以做的

老鬼daren

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 36回
  • 年度积分:0
  • 历史总积分:65
  • 注册:2004年10月19日
发表于:2006-06-24 19:02:00
5楼
有什么办法可以让OMRON的PLC不发送起始码和结束码啊?
了。
例如我要发送02H 06H 04H 04H 7CH 20H 00H 58H
但是用OMRON发送的时候却是有起始码@00EX和结束码*的,无论我DM6653怎么设置。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2006-06-26 22:41:00
6楼
CPM2A发送MODBUS RTU帧出去没问题,关键是接收,这也是大多数用编程实现通讯协议的难点.在这里让CPM2A识别MODBUS RTU数据帧的起始和结束我看比较困难,而西门子S7 200的自由口通讯接收指令可以设置起始和结束的条件且极为灵活,它还支持字符中断接收可以方便的实现各种通讯协议.

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-07-19 11:56:00
7楼
CPM2A收发MODBUS的ASCII编码方式的数据帧应该是可以的,只是它比MODBUS的RTU模式传输效率低很多.

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2007-07-19 12:48:00
8楼
http://bbs.gongkong.com/detail.asp?id=338113

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-09-03 10:48:00
9楼
经OMRON官方网站的技术答疑ruanjiang指点,在CPM2AH上用响应回数据长度一定的MODBUS_RTU命令帧去做主站命令,从而实现数据定长的接收方式来接收响应完成MODBUS_RTU通讯,这种方法严格的说只是部分的实现了MODBUS_RTU协议,但只要够用就行了,我现在用来和三菱FR-F700的变频器通讯实现变频运行状态监视,比起使用ASCII方式的三菱变频器协议这个还更容易编程实现.

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-09-03 11:30:00
10楼
刚刚在手册上仔细看了一下CPM2A的STUP 指令,可以修改RS232口的通讯格式,如果通过程序修改定长接收的字节数并应用于RS232口,看来MODBUS_RTU响应帧长度变化也可以给予正常接收,就是不知道修改通讯格式的指令执行和完成通讯口的模式变化需要多长的时间,如果太长就会影响通讯的实时性了.

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-09-03 11:59:00
11楼
补充一点:上面的说法是针对做做主站的PLC来说的,只有它在发出命令后才知道有多少字节会返回来,从而实现定长接收,从站则不行,如要从站准确接收MODBUS_RTU命令用CPM2A来做的话就必须命令帧定长也就是仅能部分实现MODBUS_RTU协议.

行云止水

  • 精华:0帖
  • 求助:0帖
  • 帖子:18帖 | 277回
  • 年度积分:0
  • 历史总积分:527
  • 注册:2004年10月12日
发表于:2007-09-03 13:46:00
12楼
学习!

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2007-09-13 16:31:00
13楼
Re:后续:modbus RTU的实现 回答人:jiayuehua 时间:2007-09-03 11:35 
  
STUP执行的最长时间是39.8ms,
指令执行的结果需要在I/O刷新的时候执行,
需要一个扫描周期的时间。  
 


看来上面的想法不太好用,呵呵......

余洋

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 64回
  • 年度积分:32
  • 历史总积分:446
  • 注册:2007年3月19日
发表于:2008-04-24 04:16:04
14楼
不知哪有实例程序及注解说明,自己去慢慢摸索太难了!!!

sunjing032

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 56回
  • 年度积分:0
  • 历史总积分:84
  • 注册:2008年1月23日
发表于:2008-05-29 10:40:02
15楼
回复内容:
对:cxdxyz 关于我没做过CPM2A的MODBUS通讯,所以要问CPM2AH支持MODBUS吗?我做过CPM2A的无协议通讯,使用RXD,TXD。发送数据需要执行TXD才行!而MODBUS的通讯我也做过,他是主从协议,从站被动响应主站请求。而CPM2A能自动响应MODBUS主的请求吗?
我觉得你的想法是不能实现的
内容的回复:


请问你的Q是多少啊!很想与你认识下!

热门招聘
相关主题

官方公众号

智造工程师