组态王和AB ControlLogix5000PLC通讯说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组态王和AB ControlLogix5000PLC通讯说明
说明文档
北京亚控科技发展有限公司
2009年7月
目录
1. 安装PLC所需要的软件 (1)
2. 设置ControlLogix5000PLC IP地址 (1)
3. 配置硬件设备 (4)
3.1 以以太网的通讯为例 (5)
3.2 以串口的通讯为例 (8)
4. 编程软件的使用 (9)
4.1 AB产品的分类 (9)
4.2 编程软件的使用 (10)
4.3 串口参数的配置 (15)
5. 组态王对AB 设备的支持 (17)
5.1 以太网通讯 (17)
5.2 串口通讯 (22)
6. 常见问题 (26)
1. 安装PLC所需要的软件
PLC的相关设置需要安装:AB RSLogix5000的编程软件、RSLinx通讯软件以及对应授权。

注意:组态王和AB ControlLogix5000PLC进行串口或以太网通讯时,不要求组态王所在的计算机安装RSLogix5000和RSLinx软件。

2. 设置ControlLogix5000PLC IP地址
点击开始\ 所有程序,选择如下程序。

弹出如下对话框:
点击【确定】,弹出如下对话框:
在该对话框中,依次需要输入:子网掩码,默认网关,DNS服务器,之后点【ok】,弹出如下对话框:
此时给PLC断电,再上电(则plc会以广播形式对BOOTP/DHCP Server发送MAC 地址信息),上述窗口中过一会就会显示PLC以太网接口的MAC地址。

选择本PLC对应的MAC值 (PLC以太网模块上有MAC值)并双击,弹出如下设置框:
在ip栏输入要给plc设置的IP地址,点【ok】,此时给plc断电,再上电,如果IP 地址设置成功,就能在上面图片中红色框所示的地方显示刚刚设置的ip地址。

注意,此时的断电时间过长,会导致ip地址的丢失,还需要重新按照上面的步骤进行设置。

PLC地址设置好之后,将该软件关闭。

3. 配置硬件设备
RSLinx Classic是一个驱动配置软件,是设备与RSLogix5000进行通讯的关键环节。

点击开始—所有程序,在程序列表中找到下图信息。

执行RSLinx Classic,弹出如下对话框:
点图标,进行驱动组态,会弹出下图。

点红色框在弹出的下拉列表中选择相应的驱动类型,具体选择哪一项是由所连接的硬件设备的链路方式而定的,见下图。

3.1 以以太网的通讯为例
此处我们选择Ethernet devices ,选择之后,下拉框右侧原本灰色的【Add New…】按钮便由灰色变成可编辑的颜色,点击该按钮,弹出下图,
在该对话框中可以任意指定一个驱动名称,之后点击【ok】,弹出下图,在此对话框中添加所连接设备的地址即可。

如果系统中只有一个设备,直接填ip地址,如果连个
两个及两个以上的设备,可以通过点击对话框右侧的【Add New】按钮来增加要连接的设备。

设备地址填好之后,点【确定】,可以在Configure Driver对话框中看到我们所添加的设备,并能看到设备状态处于运行中。

见下图。

点【Close】按钮,关闭该对话框。

回到RSLinx Classic打开时的状态,此时点击
图标,弹出RSWho对话框,这个窗口的功能是搜索局域网络中的设备,查看其状态是
否正常。

从窗口中我们能看到刚刚建立的以太网链路 AB_ETH-1,点前面的“+”或是单击AB_ETH-1,Ethernet,软件便开始自动搜索设备,由于没有连接plc,所以显示如下图所示:会有一个红色的叉号
连接上设备,各项设置正常的话,设备状态就显示正常了,如下图。

此时看到设备正常,RSLinx Classic的功能实现也就到此结束了,可以将该软件关闭。

3.2 以串口的通讯为例
在RSLinx软件中配置串口通讯驱动,见下图。

点击【ok】,弹出如下对话框。

在该对话框中点击【Auto-Configure】按钮,自动搜索所连接的串口设备,当找到设备的时候,会在该按钮右边的空白处出现。

