金恬
受資金、設備、場地等因素的影響,在PLC實驗仿真程序教學中常常用LED來模擬實驗結果,這樣的實驗缺乏直觀性,激發(fā)不起學生的學習熱情。因觸摸屏的直觀、生動、靈活,所以,很多教師都曾試過用組態(tài)軟件MCGS開發(fā)PLC實驗用的觸摸屏仿真程序。但至今為止,利用觸摸屏建立的PLC虛擬實驗室卻始終沒有被大規(guī)模推廣。其中一個非常重要的原因就是編寫觸摸屏程序的工作量太大,其原因主要有以下幾個方面:
一、元件庫里找不到需要的元件
組態(tài)軟件MCGS擁有龐大的元件庫,但元件庫中能用于教學仿真實驗的元件真的很少,其中能夠完全合乎需求的元件更少。比如,常見的交通燈控制實驗,因為在MCGS的元件庫中有交通燈和汽車兩大主要元件,所以這個實驗是應用MCGS軟件進行仿真最多的實驗之一。但查看了流傳的各種方案后,就會發(fā)現實驗界面非常簡陋。為什么呢?因為元件庫里的交通燈和汽車都是二維圖形,左右方向放置的交通燈和汽車看起來還好,上下方向看起來就非常別扭了。如果在仿真程序中還想添加其他東西美化一下畫面,豐富一下動畫效果,那就變得困難了,因為元件庫里面沒有所需要的元件。故而元件庫中可用元件數量嚴重制約了仿真實驗程序的編寫。
二、MCGS的軟件畫圖界面相當不友好
MCGS畫圖工具箱里可以用的東西不少,有6種基本的圖形,還有其他27種常用圖形,但問題是這些工具只適合畫一些簡單的二維圖形。仿真實驗程序要想吸引學生就必須生動形象,這就決定了仿真程序內需要大量的三維圖形和復雜的二維圖形。
常見畫圖軟件中可以通過組合多個圖形,然后擦除不需要部分的方式得到一個新的圖形,并可以對新的圖形的各個部分涂上需要的顏色。但糟糕的是MCGS軟件中沒有橡皮擦及其類似工具可操作,而且多個圖形組合形成新圖形之后,也沒有辦法填充顏色。如要畫一個半圓,常規(guī)思路就是先畫一根弧線,再在弧線兩端分別畫一根直線,就構成一個半圓,最后在半圓內填充上顏色就完工了。但是放到MCGS里來做就不行了,卡在了最后一步填充顏色上。因為MCGS中用多個圖形組成一個新的圖形候,只能用構成圖符和合成單元兩個工具,不管是新的圖符還是單元都不能填充顏色。那怎么辦呢?一般在MCGS中的處理方式是先用橢圓工具畫個圓,在圓內部填充需要的顏色;再用矩形工具畫一個矩形,去掉邊線,把填充色設置為背景色,用矩形遮住半個圓,這樣看上去就只剩半個圓了,最后再在剩下半圓的邊上疊加一條直線,這樣就完成了。
三、程序的標準化程度低
大量研究者設計程序時完全沒有考慮通用性、標準化,導致一個仿真實驗程序編完后,編寫另一個時又要從頭開始,這樣就會帶來巨大的工作量,所以不解決程序的標準化問題就會嚴重的影響PLC虛擬實驗平臺的推廣。在經過大量研究之后,筆者發(fā)現可以從以下幾個方面著手來解決問題。
1.編寫程序標準化
標準化分為兩部分,一是程序結構的標準化,盡可能統(tǒng)一程序的界面;二是常用程序段落的標準化,提高程序的重復利用率。
實驗的界面大致可以分成三個部分:實驗介紹界面、IO選擇界面、動畫演示界面。在這幾個界面里面除了動畫演示界面變化比較大,其他兩個界面變動都不大。所以統(tǒng)一程序界面之后,每次編寫新的實驗程序,很多地方就不用再畫圖了,只需要更換文字即可,這樣既可以大大節(jié)約編程時間,又可以為進一步美化程序界面提供必要條件。
MCGS的程序主要涉及兩塊,一個是IO口的鏈接腳本,還有一個是動畫效果腳本。其中IO口的鏈接腳本完全可以標準化。標準化的IO口鏈接程序,將軟件的IO口做成可選擇的方式,大大增加了軟件的靈活性。這樣的界面看似比固定IO口要復雜,但是這樣一來,不管哪一個實驗,IO口的界面都統(tǒng)一了,教師不用再費心向學生介紹每一個IO口的具體鏈接情況了。這樣就增加了學生學習PLC編程的靈活性,也節(jié)約了教師大量的上課時間。比如,實驗點亮一盞燈,要把PLC程序里面的輸出端口鏈接到觸摸屏燈的動畫上, 此時只需要做一個列表組合框,在數據關聯里填“輸出端口1”,在ID號關聯里面填“OUTlink1”,在選項設置里第一行填“請選擇”,第二行填“Y0”,第三行填“Y1”,其他行以此類推。這樣用觸摸屏在下拉菜單選擇時,“輸出端口1”這個字符型變量就對應選中端口的名字,可以用來自動生成IO分配表。而“OUTlink1”就會對應0、1、2等ID號。新建一個循環(huán)腳本,修改循環(huán)時間為30ms,腳本如下:“IF OUTlink1=1 THEN\n 燈發(fā)光=設備0_讀寫y0000 \n ENDIF \n IF OUTlink1=2 THEN\n 燈發(fā)光=設備0_讀寫y0001\n ENDIF \n IF OUTlink1=3 THEN\n 燈發(fā)光=設備0_讀寫y0002\n ENDIF\n IF OUTlink1=4 THEN\n 燈發(fā)光=設備0_讀寫y0003\n ENDIF”。該腳本可以根據選擇的ID號將對應的PLC輸出端口鏈接到MCGS的動畫中去。標準化IO口鏈接程序肯定會增加大量額外的腳本程序,但是這些腳本程序是可以重復利用的,可謂一勞永逸。
2.充分利用軟件自帶的元件庫
當在MCGS自帶的元件庫中找不到可用的元件時,如果從頭來制作一個新的元件,工作量實在太大了,所以不妨換個思路來解決這個問題。看看有沒有哪個元件和需要的元件比較相似,或者部分相似。可以通過分解單元和分解圖符兩個功能把元件庫里的元件拆開,把不需要的刪掉,再修改尺寸,添加一些缺少的部分,最后就可以通過構成圖符和合成單元構成需要的元件。如下圖(右)這一個瓶子,在元件庫里是找不到瓶子的,但是我們可以找類似的元件來修改,下圖(左)是元件庫里面的一個反應器,如果倒過來看很像一個瓶子。要將它變成一個瓶子有四個步驟。第一步:選中元件,點右鍵,選中菜單里面的排列和下一級菜單的分解單元;第二步:將分解出來的多余的部件全部刪除,比如刻度線、閥門之類;第三步:添加缺少的部件,瓶子蓋,下圖(中)是第二步完成之后的圖形,可以看到只需要添加一個矩形就構成一個瓶子了;第四步:選中所有部件,點擊右鍵,選擇“排列”,再根據需要在二級菜單選擇構成圖符或者構成單元。總而言之,這就是一個分解、修改、打包的過程。這樣做充分利用了原有的元件,大大減少了工作量。
在制作仿真程序過程中把一些應用很廣的元件和動畫部件保存下來是一個很好的習慣。長期累積下來,會使編程輕松許多。比如,如何使一個圓看上去在轉動,最簡單的就是在圓內部加一根弧線,讓這根弧線不停轉動。這個元件用處非常之廣泛,比如在用到傳送帶時,可以疊加在傳送帶軸上;在用到輪子時,可以疊加在輪子上。
一個人的力量終究是有限的。在中國工控網的自動化論壇里面常有網友尋求幫助,希望獲得一些MCGS的元件,也有很多網友伸出了慷慨之手。所以在專業(yè)論壇中與網友交換素材可以更快速地豐富自己的元件庫。
參考文獻:
[1]徐國林.基于MCGS環(huán)境下的PLC應用仿真實驗教學[J].煙臺職業(yè)學院學報,2007(2):90-92.
[2] 周美蘭,周 封,王岳宇.PLC電氣控制與組態(tài)設計[M].北京:科學出版社,2003.