...
《AB PLC CIP驱动》该驱动通讯方式为网口,支持如下PLC:
Logix5000系列
SLC500实现了各种数据块的读,但未实现写。
实现了各种数据块的读和写。
支持点类型(已测过):
bool = bool
sint = int8
int = int16
dint = int32
real = float
驱动名称:bin/drivers/abcipdrv/abcipdrv
...
设备:选择刚刚配置的设备
周期:根据需要而定,缺省为1秒
Tag点数据类型:和PLC一致。如:DINT为4个字节,SINT为2个字节,REAL为4个字节
可控制:使能
Tag点数据类型:和PLC一致。
PLC类型只能支持控制器标签。如:
PLC控制器标签 | 数据类型 | eview变量配置 | 数据类型 | 注释 |
---|---|---|---|---|
cip_dint | DINT | cip_dint | int32 | 4个字节 |
cip_int | INT | cip_int | int16 | 2个字节 |
cip_sint | SINT | cip_sint | int8 | 1个字节 |
cip_float | REAL | cip_float | float | 4个字节 |
cip_bool | BOOL | cip_bool | bool | 1个字节 |
可控制:使能
logix5000:支持控制器标签Logix5000系列:地址如:ExitPalletData.PalletNumber
SLC500:支持:N块、B、C。地址如:N10:25
...
Logix5000可用SoftLogix5800进行模拟
六、
...
使用RSLinux确认点表和地址
- 安装RSLinux,请使用官方版本,或者使用模拟PLC。
- 注意:使用RSLinux无法运行时(点击无反应),是因为RSLinx配置了服务方式启动。
- 处理过程见:https://blog.csdn.net/wangmingchao27/article/details/92646177。
- 打开RSLinx后,选择菜单Communications/Config Drivers,在弹出对话框中选择增加一个Ethernet Device,点击AddNew,并输入PLC的IP。也可以通过Configure按钮修改。
- 再找到左侧树菜单,WorkStation/XXX,Ethernet/PLC的输入Backplane下面的第一个子项,Backplane/xxxxLOGIXxxxx Controller XXXX。如果无此子项,则需删除EthernetDevice,并重新添加
- 鼠标右键,选择DataMonitor,可以在弹出的Data Table Monitor查看所有的地址,包括:控制器标签/程序标签/。
- 点击打开某个标签,能够看到里面的数值
RSLinx2.5.9的安装方法
下载RSLinx2.5.9
执行安装,10位序列号随便输入:1111111111
模拟PLC使用SoftLogix5800
下载地址:
注意:
- 需要在PLC模块右键,选择启动,进入Run模式
- 第三个模块是网卡,要显示可以访问的IP,状态为OK
- RSlinx不能设置为服务启动,否则RSLinx打不开,
通过Logix5000向PLC下载
AB CIP协议
协议格式:
注册会话:
请求:65 00 04 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
应答:65 00 04 00 01 00 02 a4 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
检查连接:
6f 00 42 00 02 00 02 14 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 02 00 00 00 00 00 b2 00 32 00 54 02 20 06 24 01 05 f7 02 00 00 00 27 4c 00 00 28 4c 4b 57 53 45 00 00 02 00 00 00 80 84 1e 00 f4 43 80 84 1e 00 f4 43 a3 04 01 01 20 02 24 01 2c 01
6f 00 2e 00 02 00 02 14 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 02 00 00 00 00 00 b2 00 1e 00 d4 00 00 00 01 1d 00 00 27 4c 00 00 28 4c 4b 57 53 45 00 00 80 84 1e 00 80 84 1e 00 00 00
读数据:
70 00 38 00 02 00 02 9c 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 a1 00 04 00 02 3b 00 00 b1 00 24 00 27 00 0a 02 20 02 24 01 01 00 04 00 53 05 91 07 63 69 70 5f 69 6e 74 00 c4 00 01 00 00 00 00 00 01 00 00 00
返回:
70 00 22 00 02 00 02 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 a1 00 04 00 27 34 00 00 b1 00 0e 00 27 00 8a 00 00 00 01 00 04 00 d3 00(数据类型, int) 00 00
多点读取:
70 00 86 00 01 00 02 04 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 a1 00 04 00 01 47 00 00 b1 00 72 00 14 00 0a 02 20 02 24 01
05 00 // 服务数量
0c 00 // 从服务数量到真正地址的偏移
1e 00 // 偏移
32 00 // 偏移
44 00 // 偏移
58 00 // 偏移
52 05 91 08 63 69 70 5f 62 6f 6f 6c 01 00 00 00 00 00
52 06 91 0a 63 69 70 5f 73 74 72 69 6e 67 01 00 00 00 00 00
52 05 91 08 63 69 70 5f 64 69 6e 74 01 00 00 00 00 00
52 06 91 09 63 69 70 5f 66 6c 6f 61 74 00 01 00 00 00 00 00
52 05 91 08 63 69 70 5f 73 69 6e 74 01 00 00 00 00 00
多点读取返回:
70 00 a8 00 01 00 02 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 a1 00 04 00 23 00 00 00 b1 00 94 00 03 00 8a 00 00 00
05 00 // 服务数量
0c 00 // 从服务数量到真正地址的偏移
13 00 // 偏移
73 00 // 偏移
7d 00 // 偏移
87 00 // 偏移
d2 00 00 00 c1 00 00
d2 00 00 00 a0 02 ce 0f 07 00 00 00 73 74 72 69 6e 67 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d2 00 00 00 c4 00 0f 00 00 00
d2 00 00 00 ca 00 cd cc 0c 40
d2 00 00 00 c2 00 34
写值:
70 00 命令类型
38 00 长度
02 00 02 9c session
00 00 状态
00 00 状态
02 00 00 00 00 00 00 00 // 02 为读数据
00 00 00 00 option
00 00 00 00
00 00
02 00 超时
a1 00
04 00 偏移
01 13 00 00 O2TConnID
b1 00 dataItemType
24 00 itemlen
26 01 seqcount
0a service code
02 unknow
20 02 24 01 epath
01 00 服务数量
04 00 偏移量
53 服务号
05 91 07 63 69 70 5f 69 6e 74 00 IOI
c3 00 数据类型
01 00 数量
00 00 00 00 padding
02 00 值
其中数据类型有如下:
#define CIP_DT_BOOL 0x00C1 // Logical Boolean with values TRUE and FALSE
#define CIP_DT_SINT 0X00C2 // Signed 8-bit integer value
#define CIP_DT_INT 0X00C3 // Signed 16-bit integer value
#define CIP_DT_DINT 0X00C4 // Signed 32-bit integer value
#define CIP_DT_LINT 0x00C5 // Singed 64-bit integer value
//#define CIP_DT_USINT 0xC6 // Unsigned 8-bit integer value
//#define CIP_DT_UINT 0xC7 // Unsigned 16-bit integer value
//#define CIP_DT_UDINT 0xC8 // Unsigned 32-bit integer value
//#define CIP_DT_ULINT 0xC9 // Unsigned 64-bit integer value
#define CIP_DT_REAL 0X00CA // 32-bit floating point value
//#define CIP_DT_LREAL 0xCB // 64-bit floating point value
//#define CIP_DT_BYTE 0xD1 // bit string - 8-bits
//#define CIP_DT_WORD 0xD2 // bit string - 16-bits
#define CIP_DT_DWORD 0X00D3 // bit string - 32-bits
//#define CIP_DT_LWORD 0xD4 // bit string - 64-bits
#define CIP_DT_STRUCT 0x02a0 // 结构体
//结构体类型
#define CIP_STRUCT_TYPE_STRING 0x0fce // 字符串结构体
使用AB的RSLinx,Communications/Config Drivers,在弹出对话框中选择增加一个Ethernet Device,并输入PLC的IP。再找到PLC的输入Backplane/xxxxLOGIXxxxx右键,选择DataMonitor,可以在弹出的Data Table Monitor查看所有的地址。