这样串口驱动就
配置好了。

想要更改plc中的串口通讯参数,需要在编程软件中实现,具体操作方法见后面关于编程软件的使用一节中的讲解。

4. 编程软件的使用
4.1 AB产品的分类
这里我们简单介绍一下罗克韦尔的可编程控制器产品,分为PAC和PLC。

PAC(Programmable Automation Controllers)
包含:CompactLogix System
ControlLogix System
FlexLogix System
SoftLogix5800 Controller
DriverLogix System
PLC(Programmable Logic Controllers)
包含:Pico Controllers
MicroLogix
SLC 500 System
PLC-5 System
注:上面罗列的是几款比教常见的设备型号,不是很全面,想了解更全面的可以到AB的网站去查看。

网址:/programmablecontrol/
PAC产品的编程软件为RSLinx 5000。

PLC产品的编程软件为RSLogix500。

4.2 编程软件的使用
点开始-程序,找到如下图示信息。

执行RSLinx 5000之后,显示如下窗口,这就是编程软件的界面,
此时,我们新建一个工程,点【File】—【New】弹出如下对话框,
上图选择的控制器型号是CompactLogix L35E,这是一个小型的plc控制器,将一些模块在内部已经封装好了,从RSLinx中可以看到cpu的槽号是在0号槽,这是固定的,不可更改的,所以上图的Slot项是灰色不可选的,对于没有固定控制器槽号的,这里是
可以设置的,包括框架尺寸也都是可选的。

设置完可选项之后,点击【ok】,关闭上图
对话框。

编程软件的显示界面如下图:
配置驱动
程序
在建立编程软件与设备之间的通讯时,我们需要在编程软件中指向之前在RSLinx 中建立的驱动程序,点击上图中的图标,弹出如下对话框,
选择所要连接的设备的cpu之后,点击【Go Online】按钮,界面显示见下:
在上图中能看到Rem Prog右侧显示的控制器的状态正常,I/O的状态也正常,此时
设备已经在线,点击弹出对话框中的【Download】按钮,将我们现在的程序下载到设备中,之后,我们就在编程软件中定义变量。

在编程软件右边的树型结构中找到【Controller Tags】,在该选项上点右键,选择【New Tag】,弹出变量定义对话框,在该对话框中可以定义变量类型以及变量使用范围,如下图所示:
定义变量之后,双击【Controller Tags】,会在编程软件右边的窗口中显示系统中所定义的变量,
4.3 串口参数的配置
在编程软件中找到所连接串口设备的控制器,在控制器上点右键,选择【Properties】,
会弹出串口属性对话框,如下图所示:
5. 组态王对AB 设备的支持
目前组态王支持PAC、PLC的以太网以及串口的通讯。

由于这两个系列的协议不一样,所以我们所开发的驱动也是针对这两个系列开发的两套驱动。

在下面的内容中,我们主要针对PAC系列产品开发的LogixEthernet以及DF1 For Logix这两个驱动进行介绍。

5.1 以太网通讯
5.1.1 概述
组态王支持与Allen Bradley PLC Logix 系列:包括ControlLogix、CompactLogix 设备的通讯。

本驱动支持的协议:CIP industrial protocol;
本驱动支持运行环境: win2000/winNT/WINXP;
在使用AB PLC ControlLogix、CompactLogix设备与组态王进行通讯时请确认已经正确安装了驱动文件ControlLogixEtherNet.dll;
5.1.2 组态王设置
(1)定义组态王设备
组态王定义设备时请选择:[PLC]>[罗克韦尔]>[AB-ControlLogix]>[TCP]。

(2)设备地址及通讯参数定义
设备地址格式:IP Backplane,Slot[/ERR_MSG]
IP:Ethernet 设备(例如1756-ENET卡)的IP地址(xxx.xxx.xxx.xxx)
Backplane:基座号(大于或等于0的数字,默认为1)
Slot:CPU的槽号(大于或等于0的数字)
/ERR_MSG:可选标志,若加上能在信息窗口中显示读写及打包信息。

