读PLC梯形图,要沿梯级判断触点条件是否成立,再看线圈或功能块怎样改变变量,并把这个结果放回程序执行顺序中。梯形图中的触点通常是在检查一个布尔变量,线圈则把逻辑结果写入变量;图上看起来“接通”,不等于现场线路正在导电。
梯形图(Ladder Diagram,LD,有些平台写作LAD)是可编程逻辑控制器(PLC)常用的图形编程语言。掌握基本读法,不只是认出几个符号,而是能回答:当前条件会得到什么结果、下一个梯级会读到什么值、下一轮执行后状态是否延续。

梯形图里的母线、梯级与变量
一段梯形图由多个梯级或网络组成。母线是图形的边界,横向连接线把触点、分支、线圈及功能块连起来。阅读一个基本梯级时,从左侧的逻辑起点沿各条路径向右推进:触点决定条件能否继续成立,右侧线圈接收这一逻辑结果。ABB的LD说明将这些元素与布尔变量的关系分开解释,连线表达的是程序逻辑,而不是电气接线的导线规格或电压。
触点和线圈旁的名称或地址,与符号本身同样重要。一个变量可能映射现场输入、物理输出,也可能只是内部标志、定时器完成位或通信数据。读到PartPresent时,需要从变量声明和I/O映射确定它是否表示工件到位;名称只是线索,不能代替定义。
功能块看起来是带输入、输出引脚的方框,可以执行计时、计数、运算或调用其他程序。它不一定是一个简单的通断条件。大型程序还会分为多个例程;子例程是否被调用、由哪个任务执行,决定了图上的逻辑有没有机会运行。Rockwell的梯形图组成说明也区分了梯级、分支和例程调用。
常开、常闭触点检查的是变量值
普通触点常画成—| |—,取反触点常画成—|/|—,分别俗称常开、常闭触点。对这两类基本逻辑触点,给定左侧传来的逻辑条件为真时,普通触点在关联变量为1时通过,取反触点在变量为0时通过。这里1代表真(TRUE),0代表假(FALSE);如果左侧条件已经为假,后续串联触点不能自行把整条路径变真。
| 关联变量值 | 普通触点的条件 | 取反触点的条件 |
|---|---|---|
| 0 | 不成立 | 成立 |
| 1 | 成立 | 不成立 |
例如,一个按钮采用物理常闭接点,未按下时让PLC输入位为1,按下后变为0。如果程序要在“按钮未按下”时允许某段逻辑继续成立,就应检查这个输入位是否为1,而不是因为现场用了常闭接点,就机械地画一个取反触点。物理接点描述电路状态,程序触点描述对变量值的判断,两者要通过接线和输入映射对应起来。
ABB的触点文档明确说明取反触点在变量为假时传递真条件。在Rockwell指令中,XIC检查位是否置位,XIO检查位是否清零;这些助记符可帮助跨平台认图,但变量地址、显示颜色和扩展符号仍须以所用软件为准。

串联、并联怎样组成与、或、非逻辑
把两个普通触点A、B串联,只有A与B都为1,这条路径才成立,对应A AND B。把它们并联,只要至少一条支路成立,汇合后的条件就成立,对应A OR B。在某个触点上取反,则把“检查1”变成“检查0”;它不会将整段网络的所有条件一起取反。
读混合逻辑时,要先看分支从哪里分开、在哪里汇合。假设A串联在前,后面B与C并联,整体是A AND (B OR C)。当A=0、B=1、C=1时,虽然并联部分成立,整体仍为0,因为两条支路都必须经过A。若误读成(A AND B) OR C,就会错误地认为C能绕过A。
普通线圈常画成—( )—。该指令被执行时,将前面的逻辑结果写入它所关联的布尔变量:结果真写1,结果假写0。它并不是“只在真时写1、假时什么也不做”。以Rockwell的OTE指令为例,官方执行表明确列出了这两种赋值行为。若例程没有执行、被跳过或控制器不在相应运行状态,就不能拿这条普通赋值规则推断现场输出。

扫描顺序为什么会改变读图结果
在一个没有跳转的顺序执行梯形图例程中,可以沿梯级排列逐条追踪变量。关键是:某条指令写入的内部变量,后续指令再读取时可能已经是新值,而不是所有梯级都使用进入本轮之前的同一份变量快照。
例如,设本轮开始A=1、M=0、B=0,且只有下面两条普通赋值逻辑写M和B。先执行“用A驱动M”,M变为1;再执行“用M驱动B”,B便读到新M,变为1。若调换两条的顺序,B先读到旧M=0,仍为0,随后M才变为1;在A保持为1、无其他写入的下一轮,B才得到1。程序图没有增加元件,仅仅换了执行顺序,第一轮结果已经不同。

