完美的PLC程序是什么样子? 点击:942 | 回复:0



hsbzcb

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:3
  • 历史总积分:19
  • 注册:2016年8月08日
发表于:2021-01-28 10:04:50
楼主
PLC的两大系列中,欧系PLC可以以功能块模式编写,而日系则以梯形图模式编写。比较起来,我觉得以功能块模式编写程序似乎更合理也更完美。

以下我就以功能块模式来探讨。
在十年前,我还在旺点电气担任技术探讨版块的版主时,我们就探讨过题主的问题。我就以当时的讨论来展开论述吧。
我们看下图:
image.png
图1:利用PLC来执行电机星三角正反转起动的原理图
从图1中我们能看到电动机的星三角正反转电路,以及PLC的输入输出关系。
图1中绿色的部分存在编号的错误,如果按此图接线,电机无法正确运行。由此可见,题主所谓的完美的PLC程序如果脱离外部电路来讨论,其实没有太大的意义。
我们再看下图:
image.png
图2:PLC的开关量输入处理程序段
图2中,所有的开关量均配套20毫秒的延迟判误。如此一来,能够有效地消除触点抖动产生的影响。
可见,完美的PLC程序一定会对输入参量采取某种处理措施,使得输入参量明确可靠,消除输入参量对PLC程序的影响。
图2中,我们看到程序开头有注释说明。这也是完美PLC程序必备的具体措施之一。
我们再看下图:
image.png
图3:电路状态的判断程序
如果我们把各种开关量直接用于程序控制,往往程序编写得相对晦涩,有时很难判断。但如果我们把各种开关量通过与门和或门转换成电路状态,则PLC主程序的编写和分析就清晰很多。
图3就是把开关量转换为电路状态所对应的程序段。
在图3中,我们也看到了程序注释,以及程序入口处的说明。
我们看下图:
image.png
图4:正反转星三角控制主程序
4就是控制主程序了,它是用电路状态来驱动的。
图4中,我们看到了多处转移指令。例如程序开头的就地控制LOCAL转移指令,它的入口条件是选择开关拨在LOCAL手动挡,且断路器QF已经闭合,而且断路器未执行过载和短路保护QF_F=0。这三个条件缺一不可。
转移指令很容易造成死循环,所以转移指令的运用最好与状态判断结合在一起,这样处理后PLC的程序才是稳定和可靠的。
我们看下图:
image.png
图5:故障处理程序和出口继电器驱动程序
图5中,我们看到了故障处理程序段,以及出口继电器驱动程序段。这些功能设置了专门的程序段后,程序阅读清晰,功能完整,功能执行也十分明确。
同时,我们也看到了明确的注释。
我们再看下面这几张图,这些程序段是其它操控程序中摘录的,与电动机星三角正反转程序无关:

image.png
图6:SOE开关量时间标签处理程序段1
image.png
image.png
图7:SOE时间标签处理程序2
image.png
图8:RS485/MODBUS-RTU信息交换程序段
图6到图8是地铁工程中PLC用于开关量变位的历史记录SOE程序段,以及电力仪表数据采集和信息交换程序段。
这三段程序看似没有什么,但它们会占用PLC的内存。特别是RS485/MODBUS-RTU处理程序段,如果再配套通信协议解读和打包处理,则PLC逻辑控制程序部分可能会因为内存分配而重启,造成外部控制瞬间紊乱。
所以,如果PLC执行大量的数据交换和处理工作,一定不能和逻辑控制共用,而必须分开采用2只PLC去执行操作。我们在工程中,就用一只PLC执行逻辑操控工作,另一只PLC执行通信管理中心的工作,两只PLC互相交换信息实现数据共享,但操控程序却相互独立。如此一来,内存分配问题就彻底地解决了。
可见,单单只看PLC的程序编写得是否完整和清晰,不结合PLC本身的功能和性能去考量程序是不行的。

总之,所谓的完美PLC程序,在我看来是无解的。只能针对某款具体的PLC去考量,才会有定性的结果。




相关主题

官方公众号

智造工程师