阶梯逻辑:优势,劣势

任何从事过项目的人都知道,业余爱好者和专业人士之间的区别之一是使用正确的工具来完成工作。无论是修理水龙头还是为测量和控制系统编程,这都是正确的。认识到这一需求,软件供应商通常允许在其软件中使用多种编程方法。提示、图表紧随其后。

托德·沃尔特,国家仪器公司 二零零七年三月一日

任何参与过项目的人都知道,业余爱好者和专业人士之间的区别之一就是使用正确的工具来完成工作。无论是修理水龙头还是为测量和控制系统编程,这都是正确的。认识到这一需求,软件供应商通常允许多种编程方法与他们的软件一起使用。这些根本不同的计算模型让程序员可以为他们的任务选择最合适的工具。控制和测量软件的五种最流行的编程方法是:梯形图,文本,功能块/数据流,状态图,仿真和建模。

梯形图

梯形图是在20世纪60年代发展起来的,当时汽车工业需要一种更灵活和自记录的替代物理继电器和计时器柜。后,一基于微处理器的系统的介绍,并设计了系统软件,以反映用于构建继电器控制面板的电气图。这种软件被称为阶梯逻辑或阶梯图,其外观和执行方式与电气图相似。

“阶梯逻辑的一级”图示显示,左轨是电源母线,右轨是地母线。电流流经一系列常开或常闭的触点,为线圈供电。开触点阻断电源,闭触点通电源。在梯形逻辑中,每个触点和线圈都连接到一个布尔内存位置。串联触点充当“和”,并联触点充当“或”。执行是从左到右,从上到下。

阶梯逻辑的一个梯级反映了电路。

固有的阶梯逻辑是一个看不见的扫描引擎和内存管理堆栈。物理输入被读取并存储在内存表中。通过从内存表中读写输入、输出和中间值来运行阶梯逻辑。在逻辑周期结束时,使用内存表中的值更新所有物理输出。(许多阶梯表示可以立即执行读取和写入,而不是等到执行周期结束。)

为了处理更复杂的任务,比如数学、计时器功能、计数器或PID,今天所有的阶梯表示都有能力调用阶梯级上的函数。这些函数通常有一个允许函数执行的输入终端(EN)和一个成功完成函数执行后的输出终端(ENO)。功能可以放到梯形图上,它们将根据梯形图的潮流执行。

阶梯逻辑的优点

梯形图有很多优点。

  • 直观和自文档化。梯形图的特点是基于易于理解的电路设计概念的优秀图形表示。由于对环境的熟悉,从梯形图开始的学习曲线非常低;基本的编程技能发展很快。这使得梯形图在需要由没有受过软件培训的人员(包括一些电工或工厂技术人员)调试或维护的应用程序中特别受欢迎。

  • 优秀的调试工具。现代的在线调试工具提供了一个梯形图,可以显示实时的“功率流”。这使得理解图表逻辑和调试错误变得非常容易。

  • 离散逻辑的有效表示。因为梯形图是用来反映电路的,所以它自然是表示离散逻辑的好方法。对于数字逻辑,梯形图几乎是直观的。

阶梯逻辑的弱点

