传统上,可编程逻辑控制器(PLC)梯形图程序每个梯级仅限于单个线圈。大多数编程环境允许分支结构,从而可以同时驱动多个线圈。少数编程环境(如西门子TIA Portal)允许串联连接的线圈。
这反映了梯形图基于继电器的起源,其中串联线圈是不被推荐的。在物理世界中,最好为单个继电器指定电压,并确保每个梯级的控制连续性。串联线圈需要特别注意线圈与梯级电压的匹配。例如,假设采用24伏电源轨,根据串联线圈的总数,我们可能会看到24伏、12伏、8伏和6伏线圈的混合使用。这将导致维护和物流方面的问题。问问那些曾在冰立方插座上安装错误继电器的人就知道了。
同时,我们必须认识到梯形图逻辑并非继电器逻辑。它实际上是一种类比。深入探究会发现,梯形图逻辑由对独立内存位置进行操作的函数组成。
TL;DR :某些编程环境允许在梯形图中使用串联线圈。这种编程实践应谨慎使用,程序清晰度应作为首要设计准则。
我们能在梯形图中串联连接线圈吗?
这取决于开发环境的功能。部分(非全部)制造商允许这种操作。图1展示了使用西门子TIA Portal的示例。这里我们看到描述闭合状态逻辑的状态机网络。
网络上半部分呈现状态转移操作,下半部分呈现输出逻辑。在本案例中,线圈xCoilDrive、xValid、xBusy和xFault全部采用串联连接。使用置位和复位线圈是因为该状态机包含多个类似网络,每个网络都决定线圈的值。用通俗语言来说,这避免了与输出激励(OTE)指令相关的"最后梯级生效"问题。请注意,OTE(普通线圈)始终会写入目标存储器。相比之下,置位或复位线圈仅当左侧条件评估为真时才会写入存储器。
图 1 :西门子TIA Portal梯形图示例,展示单个梯级上多个串联连接的线圈。
技术提示 :关于置位和复位线圈的使用存在强烈分歧的观点。有些程序员会建议不惜一切代价避免使用它们,因为其故障排查极为困难。更合理的做法可能是通过UDFB封装确保置位与复位线圈紧密耦合,或至少将它们放置在相邻梯级上。
绝对不允许将这对线圈拆分到不同的程序组织单元(POU)中。我曾目睹人们耗费数小时试图理解程序并定位那个隐蔽的错误。
技术提示 :匈牙利命名法能有效提醒程序员当前使用的数据类型。图1中可见布尔变量使用x前缀,无符号整数用ui,时间数据类型则采用tim前缀。
我们是否应该在梯形图中串联连接线圈?
可以,只要工具支持该技术,我们就能在梯形图中实现线圈串联。但可行并不意味着应当这样做。
串联梯形图线圈的决策最终取决于应用场景和程序使用者:
-
清晰度 :程序清晰度是最重要的考量因素之一。若串联线圈能提升程序可读性,则应予以采用。个人而言,我欣赏图1所示的风格,它使网络更紧凑,能完整呈现在单屏幕上。
-
预期性 :技术人员、安装人员和未来程序员对程序风格有特定期待。多数(非全部)人预期每个梯级仅出现单个线圈。
串联线圈的教学例外原则
在教学环境中,我不建议使用串联连接的线圈。我认为学生的注意力已被过多竞争性因素分散。程序简洁性尤为重要——特别是在故障排查时。虽然故障排查具有价值,但课堂时间宝贵,最好尽量减少问题类型。这种观点同样适用于技术提示中提到的置位与复位线圈。
技术提示 :为学生提供明确课程要求的编程风格指南。本指南是所有学生的共同关注点。它将为团队项目讨论提供框架。明确告知学生你的课程是否允许串联线圈。规定置位与复位线圈之间的最大梯级距离。还需举例说明故障情形,以及排查小故障所需的时间。
后记
程序可读性是PLC编程最重要的方面之一。考虑到设备可能长达数十年的生命周期,这点尤为重要。串联线圈的决定虽是个小设计考量,但可借此展开关于优质代码定义的深入讨论。
相关信息
请访问以下相关实用信息链接:
