前言:尋找寫作靈感?中文期刊網用心挑選的軟件工程標準化在PLC程序設計中應用,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
摘要:為解決大型機械設備PLC程序設計的非標問題,將程序設計內容分解為若干要素并對各要素進行標準化設計,并通過要素的有機結合構成程序設計的完整過程;為了實現相關要素內容標準化設計,提出了程序代碼的自動化生成方法;通過具體工程實例的介紹和實施,展現了程序設計標準化方法的實際應用效果。
關鍵詞:標準化;程序設計;代碼自動化生成
1引言
PLC(ProgrammableLogicController,可編程邏輯控制器)廣泛應用于港口大型機械電氣控制、自升式海洋石油鉆井平臺電氣控制、大型工程起重船電氣控制等方面,積累了大量的實際經驗和數據。但是這些經驗和數據往往得不到有效的整理和總結,加之這些大型設備大多屬于小批量定制化產品,形成了產品間設計非標的現象。因此,如何從中找到共性,提出適應性廣的標準化設計方法,成為提高產品生產效率、增強產品競爭力的關鍵所在。在標準化設計方法的探索過程中,發現軟件工程標準化有著更為系統和深入的研究,由于plc本身是一類特殊的計算機,故而可以從軟件工程標準化中借鑒方法,運用于PLC程序設計中,從而達到PLC程序設計標準化的目標。
2PLC程序設計標準化方法
PLC程序設計的標準化方法先從內容或者方法層面進行流程的分解,將分解的內容稱為要素,要素的有機結合便構成了標準化的設計。流程標準化設計完成之后需要對各個要素分別進行標準化的設計。
2.1PLC程序設計的要素分解與有機結合。根據軟件程序設計的一般性方法結合PLC程序設計的特點,可以按以下5個要素對PLC程序設計進行分解:文檔的建立與管理、PLC系統的外部接口、變量定義、程序架構、軟件檢驗。程序的架構是PLC程序設計的核心,其他要素都圍繞其展開和為其服務;文檔為程序設計提供依據、指導、檢驗以及數據關系;變量是程序設計的數據流表達;外部接口為PLC系統和執行機構、人機界面以及第三方系統提供通訊;而軟件的檢驗則為程序的準確率提供保障。通過以上這4個要素,基本能夠確立程序要實現的目標,以及設計程序所需要的“原材料”,接下來便是通過適當地方式也即標準化的程序架構來實現程序的功能[1-3]。程序要素的有機結合就是從流程上來完成程序的設計,可以分為5個步驟,分別為確定所需文檔、需求表及變量表等內容,開始程序代碼設計、聯調聯試、試車(見圖1)。按照這樣的流程,PLC程序設計標準化的設計問題實際上轉化成要素的標準化設計問題。
2.2PLC程序設計的要素標準化設計。不同的程序設計所需要的文檔種類和數量是不同的。根據不同的功能、時間節點、文檔對于程序的作用,可以把所需的文檔歸成幾類,從功能角度分類可將文檔分為:功能/工況說明類文檔、變量信息類文檔、接口類文檔、程序設計輔助類文檔以及檢驗類文檔。實現接口的標準化,首先得根據具體的項目情況確定應用哪種通訊協議,確定好通訊協議之后,需要確定具體的傳輸數據,包括數據的方向性和數據的數量以及數據的實時性要求。變量的標準化則分為輸入輸出變量的標準化和中間變量的標準化。對于輸入變量,由于不同項目的不同要求,某一部件的物理地址往往會產生變化。這些地址一旦更改,將導致對程序也需要相應進行修改,修改量通常較大。鑒于這種情況,需要在物理地址和變量名稱之間引入一組中間變量,通過輸入輸出變量和中間變量的地址映射,以應對物理地址的變動和變量名稱的固定。采用現行軟件設計較多的做法,中間變量采用變量名而非物理地址作為變量的尋址方式。為了解決映射程序的實現問題,在下節中提出了程序代碼的自動化生成的方法。從程序的設計過程來看,軟件檢驗可以分為3個內容:單個功能塊的檢驗,聯調檢驗以及測試檢驗,并針對各自特點,分別制定標準化檢測方法。
2.3PLC程序的架構。PLC的程序設計更多的屬于結構化的程序設計,即整個程序由一系列功能塊構成,功能塊則是程序的最基本單元。這種結構的好處是能夠使一些大的復雜的軟件問題分解成諸多小的簡單的軟件問題[4]。然而經常使用的PLC程序模塊有很多并不能做到功能的相對獨立,有許多的互鎖、狀態等需要在程序中使用,根據它的這種特點,程序的架構可以分為3層。第一層是基本功能塊,包括I/O輸入輸出處理、外部接口處理等,這些功能塊的內部功能較為簡單,但重復度高,且不受不同設備的不同工況的影響;第二層是機構功能塊,根據基本功能塊得到的數據來實現各個機構的功能,包含的內容有輸入命令,運行允許,驅動器控制,接觸器控制以及特殊故障檢測;第三層是系統功能,是對控制系統的功能實現和處理,包括全局的運行允許,通訊檢測等[5]。以基本功能塊為基礎,機構功能塊為主要控制內容,系統功能實現了各個機構的整合以及全局的控制,實現了整個電氣控制系統的功能。
3程序代碼的自動化生成方案設計
程序設計就能夠適用這種代碼自動化生成方法的前提是:PLC程序代碼具有高度重復性,執行的是相同數據處理或者邏輯判斷,而相關變量組是離散的,沒有規律可循。以I/O變量和中間變量的地址映射程序為例,程序代碼為賦值語句,高度重復;IO變量和與其對應的中間變量構成一個數據組,它們之間的組合具有離散性,沒有規律可循。因此這樣的映射程序可以采用程序代碼的自動化生成方法。該方案的原理是借助第三方軟件生成PLC程序源代碼,可利用VISUALBASICAPPLICATION(VBA),以I/O地址映射為例,逐條將對應I/O地址賦值給中間變量,以下通過程序偽代碼對循環代碼的方案進行說明[6]。其中,i表示變量對應表中的行;j,k表示結果生成表中的行;Result.Cells表示結果生成表中的單元格。jk=3n=Application.WorksheetFunction.CountA(Range("b:b"))′統計B列中非空單元格的數量Fori=7Ton+5′從第7行開始,到第5+n行結束If第i行第F列單元格中的值不為空ThenResult.Cells(j,第B列)=源代碼語言“A”+第i行第F列單元格中的值Result.Cells(k,第B列)=源代碼語言“=”+第i行第A列單元格中的值j=j+2k=k+2EndIfNexti生成的源代碼復制到PLC程序中即可。
4工程應用案例
以自升式石油鉆井平臺的抬升控制系統為例,從故障列表、程序代碼的自動生成和程序架構的重新建立等方面進行案例分析。標準化的故障列表主要優點為:(1)故障通過統一的故障名尋址,便于識別和讀取,無需關注物理地址。(2)統一的PLC與人機界面接口表,有利于接口的標準化。(3)通過標準的分類和故障級別的識別,能夠方便地進行程序代碼的自動化生成。程序代碼的自動化生成結果見圖2。程序架構的層次見圖3,從重新設計的程序架構中可以看出該架構具有很清晰的層次和組織形式,在程序設計階段,具有很明確的操作步驟,易于修改和擴展。
5結語
立足于現代軟件工程理論,從工作流程、程序設計的具體內容出發,概括出了程序設計過程中的幾個要素,分析了這幾個要素之間的關系,介紹了如何通過這幾個要素的有機結合完成程序的設計,分別研究討論了各個要素的標準化設計方法,從而形成一套完整的標準化程序設計方法。文章在提出方法后,就標準化設計方法的實現做了詳細介紹,最后結合實際的工程應用案例做了分析。通過實際項目的操作,證明了該標準化方法以及相應的程序代碼自動化生成方法的可行性,獲得了良好的效果,為程序設計的標準化信息化提供了很好的方案,具備推廣價值。
作者:盧紫華 單位:上海振華重工(集團)股份有限公司