閆亞賓,白 揚(yáng),李 磊
(1.江蘇師范大學(xué)科文學(xué)院 智能制造系,徐州 221000;2.徐州重型機(jī)械有限公司,徐州 221000)
近年來,基于模型的設(shè)計(jì)(MBD)方法得到了研究人員的廣泛關(guān)注[1-3],該方法主要以MATLAB/Simulink 為平臺(tái)建立模型,經(jīng)仿真驗(yàn)證后生成代碼,最后實(shí)現(xiàn)代碼集成和應(yīng)用。其中,PLC 代碼轉(zhuǎn)換工具Simulink PLC Coder 可將Simulink 模型轉(zhuǎn)換為符合IEC 61131-3 標(biāo)準(zhǔn)的結(jié)構(gòu)化文本,生成的結(jié)構(gòu)化文本既可以是PLCopen 規(guī)范的XML 格式,也可根據(jù)集成開發(fā)環(huán)境定制文件格式。該工具使復(fù)雜算法在PLC 運(yùn)動(dòng)控制系統(tǒng)上的應(yīng)用成為可能,MBD模式在PLC 控制系統(tǒng)上的應(yīng)用得到了研究人員的重視[4-5]。然而,已有研究多關(guān)注于轉(zhuǎn)換代碼在PLC上的硬件仿真[6-7],或運(yùn)行結(jié)果與模型仿真結(jié)果的一致性[8-9],缺少充分工程應(yīng)用,參數(shù)定義和數(shù)據(jù)類型等直接關(guān)系到代碼集成有效性的因素也未得到有效分析。
本文以起重機(jī)回轉(zhuǎn)控制為實(shí)例研究MBD 模式在PLC 運(yùn)動(dòng)控制系統(tǒng)上的應(yīng)用,詳細(xì)描述代碼集成和工程應(yīng)用方法,通過實(shí)車測試驗(yàn)證了有效性和可行性。
為使描述具體化,選取起重機(jī)回轉(zhuǎn)控制作為PLC運(yùn)動(dòng)控制系統(tǒng)的典型實(shí)例。起重機(jī)回轉(zhuǎn)控制系統(tǒng)主要根據(jù)用戶指令,實(shí)現(xiàn)起重機(jī)的左右回轉(zhuǎn)及自由滑轉(zhuǎn)等動(dòng)作,使起升機(jī)構(gòu)到達(dá)指定作業(yè)區(qū)域。回轉(zhuǎn)控制系統(tǒng)輸入信號(hào)通常為先導(dǎo)按鈕、回轉(zhuǎn)制動(dòng)解除開關(guān)、操作手柄以及發(fā)動(dòng)機(jī)轉(zhuǎn)速、伸臂長度等與回轉(zhuǎn)性能有關(guān)的起重機(jī)狀態(tài)信號(hào),輸出信號(hào)為回轉(zhuǎn)制動(dòng)閥電流、回轉(zhuǎn)換向閥電流和溢流閥電流等。
為實(shí)現(xiàn)回轉(zhuǎn)控制的平穩(wěn)性和工況適應(yīng)性,建立回轉(zhuǎn)換向閥、溢流閥與手柄、發(fā)動(dòng)機(jī)轉(zhuǎn)速、伸臂長度等信號(hào)的動(dòng)態(tài)關(guān)系,原理如圖1 所示。根據(jù)原理,可建立如圖2 所示回轉(zhuǎn)控制模型。
圖1 回轉(zhuǎn)控制原理Fig.1 Slew control principle
圖2 回轉(zhuǎn)控制模型Fig.2 Slew control model
圖1“換向閥信號(hào)處理單元”內(nèi)置換向閥死區(qū)電流、最大電流及變化率等參數(shù);“溢流閥信號(hào)處理單元”有溢流閥死區(qū)電流、最大電流及變化率等參數(shù),統(tǒng)計(jì)見表1。表1 參數(shù)與工程控制效果直接相關(guān),通常需根據(jù)用戶感受和經(jīng)驗(yàn)在線調(diào)整。
表1 回轉(zhuǎn)控制模型參數(shù)Tab.1 Slew control model parameter
為實(shí)現(xiàn)在線調(diào)參,在模型中可將上述參數(shù)定義為Simulink.Parameter,以使其成為生成代碼的全局變量。關(guān)于Simulink.Parameter 的介紹詳見文獻(xiàn)[10],以“溢流閥電流變化率”為例,使用如下腳本完成設(shè)置:
SlwOverflow_Slope=Simulink.Parameter;
SlwOverflow_Slope.Value=50;
SlwOverflow_Slope.DataType='single';
SlwOverflow_Slope.CoderInfo.StorageClass='ExportedGlobal';
SlwOverflow_Slope.Description=' 溢流閥電流變化率'。
Simulink 數(shù)據(jù)類型與PLC Coder 生成代碼的數(shù)據(jù)類型對(duì)應(yīng)關(guān)系見表2。
表2 數(shù)據(jù)類型對(duì)應(yīng)關(guān)系Tab.2 Datatype correspondence
數(shù)據(jù)類型選擇與控制器硬件配置直接相關(guān)。若控制器采用32 位處理器,則控制模型中的各模塊等均不能使用double 數(shù)據(jù)類型,否則生成代碼中的lreal 數(shù)據(jù)與控制器不匹配,導(dǎo)致生成代碼無法正常運(yùn)行。
模型配置包含原子單元設(shè)置、求解器設(shè)置及路徑設(shè)置等。通過模型的“Block Parameters(Subsystem)”,選擇“Treat as atomic unit”將回轉(zhuǎn)控制模型配置為原子單元。求解器的設(shè)置可通過模型PLC Code>>Options 的“Slover”選項(xiàng)配置。求解器類型選擇固定步長解算器,算法選擇離散方法。同樣,代碼編譯和生成路徑可在PLC Code>>Options>>PLC Code Generation 中設(shè)置,其中“Target IDE”選擇代碼導(dǎo)入的編譯環(huán)境(如“3S CoDeSys 2.3”),“Target IDE Path”用于設(shè)置目標(biāo)編譯環(huán)境在用戶計(jì)算機(jī)中的安裝路徑。通過“Code Output Directory”可自定義代碼生成后輸出文件夾名稱,用于存放代碼、代碼報(bào)告等文件。
配置完成后,即可使用Simulink PLC Coder 將模型轉(zhuǎn)換為代碼功能塊(FB),供應(yīng)用程序調(diào)用。
由于Simulink PLC Coder 不支持個(gè)別Simulink模塊和函數(shù),例如Lookup Table Dynamic、Merge block,因此在代碼生成前需通過PLC Code>>Check Subsystem Compatibility 檢測模型兼容性。檢測到不兼容模塊時(shí)可根據(jù)提示使用等效模塊組合替代,例如可組合使用Prelookup 模塊和Interpolation Using Prelookup blocks 模塊代替Lookup Table Dynamic。
使 用PLC Code>>Generate,Import and Verify Code for Subsystem 可生成代碼,并導(dǎo)入CoDeSys,同時(shí)在CoDeSys 中自動(dòng)建立主程序PLC_PRG 和測試用例TestBench,如圖3 所示。其中,“SlewControlModel(FB)”、“IfActionSubsystem1(FB)”和“rt_floorf(FUN)”為回轉(zhuǎn)控制模型對(duì)應(yīng)代碼。
圖3 回轉(zhuǎn)控制模型代碼Fig.3 Slew control model code
若生成代碼的計(jì)算結(jié)果和Simulink 模型計(jì)算結(jié)果的差值在允許范圍內(nèi),則自動(dòng)測試通過,并顯示自動(dòng)測試循環(huán)次數(shù)和“PLC_PRG.tbInstance.testVerify:=TRUE”。測試循環(huán)次數(shù)可表示為
式中:Stop_time 和Fixed_step 分別表示仿真終止時(shí)間和和固定步長。
將生成的回轉(zhuǎn)控制模型代碼和全局變量導(dǎo)入到CoDeSys 應(yīng)用程序完成代碼集成。需要注意的是,對(duì)于含有內(nèi)部狀態(tài)的模型,Simulink PLC Coder生成代碼時(shí)會(huì)自動(dòng)增加輸入?yún)?shù)“ssMethodType”,其取值及相應(yīng)含義見表3。
表3 ssMethodType 定義Tab.3 Define of ssMethodType
由于回轉(zhuǎn)控制模型存在延時(shí)模塊,使得生成代碼包含內(nèi)部狀態(tài),即“SlewControlModel(FB)”的輸入?yún)?shù)包含變量“ssMethodType”。應(yīng)用程序在調(diào)用“SlewControlModel(FB)”實(shí)例時(shí),應(yīng)根據(jù)功能塊“SlewControlModel(FB)”中ssMethodType 的取值范圍對(duì)參數(shù)ssMethodType 正確賦值,并執(zhí)行初始化。
將集成后的代碼編譯、下載至某型起重機(jī)車載PLC 控制器。經(jīng)測試,回轉(zhuǎn)換向閥、溢流閥電流與操作手柄位移(千分比)的對(duì)應(yīng)關(guān)系如圖4 所示。
圖4 手柄位移與換向閥、溢流閥電流變化曲線Fig.4 Curve of handle displacement,current change of reversing valve and relief valve
由圖4 可知,系統(tǒng)根據(jù)操作輸入正確計(jì)算和輸出回轉(zhuǎn)換向閥、溢流閥控制信號(hào),起重機(jī)回轉(zhuǎn)動(dòng)作正常并達(dá)到預(yù)期效果,回轉(zhuǎn)控制模型代碼實(shí)現(xiàn)工程應(yīng)用。
本文基于MBD 方法建立系統(tǒng)控制模型,使用Simulink PLC Coder 將模型轉(zhuǎn)換為結(jié)構(gòu)化文本代碼,并以功能塊的形式集成到CoDeSys 開發(fā)環(huán)境,實(shí)現(xiàn)了復(fù)雜算法在PLC 運(yùn)動(dòng)控制系統(tǒng)中的集成和應(yīng)用。工程應(yīng)用證明了轉(zhuǎn)換代碼與集成方法是有效性且可行的,文中模型參數(shù)到CoDeSys 全局變量的定義方法和數(shù)據(jù)類型匹配方法具有參考價(jià)值。