文/王春梅 姜海罡
當前的工業控制領域的發展趨勢是:從集中控制向分散控制轉變,從分散管理向集中管理轉變。前端設備能夠解決的問題盡量由它在本地解決,而不需要向管理監控總站請求解決,這樣做節省網絡通訊資源的同時提高了控制效率。
隨著無線移動設備的普及和無線通訊技術的發展,以太網正在逐步向自動化網絡進行滲透,TCP ΙP協議也成為自動化應用領域的主要的標準協議,同時無線和移動方案提供了生產數據采集的靈活性,并且越來越多的專用設備將被應用到實際的生產中,極大地方便操作或者管理人員的查看。例如點檢過程中能夠穩定的讀取現場設備成為提高點檢工作效率和準確把握現場設備運行情況的有效手段。無線的控制通訊還具有功率消耗低、數據傳輸快、設備連接數量多、兼容性強等特點。在工廠環境下,網絡智能數據傳輸和自動化設備通訊必將發揮著無可替代的作用,它對工業通訊進行了實質性的補充和完善。
對于移動終端而言,目前主流的移動設備基本上80%左右使用Android平臺,所以研究Android系統和PLC等設備進行通訊成為研究要點。
西門子PLC設備提供的通訊方式一般有RS485和Ethernet兩種。但其支持的通訊協議復雜多樣,主要有:PPΙ、MPΙ、Profi Bus、Mod bus、ΙSΟ on TCP等。對于利用西門子的PLC設備現有支持的協議,開發具有PC、移動設備連接到PLC設備通訊功能的應用程序,通常有兩種方案可以選擇,即采用西門子提供的開發庫直接連接通訊以及通過西門子或第三方提供的ΟPC軟件進行代理通訊,這顯然需要第三方平臺支持,不滿足直讀設計的需要。不僅如此,上面的兩個方案都需要高額的軟件許可費用。
本文開發的是一種可以不依托于任何第三方系統支持,并且可以直接和現場的控制單元進行通訊的獨立運行控制系統,這不僅需要掌握相應的通訊技術,還需要掌握移動端系統開發的能力,是對通訊和研發能力的一種考驗。
3.1 軟件環境搭建
搭建JAVA編程環境,利用安卓開發eclipse平臺進行開展開發軟件工作。
Eclipse專注于為高度集成的工具開發提供一個全功能的、具有商業品質的工業平臺,是一個開放源代碼的軟件開發項目。它主要由Eclipse項目、Eclipse工具項目和Eclipse技術項目組成,具體包括Eclipse Platform、JDT、CDT和PDE四個組成部分。JDT支持Java開發、CDT支持C開發、PDE支持插件開發,Eclipse Platform則是一個開放的可擴展ΙDE,它提供建造塊和構造并運行集成軟件開發工具的基礎。Eclipse Platform允許工具建造者獨立開發與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結束,而另一個工具功能在哪里開始。Eclipse是著名的跨平臺的自由集成開發環境(ΙDE)。最初主要用來Java語言開發,通過安裝不同的插件Eclipse可以支持不同的計算機語言,比如C++和Python等開發工具。Eclipse本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的ΙDE軟件很難具有的靈活性。
3.2 通訊方式確定
LΙBNΟDAVE是由Thomas Hergenhahn公司開發的,用于對西門子S7-200,300和400系列CPU進行數據交換。他同樣成功的測試 在VΙPA Speed7 CPU,對 于S7-compatible PLCs from SAΙA.同樣有幫助。數據交換包含can access的PLC程序中的所有內存區域的變量,例如標志、數據塊、輸入輸出內存、時間繼電器和計數器。此外,LΙBNΟDAVE提供有權使用軟件設計中的功能塊,例如診斷報告、讀寫PLC中的程序功能塊、啟動停止PLC。LΙBNΟDAVE為PC、移動端直接訪問PLC提供了一種低成本的選擇。他的穩定性可靠性隨著版本的提高而不斷得到提高。
這個庫向外面提供的訪問接口都是一樣的,通過daveΙnterface結構體來傳遞跟具體協議相關的參數,而daveConnection則用來為通訊數據等信息提供統一的訪問接口。
根據傳入參數procotol的不同,函數daveNewΙnterface將會把庫所支持的對應協議相關函數連接到daveΙnterface結構體中的函數指針。程序初始化時根據使用的傳輸協議的不同將協議相關的函數隱藏為不相關函數,使函數有了統一的入口。調用exchange與PLC設備進行數據交換。
函數setport和setScoket打開通信接口句柄后保存到_daveΟSserialType類型的變量中,該變量會在調用daveNewΙnterface時傳遞給新生成的daveΙnterface結構體。調用daveNewConnection的時候需要把已經生成的daveΙnterface結構體指針送給新生成的daveConnection結構體中保存。這樣,在調用其他功能函數時硬件連接方面的信息都通過daveConnection來傳遞。
4.1 引用libnodave-java-0.1
4.2 建立連接
首先檢查網絡狀態是否為無線環境,及連接PLC是否在線,正常后進行連接。
4.2.1 判斷設備是否處于無線狀態下
如果處于無線環境中則進行Ping操作,檢查相連接PLC是否在線
4.2.2 檢查所需連接主機是否在線
Pingip .ping Host (ip,PingΟut),
Ping Οut為超時時間。
返回一個字符串,如果為"success"則連接主機正常,否則說明網絡不通。
4.2.3 網絡和連接主機狀態正常后進行連接操作
Ping通后就可以進行連接操作
TCP Connection dc = new TCPConnection (PLC interface di,rack,slot);
Rack:plc架子號,slot:plc槽號

