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工程师经验:PLC程序中的IO映射技术
可编程逻辑控制器(PLC)程序中如何将原始输入和输出数据转换为特定标签的过程,以及如何找到一种既高效又可扩展的I/O映射方法。
1. **I/O映射的意义**: 将控制系统中的输入和输出值转换为可用数据,并在工作站级控制逻辑中使用这些数据来执行操作或显示状态。
2. **I/O信号类型**: 介绍了不同的发送和接收PLC信号的方式,如远程I/O机架、现场I/O模块和本地I/O卡等。
3. **标记名称**: 每个I/O的标记名称通常来源于与I/O设备通信的模块的名称,例如“InputCard1”。
4. **映射方法**: 介绍了两种不同的I/O映射方法:
- 在硬件配置时映射I/O标记:如TIA Portal for Siemens PLC和贝加莱PLC提供的直接在设备级别映射信号的功能。
- 手动映射I/O标签:如罗克韦尔自动化控制系统,需要在梯形图逻辑中手动映射。
5. **映射类型**: 讨论了使用用户定义的类型(UDT)来映射I/O信号,包括创建输入和输出UDT,以及如何通过子例程进行映射。
6. **为什么进行映射**: 强调了在复杂的自动化项目中,使用映射方案可以保持I/O的组织性,便于维护人员查找传感器,并减少集成时间。
具体过程流程
### 1. 理解I/O映射的基本概念
I/O映射是将PLC的输入输出信号与程序中的变量相关联的过程。这使得程序能够根据输入信号执行逻辑操作,并将结果输出到相应的设备。
### 2. 确定I/O设备和信号类型
识别需要连接到PLC的输入(如传感器)和输出(如执行器)设备,以及它们的信号类型(数字或模拟)。
### 3. 使用SCL语言进行映射
SCL(Structured Control Language)是一种高级编程语言,可以方便地完成复杂的逻辑操作。使用SCL的PEEK和POKE指令可以进行变址寻址映射。
#### 步骤3.1 创建数组变量
在 DB(Data Block)块中创建一个数组变量,用于表示传感器或执行器的状态。
#### 步骤3.2 使用PEEK和POKE指令
- **PEEK_BOOL**:用于从I/O区、M区、DB块等读取数据。
- **POKE_BOOL**:用于向I/O区、M区、DB块等写入数据。
### 4. 利用FOR循环进行批量映射
如果I/O点是连续的,可以使用FOR循环来批量映射,通过计算字节地址和位地址来实现快速赋值。
### 5. 配置智能IO设备
在硬件目录中添加智能IO设备,并确保设备名称与源项目中名称一致。分配给控制器,并检查自动分配或手动设置的地址。
### 6. 编译、下载和测试
编译并下载PLC项目,使用监控表添加传输区数据,给Q区赋值,并监控发送和接收数据区是否一致。
### 7. 处理常见问题
- 确认网络连通性。
- 检查智能IO设备的名称是否与源项目一致。
- 确认硬件和软件已下载。
### 8. 控制器与智能设备的通信
建立PLC数据类型与传输区中IO地址的映射关系,使用MOVE指令进行整体传输。
### 9. 使用UDT进行映射
创建用户定义的数据类型(UDT),将输入输出信号映射到UDT中,简化程序编写。
### 10. 避免直接使用物理地址
在主程序中避免直接使用物理I/O地址,而是通过中间寄存器或全局DB进行映射。
### 11. 内部和外部IO映射
了解西门子PLC的内部和外部IO映射实现方式,通过硬件端口接入信号,并在软件中进行配置。
### 12. 执行I/O映射
在变量列中将项目变量分配至每个设备输入和输出通道,执行I/O映射。
通过以上步骤,可以实现PLC程序中I/O映射的配置,提高程序的可读性、可维护性,并简化程序的编写和调试过程。
相关问答
如何更换贝加莱PLC2005内3v纽扣电池?
PLC前面插电池的地方,那个塑料片可以拨开的,然后就是——拔出——插入——盖上——OKPLC前面插电池的地方,那个塑料片可以拨开的,然后就是——拔出——插入—...
贝加莱pc2000怎么用?
典型配置:powerpanel+i/o+6轴伺服(所有运算和机器人的多维数组算法全部在强大的powerpanel里完成),当然考虑机器人视角器,有可能会用一个mobilepanel.软件...
plc死机怎么复位?
一、plc工作不稳定频繁死机的复位解决方法1、若电源电庄高于plc的额定电压的上限值或低于plc的额定电压的下限值,应对供电电压进行检查,若有异常,调整电压。...