PLC程序中的IO映射技术
I/O映射是将原始输入和输出数据转换为特定标签的过程,但是我们如何找到一种既高效又可扩展的I/O映射方法呢?
映射I/O意味着什么?
在控制系统中映射输入和输出意味着将原始I/O值转换为可用数据。然后,数据在站级控制逻辑中用于执行操作或显示状态。在映射机器自动化的输入和输出时,您将希望确保流程是可扩展的,并且可以在未来的项目中重复使用。您可能还希望自动化流程以减少集成时间。
图1.常见的远程I/O系统示例。罗克韦尔自动化(左)和西门子(右)。还有倍福、国产等等。
I/O信号类型
有多种方式可以从PLC发送和接收信号。远程I/O机架、现场I/O块和本地I/O卡只是我们将传感器或执行器连接到控制系统的一些方式。所有这些设备在控制系统中以位(或字节或整数,取决于配置和使用的I/O类型)的形式表示它们的数据。
每个I/O的标签名称来自用于与I/O设备通信的模块的名称。例如,如果您将输入卡命名为“InputCard1”,那么控制系统将填充一个具有相同名称的字节。该字节中的每一位代表一个离散的输入信号。一些机器制造商可能会使用电气印刷品中的设备名称以及找到该设备的页码。
虽然从技术上讲,这种原始输入可以在您的逻辑中使用,但需要对每个位进行注释来描述该输入的操作。标签名称“InputCard1.0”并没有告诉我该输入的用途,也没有告诉我它在系统中是如何使用的。在许多不同输入模块的数千个输入信号上写注释会花费很多时间。
以下有用的两种不同方法的大纲。
图2.在顶部,为站IO定义了一个UDT,其中包含两个UDT,输入(左下角)和输出(右下角)各一个。
映射类型
根据所使用的控制系统和设备,有几种不同的方法来映射I/O信号。
在硬件配置时映射I/O标签
TIA Portal 西门子博途 PLC编程提供了一个嵌入式系统,用于在设备级别映射信号。您可以选择使用PLC标签,也可以构建一个自定义UDT和数据块。然后可以在硬件配置中分配每个输入或输出。
贝加莱 PLC提供了类似的功能,其中可以直接在硬件配置中为每个输入或输出信号选择变量。这可以节省时间并促进更快的离线编程。借助贝加莱平台的开放式架构,您还可以通过匹配硬件配置文件的语法来自动化此过程。
AutomationDirect还包括在项目创建时将I/O模块添加到硬件配置时直接命名每个点的实用程序。
在梯形逻辑中手动映射I/O标签
罗克韦尔自动化控制系统不提供硬件级映射功能,任何需要完成的映射通常都在序列逻辑前后的子例程中编程。
图3.手动将单个位映射到输出线圈的过程。
为了减少使用的标签数量,创建一个用户定义的类型来容纳所有的站点或机器输入和输出是有益的。根据我的经验,我喜欢创建一个输入UDT和一个输出UDT,然后是一个只有两个标签的站UDT:“i”和“o”,带有新创建的输入和输出UDT。“i”和“o”标签将由该站内使用的所有不同输入或输出组成。现在,通过一个标签,我可以按名称访问我所有的站级输入和输出。
映射发生在一个名为“输入映射”的子例程中,我使用复制指令将原始数据复制到我的输入标签中。在“输出映射”子例程中,我将我的站输出标签复制到原始数据标签中。
图4.使用单行逻辑将DINT从输入模块直接复制到带有描述性标签的DINT中。
如果您想使用更通用的方法,您可以创建一个UDT,它不使用输入和输出名称,而是使用“i”和“o”标记的双整数类型(DINT)。这将为每个站点提供32个输入和32个输出。然后可以对表示连接的操作的每个位进行注释。映射将类似地按照上述方式进行。
图5.对于复杂系统,将I/O从原始数据映射到逻辑名称至关重要。
那么,当输入值很容易访问时,为什么还要费心创建UTD和特定标签呢?这完全取决于您的应用程序。
如果您正在构建一个简单的电机正反转控制,那么请使用原始值。如果您正在自动化一个包含许多站点的项目,可能包括机器人和许多输入和输出设备,您将需要使用您的I/O保持井井有条。当使用映射方案时,可以自定义和缩短I/O信号的标签名称。
机器制造商出于模块化目的保持输入/输出的组织,也使维护人员可以轻松地在代码中或现场找到传感器。自动生成输入/输出映射有助于减少集成时间,当输入/输出组织一致时,这些自动化项目会变得更加容易。
对于您的下一个自动化项目,请花一些时间考虑如何布局I/O,以及将I/O映射到特定标签是否有益?
PLC编程的结构化:走向成功的7个步骤
作者 | Eelco van der Wal
“
IEC 61131-3标准包括强大的结构化工具,可以帮助用户将控制系统分解为可管理的单元,从而提高整体效率。
”
根据现代软件开发环境的需求,国际电工委员会 (IEC) 的可编程逻辑控制器标准第 3 部分编程语言 IEC 61131-3 包括了强大的结构化工具。其中关键部分是顺序功能图 (SFC) 和用户自定义的功能块 。两者都为将控制系统分解成可管理的单元提供了一个很好的方法。
这些单元更容易被不同背景的人使用和理解。它提供了系统工程师、软件开发人员以及安装和维护人员之间缺失的环节。此外,它还为这些不同的群体提供了一种表达和交流的工具。
通过这种方式,在更大的应用中,多专业团队也可以相互协作,编制更易于理解和可复用的代码,并在程序员、安装和维护人员以及用户之间提供不同级别的隔离。
此外,在软件开发初期就可以进行错误检测和错误处理。另一种方法,是在安装过程中(甚至在运行期间)创建这些程序,但对于供应商(支持)和用户(停机)来说成本都太昂贵。
为控制系统编程提供结构
控制系统代码结构化的优点很多,包括:更好的系统概览,不仅对原始程序员很重要,对安装和维护人员也很重要;为多专业开发团队的内部沟通提供更好的基础;不同职责之间的明确分离;更好地关注真正的问题和可能的解决方案;以及可复用软件的基础。
结构化是通过将问题分成更小的部分来完成的 。这些部分可以进一步细分。但这样做也有局限性 :不能无限制的持续细化,因为这会增加集成工作。
模块化块的使用涉及 5 个基本原则 :
• 编程语言应支持模块化单元。
• 单元的组成方式和数量,应使其具有最少的接口和最少的交互。
• 接口要小,需要最少的数据交换。
• 模块交互需要明确定义,以增加其可复用性。
• 模块应该提供数据封装功能 :应用程序数据是分区的,每个分区只能由一组功能访问,这 样就可以将其隐藏起来,避免不必要的访问。
编程软件结构化的 7 个步骤
以下 7 个步骤,为控制系统编程软件的结构化提供了一条成功之路 :
• 识别控制系统的外部接口。
• 定义控制系统和工厂其它部分之间交换的主要信号。
• 定义所有操作人员的交互、覆盖和监控数据。
• 控制问题分析,从顶层到逻辑分区,逐步分解。
• 定义所需的功能块。
• 定义应用程序不同部分的扫描周期要求。
• 通过定义资源、将程序与物理输入和输出相连接,以及将程序和功能块分配给任务来配置系统。
IEC 61131-3 提供的合适环境可以支持这些步骤。下面将以发酵过程及其控制系统为例详细探讨编程软件结构化的过程。图 1 是整个系统的示意图。
发酵过程包括一个大容器,它可以装满液体(进料阀),可以用加热带加热(通过对流冷却), 通过电机搅拌,并且可以添加酸和碱液进入容器。处理完成后,就用收获阀来收获产品。要为此示例创建控制程序,需要完成上述 7个步骤 :
1 步骤一
识别控制系统的外部接口,包括 :
• 来自温度传感器的反馈 ;
• 来自 pH 传感器的反馈 ;
• 来自阀门位置的反馈 ;
• 来自电机的反馈(速度);
• 输出到阀门 ;
• 输出到电机 ;
• 输出到加热带。
2 步骤二
定义控制系统和工厂其它部分之间交换的主要信号。
在该例中,系统与工厂的其余部分没有耦合,但是在现实中不太可能。例如,人们可能需要 一个连接到容器的管道,该管道还需要接到接收系统,如容器或瓶子的运输系统。也可能与企业资源规划 (ERP) 系统耦合。
3 步骤三
定义所有操作人员交互、覆盖和监控数据。
对于操作人员,我们定义了 “开始”、“停止”和“持续时间” 按钮作为系统的输入。
4 步骤四
控制问题分析,从顶层到逻辑分区,逐步分解。
这个过程有 5 个主要功能 :
a. 主顺序,例如,顶层工艺步骤——灌装、加热、搅拌、发酵、收获、清洁 ;
b. 阀门控制,操作用于填充和清空容器的阀门 ;
c. 温度控制,用于监测容器温度, 调节加热器 ;
d. 搅拌器控制,用于根据主工艺顺序的要求启动搅拌器电机。
e.pH 控制,用于监测发酵内容物的酸度,根据需要添加酸液或碱液。
5 步骤五
定义所需的功能块。
使用上面的定义并向其添加(高级)功能块,我们就可以在编程语言中使用这些功能块图。发酵控制程序的功能块图如图 2 所示。
▎ 图 2 :此图表示的是发酵过程的功能块图,左侧是输入,右侧是输出。
功能块主序列连接到运行人员输入。它由其它控制块支持,这些块连接到相关的输入和输出。这些附加块可以是供应商提供的块,例如使用 PID 控制的温度控制块 ;也可以由您自己创建(图 3 所示的就是用 SFC 构 造序列)。
▎ 图3 :顺序功能图 (SFC) 提供了一种方法,可以将可编程控制器程序划分为一系列的步骤和转换,它们直接相互连接。
SFC 提供了一种方法,可以将可编程控制器程序划分为一系列的步骤和转换,它们直接相互连接。与每个步骤相关联的是一组动作,与每个转移相关联的是转移条件。
从初始化开始,因为在第一次启动系统时,并不知道系统的状态,所以我们必须检查阀门的位置等。然后开始填充,直至达到合适的液位。下一阶段是加热直到发酵过程开始。接着,进入实际发酵过程控制部分。
完成后,收获产品,然后清理干净,准备重新开始。这种分解,使每个参与者都清楚地了解所涉及的序列,并进一步模块化为功能块,然后用 4 种语言中的任何一种来进行编程。
现在要完成执行级别的编程工作。这些工作可以分配给不同背景的人。为此,IEC 定义了 2 种图形和 2 种文本编程语言,即指令列表、结构化文本、梯形图和功能块图,以最好地满足需要和手头的问题。此外,如果需要,还可以通过 SFC 进一步分解执行块。
6 步骤六
定义应用程序不同部分的扫描周期要求。
在这个例子中,我们原则上只有一个循环,可以在连续模式下运行。或者,我们可以让其定时运行,例如每 20 毫秒运行一次。剩余时间可用于附加序列,例如在收获期间检查,或控制运输 / 装瓶系统,或检查所有边界和错误条件。
7 步骤七
通过定义资源,将程序与物理输入和输出相链接,以及将程序和功能块分配给任务来配置系统。该阶段是专门针对相关系统的。
它包括符号到 I/O 地址的物理映射。通过使用符号表示,可以获得更好的硬件独立性。这对于创建独立于硬件的功能块尤其有效。有了清晰的物理映射,在现场重新布线更容易完成。例如,交换两个数字输入的接线,在物理映射中只需更改 两行,程序的其余部分仍然有效,无需更改。
在这里,资源是相互映射的,意味着无论哪个部分运行在系统中的哪个处理器上,都能一一对应。IEC 61131-3 支持多线程处理环境,尽管大多数系统实际仍使用一个处理器来处理程序。
用户还必须将任务映射到扫描周期和事件,如步骤 6 中定义的那样。这样,一个系统中可以有多个程序,例如这里描述的发酵过程,由整体检查和控制支持,而其背后又有支持环境,例如供应链前端的装瓶或液位。
IEC 61131-3 编程标准为多层次的用户和应用,提供了强大的工具。使用高级 SFC,可以为正在开发的系统提供很好的概览,从而提高可读性和透明度。它为手头的控制问题的模块化提供了指导。此外,它还为区分不同的开发任务提供了基础,并将注意力集中在实际编码层,创建可复用的软件代码上。
关键概念:
■ IEC 61131-3 编程标准为多层次的用户和应用提供了强大的工具。
■ 顺序功能图 (SFC) 和用户衍生功能块,是必不可少的部分。
思考一下:
您是否充分利用了IEC 6113-3 标准进行结构化设计?
相关问答
西门子plc映射步骤?
西门子PLC映射步骤:1、确保PLC网络地址设置正确,能够连通。2、在本地电脑上安装西门子HMI软件。3、配置西门子HMI软件的PLC连接参数。4、在西门子HMI软件中创...
modbus通讯怎么对应plc输入输出?
在Modbus通信中,PLC的输入和输出可以通过Modbus寄存器进行对应。具体的对应方式如下:离散输入(DiscreteInput):PLC的离散输入可以通过Modbus的离散输入寄...
库卡机器人怎么写浮点数给plc?
库卡机器人(KUKARobot)和PLC(可编程逻辑控制器)通常用于自动化系统。确保机器人和PLC之间的数据传输正确是至关重要的。浮点数通常是指带小数点的数字,如3...
plc调试详细步骤?
回答如下:PLC调试的详细步骤如下:1.准备工作:确认所需的调试工具和设备已准备好,并确保PLC系统的硬件连接正确。2.读取和理解PLC程序:仔细阅读PLC程序,...
西门子1200plc如何把I/O点映射到DB块?
西门子1200plc可以通过在TIAPortal软件中创建DB块并将I/O点映射到该块中来实现。在软件中选择DB块类型,然后选择需要映射的I/O点并将其分配到块中。映射后,可...
plc怎么置位?
在plc中,置位就是通过外部强制改变输入,从而把输入映射到输出的一种方式。plc置位使用SET(置位指令),它的作用是使被操作的目标元件置位并保持。SET指令的...
plc置位指令功能?
在plc置位指令功能中,置位就是通过外部强制改变输入,从而把输入映射到输出的一种方式;复位就是通过程序把输入的值变为通电时候的初始状态。简单来说,在功...
西门子plcs7300模拟量am06接线方法?
西门子S7-300PLC与AM06模拟量模块的接线方法如下:连接电源:将S7-300PLC的DC24V电源与AM06模块连接,确保电源连接稳定可靠。连接模拟量信号线:将AM06模块的...
如何用PLC与变频器控制电机正反转?
要通过PLC与变频器控制电机的正反转,首先需要将PLC与变频器进行连接,设置好通讯参数。然后在PLC编程软件中编写程序,定义好正转与反转的逻辑条件和动作指令。...
西门子1200plcint怎么设置偏移量?
关于这个问题,要设置偏移量,需要按照以下步骤进行:1.进入TIAPortal编程软件,选择你的项目并打开它。2.在左侧导航栏中选择“PLC设备”,然后选择你的...