在工控领域,PLC程序作为软件控制核心,地位很重要,但阅读理解程序,也是一个困难的事。
常在网上看到互联网行业的程序员吐槽祖传代码,其实PLC程序也差不多,由于PLC程序受时间,客户需求,加上每个人程序编写风格等影响。程序更多体现在杂乱无章,难以维护,这也和初学者带来很大困扰。不过PLC受限于硬件和工艺,其框架范围相对小点。
上图是我根据实际项目和大量的程序阅读,总结得到的,方便你在查看程序设备时,能快速定位,解决问题。
首先PLC程序结构主要划分八大板块。IO信息、系统变量、报警、数据处理、工艺、通讯、功能模块、上位机。下面具体展开说下。
IO信息
IO信息包括数字量输出/输入、模拟量输出/输入。
数字量输入主要指传感器,包括接近开关、检测开关等等。作为检测物体位置的信号。可通过PLC直接采集获得。
数字量输出主要指PLC线圈输出,通过控制继电器/接触器等,控制阀门、电机以及其他驱动器动作。主要会在工艺模块或者报警模块中作为输出点位。
模拟量输入主要指采集各个模拟量,包括温度、压差、风量、湿度等等。采集协议类型包括4-20mA、0-5V、热电偶或者热电阻等。然后接线方式有二线制、三线制、四线制。PLC在采集模拟量时,也可通过其他通讯协议,比如OPC、ModBus等等。在PLC程序中,对采集的数据可通过滤波处理、模拟量转换。并对值进行工艺处理、报警反馈。其中工艺处理主要指量程范围设备以及其他工艺特殊要求。报警反馈指数值采集异常。
模拟量输出指根据工艺处理后,对阀门、电机输出控制值,方便精准控制,满足工艺需求。其中主要涉及PID控制、伺服控制以及其他特定工艺控制。
程序编写小技巧:在对IO信号进行处理时,可先将IO信号转换为全局变量,然后将读取或写入全局变量,方便统一管理。
系统信息
系统信息主要是建立全局DB,比如DB块、M、V等寄存器。总结归纳分四块:脉冲/时间、上升沿/下降沿、工艺辅助变量、系统变量。其中工艺辅助变量主要指工控制中需要的辅助信息,包括产品信息、步骤信息等。系统信息主要指通讯配置信息、控制元件条件信息等。比如ModBus通讯的数据转换信息。
报警
报警主要指报警条件、报警机制、报警输出,其中报警可划分设备报警、工艺报警。设备报警主要指设备通讯、设备故障等引发的异常。比如模块通讯中断、阀门未开到位等等。工艺报警主要指对工艺有影响的报警,比如温度超过设定范围等。另外设备报警也会影响工艺报警。所以需要根据不同的情况触发报警。
报警机制主要是创建报警功能模块,方便报警信号的输入输出。
报警输出可理解为输出对设备的控制以及上位机的展示。
数据处理
对采集的数据进行数据结构转换、设备状态机、配方结构等。
功能模块
主要指对设备的处理,比如阀门、电机等的控制。
通讯
PLC和其他模块的通信配置、通讯数据转换等,通讯配置包括S7协议、ModBus协议等
工艺
取决于具体工艺
上位机
主要读写数据,作为交互界面,使用者会通过上位机查看和写入数据。