閆亞賓,白 揚,李 磊
(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 運動控制系統上的應用,詳細描述代碼集成和工程應用方法,通過實車測試驗證了有效性和可行性。
為使描述具體化,選取起重機回轉控制作為PLC運動控制系統的典型實例。起重機回轉控制系統主要根據用戶指令,實現起重機的左右回轉及自由滑轉等動作,使起升機構到達指定作業區域。回轉控制系統輸入信號通常為先導按鈕、回轉制動解除開關、操作手柄以及發動機轉速、伸臂長度等與回轉性能有關的起重機狀態信號,輸出信號為回轉制動閥電流、回轉換向閥電流和溢流閥電流等。
為實現回轉控制的平穩性和工況適應性,建立回轉換向閥、溢流閥與手柄、發動機轉速、伸臂長度等信號的動態關系,原理如圖1 所示。根據原理,可建立如圖2 所示回轉控制模型。

圖1 回轉控制原理Fig.1 Slew control principle

圖2 回轉控制模型Fig.2 Slew control model
圖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=' 溢流閥電流變化率'。
Simulink 數據類型與PLC Coder 生成代碼的數據類型對應關系見表2。

表2 數據類型對應關系Tab.2 Datatype correspondence
數據類型選擇與控制器硬件配置直接相關。若控制器采用32 位處理器,則控制模型中的各模塊等均不能使用double 數據類型,否則生成代碼中的lreal 數據與控制器不匹配,導致生成代碼無法正常運行。
模型配置包含原子單元設置、求解器設置及路徑設置等。通過模型的“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),供應用程序調用。
由于Simulink PLC Coder 不支持個別Simulink模塊和函數,例如Lookup Table Dynamic、Merge block,因此在代碼生成前需通過PLC Code>>Check Subsystem Compatibility 檢測模型兼容性。檢測到不兼容模塊時可根據提示使用等效模塊組合替代,例如可組合使用Prelookup 模塊和Interpolation Using Prelookup blocks 模塊代替Lookup Table Dynamic。
使 用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 分別表示仿真終止時間和和固定步長。
將生成的回轉控制模型代碼和全局變量導入到CoDeSys 應用程序完成代碼集成。需要注意的是,對于含有內部狀態的模型,Simulink PLC Coder生成代碼時會自動增加輸入參數“ssMethodType”,其取值及相應含義見表3。

表3 ssMethodType 定義Tab.3 Define of ssMethodType
由于回轉控制模型存在延時模塊,使得生成代碼包含內部狀態,即“SlewControlModel(FB)”的輸入參數包含變量“ssMethodType”。應用程序在調用“SlewControlModel(FB)”實例時,應根據功能塊“SlewControlModel(FB)”中ssMethodType 的取值范圍對參數ssMethodType 正確賦值,并執行初始化。
將集成后的代碼編譯、下載至某型起重機車載PLC 控制器。經測試,回轉換向閥、溢流閥電流與操作手柄位移(千分比)的對應關系如圖4 所示。

圖4 手柄位移與換向閥、溢流閥電流變化曲線Fig.4 Curve of handle displacement,current change of reversing valve and relief valve
由圖4 可知,系統根據操作輸入正確計算和輸出回轉換向閥、溢流閥控制信號,起重機回轉動作正常并達到預期效果,回轉控制模型代碼實現工程應用。
本文基于MBD 方法建立系統控制模型,使用Simulink PLC Coder 將模型轉換為結構化文本代碼,并以功能塊的形式集成到CoDeSys 開發環境,實現了復雜算法在PLC 運動控制系統中的集成和應用。工程應用證明了轉換代碼與集成方法是有效性且可行的,文中模型參數到CoDeSys 全局變量的定義方法和數據類型匹配方法具有參考價值。