做为大部分从事自动化工程师第一个接触的编程语言,梯形图以图形化的方式进行编写大幅降低编程所需的抽象概念,使得自动控制的入门门槛相对于单片机或其他以高阶语言编程的领域来的低,也因此造就了梯形图在自动化领域中不可撼动的地位。
下面会以时间轴方式对梯形图的发展进行介绍
众所周知在 1968 年美国通用汽车进行招标所建立的标准,奠定了 PLC 的基础,在当时 PLC 首要的工作是取代由继电器、计时器组成的逻辑电路控制系统。也是因为上述原因,PLC 初期的发展在编程上即是面向继电器电路的模式设计。
而此时的 PLC 控制系统是以语言描述的方式,如 Motorola 公司在 1972 年商业化的 1-bit 工业控制单元 (Industrial Control Unit, ICU) MC14500B,在其中集成了 PLC 所需具备的硬件架构,目的即是取代继电器的任务。
搭配外部记忆体存储、指令计数器以及输入输出单元后,即是一个 PLC。
MC14500B 中提供了 16 条指令集,其中多数指令和现代的 PLC 基本指令相去不远。
透过程序计数器以及外部存储器中的指令依序输入,则可为 MC14500B 建立控制程序。
透过寄存器的操作甚至可以实现流程控制。值得注意的是这可是遥远的 1970 年代啊!!
在 1970 年代中后期,Modicon 改良了其控制系统的编程模式,透过编程工具 P370 Programmer 将指令以图形化的方式进行编程,在此时也诞生了真正意义上的梯形图。
初期的梯形图的编程已具备现代梯形图的样貌,梯形图该具备的常开常闭点、线圈、鎖存线圈甚至是计时器等在此时都已出现。其本质上是将一些抽象概念的指令或节点以图示的方式显示在 P370 的网路显示区(Network Display Area)。
Modicon 梯形图的诞生,基本上已确立了梯形图的编程模式,可以说决大部分操作已将近 40 年没有变化了。下图为 P370 透过 0003 常闭接点的触发,让 0002 线圈亮灭30秒。
国际电工委员会 (International Electrotechnical Commission, IEC) 在 1993 年 12 月正式制定 IEC 61131-3 标准用以规范 PLC 编程语言,正式将描述梯形图的编程方式定义为指令表(Instruction List, IL),在西门子的编程中则称呼为 Statement List, ST,而图形化的梯形图则维持梯形图的名称。
梯形图的初衷即是取代继电器、计时器构成的控制电路,保留了配电盘上具有母线与回路的架构,其特点在于可直观的描述继电器回路以及直观的监控输入输出接点。
然而随时代的演进,现代的 PLC 不只需要处理输入输出接点问题,甚至数据处理、浮点运算等等,此时用梯形图进行处理的话会显得较为复杂。
以求根公式为例,在限制记忆体只有 y y y 的情况下,就需要 10 条指令处理高级语言的计算:
y = − b + b 2 − 4 a c 2 a y = \frac{-b+ \sqrt{b^2-4ac}}{2a} y=2a−b+b2−4ac
高级语言的运算:
a = 4;
b = 0;
c = -4;
y = ( - b + sqrt( b * b - 4 * a * c )) / ( 2 * a );
y = 1;
梯形图的运算,其中 D10 为输出结果 y y y,D1 、D2、D3分别为参数 a a a、 b b b、 c c c ,:
梯形图程序以数学式表示每一行即为:
y = b * b
y = y / 4
y = y / a
y = y - c
y = y * 4
y = y * a
y = sqrt(y)
y = y - b
y = y / 2
y = y / a
PLC 梯形图编程的发展至今已有近 60 个年头,其实在近 40 年中已无太多变化,其诞生之初是为了将电路描述的抽象概念编程替换为易懂的图形化编程,而所谓的梯形图处理逻辑较为直觉这种说法其实并不恰当,事实上阶梯图较为适合输入输出操作以及与、或、非等的简单逻辑运算,在复杂逻辑情况下,特别是于具有锁存、互斥或与状态机的逻辑条件,梯形图的应用更是增加了编程复杂度,此时适当的采用高级语言的将能大幅降低开发难度。