AB PLC简述
一. PLC基础概念
PLC:可编程序控制器是一种数字运算的电子系统,专为在工业环境下应用而设计。采用可编程的存储器,用来在内部存储执行逻辑运算、顺序控制、定时、计算和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。可编程控制器及有关设备,都应按易于工业控制系统联成一个整体、易于扩充功能的原则设计。
PLC运行框图:上电及内部处理à扫描过程à诊断及出错处理
上电及内部处理:上电后对整个系统进行一些初始化工作,如硬件初始化、IO模块配置检查、停电保护设定及其他初始化工作。
扫描过程:包含三个部分。首先是输入扫描,其次是程序扫描,最后一个是输出扫描阶段。
诊断及出错处理:PLC没扫描一次,就执行一次自诊断,检查诸如CPU、电池电压、程序存储器、IO通讯是否异常或出错,如查出错误或异常,CPU面板上的指示灯就会只是,并在特殊寄存器中存入出错代码。若出现致命错误,CPU就会被强制成STOP方式,停止扫描。
PLC组成:主要有电源、处理器(CPU)、输入输出单元(I/O)、特殊输入输出单元及一些外部单元(如编程器等)组成。
安装:常安装于通用的输入输出框架上。装有CPU模块的框架称为基本框架,其他为扩展框架。基础框架与扩展框架之间如果距离较近(一般不超过30m),可通过扩展本地IO通信口与多个本地扩展框架相连;如果距离较远(一般小于3000m),可通过远程IO连接。
主要性能指标:1)存储容量;2)控制容量:就是IO容量,也叫IO能力,通常以离散量(数字量)个数计;3)扫描周期;4)指令功能及软件支持;5)网路与通信。
二. 产品系列
AB PLC按系统规模大小以及产品性能高低分为以下系列:
高性能PLC:ControlLogix系列、PLC5系列
中性能PLC:SLC500系列(SLC 5/01,5/02,5/03,5/04,5/05),FlexLogix系列,CompactLogix
小型PLC:MicroLogix系列,Micro800系列
AB的PLC目前主要分为5类:
1. MicroLogix1500,编程软件为RS Logix500
2. 中端小型机SLC500,编程软件RS Logix500。支持多种网络,最大支持4096点I/O。
3. 中端新型CompactLogix,编程软件RS Logix5000。
4. 高端主流机型ControlLogix5000,编程软件RS Logix5000。最大支持128K点I/O。
5. 高端老机型PLC5,编程软件RS Logix5。
参考:
1. https://wenku.baidu.com/view/6d95c35fb42acfc789eb172ded630b1c59ee9be3.html
2. https://wenku.baidu.com/view/fbeba8eb0975f46527d3e183.html?sxts=1570678308327
3.https://ab.rockwellautomation.com/zh/Programmable-Controllers
三. 编程
3.1 基础概念
PLC的编程方式:三种,梯形图、结构文本及顺序功能图SFC。
物理地址:IO模块在物理框架中的位置,常以第几个框架第几个槽中的第几个端子表示。如第0个框架中1号槽放了一个32点输入模块,要指出其5号端子,其物理地址就是0框架1号槽5号端子。
逻辑地址:对应于内存中的地址,常以第几号机架(rack)第几号IO组(Group)的第几位来表示。其中一个机架由8个IO组组成。一个IO组对应于一个输入映像表字(16位)和一个输出映像表字(16位),相当于16个输入端子和16个输出端子。如输入映像表中I:021/12中的I代表输入模块,02代表2号机架,1代表1号IO组,斜杠后的12代表12号端子。
物理地址与逻辑地址的关系
地址方式 寻址单位(从大到小)
物理地址 框架 槽 端子号
逻辑地址 机架 IO组 位号
3.2 PLC-5的寻址方式
2槽寻址:由两个I/O模块槽组成一个IO组,也就是说每一物理的2槽IO模块对应于输入映像表中的一个字(16位)和输出映像表中的一个字(16位)。采用不同密度(8点、16点)的模块决定了再映像表中每个字使用的位的数目。
两个8点离散模块组成一个IO组
前图是两个8点输入模块,后图示1个8点输入和1个8点输出模块
结论:8点IO模块在IO框架中是可以按任意次序放置的。
16点离散量模块2槽寻址
由于每个16点模块使用了整个映像表中的整个字,因此,一个16点的输入模块槽(放在偶数槽)要与相邻的另一个模块槽组成一个2槽IO组时,另一个模块必须是8点或16点的输出模块,形成互补。
由于所有的块传送模块(如模拟量模块)都是双向作用的(既占用输入映像表,又占用输出映像表),所以不能用来互补输入或输出模块。
注:2槽寻址的框架中不能采用32点的模块。
例如一个16点离散输入模块和一个16点离散量输出模块组成一个IO组时输入输出映像表中使用位的情况:
1槽寻址:一个IO模块槽组成一个IO组,也就是说,在框架中的每一个物理的槽对应于一个输入和输出映像表字。
在PLC框架中可以任何的次序混用8点或16点模块。
例:带16点IO模块的1槽寻址及其IO映像表
1槽寻址中使用32点IO模块
1槽寻址中使用32点IO模块时,必须从偶数槽开始,在IO槽的2个相邻槽(奇偶对)中成对地安装一块输入模块和一块输出模块。如果不能按此规定把模块配对,那么一对槽中的一个槽必须空置。例如,如果0号插槽有一块32点输入模块,那么,1号IO槽必须插8点、16点或32点输出模块(或一块只使用背板电源、不占IO点的模块),否则,这个槽必须空置。带有两块32点IO模块的1槽寻址:
1/2槽寻址:半个IO模块槽组成一个IO组,也就是说,在框架中的每一个物理槽对应两个输入和两个输出映像表字。
因为在处理器映像表中,对每一个IO槽有32个输入位和32个输出位,所以可以在IO框架中以任意次序混用8点、16点和32点IO模块。
带32点IO模块的1/2槽寻址:
机架号的分配
在一个框架中的机架数取决于框架的大小和寻址方式
框架尺寸 2槽寻址 1槽寻址 1/2槽寻址
4槽 1/4机架 1/2机架 1机架
8槽 1/2机架 1机架 2机架
12槽 3/4机架 3/2机架 3机架
16槽 1机架 2机架 4机架
机架分配的一般原则:
1) 处理器驻留框架中分配一个(128个输入和128个输出)至4个机架。
2) 不能将处理器驻留本地IO机架分解成两个或多个框架。
3) 不能将不使用的处理器驻留本地IO组分配给远程IO机架
4) 不能以同一机架号来寻址扩展本地IO和远程IO框架。
例如:一个8槽的扩展本地IO框架设置为IO机架2的IO组0~3,则一个8槽的远程IO框架就不能设置为IO机架2的IO组4~7。
处理器驻留框架的机架首址:缺省为0,对于PLC-5/30、-5/40、-5/60处理器可以通过改变处理器控制字S:26(S是状态文件,26位字号)中的第2位,将缺省值改为1。
寻址远程IO机架的一般规则:1)一个远程IO机架可以是一个框架的一部分,也可以是一个满框架,甚至是多个框架。2)将远程IO机架数限制在所选用PLC-5处理器能够支持的最大机架数之内(最大机架数=处理器的IO点数/每个机架的IO点数(128点))。3)PLC-5处理器和1771-ASB适配器模块会自动将下一个更高标号的机架分配给框架中剩余的I/O组。例如,如果在处理器驻留框架中选择1/2槽寻址,并且使用的是16槽框架,那么处理器会在这个框架中寻址机架0,1,2,3。
本地IO机架分配规则:
PLC-5/40L或PLC-5/60L处理器的通道2是一个扩展本地IO扫描器。一个PLC-5/40L或PLC-5/60L处理器可用于扫描远程或本地IO机架。
1) 远程IO和扩展本地IO机架两者的总数必须不能超过处理器所允许的最大机架数(PLC-5/40L为16个机架,而PLC-5/60L为24个机架)。
2) 不要再扩展本地IO和远程IO之间分解机架号。例如,如果将机架的部分用作远程IO,就不能将机架的剩余部分用作扩展本地IO。
3) 可以将扩展本地IO机架分配给扩展本地IO母线上的多个框架。
4) 在PLC-5系统中,可以对每个扩展本地IO框架选择不同的硬件寻址方法。
3.3 PLC内存组织
PLC除了微处理器外,还包括存储器,其中一部分是用户存储器。用户存储器包含程序存储器和数据存储器。
处理器所检查和修改的所有数据均存储在内存中的数据文件中,数据包含:1)从输入模块接收的数据;2)发送到输出模块的数据;3)程序运算的中间结果;4)预先装入的数据;5)与指令有关的状态信息;6)与处理器操作有关的信息等。
在PLC-5中可以定义1000个数据文件(用文件号0~999表示),为了编址方便,每个文件均由一个字母(标识符)和一个文件号(0~999)来标识。一般,0~8号文件是系统为用户建立的缺省文件。如果需增加数据文件,用户可以通过设定适当的标识符及从9开始的文件号(9~999)来建立各种文件。
文件类型 标识符 文件号
输出 O 0
输入 I 1
状态 S 2
位 B 3
计时器 T 4
计数器 C 5
控制 R 6
整数 N 7
浮点 F 8
可定义的数据文件类型
类型 标识符 编号 大小
位 B 9~999 1000字
计时器 T 9~999 1000个3字元素
计数器 C 9~999 1000个3字元素
整数 N 9~999 1000字
浮点 F 9~999 1000个单字元素(每字32位)
ASCII A 9~999 1000字
BCD D 9~999 1000字
块传输 BT 9~999 1000个6字元素
控制 R 9~999 1000个3字元素
信息 MG 9~999 585个56
PID PD 9~999 399个82字元素
其他还有SFC状态(SC)文件和ASCII串(ST)文件等。
数据文件的地址:由文件名称(T)、文件号(f)、元素号(e)、字号(W)及位(b)构成,相互之间用一定的定界符分开,如一个计时器文件是一个三字元素,可表示为:
T f:e.W/b 位号(0~15)
数据文件从元素构成的字数可以分为:
单字元素:一个元素一个字
三字元素:一个元素三个字
多字元素:一个元素多个字
输入输出文件
I:017/01---- 1号机架、7号IO组,1号端子上的输入
O:026/00----2号机架,6号IO组,0号端子上的输出
注:输入/输出文件IO的机架号、IO组号、端子号全部用八进制表示,其他数据文件的元素号、字号及位号用十进制表示。
位文件B用在继电器逻辑指令、移位寄存器指令及顺序器指令中,其中每一个都可作为一个中间继电器来使用。两种编制方式:通过设定元素号(0~999共1000个字)和在元素内的位号(00~15共16位)进行编址,如B f:e/b;通过整个位文件依次从00开始对位进行编号,如B f/b
计时器文件T用在计时器指令中,用3字元素,字0是控制字(内部使用,不能编址),字1存储预置值PRE,字2存储累积值ACC。可编址的位:EN=位15,有效位,TT=位14,计时器计时位,DN=位13,计时器完成位;可编址的字:PRE=预置值,ACC=累积值。
T4:0.0/15 T4:0/15 T4:0.EN 等价
T4:0.1 T4:0.PRE 等价
T4:0.2 T4:0.ACC 等价
计数器文件C用于计数指令中,3字元素,字0是控制字,字1存储预置值,字2存储累积值。可编址的位:CU=位15,加数有效位;CD=位14,减数有效位;DN=位13,完成位;OV=位12,上溢位;UN=位11,下溢位。可编址的字:PRE=预置值,ACC=累积值。
整数文件用于放置一个16位的字,默认整数文件N7,整数文件可在元素及位上进行编址、寻址,如N f:e/b
N7:2 N7:2/08 N10:36
浮点文件F用于放置一个32位的字,浮点文件一般就是寻址到元素,F f:e
F8:0 F11:1
四. DF1协议
AB的PCCC指的是?
PCCC is the 'Application Layer Message Packet' of DF1
It is also referred to as PC-cubed. I'm not sure what it really stands for - a good guess would be Programmable Controller Communication Commands. These are the 'Application Layer Message Packets' as shown in the on-line DF1 Manual Chapter 6. AB people do not include the DST/SRC bytes when they speak of PCCC - these 2 bytes are really the DF1 header attached before a PCCC message.
What are the best commands to use for SLC5/MicroLogix?
The best commands for SLC5/MicroLogix controllers are:
- Protected Typed Logical Read with 3-Address Fields (Cmd=0x0F, SubFnc=0xA2)
- Protected Typed Logical Write with 3-Address Fields (Cmd=0x0F, SubFnc=0xAA)
- Protected Typed Logical Masked-Write with 3-Address Fields (Cmd=0x0F, SubFnc=0xAB)
- Protected Typed Logical Read with 2-Address Fields (Cmd=0x0F, SubFnc=0xA1)
- Protected Typed Logical Write with 2-Address Fields (Cmd=0x0F, SubFnc=0xA9)
Only the first two (0xA2/AA) are documented in the official DF1 protocol specification. The third (0xAB) is not documented but is commonly used by OPC servers; in fact a Rockwell engineer formally sent me details of it when I asked; it is not considered "secret".
The last two (0xA1/A9) are only of value if you're creating a slave driver since a few of Rockwell's software tools assume these are supported. While they are not documented in the DF1 specification, RSLogix5000 outlines support for them as part of its legacy support for PCCC messages. But there is no reason for an OPC server or master to use 0xA1/A9 since support by slaves is not universal. Using SubFnc 0xA1 instead of 0xA2 just drops one unrequired NULL byte from the command, so is of modest value. For example, to read N7:1 your Read command would include the 6 bytes "A2 02 07 89 01 00" for the 3-Address Fields form and only the 5 bytes "A1 02 07 89 01" for the 2-Address Fields form. Big deal, eh? Well, yes - a big deal if you try to use 0xA1 with a slave that doesn't understand 0xA1.
参考:
1. 罗克韦尔PLC培训教程https://wenku.baidu.com/view/2e7e2e0d84254b35effd3449.html
2. http://www.iatips.com/pccc_tips.html Rockwell一些协议tips