產(chǎn)品分類
PRODUCT CLASSIFICATION本文以某混凝土攪拌站汽車衡控制系統(tǒng)為例,分析發(fā)生通訊故障的原因,采用系統(tǒng)軟件對(duì)其使用中通訊情況進(jìn)行檢測(cè),并提出軟件優(yōu)化方法,從而保證攪拌站控制系統(tǒng)的可靠運(yùn)行。1.控制系統(tǒng)結(jié)構(gòu)某混凝土攪拌站采用工控機(jī)(工業(yè)控制計(jì)算機(jī))、PLC(可編程控制器)、稱重儀表(稱重儀表、傳感器等執(zhí)行元件)組成的控制系統(tǒng),對(duì)電動(dòng)機(jī)、電磁閥等設(shè)備進(jìn)行控制,其原理如圖1所示。該攪拌站控制系統(tǒng)配置1臺(tái)工控機(jī)、10臺(tái)配料儀表和1臺(tái)PLC。其中PLC與工控機(jī)的交互點(diǎn)通常為625個(gè)。工控機(jī)為上位機(jī),其作用是將生產(chǎn)指令下達(dá)到PLC及稱量?jī)x表。稱重儀表、PLC為下位機(jī),稱重儀表接收到工控機(jī)指令后負(fù)責(zé)配料過(guò)程。PLC接收工控機(jī)指令及稱量?jī)x表的輸入信號(hào)后控制攪拌站電控系統(tǒng)的電磁閥、電動(dòng)機(jī)動(dòng)作。在攪拌站運(yùn)行過(guò)程中,工控機(jī)采集稱量?jī)x表數(shù)據(jù)并進(jìn)行顯示和存儲(chǔ),同時(shí)采集PLC輸出的狀態(tài)信號(hào)。工控機(jī)需實(shí)時(shí)獲取攪拌站運(yùn)行狀態(tài)的數(shù)據(jù),并根據(jù)反饋數(shù)據(jù)下達(dá)生產(chǎn)指令。
2.通訊方式
攪拌站控制系統(tǒng)通訊方式通常采用MODICON公司開(kāi)發(fā)并推行的Modbus通信協(xié)議,該通訊方式已經(jīng)成為工業(yè)自動(dòng)化控制系統(tǒng)的標(biāo)準(zhǔn)通信協(xié)議。通過(guò)該協(xié)議,不同廠商生產(chǎn)的控制系統(tǒng)可以進(jìn)行工業(yè)網(wǎng)絡(luò)互聯(lián),從而實(shí)現(xiàn)各個(gè)系統(tǒng)的集散控制。本文介紹的攪拌站控制系統(tǒng)所用工控機(jī)采用ModbusRTU方式,工控機(jī)與PLC米用ModbusTCP方式。
該控制系統(tǒng)工控機(jī)(上位機(jī))軟件基于.NET平臺(tái)開(kāi)發(fā)。.NET平臺(tái)由微軟公司推出,具有跨語(yǔ)言、跨平臺(tái)、跨系統(tǒng)的能力。方便利用XML技術(shù)開(kāi)發(fā)顯示及打印數(shù)據(jù)報(bào)表,還能使用GDI+設(shè)計(jì)各種圖形編輯器,適用于開(kāi)發(fā)復(fù)雜的企業(yè)級(jí)應(yīng)用程序。工控機(jī)控制程序通過(guò)不同線程(程序執(zhí)行信號(hào)流的zui小單元)實(shí)時(shí)收集到稱重儀表和PLC(下位機(jī))數(shù)據(jù),保證各設(shè)備信號(hào)能夠?qū)崟r(shí)反饋給工控機(jī)。
攪拌站各機(jī)構(gòu)相關(guān)動(dòng)作的系列命令稱為緩存指令,緩存指令列隊(duì)儲(chǔ)存于工控機(jī)的緩存區(qū),根據(jù)需要實(shí)時(shí)下發(fā)操作指令。工控機(jī)定時(shí)器持續(xù)循環(huán)查詢指令隊(duì)列,間隔時(shí)間為20ms。若有緩存指令則下發(fā),若沒(méi)有緩存指令則下發(fā)“讀交互數(shù)據(jù)”指令,以讀取交互數(shù)據(jù)(稱重儀表與PLC之間交互信號(hào))。根據(jù)Modbus協(xié)議規(guī)定,檢查控制系統(tǒng)各指令后需回復(fù)數(shù)據(jù)是否正確。
在控制系統(tǒng)運(yùn)行過(guò)程中,會(huì)由于其他設(shè)備運(yùn)行時(shí)的電磁干擾,影響通訊質(zhì)量,造成數(shù)據(jù)丟失或沒(méi)有響應(yīng)的現(xiàn)象。控制系統(tǒng)根據(jù)攪拌站的運(yùn)行狀態(tài)和運(yùn)行反饋信息對(duì)混凝土的生產(chǎn)流程進(jìn)行控制,若在生產(chǎn)過(guò)程中發(fā)生通訊故障,將給生產(chǎn)帶來(lái)重大的經(jīng)濟(jì)損失,甚至造成生產(chǎn)事故。因此,對(duì)控制系統(tǒng)的通訊狀態(tài)進(jìn)行監(jiān)控*。
3.汽車衡故障分析與檢測(cè)方法
在攪拌站控制系統(tǒng)運(yùn)行中,即使攪拌站處于正常運(yùn)行狀態(tài),也會(huì)發(fā)生信號(hào)數(shù)據(jù)丟失或操縱沒(méi)有響應(yīng)等故障。
(1)故障分析
信號(hào)數(shù)據(jù)丟失根據(jù)攪拌站控制系統(tǒng)實(shí)際運(yùn)行情況,正常信號(hào)狀態(tài)變化持續(xù)時(shí)間皆大于200ms。通過(guò)計(jì)算規(guī)定時(shí)間內(nèi)的通訊次數(shù)得出,工控機(jī)與PLC的正常通訊頻率約為15.7次/s,即約64ms更新1次數(shù)據(jù)信息。因此正常情況下,工控機(jī)能夠及時(shí)捕捉到設(shè)備狀態(tài)變化信號(hào)。
在控制系統(tǒng)實(shí)際運(yùn)行過(guò)程中,通過(guò)軟件記錄分析,我們發(fā)現(xiàn)有些數(shù)據(jù)交互消耗時(shí)間過(guò)長(zhǎng),甚至超過(guò)800ms。例如,工控機(jī)在某些特定狀態(tài)時(shí),將某些特定狀態(tài)信號(hào)及數(shù)據(jù)保存到數(shù)據(jù)庫(kù)時(shí),若存儲(chǔ)數(shù)據(jù)較多,會(huì)造成保存或調(diào)取所消耗的時(shí)間較長(zhǎng),導(dǎo)致該次的數(shù)據(jù)交互時(shí)間過(guò)長(zhǎng)。這樣在對(duì)于狀態(tài)變化持續(xù)時(shí)間較短的信號(hào),可能會(huì)出現(xiàn)信號(hào)丟失現(xiàn)象。
系統(tǒng)沒(méi)有響應(yīng)由于.NETFramwork對(duì)線程數(shù)量的限制,若運(yùn)行的線程數(shù)量超過(guò)設(shè)置線程數(shù)時(shí),新啟動(dòng)的線程會(huì)不能執(zhí)行。該控制系統(tǒng)中,工控機(jī)使用System.Timer定時(shí)器循環(huán)讀取數(shù)據(jù),啟動(dòng)定時(shí)器時(shí)即啟動(dòng)一個(gè)新線程。執(zhí)行指令時(shí)啟動(dòng)執(zhí)行器,指令結(jié)束后停止定時(shí)器,執(zhí)行下一個(gè)指令再啟動(dòng)定時(shí)器,如圖2所示。若工控機(jī)程序運(yùn)行時(shí),在某一時(shí)刻的線程數(shù)量超過(guò)限制線程時(shí),就不能繼續(xù)執(zhí)行操作指令,造成工控機(jī)對(duì)下位機(jī)的通訊中斷。
另外,根據(jù)工控機(jī)軟件的通訊方式(見(jiàn)圖2),當(dāng)指令在緩存區(qū)中緩存指令較多時(shí),將會(huì)延時(shí)讀取交互數(shù)據(jù)指令,不能更新控制系統(tǒng)狀態(tài),這也是工控機(jī)不能及時(shí)響應(yīng)操作和反饋狀態(tài)的原因。
(2)汽車衡檢測(cè)方法
根據(jù)對(duì)通訊故障原因的分析,可應(yīng)用參數(shù)估計(jì)法檢測(cè)故障,即根據(jù)控制系統(tǒng)的參數(shù)值與其正常值之間的偏離程度,判斷控制系統(tǒng)是否處于故障狀況。確定該控制系統(tǒng)中數(shù)據(jù)通訊的檢測(cè)參數(shù)為指令執(zhí)行時(shí)間、指令執(zhí)行間隔時(shí)間、指令緩存數(shù)量。
1個(gè)指令的執(zhí)行周期包括下發(fā)指令、接收數(shù)據(jù)、判斷數(shù)據(jù)、狀態(tài)更新。指令執(zhí)行時(shí)間為1個(gè)執(zhí)行周期的總時(shí)間,該時(shí)間可用于檢測(cè)是否會(huì)發(fā)生信號(hào)丟失故障。指令執(zhí)行間隔時(shí)間用于檢測(cè)通訊是否中斷,檢測(cè)指令緩存數(shù)量可防止系統(tǒng)長(zhǎng)時(shí)間無(wú)響應(yīng)。通過(guò)實(shí)際測(cè)試,在正常生產(chǎn)情況下,完成一次數(shù)據(jù)讀寫(xiě)及界面更新,耗時(shí)為15~120ms,指令執(zhí)行間隔時(shí)間設(shè)置為20ms,指令緩存數(shù)量zui大約為50個(gè)。根據(jù)以上分析,我們確定檢測(cè)參數(shù),指令執(zhí)行時(shí)間為200ms,指令執(zhí)行間隔時(shí)間為50ms,緩存隊(duì)列數(shù)量為60個(gè),該參數(shù)即為檢測(cè)故障的限制值。
控制系統(tǒng)運(yùn)行時(shí),按照以上限制值執(zhí)行執(zhí)行檢測(cè)。實(shí)時(shí)計(jì)算每個(gè)指令的執(zhí)行時(shí)間和緩存隊(duì)列的指令數(shù)量,檢測(cè)值超出限制值時(shí)系統(tǒng)給出報(bào)警信息,情況嚴(yán)重時(shí)提示操作人員停止生產(chǎn)進(jìn)行設(shè)備檢查。每條指令執(zhí)行完成后,在指令執(zhí)行間隔時(shí)間內(nèi)限制值檢測(cè)是否已開(kāi)始執(zhí)行下一個(gè)指令,若沒(méi)有持續(xù)執(zhí)行則報(bào)警提示,停止攪拌站生產(chǎn)。
4.汽車衡軟件優(yōu)化方法
為了提高控制系統(tǒng)的可靠性,減少通訊故障和故障報(bào)警,保證控制系統(tǒng)的安全運(yùn)行。針對(duì)上述通訊故障的產(chǎn)生原因,在軟件方面要進(jìn)行優(yōu)化,如下所示。
(1)異步執(zhí)行減少耗時(shí)
對(duì)于特殊狀態(tài)信號(hào),在狀態(tài)變化時(shí)需要進(jìn)行數(shù)據(jù)庫(kù)操作,用同步方式執(zhí)行需要等待的數(shù)據(jù)庫(kù),操作完成后才能繼續(xù)執(zhí)行。因此,在程序中應(yīng)對(duì)數(shù)據(jù)庫(kù)的操作進(jìn)行異步執(zhí)行,不占用指令執(zhí)行時(shí)間,這樣會(huì)提高數(shù)據(jù)交互速度和通訊頻率。
(2)減少線程使用量
整合控制系統(tǒng)程序運(yùn)行資源,減少系統(tǒng)中對(duì)System.Timer(即啟動(dòng)新線程)的使用。通過(guò)監(jiān)控該控制系統(tǒng)得知,并列發(fā)送線程的數(shù)量zui多可達(dá)到29個(gè),這將影響到新線程的啟動(dòng),可導(dǎo)致新線程不能啟動(dòng)。通過(guò)優(yōu)化將原控制程序中部分輔助功能中的定時(shí)器,或者對(duì)時(shí)間精度要求較低的控制功能,用自定義的統(tǒng)一時(shí)間觸發(fā)器代替。這樣可降低系統(tǒng)運(yùn)行時(shí)的并列發(fā)送線程數(shù),可將zui大線程數(shù)降低至21個(gè),由此保證控制系統(tǒng)程序的可靠運(yùn)行,避免線程不能啟動(dòng)工況,解決通訊中斷問(wèn)題。
(3)分批執(zhí)行緩存區(qū)指令
根據(jù)該攪拌站控制系統(tǒng)現(xiàn)有通訊方式,當(dāng)緩存區(qū)指令數(shù)據(jù)超出限制值時(shí),進(jìn)行分批執(zhí)行。執(zhí)行數(shù)量后,執(zhí)行“讀交互數(shù)據(jù)”指令,循環(huán)執(zhí)行,使緩存區(qū)數(shù)量達(dá)到安全水平,避免系統(tǒng)出現(xiàn)無(wú)響應(yīng)現(xiàn)象。
5.系統(tǒng)優(yōu)化效果
我們根據(jù)以上故障診斷方法編制了相應(yīng)的故障診斷程序,對(duì).NET平臺(tái)的攪拌站控制系統(tǒng)的通訊方式進(jìn)行實(shí)時(shí)監(jiān)測(cè),保證混凝土生產(chǎn)過(guò)程的安全可靠。根據(jù)以上優(yōu)化方法對(duì)該控制系統(tǒng)程序進(jìn)行的進(jìn)一步優(yōu)化,提高了系統(tǒng)軟件的運(yùn)行質(zhì)量。在實(shí)際應(yīng)用中,這種方法對(duì)攪拌站.NET平臺(tái)控制系統(tǒng)通訊方案的設(shè)計(jì)和故障排查具有很好的指導(dǎo)意義.
CONTACT
辦公地址:上海市浦東新區(qū)滬南公路2419弄30-31號(hào)404室TEL:021-60456583,8822
EMAIL:3483376926@qq.com