基于MBD 的PLC 运动控制系统设计与应用

2024-01-27 02:59闫亚宾
自动化与仪表 2024年1期
关键词:代码生成数据类型换向阀

闫亚宾,白 扬,李 磊

(1.江苏师范大学科文学院 智能制造系,徐州 221000;2.徐州重型机械有限公司,徐州 221000)

近年来,基于模型的设计(MBD)方法得到了研究人员的广泛关注[1-3],该方法主要以MATLAB/Simulink 为平台建立模型,经仿真验证后生成代码,最后实现代码集成和应用。其中,PLC 代码转换工具Simulink PLC Coder 可将Simulink 模型转换为符合IEC 61131-3 标准的结构化文本,生成的结构化文本既可以是PLCopen 规范的XML 格式,也可根据集成开发环境定制文件格式。该工具使复杂算法在PLC 运动控制系统上的应用成为可能,MBD模式在PLC 控制系统上的应用得到了研究人员的重视[4-5]。然而,已有研究多关注于转换代码在PLC上的硬件仿真[6-7],或运行结果与模型仿真结果的一致性[8-9],缺少充分工程应用,参数定义和数据类型等直接关系到代码集成有效性的因素也未得到有效分析。

本文以起重机回转控制为实例研究MBD 模式在PLC 运动控制系统上的应用,详细描述代码集成和工程应用方法,通过实车测试验证了有效性和可行性。

1 模型建立与配置

1.1 控制模型建立

为使描述具体化,选取起重机回转控制作为PLC运动控制系统的典型实例。起重机回转控制系统主要根据用户指令,实现起重机的左右回转及自由滑转等动作,使起升机构到达指定作业区域。回转控制系统输入信号通常为先导按钮、回转制动解除开关、操作手柄以及发动机转速、伸臂长度等与回转性能有关的起重机状态信号,输出信号为回转制动阀电流、回转换向阀电流和溢流阀电流等。

为实现回转控制的平稳性和工况适应性,建立回转换向阀、溢流阀与手柄、发动机转速、伸臂长度等信号的动态关系,原理如图1 所示。根据原理,可建立如图2 所示回转控制模型。

图1 回转控制原理Fig.1 Slew control principle

图2 回转控制模型Fig.2 Slew control model

1.2 参数定义

图1“换向阀信号处理单元”内置换向阀死区电流、最大电流及变化率等参数;“溢流阀信号处理单元”有溢流阀死区电流、最大电流及变化率等参数,统计见表1。表1 参数与工程控制效果直接相关,通常需根据用户感受和经验在线调整。

表1 回转控制模型参数Tab.1 Slew control model parameter

为实现在线调参,在模型中可将上述参数定义为Simulink.Parameter,以使其成为生成代码的全局变量。关于Simulink.Parameter 的介绍详见文献[10],以“溢流阀电流变化率”为例,使用如下脚本完成设置:

SlwOverflow_Slope=Simulink.Parameter;

SlwOverflow_Slope.Value=50;

SlwOverflow_Slope.DataType='single';

SlwOverflow_Slope.CoderInfo.StorageClass='ExportedGlobal';

SlwOverflow_Slope.Description=' 溢流阀电流变化率'。

1.3 数据类型

Simulink 数据类型与PLC Coder 生成代码的数据类型对应关系见表2。

表2 数据类型对应关系Tab.2 Datatype correspondence

数据类型选择与控制器硬件配置直接相关。若控制器采用32 位处理器,则控制模型中的各模块等均不能使用double 数据类型,否则生成代码中的lreal 数据与控制器不匹配,导致生成代码无法正常运行。

1.4 模型配置

