一、 说明

《AB PLC CIP驱动》该驱动通讯方式为网口,支持如下PLC:

Logix5000系列

SLC500

实现了各种数据块的读和写。

支持点类型(已测过):

bool = bool

sint = int8

int = int16

dint = int32

real = float

驱动名称:bin/drivers/abcipdrv/abcipdrv

二、 驱动配置

在驱动中,增加一个名称和模块名称均为abcipdrv的驱动。

三、 设备配置

在驱动abcipdrv下增加一个设备,

  • 连接方式选择:网络
  • IP:配置PLC的IP或域名
  • 端口:缺省为44818
  • 参数1:Logix5000或者SLC500,缺省不填写为Logix5000
  • 参数2:控制器所在背板的槽号。实际设备往往是0号槽(可不填),如果是模拟器可能是1号槽

四、 变量配置

增加变量所需要配置的属性

变量名称:按照项目规范设计的字符串

设备:选择刚刚配置的设备

周期:根据需要而定,缺省为1秒

Tag点数据类型:和PLC一致。

如:PLC类型只能支持控制器标签,如:

PLC数据类型eview数据类型注释
DINTint324个字节
INTint162个字节
SINTint81个字节
REALfloat4个字节
BOOLbool1个字节


























可控制:使能

Logix5000系列:地址如:ExitPalletData.PalletNumber

SLC500:支持:N块、B、C。地址如:N10:25    

五、 模拟

Logix5000可用SoftLogix5800进行模拟

六、 使用RSLinux确认点表和地址

  1. 安装RSLinux,请使用官方版本,或者使用模拟PLC。
    1. 注意:使用RSLinux无法运行时(点击无反应),是因为RSLinx配置了服务方式启动。
    2. 处理过程见:https://blog.csdn.net/wangmingchao27/article/details/92646177
  2. 打开RSLinx后,选择菜单Communications/Config Drivers,在弹出对话框中选择增加一个Ethernet Device,点击AddNew,并输入PLC的IP。也可以通过Configure按钮修改。
  3. 再找到左侧树菜单,WorkStation/XXX,Ethernet/PLC的输入Backplane下面的第一个子项,Backplane/xxxxLOGIXxxxx Controller XXXX。如果无此子项,则需删除EthernetDevice,并重新添加
  4. 鼠标右键,选择DataMonitor,可以在弹出的Data Table Monitor查看所有的地址,包括:控制器标签/程序标签/。
  5. 点击打开某个标签,能够看到里面的数值


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

32 00

02 00 02 94

00 00 00 00

01 00 00 00 00 00 00 00   读数据为1

00 00 00 00

00 00 00 00

00 00

02 00

a1 00

04 00

01 27 00 00

b1 00

1e 00

04 00

0a

02

20 02 24 01

01 00

04 00

52

05 91 07 63 69 70 5f 69 6e 74 00     IOI

01 00

00 00 00 00


写值:

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 0xC1 // Logical Boolean with values TRUE and FALSE
#define CIP_DT_SINT 0XC2 // Signed 8-bit integer value
#define CIP_DT_INT 0XC3 // Signed 16-bit integer value
#define CIP_DT_DINT 0XC4 // Signed 32-bit integer value
#define CIP_DT_LINT 0xC5 // Singed 64-bit integer value

#define CIP_DT_REAL 0XCA // 32-bit floating point value


  • 无标签