结构化程序设计在挖掘机中的应用
2019-01-09石晓妹于书敏
石晓妹,丁 平,于书敏
(1.徐州徐工挖掘机械有限公司,江苏 徐州 221000;2.无锡德林防务装备股份有限公司,江苏 无锡 214191)
结构化程序设计方法是按照模块划分原则以提高程序的可读性和易维护性、可调性和可扩充性为目标的一种程序设计方法。它也是相对于线性编程结构的一种编程方式。在结构化的程序设计中,主要包含3种类型的基本程序结构形式,即顺序结构、循环结构和分支结构,仅有这3种基本结构形式组成的程序称为结构化程序。结构化程序设计常应用于较复杂的工程机械产品,控制逻辑比较复杂,对于一些简单小型的工程机械产品,也可以采用非结构化程序设计方法。
1 结构化程序结构
PLC控制器中一般运行着两种程序,即操作系统程序和用户程序。操作系统程序完成底层的系统级任务,提供了一套用户程序的调用机制,用户程序在这个平台上,完成用户自己的自动化任务。
用户程序需要用户自己开发设计,本文所说的结构化程序设计也是针对用户程序。以西门子PLC用户程序为例,用户将不同功能的程序分别编写在FC1、FB1、FB2等功能和功能块中,然后在主程序Main(OB1)中单次/多次/嵌套调用这些程序块,从而实现高效、简洁、易读性强的程序编程。结构化程结构如图1所示。结构化编程的优点是针对功能相同的不同部件,只需要编写一个程序块,在每次使用此程序时,将对应部件的相关参数传给程序块即可。如果使用Codesys编程的PLC,主程序Main中主要包括子程序(PRG)、功能(FB)、函数(FUN)等。
图1 结构化程序结构
1.1 挖掘机硬件组成
本文以24t液压挖掘机为例,介绍控制系统的组成以及程序结构。24t液压挖掘机包含一块Hirschmann的IMCT型主控制器,包含CAN2.0A和CAN2.0B两种CAN通讯接口。主控制器通过CAN2.0A网络和GPS模块以及显示仪表通讯,通过CAN2.0B网络与发动机ECM通讯,通过自带的模拟量接口采集油箱温度传感器信号、油箱液位传感器信号以及压力传感器信号和油门信号,控制系统的组成框图如图2所示。
1.2 挖掘机程序结构
24t液压挖掘机控制程序采用结构化编程,把控制系统分成单个的控制子程序,再在主程序Main中调用各个子程序,把一些相同的控制功能开发成FB,再在子程序中调用FB,只是对应的程序输入接口和输出接口不同,提高了程序的标准化。主程序Main包含的子程序较多,主要包括初始化程序、输入输出程序、GPS控制程序、发动机控制程序、功率匹配控制程序、动作控制程序、CAN通讯程序、数据存储控制程序等。系统程序结构框图如图3所示。
图2 控制系统组成框图
2 典型的模块化功能
挖掘机控制系统的关键就是如何平稳地控制好各动作机构,比如斗杆和动臂的动作控制,由于24t液压挖掘机使用电控手柄,程序中增加了手柄的斜坡控制,使操作动作既平稳,又响应及时,操作手感相比较于液压手柄要好,不至于长时间操作而疲劳。系统还增加了GPS模块,可以通过GPS远程把设备工作数据发送到公司的远程监控中心,同时也具有GPS锁车功能,重新开发了模块化的GPS控制功能块,模块化程序可以方便地移植到其他设备。
2.1 手柄控制功能块
手柄控制的核心就是使控制动作平稳,响应迅速又微动性良好,因此在手柄控制块中增加了斜坡步进值分段控制,在手柄去程动作的前半程,手柄斜坡步进值较小,动作平稳,微动性好,手柄去程动作的后半程,斜坡步进值变大,快速达到手柄的输出值,使响应及时,不至于出现“反应迟钝”的感觉。当然在手柄回程的前半程斜坡步进值要大,使手柄输出值迅速减小,回程的后半程,斜坡步进值要小,避免频繁操作引起的液压冲击。
程序功能块如图4所示。其中输入变量为:En为功能块使能,Up_Max_int为手柄上升操作输出最大值,Up_Min_int为手柄上升操作起始输出最小值。Down_Max_int为手柄下降操作输出最大值,Down_Min_int为手柄下降操作起始输出最小值。Enble_Up为上升动作允许,Enble_Down为下降动作允许。JoystickSingal为手柄输入信号,Mbound为手柄中位置,Blind为手柄死区值,Up_Ascend为手柄上升去程斜坡值,Up_Descend为手柄上升回程斜坡值。Down_Ascend为手柄下降去程斜坡值,Down_Descend为手柄下降回程斜坡值。输出变量为:JoystickOut为手柄输出值,JoystickState为手柄状态,Up_Flag为动作上升标志,Down_Flag为动作下降标志。
2.2 GPS控制功能块
图3 系统程序结构框图
GPS监控平台将挖掘机的状态分为4类:正常监控、屏蔽锁车、主动锁车、解锁。正常状态时,控制器和GPS之间数据通讯,再通过GPS把数据传到远程监控中心。GPS的控制原理就是,监控平台给GPS发送指令,GPS向控制器的特定CAN地址周期性的发送数据,控制器接收到GPS发送的数据后,分析GPS指令内容,把需要的数据再周期性的发送给GPS,GPS再把数据传给监控平台,如果控制器接受不到GPS周期性的指令信号,比如GPS天线信号异常或心跳异常,会进入被动锁车程序,防止GPS模块被人为损坏。如果监控平台主动发送锁车指令,控制器通过GPS接收到后会执行锁车动作,主动锁车分一级锁车和二级锁车。GPS控制功能块如图5所示。
图4 手柄控制功能块
图5 GPS控制功能块
3 结 语
结构化程序设计有多方面的优势,尤其对于控制逻辑复杂的产品,能够有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务。同时,本文还说明了对于通用功能可以开发模块化的功能块,简化后续程序设计,通过在24t液压挖掘机上使用,达到了很好的控制效果。