模型配置包含原子单元设置、求解器设置及路径设置等。通过模型的“Block Parameters(Subsystem)”,选择“Treat as atomic unit”将回转控制模型配置为原子单元。求解器的设置可通过模型PLC Code>>Options 的“Slover”选项配置。求解器类型选择固定步长解算器,算法选择离散方法。同样,代码编译和生成路径可在PLC Code>>Options>>PLC Code Generation 中设置,其中“Target IDE”选择代码导入的编译环境(如“3S CoDeSys 2.3”),“Target IDE Path”用于设置目标编译环境在用户计算机中的安装路径。通过“Code Output Directory”可自定义代码生成后输出文件夹名称,用于存放代码、代码报告等文件。

配置完成后,即可使用Simulink PLC Coder 将模型转换为代码功能块(FB),供应用程序调用。

2 PLC 代码生成

2.1 兼容性检查

由于Simulink PLC Coder 不支持个别Simulink模块和函数,例如Lookup Table Dynamic、Merge block,因此在代码生成前需通过PLC Code>>Check Subsystem Compatibility 检测模型兼容性。检测到不兼容模块时可根据提示使用等效模块组合替代,例如可组合使用Prelookup 模块和Interpolation Using Prelookup blocks 模块代替Lookup Table Dynamic。

2.2 代码生成与测试

使 用PLC Code>>Generate,Import and Verify Code for Subsystem 可生成代码,并导入CoDeSys,同时在CoDeSys 中自动建立主程序PLC_PRG 和测试用例TestBench,如图3 所示。其中,“SlewControlModel(FB)”、“IfActionSubsystem1(FB)”和“rt_floorf(FUN)”为回转控制模型对应代码。

图3 回转控制模型代码Fig.3 Slew control model code

若生成代码的计算结果和Simulink 模型计算结果的差值在允许范围内,则自动测试通过,并显示自动测试循环次数和“PLC_PRG.tbInstance.testVerify:=TRUE”。测试循环次数可表示为

式中:Stop_time 和Fixed_step 分别表示仿真终止时间和和固定步长。

3 PLC 代码集成与应用

3.1 代码集成

将生成的回转控制模型代码和全局变量导入到CoDeSys 应用程序完成代码集成。需要注意的是,对于含有内部状态的模型,Simulink PLC Coder生成代码时会自动增加输入参数“ssMethodType”,其取值及相应含义见表3。

表3 ssMethodType 定义Tab.3 Define of ssMethodType

由于回转控制模型存在延时模块,使得生成代码包含内部状态,即“SlewControlModel(FB)”的输入参数包含变量“ssMethodType”。应用程序在调用“SlewControlModel(FB)”实例时,应根据功能块“SlewControlModel(FB)”中ssMethodType 的取值范围对参数ssMethodType 正确赋值,并执行初始化。

3.2 工程应用

将集成后的代码编译、下载至某型起重机车载PLC 控制器。经测试,回转换向阀、溢流阀电流与操作手柄位移(千分比)的对应关系如图4 所示。

图4 手柄位移与换向阀、溢流阀电流变化曲线Fig.4 Curve of handle displacement,current change of reversing valve and relief valve

由图4 可知,系统根据操作输入正确计算和输出回转换向阀、溢流阀控制信号,起重机回转动作正常并达到预期效果,回转控制模型代码实现工程应用。

4 结语

本文基于MBD 方法建立系统控制模型,使用Simulink PLC Coder 将模型转换为结构化文本代码,并以功能块的形式集成到CoDeSys 开发环境,实现了复杂算法在PLC 运动控制系统中的集成和应用。工程应用证明了转换代码与集成方法是有效性且可行的,文中模型参数到CoDeSys 全局变量的定义方法和数据类型匹配方法具有参考价值。

猜你喜欢
代码生成数据类型换向阀
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
Lustre语言可信代码生成器研究进展
基于SeisBase模型的地震勘探成果数据管理系统设计
代码生成技术在软件开发中的应用
基于PLC的手动换向阀自动化测试系统设计
基于XML的代码自动生成工具
高压快速射流式换向阀设计与研究
非对称换向阀在液压缸传动系统中的应用
电磁换向阀应用探讨