程序里的输出变量与物理端子也有不同的更新时间。以Siemens STEP 7 V21对S7-1200周期程序的说明为例,默认过程映像流程是先把输出映像送到输出模块,再读取输入并更新输入映像,然后执行用户程序。因此,本轮程序产生的新输出值,通常要到下一次相应输出刷新才传到端子。直接I/O访问、其他任务、中断或异步更新的系统有不同机制,不能把这一顺序当作所有PLC的统一规则。
同一个变量如果被多处写入,也要沿实际执行路径检查。在同一顺序路径中,后执行的普通线圈可能覆盖前面的赋值;其他任务或通信写入还会增加新的变化来源。发现“前面条件明明满足,最后却变成0”,应查变量交叉引用和写入顺序,而不是只看第一个线圈。
自保持如何跨扫描周期延续状态
自保持是把一个状态变量的触点并联到启动条件旁边,让已经成立的状态在下一轮参与自己的条件判断。它依靠程序反馈延续,不是普通线圈突然获得了永久记忆。
以下只用内部标志演示:StartReq是启动请求,CancelReq是取消请求,Active是活动状态,初值为0;每轮都执行这段逻辑,且没有其他地方写Active。把CancelReq取反触点串联在前,StartReq与Active的普通触点并联在后,最后写Active,可表示为:
Active的新值 = NOT CancelReq AND (StartReq OR Active的原值)
| 本次读取情形 | StartReq | CancelReq | 写入前Active | 写入后Active |
|---|---|---|---|---|
| 初始 | 0 | 0 | 0 | 0 |
| 收到启动 | 1 | 0 | 0 | 1 |
| 启动松开 | 0 | 0 | 1 | 1 |
| 收到取消 | 0 | 1 | 1 | 0 |
| 取消松开 | 0 | 0 | 0 | 0 |
启动松开后,Active的触点仍使并联分支成立,所以继续写1。取消请求到来时,前面的取反触点不成立,整条路径变假,普通线圈写0。取消松开后,启动条件与自保持条件都为0,因此不会自行恢复。这个例子里即使启动与取消同时为1,取消条件也会阻断整条路径。

置位/复位指令采用另一种行为:置位条件成立时写1,条件不成立时不因此写0;复位条件成立时再清零。例如Rockwell的OTL/OTU分类及OTU执行说明体现了这一差别。分开的置位与复位指令若同轮都执行,结果取决于执行顺序;专用SR、RS功能块还各有优先规则。跨扫描保持与掉电后保留也不是同一件事,掉电状态要看变量保持配置、启动处理及控制器行为。
定时器、计数器和比较指令怎样读
看到功能块,除了判断左侧条件,还要看实例名、输入参数和输出结果。以CODESYS Standard库的接通延时定时器TON为例,IN是启动计时的布尔输入,PT是设定时间,ET是已逝时间,Q是到时结果。假设PT=2秒,IN连续为真,等计时达到设定值后,Q才为真;若1秒时IN变假,计时复位,下一次变真重新开始。程序需要继续执行其他逻辑,并不是停在这个方框里等待2秒。
向上计数器CTU则在CU从0变成1的上升沿增加计数CV;CU持续为1多个扫描周期,不代表每轮都加1。PV是预设计数,CV达到PV时Q为真,RESET为真时清零。普通扫描读取未必能捕获短于采样间隔的所有现场脉冲,这也是不能把“程序计数结果”直接视为“实际经过件数”的原因之一。
比较指令判断两个数值的关系,例如Temperature > Limit得到一个布尔条件,再与其他条件组合。读图时要确认数值类型、单位和换算:温度工程值与传感器原始码值不是同一量,不能仅看比较符号就认定门限含义。不同平台的定时、计数助记符和参数布局可能不同,应先识别功能,再按该指令的文档解释端口。
从一个输出向前追,怎样把整段逻辑读完整
面对实际程序,可以把“输出为什么不成立”拆成一条可检查的路径:
- 找到该线圈或功能块输出对应的变量,并查看它的类型、含义及I/O映射。
- 确认所在例程会被哪个任务或调用指令执行,是否存在跳转或未调用的分支。
- 从输出向左还原条件,将串并联关系写成带括号的逻辑式,再用当前变量值逐段验算。
- 查这个变量的全部读取和写入位置,把定时、计数、置位、复位及其他任务的影响放进执行顺序。
- 分别检查初始、条件到来、条件撤销和下一轮的状态,最后才把程序结果与模块和现场反馈对应起来。
在线监视的高亮能帮助找到当前成立的逻辑路径,但显示颜色不是跨平台统一标准,画面刷新也不是逐条指令的连续录像。程序变量为1,仍需经过I/O配置、输出模块和现场电路才能产生实际动作;程序变量为0,则先解释是哪一条条件或写入使它为0。
上述内部标志和普通触点示例用于理解梯形图。机械急停、防护门等安全功能还涉及相应安全硬件、诊断与验证,不能把这类教学自保持逻辑直接当作安全停机程序。
参考资料
- ABB:Ladder Diagram (LD)。
- ABB:Command: Insert Contact。
- Rockwell Automation:Bit Instructions。
- Rockwell Automation:Output Energize (OTE)。
- Rockwell Automation:Output Unlatch (OTU)。
- Rockwell Automation:Ladder diagram components。
- Siemens STEP 7 V21:Cyclic OBs (S7-1200)。
- CODESYS Standard 3.5.22.0:TON。
- CODESYS Standard 3.5.22.0:CTU。
评论留言
暂时没有留言!