搜索
bottom↓
回复: 10

OMRON ToolBus 通信指令初探

[复制链接]

出0入0汤圆

发表于 2009-8-24 13:45:35 | 显示全部楼层 |阅读模式
单片机或者上位机与OMRON PLC通信一般使用HOSTLINK。与TOOLBUS协议相比速度慢很多。由于TOOLBUS协议为不公开协议,所以只能使用HOSTLINK与PLC通信。

由于工作需要,使用串口侦听工具对TOOLBUS协议进行了解析,先由PLC编程软件进行特定操作,然后跟踪串口信息,再与HOSTLINK协议相比较,从而解析出TOOLBUS协议的二进制通信代码。这里只是进行了一些简单的通信代码解析,作为一般的单机通信还是可以的。

如下:

注:ToolBus指令代号与HostLink是一样的,如0101--读内存;0306--读程序;0307--写程序 等等。
///////////////////////////////////////////////////////////////////////
写程序--每次  03E0 Byte
AB 03              F6             80 00 02 00 00 00 00 00 00      30             03 07    FF FF  00 00 00 00 00 00   03E0
       正常为F6,程序最后1段为 C6                             不一定是30开始   写程序命令             起始地址      字节数
                                                              指令计数器(没有具体的作用)
---------------------------------------------------------------------------------------------------------------------------
1: AB 03 F6 80 00 02 00 00 00 00 00 00 30 03 07 FF FF 00 00 00 00 03 E0
2: AB 03 F6 80 00 02 00 00 00 00 00 00 31 03 07 FF FF 00 00 03 E0 03 E0
3: AB 03 F6 80 00 02 00 00 00 00 00 00 32 03 07 FF FF 00 00 07 C0 03 E0
4: AB 03 F6 80 00 02 00 00 00 00 00 00 33 03 07 FF FF 00 00 0B A0 03 E0
5: AB 03 F6 80 00 02 00 00 00 00 00 00 34 03 07 FF FF 00 00 0F 80 03 E0
.
.
.  AB 03 F6 80 00 02 00 00 00 00 00 00 65 03 07 FF FF 00 00 55 40 03 E0
响应  AB 00 18 C0 02 00 00 FD 00 00 00 65 03 07 00 00 FF FF 00 00 55 40 03  E0 06 67
.
.
.
23: AB 03 C6 80 00 02 00 00 00 00 00 00 47 03 07 FF   FF 00 00 59 20 83 B0(注:最后的83B0中的8是指示最后写,实际写了03B0字节)
         (C6--最后写时变化。最后面第2字节也有一个变化)

最后响应  AB 00 18 C0 00 02 00 00 FD 00 00 00 47 03 07 00 00 FF FF 00 00 59 20 03 B0 06 1C

//////////////////////////////////////////////////////////////////////////////
写内存指令
           AB 00 14 80 00 02 00 00 00 00 00 00 82 01 01 B3 02 92 00 00 02 03 0E
响应       AB 00 14 C0 00 02 00 00 FD 00 00 00 82 01 01 00 00 00 00 00 01 03 03

/////////////////////////////////////////////////////////////////////////////
读程序指令
           AB 00 16 80 00 02 00 00 00 00 00 00 9A 03 06 FF    FE 00 00 00 00    03 E0   04 C6
           AB 00 16 80 00 02 00 00 00 00 00 00 9B 03 06 FF    FE 00 00 03 E0    03 E0   05 AA
           AB 00 16 80 00 02 00 00 00 00 00 00 9C 03 06 FF    FE 00 00 07 C0    03 E0   05 8F
响应       AB 03 F8 C0 00 02 00 00 FD 00 00 00 9C 03 06    00 00   +Data    +FCS
..
..
..
最后读     AB 00 16 80 00 02 00 00 00 00 00 00 B1 03 06 FF    FE 00 00 59 20    03 B0   05 26
最后响应   AB 03 C8 C0 00 02 00 00 FD 00 00 00 A4 03 06    00 00   +Data    +FCS



///////////////////
AB 00 16 80 00 02 00 00 00 00 00 00 B0 03 06 FF FE 00 00 55 40 03 E0 05 71

41 42 AC 01 AC 01 AC 01 AC 01 AC 01 AC 01 AC 01

AB 00 0E 80 00 02 00 00 00 00 00 00 01 06 01 01 43

//////////////////////////////////////////////////////

发指令步骤:
1)  41 42 AC 01
    是否有响应,如果没有,继续发 AC 01
    一直到有响应为止,返回 AC 01。
2)有响应之后,就可以发送其它的指令了。
   
  注:41 42 AC 01 应为激活指令,意为打开ToolBus通讯。

///////////////////////////////////////////////////////////
读CPU状态
          AB 00 0E 80 00 02 00 00 00 00 00 00 01 06 01 01 43
响应      AB 00 2A C0 00 02 00 00 FD 00 00 00 01 06 01 00 00 05 04 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
          04 A5(04 A5 是校验和)

///////////////////////////////////////////////////////////
读DM      AB 00 14 80 00 02 00 00 00 00 00 00 75 01 01 82 00 00 00 01 F2 03 2D  (地址 00 00 00,读 01 F2---498个字的内容)
          AB 00 14 80 00 02 00 00 00 00 00 00 76 01 01 82 01 F2 00 01 F2 04 21  (地址 01 F0 00,读 01 F2---498个字的内容)
