第五章 自動化製造系統範例的分析與操作
5.4 灌模系統可程式邏輯控制器的驅動程式設計
在控制器驅動程式的製作方面,這是要針對 3.4 節制定出的驅動程式標準介面裡所需 的四個方法(1)openPLCConnection、(2)closePLCConnection、(3)Handle 與(4)getPLCInputState 各別進行設計。
灌模系統的可程式邏輯控制器 SoftPLC 提供使用者一組操作控制器的 SoftPLC API 檔,在 API 檔案裡包含有程式語法 RemoteDataTable 可以用來建立一個與遠端控制器連線 的物件。此語法需要輸入三項參數:localInterface、remoteInterface、timeout,分別是指本 地網路位置、遠端控制器網路位置以及等待連線時間,在等待時間內尚未與遠端控制器連 線成功的話,則系統會視為是連線失敗。
在 SoftPLC 控制器裡,輸入、輸出模組的狀態資訊會各以一組二進位數值紀錄在記憶 體裡。這個二進位數值由右至左順序上的字元分別代表著輸入或輸出模組上零號節點到最 終一號節點的狀態。當字元值為 1 時,這代表該節點是導通的;當字元值為 0 時,這代表 該節點是斷路的。連線成功以後,這可以使用 SoftPLC API 檔裡面 RemoteDataTable 物件 的 handle 方法,藉由輸入 file、element、word 三項參數來取得控制器內部資料的存放位置。
當 file 參數為 0 時,這代表的是輸出模組資料的存放位置;當 file 參數為 1 時,這代表的 是輸入模組資料的存放位置。
獲得輸入、輸出模組資料的存放位置後,接著可以再使用 RemoteDataTable 物件的 getInt 將資料值從指定的存放位置內取出,並且轉譯成整數型態。或者使用 putBits 方法去更改該 資料存放位址內所儲存的值。putBits 方法在使用時,會先將所輸入的 andMask 值與該資料 存放位址裡的值進行 AND 邏輯運算,接著再將 AND 邏輯運算結果與所輸入的 orMask 值 進行 OR 邏輯運算。如此一來能夠產生出一組新的二元數值存放在該資料位置內,而控制 器會依據新的資料值去進行相對應的輸出行為。舉例來說,假如現階段 PLC 的 16 個輸出 節點狀態為 1101 1001 0111 1001,這表示節點 0、1、3、4、7、9、10、11、12、15 為導通 狀態,其餘為斷路狀態。現在若要將節點 2、6、13 更改為導通狀態而其餘節點則維持前 一個階段的狀態,這可以輸入 andMask 為 1111 1111 1111 1111,orMask 為 0010 0011 0000 0101。這時 PLC 的輸出節點狀態會更新為 1111 1011 0111 1101,這表示節點 0、1、2、3、
4、6、7、9、10、11、12、13、15 為導通狀態、其餘為斷路狀態,計算流程如圖 5.11 所示。
圖 5.11 putBits 方法運算流程
最後,欲結束與 SoftPLC 控制器之間的連線時,可以使用 RemoteDataTable 物件的 finalize 方法來中斷連線。根據 SoftPLC API 所提供的控制器操作語法設計出的驅動程式如 圖 5.12 所示。
圖 5.12 SoftPLC 驅動程式
對於 openPLCConnection 方法而言,這是建立一個 RemoteDataTable 物件與遠端控制 器進行連線,其中在執行 RemoteDataTable 物件的初始化時,會將第一個參數設為 null 這
代表本地端使用預設的網路位置,第二個參數設為使用者所傳入的控制器網路位置,第三 個參數設定為 5000 代表連線時間超過 5 秒鐘後,則視為連線失敗。此外,並使用 RemoteDataTable 物件的 Handle 方法取得輸入、輸出模組資訊的存放位置。
對於 closePLCConnection 方法而言,這是呼叫 RemoteDataTable 物件的 finalize 方法結 束與遠端控制器的連線。
對於 Handle 方法而言,這首先會判斷使用者所傳送的指令 cmd 其字首為 ON、OFF 或者是 GET。當字首為 GET 時呼叫 RemoteDataTable 物件的 getInt 方法取得輸入模組資訊。
當字首為 ON 或 OFF 時,則擷取 ON、OFF 後方的二進位數值並呼叫 RemoteDataTable 物 件的 putBits 方法修改控制器的輸出模組資訊。
對於 getPLCInputStat 方法而言,這是使用整數資料的 toBinaryString 方法回傳一個二 進位數值的字串,其代表著控制器輸出節點的狀態。