例如:192.168.1.101 1,4
172.16.2.110 1,6/ERR_MSG
注:遵循CIP协议的设备,默认监听端口是44818。

如果是ControlLogix基座号是可以任意指定的,但是对于CompactLogix的基座号则唯一。

(3)组态王数据词典-变量定义
组态王中寄存器列表: 寄存器 名称 寄存器通道
范围 读写 属性 数据类型 变量类型寄存器 含义
备注 TAG TagName 读写 Bit/BYTE/SHORT /USHORT/LONG/FLOAT
I/O 离散,I/O 整型,I/O 实型 PLC 上定义的原子变量 Tag Name: PLC 中定义的数据点名。

STR TagName 读写
STRING I/O 字符串字符串变
量 ARR TagName[idx] 读写 Bit/BYTE/SHORT /USHORT/LONG/FLOAT
I/O 离散,I/O 整型,
I/O 实型 数组变量
寄存器特殊说明:
1)TagName :PLC 中定义的变量名称。

2)PLC 中的原子变量的数据类型包括:BOOL ,SINT ,INT ,DINT ,REAL ,可以存在Program Scope 中,也可以存在于结构体中。

3)Tag 定义方法:例如PLC 上定义了一个变量,名字是INT_A ,是INT 类型的(Signed Short ,16 bit value ), 组态王定义变量时,寄存器中应填 TAGINT_A ,数据类型SHORT 。

4)TagName 字符串仅由字母、数字、下划线构成,输入其他字符将会提示寄存器名错误。

RS5000 限制了tag name 长度为40字节,字母开头字符。

5)对于STR 寄存器, PLC 中默认STRING 类型只支持最长82个字节的ASCII 字符串类型,不支持汉字,若输入汉字,会出现读写失败的情况。

用RS5000也可以自定义最长65535字节的字符串类型。

驱动中目前只支持默认82字节的字符串类型。

若在RS5000中定义少于82字节的短字符串类型,驱动将读写失败;若在RS5000中定义大于82字节的长字符串类型,驱动将只能读写前82字节。

6)ARR 寄存器目前只支持一维数组,PLC 中可定义一维、二维、三维,以后若有需求,可以开发,对3维数组需要考虑很复杂的打包规则,故现在不做。

7)虽然组态王中ARR 寄存器还不支持2维3维数组,但是可以从TAG 寄存器上读到PLC 中的2维3维数组变量;
例如:PLC中变量MyINTArr[4,5,6],可以通过组态王变量TAGMyINTArr[4,5,6]读取;
注:RS5000中不支持建BOOL型2维、3维的数组,BOOL型只有1维数组。

8)数组变量定义方法:变量名[数组下标]或变量名[数组下标
例如:
组态王中定义:ARRMyTag[1] 或 ARRMyTag[1 (后半个方括号 ] 不输入,也是正确的,这样在大批量定义数组时后可以利用组态王变量尾数自加,更方便的定义变量。

);
对应PLC中定义:MyTag[1]
9)读原子变量(除了BOOL)上的某一位的方法
a.在原子变量名后面加上“/<bit index>”,bit index不能超过实际数据类型的长度,否则将提示寄存器格式错误,例如:
TAGMyTag/5
TAGMYTAG1.s2/1
ARRMYTagX[44]/3 ;
b.读原子变量(除了BOOL)上的某一位,在组态王中建变量时,数据类型应该设置BYTE/SHORT/USHORT/LONG/FLOAT,而不是设置成Bit,否则会报错,数据类型错误;
c.TAG和ARR都支持,包括:原子变量、Program Scope tag里的原子变量、结构体上的原子变量;
10)读 Program Scope 中变量的方法:
PROGRAM:<program name>.<atomic name>
例如:
组态王中定义:TAGPROGRAM:MainProgram.MyTag
TAGPROGRAM:MYProgram.MyTag.sub1/2
对应PLC中PROGRAM:MainProgram变量:MyTag
PROGRAM:MYProgram变量:MyTag.sub1
K、读结构体中变量方法:
<structure name>.<atomic-name>
<structure name>.<substructure>.<atomic name>
例如:
TAGMyTimer.ACC
TAGMyUDT.MyTimer.ACC
寄存器使用举例:
寄存器名称读写属性数据类型变量类型 PLC中对应变量名称 PLC中数据类型
TAGTBY_1 读写BYTE I/O整数TBY_1 SINT ARRAU[10] 读写USHORT I/O整数AU[10] INT STRST20 读写STRING I/O字符串ST20 STRING 组态王的数据类型与RS5000的数据类型对应关系:
组态王的数据类型 RS5000的数据类型
Bit BOOL
BYTE SINT
SHORT INT
USHORT INT
LONG DINT
FLOAT REAL
注:SINT 型在RS5000中有符号单字节整数(char),但在组态王中对应的BYTE
是无符号单字节整数。

