|
单片机或者上位机与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
|