PLC扫描结构将输入读入存储器,执行阶梯逻辑,并从存储器写入输出。
  • 分层数据和逻辑封装。纯梯形图(没有函数)的一个限制是不能封装代码以供重用。如果您只在梯形图中编程,那么程序将长得难以管理,这使得编码、调试和编辑变得非常困难。因为分层编程是现代软件设计的基本要求,今天几乎每个主要的梯形图包都包含可以从梯形级调用的函数和功能块。然而,许多梯形程序支持有限数量的子程序或程序块,这使得将大型程序分解为可管理的部分变得困难。

  • 糟糕的数据结构。一般来说,梯形图在单个内存位或寄存器中寻址内存,并且可以在程序中的任何位置读写变量。这使得很难保护数据或将数据分组为一个结构。由于数据寻址是非常低级的,所以很容易意外地访问错误的寄存器,从而导致意外的行为。这也可能使保护内部信息变得困难,并引入内部数据可能被程序中其他地方的错误代码修改的风险。使用命名变量会有所帮助,但即使在使用变量时,也可能创建具有重叠内存位置的变量。大多数优秀的编辑器都有工具显示在程序中读取和写入内存寄存器的位置,并检查冲突。

  • 有限的执行控制。在梯形图中,梯形以从左到右从上到下的方式执行,时间由可编程逻辑控制器(PLC)扫描和执行的速度定义。这个易于理解的模型适用于主要使用离散逻辑的大量应用程序。然而,这使得构建多速率应用程序变得困难。要更改执行结构,您可以使用“跳转”命令移动到图的不同部分。但是,由于总体响应时间取决于梯形程序的长度和复杂性,因此在设计需要以特定时间响应的系统时可能会出现问题。安排不同代码部分的调度需要花费时间和精力。在执行模拟或过程控制时,这变得更加成问题。模拟控制,如PID,依赖于具有一致的执行时间。当代码段被交换进和交换出时,从一个执行时间到下一个执行时间的周期时间是不同的,并且可能导致基于模拟的控制出现问题。

  • 算术运算。传统上,阶梯逻辑只处理离散值和计数器/计时器,但是今天的阶梯图也支持使用功能块的数学运算。然而,在梯形中,与功能块编辑器不同,功能块的输入和输出没有连接在一起。相反,它们被引用到内存位置。对于简单的操作,这就足够了,但是涉及大量变量和中间结果的复杂算法在编程、记录、调试和编辑方面可能非常麻烦。

在线额外

编程方法:阶梯逻辑和其他计算模型

自20世纪60年代第一个基于软件的控制和测量系统出现以来,已经有许多编程语言和工具为工程师更有效地编程系统而引入。选择和使用正确的“工具”可以使测量和控制系统更快地设计,更有效地操作,更容易维护和调试。
加州大学伯克利分校(University of California at Berkeley)研究实时和嵌入式开发的研究人员将不同的软件表示称为“计算模型”。计算模型是一个学术术语,指的是表示系统行为的特定方式,例如有限状态机或数据流表示。

实际上,计算概念的模型可以广泛地用于跨越工业系统的多种表示和编程方式。为了构建这个讨论,考虑一个包含美学属性和执行属性的计算模型,比如它的外观和运行方式,”美国国家仪器公司工业测量和控制集团经理Todd Walter说。

Walter说,不同的编程模型对于从不同角度进行设计的工程师来说是有价值的。例如,过程控制工程师受益于能够演示并发操作的编程表示,例如同步PID循环、批量排序、操作员接口、报警等等。她说,同样,设计机器控制系统的工程师也可以从处理离散逻辑、顺序操作和状态转换的编程模型中获益。

两位设计者可能使用相同的硬件,但不同的编程工具来设计他们的系统。每种计算模型都有优点和缺点,可能更适合一种类型的任务,而不太适合另一种类型的任务。
沃尔特说:“北美五种语言中使用最多的是阶梯逻辑。“每天与plc和梯形图打交道的工程师在梯形图编程方面发展了专业知识,通过采用良好的编程实践,梯形图是一种非常实用的语言。非常复杂和功能齐全的应用程序可以用梯形图编程,特别是主要是数字的应用程序。”

拥有电工和技术人员可读的代码的额外好处不应被低估。梯形逻辑可以非常有效地以易于编程和维护的形式描述数字逻辑。然而,对于涉及算法、过程控制或复杂排序的应用程序来说,它可能很麻烦,沃尔特说。
寻找编程方法系列,其中来自国家仪器公司的工程师解释和比较各种计算模型。2007年3月的第1部分介绍了梯形图。以后的文章将介绍文本、功能块/数据流、状态图以及仿真和建模。

作者信息
托德·沃尔特(Todd Walter)是位于德克萨斯州奥斯汀的国家仪器公司工业测量和控制组的经理。他持有Virginia Polytechnic Institute和State University(位于Blacksburg, Virginia)的机械工程学士学位。

编程方法系列

梯形逻辑是一系列探索不同软件编程方法的第一篇文章,如何根据系统需求和体系结构选择最合适的计算模型。以后的文章将介绍文本、功能块/数据流、状态图以及仿真和建模方法。