变量打包规则:
寄存器名称打包范围(对于不能实现打包的
请说明原因,范围填写0~0)
打包规则(备注:说明每个寄存器的打
包规则以及包的最大通道个数;
TAG 1、最多32个原子变量+这些原子
变量上的位!
2、包里全部TagName的总长度
不超过180字节打包,相同设备、读属性、相同寄存器(TAG),各种TagName、各种数据类型可以混合打在一起,原子变量上的位也打在一起。

STR 不打包(字符串不打包)
ARR 1、非BIT
打包数据最大字节数492
2、BIT型:
把数组下标号÷32的整数结果看
成伪通道号,
使伪通道个数不超过123。

1、非BIT型数据:读属性、相同设备、相同寄存器(ARR)、相同数据类型、相同TagName的变量打在一个包里。

2、BIT型数据:读属性、相同设备、相同寄存器(ARR)上,BIT型数据,相同TagName的变量,数组下标号÷32的整数结果看作伪道号,通道不超过123个。

注:
1)建数组变量(ARR寄存器)让组态王批量读,能获得最佳采集效率。

因为TAG 寄存器一般是32个点(原子变量)打一个包,ARR寄存器打包数据(非BIT型)按最大字节数492计算,例如要读取FLOAT(REAL)型的数组,FLOAT每个元素占4个字节,所以一个包中最多有492/4=123 个变量。

2)ARR寄存器BIT型打包方法很特殊,例如:
客户在RS5000中建立一个数组ARRBOOL[0]~ARRBOOL[20000],现在想读取ARRBOOL[51]~ARRBOOL[5000]的数据,第一个包里,伪起始通道iStart = 51÷32 = 1; 伪结束通道iEnd = 1+123 -1 = 123;所以结束数组下标号为123*32 +31 = 3967。

(4)注意事项
1)PLC(PAC)中的数组长度不能超过2Mb内存大小,驱动中不对数组长度做限制,很长的数组根据打包规格分若干次读取。

2)在设备地址后加上“/ERR_MSG:”标志后,才会在信息窗口显示出正常的读写结果;
例如:read xxxx succeeded;若TAG寄存器读成功,会提示read ONE packet of tags succeeded, which contains N tags: 然后依次列出变量名,对于原子变量上的位,只会列变量名。

若其中有一个变量读失败,会提示失败的变量名。

对于数组(ARR)元素上的位,只会提示read 数组名[x] ~ 数组名[y] succeeded,不显示具体哪个位。

3)设备地址后若不加“/ERR_MSG:”,信息窗口提示的 ARRx – ARRy 无意义,这里x, y 只是驱动赋予组态王的一个临时通道号,因为组态王中记录每个寄存器上的通道号来区分每个不同的变量,但这个驱动很特殊,不能用通道号(数字)对应每个点,而是TagName(字符串)
4)虽然是TCP设备,但在组态王中设备是建立在串口上,这样设计是为了设置通讯超时时间,在开发状态“设置串口”对话框里输入的“通讯超时”,指TCP等待建链和等待设备回复查询帧的时间。

