一.  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

AB PLC简述的更多相关文章

  1. Studio 5000编程:如何判断AB PLC系统中的硬件设备是否在正常工作

    前言:PLC控制系统,主要由CPU.本机架I/O模块,分布式I/O模块,通信模块,或其他设备(如:伺服驱动器.交换机.第三方设备)等组成,如何判断这些设备是否工作正常?或是一旦出现故障,能在第一时间判 ...

  2. 使用以太网通信方式刷新AB PLC固件

    本文详细介绍如何使用以太网通信方式刷新AB PLC固件 一.准备工作 1.  AB PLC控制器一台,本文以5069-L330ER为例,将其通电: 2.  5069-L330ER的IP已设置为172. ...

  3. AB PLC首次IP地址如何分配

    AB PLC首次IP地址如何分配,这里介绍的方法是针对CompactLogix和ControlLogix控制器 一.准备工作 AB PLC控制器一台,本文以5069-L330ER为例,将其通电: 笔记 ...

  4. 如何使用AB PLC仿真软件Studio 5000 Logix Emulate

    前言:在学习PLC编程或程序开发过程中,如果身边没有实体PLC,又想验证程序逻辑,这时,仿真软件是不错的选择.针对AB PLC的仿真软件Studio 5000 Logix Emulate,有的同学说: ...

  5. AB PLC与西门子S7-1200以太网通信

    前言:在项目实际应用中,经常会遇到两个不同厂家的PLC需要互联进行通信交换数据,由于各自的通信协议有所不同,实现起来的难度较大,通常的做法是借助第三方的网关.本文介绍的是AB PLC与西门子S7-12 ...

  6. AB PLC分类

    AB PLC产品更新速度还是挺快的,以前很多产品都停产了,所以分类也跟着调整,就目前而言: 一.主要类型 AB PLC按类型,主要分为三大类: • 小型:MicroLogix控制器 • 中型:Comp ...

  7. C#读写 AB PLC 直接通过节点来读写数据 读写 AllenBradley PLC

    本文将使用一个Github开源的组件库技术来读写AB PLC,使用的是基于以太网的实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官网:http:/ ...

  8. AB PLC 编程之状态机

    AB的程序设计和西门子有点PLC不大一样,在AB中没有RS指令,所以主要用move指令来作步进.今天我们就用Move指令写个AB的程序,和西门子比,有哪些不同. 控制任务 很简单的一个状态机.初始步为 ...

  9. ifix与AB PLC contrologix 5300系列的通讯

    在最近一个改造项目中,由于先前的4G 平台不稳定,本公司自己组建4G VPN来实现.遇到问题:AB 高版本PLC(1769-L33ER)使用标签名直接代替了地址,ifix的ABR驱动只支持SLC500 ...

随机推荐

  1. 【LG4437】[HNOI/AHOI2018]排列

    [LG4437][HNOI/AHOI2018]排列 题面 洛谷 题解 题面里这个毒瘤的东西我们转化一下: 对于\(\forall k,j\),若\(p_k=a_{p_j}\),则\(k<j\). ...

  2. MySQL实战45讲学习笔记:第三十讲

    一.复习一下加锁规则 在第20和21篇文章中,我和你介绍了 InnoDB 的间隙锁.next-key lock,以及加锁规则.在这两篇文章的评论区,出现了很多高质量的留言.我觉得通过分析这些问题,可以 ...

  3. Sentinel Client: 整合Apollo规则持久化

    在前面的学习过程中,Sentinel 的规则,也就是我们之前定义的限流规则,是通过代码的方式定义好的.这是初始化时需要做的事情,Sentinel 提供了基于API的方式修改规则: FlowRuleMa ...

  4. Deepin (Linux Debian)使用日记

    (现在Deepin使用了debian的stable源,如果求新,推荐使用排行榜前三的Linux发行版——> Manjaro) 修复开启混合显卡驱动后,屏幕泛白偏灰问题“: https://blo ...

  5. DVWA SQL Injection(Blind) 通关教程

    SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是 ...

  6. Qt Quick 基本元素初体验

    Qt Quick 作为 QML 语言的标准库,提供了很多基本元素和控件来帮助我们构建 Qt Quick 应用,这节我们简要地介绍一些 Qt Quick 元素. 一. 基本可视化项 1.1 Item I ...

  7. struts2拦截器的实现机制

    前言 最近老大让每周写一篇技术性的博客,想想也没啥写,就想着随便拿个以前的项目去研究研究五大框架的底层代码.本人水平有限,有不对的地方还望大家勿喷,指正! 开始之前先了解下strtus2的工作流程: ...

  8. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  9. 《 .NET并发编程实战》阅读指南 - 第14章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.    

  10. docker-machine命令安装

    $ base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-m ...