AB PLC编程软件RSLOGIX5000入门7——UDT用户自定义数据类型
在本章中,我们将介绍如何通过用户自定义数据类型和数据范围划定来规划标签数据库。这里将学到
§ 了解使用 UDT 的优势
§ 学习如何优化 UDT 规划
§ 使用数据范围划定帮助简化并加快开发工作
我们现在将重点关注 Logix 控制器中的数据规划。
打开现有控制器文件
1. 在计算机桌面上,双击 Lab Files 文件夹。
2. 双击名为 Conveyor_Program_S
3.ACD 的现有项目。
这样将在 RSLogix 5000 中启动该项目。
为传送带创建用户自定义数据类型
您已重新组织了程序规划以更好地利用 Logix,现在已准备好开始对数据规划进行重新组织。可注意到,工程师规划数据的方式仍像使用带有整数、实数和定时器数据表的传统 PLC 一样。问题是,当与设备关联的数据分布到控制器内存中的各处时便很难进行跟踪。您已再次决定充分利用 Logix,使用用户自定义数据类型。
用户自定义数据类型
用户自定义数据类型也称为 UDT 或结构,借此按逻辑方式对数据进行组织或分组,以便所有与设备关联的数据都可组合在一起。
例如,每个传送带都有 8 个整数值、3 个实数值、2 个定时器和 11 个与其关联的布尔值。在传统PLC 中,可能需要 4 个不同的数据表。然后,当您具有多条传送带时,您可能需要详细地将传送带映射到各个数据表中。这样就会变得很难管理。
通过 UDT 能够实现的是将不同的数据类型(整数、实数、定时器、布尔等)组合到一起,共同作为用户自定义数据类型。然后便可创建该 UDT 类型的数组。这可使得编程工作、代码的记录和数据的跟踪都更加轻松。
1. 在控制器项目管理器中,双击"控制器标签"(Controller Tags)。
将出现标签编辑器。可注意到,标签数据库的外观与传统 PLC 非常类似。
Logix 标签数据库
在传统 PLC 中,用物理地址标识各个数据项,例如 N7:0 或 B3:0/0。不使用地址注释或符号,就很难阅读逻辑。
在 Logix 控制器中没有固定的内存 N7:0 或 B3:0/0。Logix 内存是基于标签的系统。标签名称本身就可以标识数据。借此便能够组织数据以模拟机器。您可在实际中
使用分配的标签名称记录代码,例如 Nozzle_1_Temperature。
参考信息
创建 Logix 项目标签的指导原则
2. 在标签编辑器中单击 N7 旁边的 +。
这将展开 N7 数组,显示其中的所有元素。可注意到从 N7[0] 到 N7[7] 的数据已定义。然后是从 N7[20]到 N7[27] 和从 N7[40] 到 N7[47]。这些区域分别对应 3 个传送带,是传统的 PLC 数据表布局。
3. 也仔细查看 B3、F8 和 T4。
它们都将采用相同的格式:传送带 1 从 [0] 开始,传送带 2 从 [20] 开始,传送带 3 从 [40] 开始。这样做的目的是使得在标签数据库中查找传送带数据更加容易。这样确实有一定作用,但是您为传送带使用了4 个数据表,浪费内存。
而通过创建 UDT 可更好地实现这一点。我们现在就来创建 UDT。
4. 在控制器项目管理器中的"数据类型"(Data Types) 文件夹下,单击"用户自定义"(User-Defined) 旁边的 +。
您将注意到这里有一个名为 Conveyor 的 UDT(已为您启动 UDT 的创建)。
5. 双击 Conveyor。
这将为 Conveyor 数据类型打开 UDT 编辑器。可以看到,UDT 混合不同的数据类型。在编程时这是非常有用的工具。
用户自定义数据类型的指导原则
§ 创建用户自定义数据类型时,记住以下指导原则:
§ 如果包括表示 I/O 设备的数据,则必须使用逻辑将数据复制到 UDT 中。UDT 中不可为 I/O 指定别名。
§ 如果要在 UDT 中包括数组,应将数组限制为一维。UDT 不支持多维数组。
§ 创建 UDT 时,将类似的数据类型组合到一起。这将创建更为紧凑的 UDT。
查看 UDT 后,您会注意到,类似的数据类型并未组合到一起。BOOL 和 REAL 数据类型混在一起。UDT的当前大小是 52 个字节。将 BOOL 组合在一起可降低这一数字。
6. 要进行此操作,单击 Motor_Overload 的左侧。这样将选中整行。
7. 单击"向上移动"(Move Up) 按钮。
这会在 UDT 中将 Motor_Overload 标签向上移动。
8. 对其它 BOOL 标签重复此操作,直到它们均组合到一起。
9. 单击"应用"(Apply)。
现在请注意一下 UDT 的大小。您已节省了 12 个字节。
10. 完成对 BOOL 标签的移动后,验证 UDT 的显示如下:
11. 回到"控制器标签"(Controller Tags),展开 N7 标签并注意 N7[0] 到 N7[7] 及其描述。
12. 使用标签的描述将这些标签添加到 UDT。手动执行行此操作(并要记住参考前文中的指导原则 4)。
13. 完成后,单击"应用"(Apply) 接受所做更改并验证 UDT 应类似下图。
您现在已拥有一个在程序中定义传送带的完整 UDT。
14. 单击"确定"(OK) 关闭 UDT 编辑窗口。
15. 在"文件"(File) 菜单中选择"关闭"(Close)。软件将询问您是否要保存对文件所做的更改,选择"否"(No)。
使用传送带 UDT
现在您将使用刚创建的 UDT 传送带。您意识到 UDT 将帮助优化标签数据库,并使代码的故障处理和开发更容易。
1. 在 RSLogix 5000 的工具栏菜单中,选择"文件 > 打开"(File > Open)。
2. 双击名为 Conveyor_Program_S4.ACD 的现有项目文件。
这样将在 RSLogix 5000 中启动该项目。
3. 在控制器项目管理器中,双击"控制器标签"(Controller Tags)。
这将打开标签编辑器。
查看标签编辑器,您将发现数据库中有一个新标签 Conveyor_1。
4. 单击 Conveyor_1 旁边的 + 展开该标签。
您可注意到标签的格式与刚创建的 UDT 相同。这可通过查看"类型"(Type) 列进行确认。
5. 在控制器项目管理器中,单击各个程序的 +,展开连续任务中的 3 个传送带程序。
6. 双击例程 C2_Start_Stop。这将打开该例程,并可进行查看和编辑操作。
7. 现在显示的是梯形图例程 C2_Start_Stop。
您可注意到,在此实例中 Conveyor_2 的寻址方式仍使用的是传统 PLC 的的寻址方式。例如,在梯级 0上,定时器的地址为 T4[20]。
8. 双击例程 C1_Start_Stop。
这将打开该例程,并可进行查看和编辑操作。
9. 现在显示的是梯形图文件 C1_Start_Stop。
可注意到传送带 1 的寻址方式使用的是 UDT。如您所见,代码现在可以自文档化,而且标签名称可描述其具体的意义。您无需再像传统 PLC 中一样添加地址描述。代码中仍有一些较早样式的地址;我们将稍后处理它们。
现在我们来继续更新其它两个传送带程序以使用 UDT。首先我们需要创建两个新标签。
10. 在工具栏菜单中,选择"窗口 > 控制器标签 - Conveyor_Program(控制器)"(Window > Controller Tags – Conveyor_Program(controller))。
这会将标签编辑器窗口置于顶层。
11. 在标签编辑器窗口的左下角处,单击"编辑标签"(Edit Tags) 选项卡。
在这里我们将创建两个新标签,Conveyor_2 和 Conveyor_3。
12. 在标签编辑器中列表的底部,可注意到那里有一个开放空间,可创建一个新标签。
13. 在"名称:"(Name:)列中,输入"Conveyor_2"并在"类型"(Type) 列中输入"Conveyor"。
这样便会创建一个传送带类型的名称为 Conveyor_2 的标签。
只要记录中仍可看到铅笔图标,您便仍处于编辑模式下。
14. 要创建新标签,单击 Conveyor_2 下面的新空白行,并验证标签编辑器的显示如下:
15. 使用与上述相同的方法,为 Conveyor_3 创建标签。
16. 完成后,验证标签数据库的显示如下:
现在我们将需要更新梯形图代码以使用这些新标签。我们将从 Conveyor_2 开始。
我们将仅修改 Alarm_Status 和 Energy_Manag 例程。使用下表并参考 Conveyor_1 例程。
让我们从一个示例开始。
17. 在控制器项目管理器中,双击例程 C2_Alarm_Status。
重要说明:我们目前将忽略任何在描述中包括文字"映射"的 B3 地址。18. 在梯级零上,注意描述为 C2 电机过载的 OTE 指令。
通过查看前一页中的图,您可发现此描述与 UDT 中的第二个成员相匹配。
19. 要更改地址,双击 B3[28]。
这将打开一个下拉框,以便您可选择一个新标签。
20. 单击向下箭头(这将打开标签浏览器),滚动浏览列表直到您找到 Conveyor_2。
21. 单击 + 展开该标签,然后选择 Conveyor_2.Motor_Overload,如下所示:
22. 双击 Conveyor_2.Motor_Overload。
这会令 Conveyor_2.Motor_Overload 成为 OTE 指令的新标签。
23. 单击标签编辑器的空白处,验证梯级的显示如下(请再次注意自文档化的代码):
24. 现在,继续并完成此例程的更新。然后更新传送带 2 的 Energy_Manag 例程。
25. 为传送带 3 重复相同的步骤。
26. 可注意到标签 Conveyor_2.Motor_Overload 确实具有描述。对于版本 V12 和较早版本的 RSLogix 5000,在 UDT 编辑器中输入的描述并不会在 UDT 编辑器以外显示。
UDT 传递和附加描述选项
从 RSLogix 5000 的
版本 13开始,"工作站选项"(Workstation Options) 下提供 2 个
新设置。
如果启用传递描述,则只要不为标签提供显式描述:
§ 在标签是别名时将会显示基础标签的描述,或者
§ 在标签是成员时将会显示定义的数据类型的成员描述,或者
§ 在标签是位、数组元素或成员时将会显示基础标签的描述,或者
§ 将会显示定义的
基本数据类型的描述。
如果选中此复选框,
"附加到基础标签描述"(Append to Base Tag Descriptions) 复选框便会启用。如果要使传递描述中包含基础标签描述,则选中"附加到基础标签描述"(Append to Base Tag Descriptions) 复选框。根据传递描述规则添加任意附加描述。在提供此功能之前,用户必须手动从 UDT 编辑器中剪切描述,并在标签编辑器里手动将这些描述粘贴到标签中。这样会使编程工作多花费许多个小时的时间。
我们来了解一下此新功能的工作方式。
27. 在控制器项目管理器中的"数据类型"(Data Types) 文件夹下,单击"用户自定义"(User-Defined) 旁边的 +。
您将注意到有一个名为 Conveyor 的 UDT。
28. 双击文字 Conveyor。
这将为 Conveyor 数据类型打开 UDT 编辑器。