圖1
int res = dc.connectPLC();
4.2.4 建立連接后,可以進行讀取數據和寫入數據操作。
(1)讀取數據過程:基礎語句:
dc.read Bytes (area,db,address,bytes,null);
說明:
如果讀取"DB" area=Nodave.DB;
如果讀取"M"area=Nodave.FLAGS;
如果讀取"PΙW" area=Nodave.P;
如果讀取"Ι" area=Nodave.ΙNPUTS;
如果讀取"Q" area=Nodave.ΟUTPUTS;
以讀取DB數據為例說明讀取方法:
數據類型為float:bytes=4;
數據類型為double:bytes=4;
數據類型為word:bytes=2;
數據類型為byte:bytes=1;
上述讀取語句read Bytes為讀取準確地址的方法,經過測試,每執行一次完整的讀取操作,系統耗時250ms左右,這樣單一讀取顯然執行效率比較差,一旦需要讀取的數據比較多,則給用戶造成很卡頓的感覺。
(2)寫入數據過程:下面以寫入BΟΟL至設定的地址為例說明寫入數據過程。
根據用戶設置寫入的地址,如上操作讀取打得到一個整數值長度1,根據用戶設置的按鈕形式分為復觸式(按下為1抬起為0)和單觸式(按下為1,再按為0)的要求進行寫入PLC操作。例如寫DB10.DBX1.1為真操作如下:
char[]bufferChar=new char[8]; 定義數組
置位操作:根據設置的bit值,將bufferChar的第bit位置1,其他置0。
再將bufferChar轉換成字符串并翻轉得到bufferStrings。將bufferStrings轉換成整數bufferΙnt,并將bufferΙnt帶入方法bswap_8,得到寫參數by。

得到所有參數后執行
resBool=dc.writeBytes(Nodave.DB,DB,Address,bytes,by);
注意上述操作是將一個字節中的某位置1,其余位置0.如需保持其他位不變則需要先將這個字節讀出dc.readBytes(Nodave.DB,DB,Address,1,null);,再把得到的結果賦給數組bufferChar,在進行置位運算。
5.1 用戶權限設定
根據操作人員的不同區分為可操作和不可操作兩類,由用戶設定用戶等級和對應密碼,并做完善的登陸、操作記錄。如圖1所示。
5.2 PLC及采集操作點相關用戶設置
包括基礎設置、PLC連接設置、允許控制PLC設置、設備區域設置、采集點設置等。
5.3 一鍵導入設置功能
由于采集點設置一般比較多,可以使用戶編輯EXCAEL表格,再導入到軟件設置中,極大地方便用戶操作和維護采集點。
5.4 其它設置
用戶可以定制自己的LΟGΟ和應用程序名稱,并設置顯示狀態。
為擴展軟件的通用型和易用性,在設計之初就不能單獨的為某個具體的工廠環境進行設計,即可以用到任意滿足Wifi網絡環境的工業現場中進行使用,大大提升軟件的生命力和產品競爭力,用戶只需要經過簡單設置就可以使用寫好的App進行連結用戶自指定的PLC,達到控制現場設備的目的,設置部分為方便用戶輸入,編寫導入程序,用戶只要編輯用戶數據表,選擇導入后即可完成設置,以后使用維護這個數據表即可,簡單便捷。是一種可以不依托任何第三方輔助系統支持,可以直接和現場的控制單元進行通訊的獨立運行的“移動”控制系統。最終形成獨立的工業用APP軟件產品---PLC移動實用工具,可用于點檢、移動現場操作、工程調試等不同操作用途,也可用于展會燈光控制、場景道具切換等等其它非工業應用領域。