5.2 串口通讯
5.2.1 概述
支持通用协议:CIP over DF1 through COM
支持全双工和半双工通讯方式,可以设置BCC校验或者CRC校验方式。

支持的硬件型号: ControlLogix/CompactLogix系列及其他支持以上协议的设备。

支持的连接说明及发送方式:支持串口连接。

本驱动支持运行环境:win2000/winNT/WINXP。

在使用AB PLC ControlLogix、CompactLogix设备与组态王进行通讯时请确认已经正确安装了驱动文件ABControlLogixDF1.dll。

5.2.2 组态王设置
(1)定义组态王设备
[PLC]>[罗克韦尔]>[AB-ControlLogixDF1]>[COM]。

(2)设备地址
Address 【backplane,slot】
Address 0-255 设备地址
Backplane 基座号,大于等于0的数字
Slot 控制器所在槽号,大于等于0的数字
注:如果是ControlLogix基座号是可以任意指定的,但是对于CompactLogix的基座号则唯一。

目前开发的这款驱动是在CompactLogix系列设备上调试的,所以暂时不用输入可选项
(3)寄存器说明
组态王寄存器列表
寄存器范围数据类型读写说明
TAG TagName Bit/Byte/Short/Ushort/Long/Float读写 PLC上定义的原子变量STR TagName
String 读写字符串变量
[length]
Bit/Byte/Short/Ushort/Long/Float读写数组变量
ARR TagName
[idx]
寄存器特殊说明:
1)TagName:PLC中定义的变量名称。

2)PLC中的原子变量的数据类型包括:BOOL,SINT, INT,DINT,REAL,可以存在Program Scope 中,也可以存在于结构体中。

3)Tag定义方法:例如PLC上定义了一个变量,名字是INT_A,是INT类型的(Signed Short, 16 bit value),组态王定义变量时,寄存器中应填 TAGINT_A,数据类型SHORT 。

在PLC定义的BOOL数组变量必须从ARR寄存器读取,不可以从Tag寄存器读取。

4)TagName字符串仅由字母、数字、下划线构成,输入其他字符将会提示寄存器名错误。

RS5000 限制了tag name 长度为40字节,字母开头字符。

但是组态王中寄存器最大字符为32,因此在变量取名时应注意长度使PLC中变量长度小于29。

5)对于STR寄存器, PLC中默认STRING类型只支持最长82个字节的ASCII字符串类型,不支持汉字,若输入汉字,会出现读写失败的情况。

当ARR寄存器不输入长度时默认长度为82(包含最后的结束符\0)。

仅当变量名中不含索引值时才可省略输入长度。

6)ARR寄存器目前只支持一维数组,PLC中可定义一维、二维、三维,以后若有需求,可以开发,对3维数组需要考虑很复杂的打包规则,故现在不做。

且数组的数据长度必须小于120字节。

7)虽然组态王中ARR寄存器还不支持2维3维数组,但是可以从TAG寄存器上读到PLC中的2维3维数组变量;
例如:PLC中变量MyINTArr[4,5,6],可以通过组态王变量TAGMyINTArr[4,5,6]读取;
注:RS5000中不支持建BOOL型2维、3维的数组,BOOL型只有1维数组。

8)数组变量定义方法:变量名[数组下标]或变量名[数组下标
例如:
组态王中定义:ARRMyTag[1] 或 ARRMyTag[1 (后半个方括号 ] 不输入,也是正确的,这样在大批量定义数组时后可以利用组态王变量尾数自加,更方便的定义变量);
对应PLC中定义:MyTag[1]
9)读原子变量(除了BOOL)上的某一位的方法
a.在原子变量名后面加上“/<bit index>”,bit index不能超过实际数据类型的长度,否则将提示寄存器格式错误
例如:
MyTag/5
MYTAG1.s2/1
MYTagX[44]/3 ;
b.读原子变量(除了BOOL)上的某一位,在组态王中建变量时,数据类型应该设置BYTE/SHORT/USHORT/LONG/FLOAT,而不是设置成Bit,否则会数据类型错误;
c.TAG和ARR都支持,包括:原子变量、Program Scope tag里的原子变量、结构体上的原子变量;
d.ARR寄存器的BOOL变量,TAG变量上的某一位和ARR变量上的某一位,都是只读的,不支持写操作。

