PLC入门编程
可编程逻辑控制器,或称 PLC,大体上是一台内置操作系统的微型计算机。该操作系统高度专业化,并针对实时处理传入事件进行了优化,即在事件发生时进行处理。
PLC 具有输入线,传感器连接到输入线上以通知事件(例如温度高于/低于某个水平、液位达到等),以及输出线,执行器连接到输出线上以影响或发出对传入事件的反应(例如启动发动机、打开/关闭阀门等)。
该系统是用户可编程的。它使用一种称为“继电器梯形图”或 RLL(继电器梯形图逻辑)的语言。这种语言的名称表明,早期由继电器构建的控制逻辑正在被模拟。
其他一些使用的语言包括
- 顺序功能图
- 功能块图
- 结构化文本
- 指令表
- 连续功能图
可编程逻辑控制器、PLC 或可编程控制器是一种数字计算机,用于自动化通常为工业的机电过程,例如工厂装配线上的机械控制、游乐设施或照明灯具。PLC 用于许多机器,许多行业。PLC 设计用于数字和模拟输入和输出的多种排列,扩展的温度范围,抗电噪声能力以及抗振动和冲击能力。控制机器操作的程序通常存储在电池备份或非易失性存储器中。PLC 是“硬”实时系统的示例,因为必须在有限的时间内根据输入条件产生输出结果,否则会导致意外操作。
在 PLC 之前,汽车制造的控制、排序和安全联锁逻辑主要由继电器、凸轮定时器、鼓式排序器和专用闭环控制器组成。由于这些继电器可能数量众多,甚至达到数百甚至数千个,因此更新此类设施以进行年度车型变更的过程非常耗时且昂贵,因为电工需要单独重新布线继电器以更改其操作特性。
数字计算机作为通用可编程设备,很快就被应用于控制工业过程。早期的计算机需要专业的程序员,并且需要严格的运行环境控制,以控制温度、清洁度和电源质量。将通用计算机用于过程控制需要保护计算机免受工厂环境的影响。工业控制计算机将具有几个属性:它可以承受车间环境,它可以以易于扩展的方式支持离散(位格式)输入和输出,它不需要多年的培训即可使用,并且它允许对其操作进行监控。任何计算机系统的响应时间必须足够快才能用于控制;所需的速度根据过程的性质而异。[1] 由于许多工业过程的时间尺度很容易被毫秒级响应时间解决,因此现代(快速、小型、可靠)电子产品极大地促进了构建可靠的控制器,尤其是因为性能可以与可靠性进行权衡。
1968 年,通用汽车海德拉马蒂克(通用汽车的自动变速器部门)根据工程师 Edward R. Clark 撰写的一份白皮书,发布了一份关于电子替换基于硬连线继电器系统的提案请求。获胜的提案来自马萨诸塞州贝德福德的贝德福德联合公司。第一个 PLC,命名为 084,因为它是由贝德福德联合公司的第八十四个项目,是其结果。[2] 贝德福德联合公司成立了一家新公司,专门致力于开发、制造、销售和维护此新产品:Modicon,代表 MOdular DIgital CONtroller。参与该项目的人之一是 Dick Morley,他被认为是 PLC 的“之父”。[3] Modicon 品牌于 1977 年出售给古尔德电子,后来被德国公司 AEG 收购,然后被法国施耐德电气收购,后者是目前的拥有者。
在马萨诸塞州北安多弗的 Modicon 总部现在展出了最早的 084 型号之一。通用汽车在该装置连续运行近 20 年后退役时,将其赠送给 Modicon。Modicon 在其产品系列的末尾使用了 84 的绰号,直到 984 出现。
汽车行业仍然是 PLC 的最大用户之一。
早期的 PLC 旨在取代继电器逻辑系统。这些 PLC 使用“梯形图”进行编程,这与继电器逻辑的原理图非常相似。选择这种程序表示法是为了减少对现有技术人员的培训要求。其他早期的 PLC 使用基于堆栈式逻辑求解器的某种形式的指令列表编程。
现代 PLC 可以通过多种方式进行编程,从继电器派生的梯形图到编程语言,例如专门改编的 BASIC 和 C 方言。另一种方法是状态逻辑,这是一种非常高级的编程语言,旨在根据状态转换图对 PLC 进行编程。
许多早期的 PLC 没有配套的编程终端能够图形化地表示逻辑,因此逻辑反而表示为某种布尔格式的一系列逻辑表达式,类似于布尔代数。随着编程终端的演变,梯形图变得越来越普遍,原因如前所述,还因为它是一种用于机电控制面板的熟悉格式。存在状态逻辑和功能块(这类似于使用数字集成逻辑电路时逻辑的表示方式)等更新的格式,但它们仍然不如梯形图流行。其主要原因是 PLC 以可预测且重复的顺序解决逻辑,并且梯形图允许程序员(编写逻辑的人)比其他格式更容易地看到逻辑序列定时中的任何问题。
PLC 主要用于控制机械。为 PLC 编写的程序基本上包含根据输入条件和内部程序打开和关闭输出的指令。在这方面,它类似于标准计算机应用程序的使用方式。但是,一旦 PLC 程序被激活,它通常会作为循环连续运行一段时间。基于 PLC 的系统不仅常用于控制简单的设备,例如车库门开启器,还用于解决复杂的应用场景,例如控制整个房屋,包括在特定时间打开或关闭灯、监控定制的安全系统等。
最常见的是,PLC 位于工业环境中机器的内部。PLC 可以运行自动机器数年,几乎无需人工干预。它们设计用于承受大多数恶劣环境。
PLC 的发展始于通用汽车提出的开发标准机器控制器的建议,以缓解与机电电路相关的问题。
当设计第一个电子机器控制时,它们使用继电器来控制机器逻辑(即按下“启动”以启动机器,按下“停止”以停止机器)。一台基本的机器可能需要一整面墙的继电器来控制其所有功能。这种类型的控制有一些限制。
- 继电器会失效。
- 继电器通/断时的延迟。
- 需要设计/布线/排除故障一整面墙的继电器。
PLC 克服了这些限制,它是一种机器控制操作。
PLC 变得越来越智能化。近年来,PLC 已被集成到诸如计算机网络之类的电气通信中,例如,工业环境中的所有 PLC 都已连接到通常按层次结构组织的网络中。PLC 可以由控制中心或称为 SCADA 的监控系统进行监控,并且通常连接到人机界面 (HMI)。存在许多基于串行通信和以太网通信的专有网络类型。
PLC 是一种专用的机器控制计算机,旨在读取来自各种传感器的数字和模拟输入,执行用户定义的逻辑程序,并将生成的数字和模拟输出值写入各种输出元件,例如液压和气动执行器、指示灯、电磁线圈等。
虽然各个制造商的具体细节有所不同,但大多数 PLC 遵循“扫描周期”格式。PLC 从上到下、从左到右扫描程序。
开销 - 开销包括测试 I/O 模块完整性、验证用户程序逻辑是否已更改、计算机本身是否已锁定(通过看门狗定时器)以及任何必要的通信。通信可能包括 PLC 程序员端口、远程 I/O 机架和其他外部设备(如 HMI(人机界面))上的流量。
- 输入扫描
- 输入卡上存在的数字和模拟值的“快照”被保存到输入存储器表中。
- 逻辑执行
- 用户程序逐个元素、逐个梯级地扫描,直到程序结束,并将结果值写入输出存储器表。
- 诊断和通信
- 在许多不同的学科中使用,逻辑、分析和经验的使用方式各不相同,以确定“因果关系”。在系统工程和计算机科学中,它通常用于确定症状、缓解措施和解决方案的原因。它与输入模块通信,并向输出模块发送任何不正确数据文件变化的消息。
- 输出扫描
- 结果输出存储器表中的值被写入输出模块。
输出扫描完成后,该过程会重复,直到 PLC 断电。
完成扫描周期所需的时间,恰如其分地称为“扫描周期时间”,范围从数百毫秒(在较旧的 PLC 或程序非常复杂的 PLC 上)到几毫秒(在较新的 PLC 或执行简短、简单代码的 PLC 上)。
请注意,特定术语和操作细节在 PLC 制造商之间差异很大,并且实现细节通常会随着每一代产品而发展。
通常,最困难的部分(尤其对于没有经验的 PLC 程序员来说)是练习必要的思维体操,以保持从制造商到制造商的术语一致。
- 正逻辑(大多数 PLC 遵循此约定)
- 真 = 逻辑 1 = 输入通电。
- 假 = 逻辑 0 = 输入未通电。
- 负逻辑
- 真 = 逻辑 1 = 输入未通电
- 假 = 逻辑 0 = 输入通电。
- 常开
- (XIC) - 检查是否闭合。
- 当硬件输入(或内部继电器等效项)通电时,此指令为真(逻辑 1)。
- 常闭
- (XIO) - 检查是否打开。
- 当硬件输入(或内部继电器等效项)未通电时,此指令为真(逻辑 1)。
- 输出使能
- (OTE) - 输出使能。
- 此指令模拟传统继电器线圈的动作。
- 定时器开启
- (TON) - 定时器开启。
- 通常,当输入(使能)线变为真时,ON 定时器开始计时,如果使能线在达到设定值之前变为假,则复位。如果使能直到达到设定值,则定时器输出变为真,并保持为真,直到输入(使能)线变为假。
- 定时器关闭
- (TOF) - 定时器关闭。
- 通常,OFF 定时器在从真到假的转换时开始计时,并在前序逻辑保持为假时继续计时。当累积时间等于设定值时,TOF 输出变为开启,并保持开启,直到梯级变为真。
- 保持定时器
- (RTO) - 保持定时器开启。
- 此类型的定时器在输入条件变为假时不会重置累积时间。
相反,它将上次累积的时间保存在内存中,并且(如果/当输入再次变为真时)从该点继续计时。在 Allen-Bradley 结构中,此指令在达到设定值(预设)时间后变为真,并保持为真,直到 RES(复位)指令变为真以将其清除。
- 锁存继电器
- (OTL) - 输出锁存。
- (OTU) - 输出解锁。
通常,解锁操作符优先。也就是说,如果解锁指令为真,则继电器输出为假,即使锁存指令也可能为真。在 Allen-Bradley 梯形图逻辑中,锁存和解锁继电器是单独的操作符。
但是,其他梯形图方言选择了一个以 RS(复位-设置)触发器 IC 芯片逻辑为模型的单一操作符。
- 跳转到子程序
- (JSR) - 跳转到子程序
- 为了从一个梯级跳转到另一个梯级,使用 JSR(跳转到子程序)命令。
维基百科
维基教科书
作者:philip