响应      AB 03 F4 C0 00 02 00 00 FD 00 00 00 76 01 01    00 00   +Data   +FCS
      例:AB 00 12 C0 00 02 00 00 FD 00 00 00 75 01 01    00 00   00 11   03 04
                                                         End Code

最后读    AB 00 14 80 00 02 00 00 00 00 00 00 B9 01 01 82 7E 72 00 01 8E 03 FD
最后响应  AB 03 2C C0 00 02 00 00 FD 00 00 00 B9 01 01    00 00   +Data   +FCS

///////////////////////////////////////////////////////////////////////
读EM0     AB 00 14 80 00 02 00 00 00 00 00 00 7E 01 01 A0 00 00 00 01 F2 03 54 (地址 00 00 00,读01 F2个字的内容)
          AB 00 14 80 00 02 00 00 00 00 00 00 7F 01 01 A0 01 F2 00 01 F2 04 48 (地址 01 F2 00,读01 F2个字的内容)
          AB 00 14 80 00 02 00 00 00 00 00 00 80 01 01 A0 03 E4 00 01 F2 04 3D
响应      AB 03 F4 C0 00 02 00 00 FD 00 00 00 80 01 01    00 00   +Data   +FCS
-----------------  --------------------------------------------------------------
读最后    AB 00 14 80 00 02 00 00 00 00 00 00 BF 01 01 A0 7E 72 00 01 8E 04 21
最后响应  AB 03 2C C0 00 02 00 00 FD 00 00 00 BF 01 01    00 00   +Data   +FCS

//////////////////////////////////////////////////////////////////////////////////
读CIO     AB 00 14 80 00 02 00 00 00 00 00 00 61 01 01 B0 00 00 00 01 F2 03 47
响应      AB 03 F4 C0 00 02 00 00 FD 00 00 00 61 01 01    00 00   +Data   +FCS
最后读    AB 00 14 80 00 02 00 00 00 00 00 00 6D 01 01 B0 17 58 00 00 A8 03 5B
最后响应  AB 01 60 C0 00 02 00 00 FD 00 00 00 6D 01 01    00 00   +Data   +FCS

//////////////////////////////////////////////////////////////////////////////////
注I/O 表最多有1280个字,当前只有988个字
写I/O表   AB 03 EE 80 00 02 00 00 00 00 00 00 4F   02 02   80 12   00 00    01 ED +(01ED个字的数据)+FCS
                                                   写参数 写I/O表  开始字   字数
响应      AB 00 10 C0 00 02 00 00 FD 00 00 00 4F 02 02 00 00 02 CD
再写      AB 03 EE 80 00 02 00 00 00 00 00 00 50   02 02   80 12   01 ED    01 ED +(01ED个字的数据)+FCS
响应      AB 00 10 C0 00 02 00 00 FD 00 00 00 50 02 02 00 00 02 CE
最后写    AB   00 18   80 00 02 00 00 00 00 00 00 51   02 02   80 12   03 DA    80 02 +(0002个字的数据)+FCS
              变化字节                                                         变化字节

//////////////////////////////////////////////////////////////////////////////////
进入停止/编程模式
            AB 00 10 80 00 02 00 00 00 00 00 00 BA 04 02 FF FF 03 FB
响应        AB 00 10 C0 00 02 00 00 FD 00 00 00 BA 04 02 00 00 03 0A

////////////////////////////////////////////////////////////////////////////
进入运行/监视模式
            AB 00 10 80 00 02 00 00 00 00 00 00 BA 04 01 FF FF 03 FA
响应        AB 00 10 C0 00 02 00 00 FD 00 00 00 BA 04 01 00 00 03 09

/////////////////////////////////////////////////////////////////////////////
进入运行模式
            AB 00 11 80 00 02 00 00 00 00 00 00 F4 04 01 FF FF 04 04 39
响应        AB 00 10 C0 00 02 00 00 FD 00 00 00 F4 04 01 00 00 03 72

////////////////////////////////////////////////////////////////////////////

阿莫论坛20周年了!感谢大家的支持与爱护!!

该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981

出0入0汤圆

 楼主| 发表于 2009-8-24 13:48:08 | 显示全部楼层
说明:以上是对OMRON CJ1G-H PLC 的解析结果。

出0入0汤圆

发表于 2009-8-24 14:29:34 | 显示全部楼层
不错,这个应该顶起来。谢谢楼主的共享。

出0入0汤圆

发表于 2009-9-4 16:04:42 | 显示全部楼层
有空试一下  好东西。。。要顶起来的。。

出0入0汤圆

发表于 2009-12-23 09:27:59 | 显示全部楼层
不错,  顶起来

出0入0汤圆

发表于 2010-1-14 15:52:44 | 显示全部楼层
Mark 一下,可能用得着

出0入0汤圆

发表于 2010-7-5 08:27:43 | 显示全部楼层
这个不错, 支持一下!

出0入0汤圆

发表于 2011-3-3 15:00:56 | 显示全部楼层
记号

出0入0汤圆

发表于 2011-6-10 13:49:46 | 显示全部楼层
好家伙

出0入0汤圆

发表于 2011-6-10 14:18:08 | 显示全部楼层
这个先收藏了,TKS

出0入0汤圆

发表于 2011-8-27 21:09:15 | 显示全部楼层
收藏了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-1 09:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表