10)读 Program Scope 中变量的方法:
PROGRAM:<program name>.<atomic name>
例如:
组态王中定义:TAGPROGRAM:MainProgram.MyTag
ARRPROGRAM:MYProgram.MyTag.sub1/2
对应PLC中 PROGRAM:MainProgram变量:MyTag
PROGRAM:MYProgram变量:MyTag.sub1
11)读结构体中变量方法:
<structure name>.<atomic-name>
<structure name>.<substructure>.<atomic name>
例如:
MyTimer.ACC
MyUDT.MyTimer.ACC
寄存器使用举例:
寄存器名称读写属性数据类型变量类型PLC中对应变量名称 PLC中数据类型TAGTBY_1 读写BYTE I/O整数TBY_1 SINT ARRAU[10] 读写USHORT I/O整数AU[10] INT STRST20[24] 读写STRING I/O字符串ST20 STRING 组态王的数据类型与RS5000的数据类型对应关系:
组态王的数据类型RS5000的数据类型
Bit BOOL
BYTE SINT
SHORT INT
USHORT INT
LONG DINT
FLOAT REAL
注:SINT 型在RS5000中有符号单字节整数(char),但在组态王中对应的BYTE是
无符号单字节整数
打包规格描述:
寄存器名称打包范围(对于不能实现打包的
请说明原因,范围填写0~0)打包规则(备注:说明每个寄存器的打包规则以及包的最大通道个数;
TAG 1、最多32个原子变量+这些原子
变量上的位!
2、包里全部TagName的总长度
不超过180字节打包,相同设备、读属性、相同寄存器(TAG),各种TagName、各种数据类型可以混合打在一起,原子变量上的位也打在一起。

STR 不打包(字符串不打包)
ARR 1、非BIT:打包数据最大字节数
120
2、BIT型:把数组下标号÷32
的整数结果看成伪通道号,
使伪通道个数不超过30。

1、非BIT型数据:读属性、相同设备、相同寄存器(ARR)、相同数据类型、相同TagName的变量打在一个包里。

2、BIT型数据:读属性、相同设备、相同寄存器(ARR)上,BIT型数据,相同TagName的变量,数组下标号÷32的整数结果看作伪道号,通道不超过30个。

注:
1)建数组变量(ARR寄存器)让组态王批量读,能获得最佳采集效率。

因为TAG 寄存器一般是10个点(原子变量)打一个包,ARR寄存器打包数据(非BIT型)按最大字节数120计算,例如要读取FLOAT(REAL)型的数组,FLOAT每个元素占4个字节,所以一个包中最多有120/4=60 个变量。

2)ARR寄存器BIT型打包方法很特殊,例如:
客户在RS5000中建立一个数组ARRBOOL[0]~ARRBOOL[20000],现在想读取ARRBOOL[51]~ARRBOOL[5000]的数据,第一个包里,伪起始通道iStart = 51÷32 = 1; 伪结束通道iEnd = 1+123 -1 = 123;所以结束数组下标号为123*32 +31 = 3967。

6. 常见问题
1)组态王读取plc中的数据,现在开发的工程运行时,有的变量显示问号,但是新做工程读取在原工程中显示问号的变量时,有的能正常读取,有的就不行?
请检查客户在组态王中定义的变量是否在plc中都存在?变量在读取的时候要打包读取,如果plc中没有建这个变量,那组态王在解析这个包的时候就会出现问题,所以显示问号。

一般情况下组态王定义的寄存器变量必须都是plc中已经定义过的。

2)组态王读取plc中的byte类型的变量,plc中位-2,为什么组态王上显示是254?
组态王中的byte与设备中的sint数据类型相对应的,在设备中,该数据类型是有符号的,值范围是-128~127,但是组态王中的byte是无符号的,值范围是0~255.所以在使用的时候需要注意。

相关文档
最新文档