1 PLC 如何運作


在 INCON-M84/M86/M86R 控制器內,共有兩個系統程式同時在運作:

1. NC 系統程式

2. PLC 系統程式


這兩個系統程式雖然是獨立運作,但透過內部資料結構溝通、協調彼此之間的動作。



NC 系統程式已經由智研科技發展完成,使用者可編寫的是加工程式。NC 系統程式會依據加工程式內容予以解譯、執行、進行計算、控制路徑及反應狀況。若有需要 PLC 幫忙處理項目則透過內部資料結構通知 PLC 進行處理及取得 PLC 回覆。



PLC 程序處理的輸出訊號可分為兩大類:一種是輸出後不予理會結果,一種是輸出後一定要確認被控制系統的反應。對於輸入訊號處理也有二大類;一類是不必回覆,另一類是必須回覆。


註. 下圖中的 "元件" 可以表示為輔助裝置或 NC 溝通介面



若輸入及輸出訊號要回覆,就有一定的時序,雙方才可以依據時序進行溝通才可以確實完成動作。我們稱此溝通時序為協定(protocol)。


NC 和 PLC 間的處理最常見的是與 M 碼、S 碼及 T 碼相關的處理,這些碼的處理是透 NC 和 PLC 間的溝通介面完成的。PLC 處置完畢後會去控制被控制元件,待元件回覆(或不需回覆)後,再回覆 NC 已完成處理。



加工程式所使用的程式碼為標準 ISO G、M、S、T 碼。其中,G 碼多與機臺軸向運動有關;部份 M 碼則和加工程式流程相關;其他和加工程式流程無關的 M 碼、S 碼及 T 碼則和機臺輔助設施的動作有關。


在加工程式被解譯時,NC 會判斷出該由 PLC 處理的 M、S、T 碼,然後交付 PLC 處理,等候 PLC 回覆處理完畢;當 NC 執行 G 碼時也會參考 PLC 目前狀態再作處理(如:超馳率)。下圖是 CNC 工件程式運作的流程圖:



INCON-M84/M86/M86R 系列控制器的 PLC 必須完整處理 M、S、T 碼和機械面板、機械輔助系統。然後必須將處理後的結果透過 I/O 交換控制機械面板、機械輔助系統及將狀態放置於 NC 及 PLC 溝通介面,同時讀取機械面板、機械輔助系統還有 NC 和 PLC 間的溝通介面狀態作為下一週期處理的外部狀態參考。



以下是說明 NC 和 PLC 間的時序之流程圖:



NC 和 PLC 之間的協定,是以時序來完成的,時序圖如下所示:



瞭解系統控制程序之後,來看一下 M03(主軸啟動)及 M05(主軸停止)事件的範例:

在 INCON-M84/M86/M86R 控制器中有關 M 碼資料、M 碼備妥及 M 碼處理完成的資料結構如下:

plc.mCode.data                // M 碼資料

plc.mCode.flag                // M 碼備妥

plc.mCode.finish                        // M 碼處理完成


PLC 輸出訊號控制變頻器,再由變頻器來控制主軸馬達。變頻器輸出速度到達和零速訊號給 PLC 。



M03M05 事件是由 PLC 程序所控制。當為 plc.mCode.flag 為 1 時,PLC 會讀取 plc.mCode.data,如果為 plc.mCode.data=3,PLC 會啟動 M03 並且等待變頻器傳來速度到達訊號。當 PLC 收到速度到達開啟訊號時,PLC 會送出 plc.mCode.finish 通知 NC 處理完成。如果為 plc.mCode.data=5,PLC 會關閉 M03 並且等待變頻器傳來零速訊號。當 PLC 收到零速開啟訊號時,PLC 會送出 plc.mCode.finish 通知 NC 處理完成。


在我們用 C 語言撰寫 PLC 之前,先繪出 M03M05 流程圖,流程圖可以幫助分析事件及方便維護 PLC 。



下面以 C 語言程式所寫的 M03M05 事件:

#define speed_reach (plc.gdi[0].bit.bit00)    // 變頻器速度到達輸入訊號 I0

#define zero_speed (plc.gdi[0].bit.bit01)     // 變頻器零速輸入訊號 I1

#define m03_output (plc.gdo[0].bit.bit00)     // M03 輸出訊號 O1

if(plc.mCode.flag){

 switch(plc.mCode.data){

  case 3:

   m03_output = 1;

   if(speed_reach)

    plc.mCode.finish = 1;

   break;

  case 5:

   m03_output = 0;

   if(zero_speed)

    plc.mCode.finish = 1;

   break;

  default:

   plc.mCode.finish = 1;

   break;

 }


}


PLC 在 INCON-M84/M86/M86R 控制器是一個固定循環的迴路,其時基為 0.004 秒。在每一次循環結尾會作一次 I/O 交換。



I/O 交換部份共有兩個部份,第一部份是實際的 I/O(輸入/輸出)和第二部份是 NC 和 PLC 間的 VI/VO(虛擬輸入/虛擬輸出)溝通。PLC 完成 I/O 交換時會把輸入狀態存入暫存工作記憶內入作為下一 PLC 循環使用。PLC 循環時會運算出輸出先放於工作記憶體內,待 I/O 交換才把輸出置於實際輸出和虛擬輸出。



I/O 暫存區會因關機而消失資料,不能被保存至下次開機,但有些資料必須被保留作為參數,或是狀態之用;因此這些不允許流失的資料就要儲存起來。INCON-M84/M86/M86R 控制器的 "機械參數→設定 PLC 數據" 就是可儲存的資料備分區,另外和 NC 共享的巨集變數區資料也是可儲存的資料備分區。INCON-M84/M86/M86R 控制器可以使用這兩個區域作為 PLC 資料備份區。



由本章的描述可知,INCON-M84/M86/M86R 控制器的 PLC 和一般控制器的 PLC 無異,但由於本 PLC 使用高階語言 C 語言作為 PLC 程序開發工具,使得 INCON-M84/M86/M86R 控制器的 PLC 具有較高效率的執行速度。INCON-M84/M86/M86R 控制器的 PLC 所使用的 C 語言語法要避免使用 "do""while" "for" 迴圈不然執行時會發生無止盡迴圈的錯誤。若想更進一步了解 C 語言語法,可自行購書閱讀。