CoDeSys 控制軟體操作說明 The Controllable Software Operating ... ·...

83
自動控制工程學系專題製作 CoDeSys 控制軟體操作說明 The Controllable Software Operating Description of CoDeSys 指導教授:黃建立 生:楊鎮宇 何佳育 朱智煒

Transcript of CoDeSys 控制軟體操作說明 The Controllable Software Operating ... ·...

Page 1: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

逢 甲 大 學

自動控制工程學系專題製作

專 題 論 文

CoDeSys 控制軟體操作說明

The Controllable Software Operating

Description of CoDeSys

指導教授黃建立

學 生楊鎮宇

何佳育

朱智煒

中 華 民 國 九 十 九 年 六 月

感謝

本論文能夠順利完成首先誠摯的感謝指導教授黃建立老師老師細心的教

導討論並指點我們正確的論文研究方向雖然遭遇相當多的挫折曾經一度想

放棄想換個簡單題目但是由於指導教授黃建立老師的引領使我們能夠一次

又一次的解決問題在過程中我們要感謝自控系的學長們給予我們一些資料

和指教讓許多小錯誤得以事先發現以及提供許多作專題上的寶貴經驗使我

們不會茫然的不知如何進行同時也要感謝同組的成員們能夠互相幫忙分工

合作共同完成此專題雖然中間有遇到許多阻礙但是靠著彼此間的相互勉勵

以及永不放棄的態度以致於我們能夠一次又一次的度過難關順利的完成

另外我們也要感謝蘇文彬老師因有上過他可程式控制的課程基礎在此

篇得以大量的運用出來使得我們做起來能得心應手他也在可程式控制方面不

吝嗇的給予我們許多的幫助以及許多的珍貴意見使得本論文能夠更加完善

而在逢甲就學的這段時間謝謝各位老師的教導讓我們在這期間學到了許多有用

的知識也令我們的學習態度更加積極謝謝各位謝謝曾經過幫助我們的每一

個人

i

中文摘要

早期的自動化控制是由電器元件所組成並無可事先規劃的的設計軟體可供

模擬之用需要靠著研發者自身累積的經驗加上所學的理論下去實行因此經常

造成設計者設計出來的樣品與所構想的有很大的不同導致設計成本上升不利

企業的研發與創新而可程式控制器的模擬軟體的出現使得這些問題得以改善

它取代傳統人為自行設計的缺失可事先在電腦上模擬欲完成之功能並加以改良

修正大大降低樣品的成功率因此許多廠商紛紛投入可程式控制器軟體的開

發導致可程式控制器的語法也越來越多造成使用者在不同廠牌間程式轉換不

便的困擾因此國際電工協會便開始收集整理各家控制語法在 1999 年制定

了 IEC61131-3 標準以統一可程式控制器的語法

而本文以德國廠商 3S 軟體公司開發的「控制器發展系統」為主體此程式

以 IEC61131-3 規範的語法為基礎是一套可跨不同目標平台的可程式控制器模

擬機制透過模組化的規劃與設計將控制動作分為邏輯運算與硬體動作兩個部

份運算部分以共同的描述格式來統一 IEC61131-3 所定義的各語法並加以實

現硬體動作則針對各硬體設計專屬之韌體函式庫使得控制邏輯可以在不同的

目標平台上使用硬體資源(此文不討論)這樣的設計使不同的控制晶片皆可執行

以 IEC61131-3 語法所設計的控制動作而設計者只需學會 IEC61131-3 語法

便可使用所支援的控制軟體進行可程式控制器設計此外由於所設計的程式碼

可以在不同的目標平台間重複使用因此透過自行建立的函式庫及利用重複使

用的特性更可縮短自動化流程的開發時程降低研發成本加快開發創新的時

ii

Abstract

The early automated control is composed of the electric appliance part

and does not have may plan beforehand the design software to be possible to

supply simulation needs to close right up against the theory which research and

development own accumulation the experience adds on studies to implement

therefore causes the sample which the designer designs with to have the very big

difference which frequently devised causes the designed cost rise

disadvantageous enterprises research and development and innovation but may

the program controllers simulation software appearance cause these questions

to be able to improve it substitutes for the flaw which the tradition artificial

independently designs may propose beforehand in the computer top die

completes the function and improves revises reduces the sample greatly the

success ratio therefore many manufacturers in abundance The investment may

the program controller software development cause to be possible the program

controllers grammar to be also getting more and more causes the user the

program to transform the inconvenient puzzle in the different trade mark

between Therefore the international electrician association then starts to collect

reorganizes various to control the grammar formulated the IEC61131-3

standard in 1999 by to unify may the program controllers grammar

But this article develops ldquothe controller development systemrdquo take the

German Manufacturer 3S Software Company as a main body this program take

the IEC61131-3 standards grammar as a foundation is a set may step the

different goal platform to be possible the program controller simulation

mechanism By the mold train plan and the design the control action will divide

into the logic operation and the hardware acts two parts the arithmetic portion

iii

unifies various grammars which by the common description form IEC61131-3

defines and realizes the hardware movement aims at various hardware design

exclusive firmware letter type storehouse causes the control logic to be possible

to use the hardware resources in the different goal platform (this article

discussion) such design causes the different control chip to be possible to carry

out the control action which designs by the IEC61131-3 grammar but the

designer only need learn the IEC61131-3 grammar then may use the control

software which supports to carry on may the program controller design In

addition because the program code which designs may be redundant the use in

the different goal platform therefore by voluntarily the establishment letter

type storehouse and the use redundant uses characteristic may reduce the

automated flow the development time interval reduces the research and

development cost speeds up the development innovation the time interval

iv

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 2: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

感謝

本論文能夠順利完成首先誠摯的感謝指導教授黃建立老師老師細心的教

導討論並指點我們正確的論文研究方向雖然遭遇相當多的挫折曾經一度想

放棄想換個簡單題目但是由於指導教授黃建立老師的引領使我們能夠一次

又一次的解決問題在過程中我們要感謝自控系的學長們給予我們一些資料

和指教讓許多小錯誤得以事先發現以及提供許多作專題上的寶貴經驗使我

們不會茫然的不知如何進行同時也要感謝同組的成員們能夠互相幫忙分工

合作共同完成此專題雖然中間有遇到許多阻礙但是靠著彼此間的相互勉勵

以及永不放棄的態度以致於我們能夠一次又一次的度過難關順利的完成

另外我們也要感謝蘇文彬老師因有上過他可程式控制的課程基礎在此

篇得以大量的運用出來使得我們做起來能得心應手他也在可程式控制方面不

吝嗇的給予我們許多的幫助以及許多的珍貴意見使得本論文能夠更加完善

而在逢甲就學的這段時間謝謝各位老師的教導讓我們在這期間學到了許多有用

的知識也令我們的學習態度更加積極謝謝各位謝謝曾經過幫助我們的每一

個人

i

中文摘要

早期的自動化控制是由電器元件所組成並無可事先規劃的的設計軟體可供

模擬之用需要靠著研發者自身累積的經驗加上所學的理論下去實行因此經常

造成設計者設計出來的樣品與所構想的有很大的不同導致設計成本上升不利

企業的研發與創新而可程式控制器的模擬軟體的出現使得這些問題得以改善

它取代傳統人為自行設計的缺失可事先在電腦上模擬欲完成之功能並加以改良

修正大大降低樣品的成功率因此許多廠商紛紛投入可程式控制器軟體的開

發導致可程式控制器的語法也越來越多造成使用者在不同廠牌間程式轉換不

便的困擾因此國際電工協會便開始收集整理各家控制語法在 1999 年制定

了 IEC61131-3 標準以統一可程式控制器的語法

而本文以德國廠商 3S 軟體公司開發的「控制器發展系統」為主體此程式

以 IEC61131-3 規範的語法為基礎是一套可跨不同目標平台的可程式控制器模

擬機制透過模組化的規劃與設計將控制動作分為邏輯運算與硬體動作兩個部

份運算部分以共同的描述格式來統一 IEC61131-3 所定義的各語法並加以實

現硬體動作則針對各硬體設計專屬之韌體函式庫使得控制邏輯可以在不同的

目標平台上使用硬體資源(此文不討論)這樣的設計使不同的控制晶片皆可執行

以 IEC61131-3 語法所設計的控制動作而設計者只需學會 IEC61131-3 語法

便可使用所支援的控制軟體進行可程式控制器設計此外由於所設計的程式碼

可以在不同的目標平台間重複使用因此透過自行建立的函式庫及利用重複使

用的特性更可縮短自動化流程的開發時程降低研發成本加快開發創新的時

ii

Abstract

The early automated control is composed of the electric appliance part

and does not have may plan beforehand the design software to be possible to

supply simulation needs to close right up against the theory which research and

development own accumulation the experience adds on studies to implement

therefore causes the sample which the designer designs with to have the very big

difference which frequently devised causes the designed cost rise

disadvantageous enterprises research and development and innovation but may

the program controllers simulation software appearance cause these questions

to be able to improve it substitutes for the flaw which the tradition artificial

independently designs may propose beforehand in the computer top die

completes the function and improves revises reduces the sample greatly the

success ratio therefore many manufacturers in abundance The investment may

the program controller software development cause to be possible the program

controllers grammar to be also getting more and more causes the user the

program to transform the inconvenient puzzle in the different trade mark

between Therefore the international electrician association then starts to collect

reorganizes various to control the grammar formulated the IEC61131-3

standard in 1999 by to unify may the program controllers grammar

But this article develops ldquothe controller development systemrdquo take the

German Manufacturer 3S Software Company as a main body this program take

the IEC61131-3 standards grammar as a foundation is a set may step the

different goal platform to be possible the program controller simulation

mechanism By the mold train plan and the design the control action will divide

into the logic operation and the hardware acts two parts the arithmetic portion

iii

unifies various grammars which by the common description form IEC61131-3

defines and realizes the hardware movement aims at various hardware design

exclusive firmware letter type storehouse causes the control logic to be possible

to use the hardware resources in the different goal platform (this article

discussion) such design causes the different control chip to be possible to carry

out the control action which designs by the IEC61131-3 grammar but the

designer only need learn the IEC61131-3 grammar then may use the control

software which supports to carry on may the program controller design In

addition because the program code which designs may be redundant the use in

the different goal platform therefore by voluntarily the establishment letter

type storehouse and the use redundant uses characteristic may reduce the

automated flow the development time interval reduces the research and

development cost speeds up the development innovation the time interval

iv

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 3: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

中文摘要

早期的自動化控制是由電器元件所組成並無可事先規劃的的設計軟體可供

模擬之用需要靠著研發者自身累積的經驗加上所學的理論下去實行因此經常

造成設計者設計出來的樣品與所構想的有很大的不同導致設計成本上升不利

企業的研發與創新而可程式控制器的模擬軟體的出現使得這些問題得以改善

它取代傳統人為自行設計的缺失可事先在電腦上模擬欲完成之功能並加以改良

修正大大降低樣品的成功率因此許多廠商紛紛投入可程式控制器軟體的開

發導致可程式控制器的語法也越來越多造成使用者在不同廠牌間程式轉換不

便的困擾因此國際電工協會便開始收集整理各家控制語法在 1999 年制定

了 IEC61131-3 標準以統一可程式控制器的語法

而本文以德國廠商 3S 軟體公司開發的「控制器發展系統」為主體此程式

以 IEC61131-3 規範的語法為基礎是一套可跨不同目標平台的可程式控制器模

擬機制透過模組化的規劃與設計將控制動作分為邏輯運算與硬體動作兩個部

份運算部分以共同的描述格式來統一 IEC61131-3 所定義的各語法並加以實

現硬體動作則針對各硬體設計專屬之韌體函式庫使得控制邏輯可以在不同的

目標平台上使用硬體資源(此文不討論)這樣的設計使不同的控制晶片皆可執行

以 IEC61131-3 語法所設計的控制動作而設計者只需學會 IEC61131-3 語法

便可使用所支援的控制軟體進行可程式控制器設計此外由於所設計的程式碼

可以在不同的目標平台間重複使用因此透過自行建立的函式庫及利用重複使

用的特性更可縮短自動化流程的開發時程降低研發成本加快開發創新的時

ii

Abstract

The early automated control is composed of the electric appliance part

and does not have may plan beforehand the design software to be possible to

supply simulation needs to close right up against the theory which research and

development own accumulation the experience adds on studies to implement

therefore causes the sample which the designer designs with to have the very big

difference which frequently devised causes the designed cost rise

disadvantageous enterprises research and development and innovation but may

the program controllers simulation software appearance cause these questions

to be able to improve it substitutes for the flaw which the tradition artificial

independently designs may propose beforehand in the computer top die

completes the function and improves revises reduces the sample greatly the

success ratio therefore many manufacturers in abundance The investment may

the program controller software development cause to be possible the program

controllers grammar to be also getting more and more causes the user the

program to transform the inconvenient puzzle in the different trade mark

between Therefore the international electrician association then starts to collect

reorganizes various to control the grammar formulated the IEC61131-3

standard in 1999 by to unify may the program controllers grammar

But this article develops ldquothe controller development systemrdquo take the

German Manufacturer 3S Software Company as a main body this program take

the IEC61131-3 standards grammar as a foundation is a set may step the

different goal platform to be possible the program controller simulation

mechanism By the mold train plan and the design the control action will divide

into the logic operation and the hardware acts two parts the arithmetic portion

iii

unifies various grammars which by the common description form IEC61131-3

defines and realizes the hardware movement aims at various hardware design

exclusive firmware letter type storehouse causes the control logic to be possible

to use the hardware resources in the different goal platform (this article

discussion) such design causes the different control chip to be possible to carry

out the control action which designs by the IEC61131-3 grammar but the

designer only need learn the IEC61131-3 grammar then may use the control

software which supports to carry on may the program controller design In

addition because the program code which designs may be redundant the use in

the different goal platform therefore by voluntarily the establishment letter

type storehouse and the use redundant uses characteristic may reduce the

automated flow the development time interval reduces the research and

development cost speeds up the development innovation the time interval

iv

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 4: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

Abstract

The early automated control is composed of the electric appliance part

and does not have may plan beforehand the design software to be possible to

supply simulation needs to close right up against the theory which research and

development own accumulation the experience adds on studies to implement

therefore causes the sample which the designer designs with to have the very big

difference which frequently devised causes the designed cost rise

disadvantageous enterprises research and development and innovation but may

the program controllers simulation software appearance cause these questions

to be able to improve it substitutes for the flaw which the tradition artificial

independently designs may propose beforehand in the computer top die

completes the function and improves revises reduces the sample greatly the

success ratio therefore many manufacturers in abundance The investment may

the program controller software development cause to be possible the program

controllers grammar to be also getting more and more causes the user the

program to transform the inconvenient puzzle in the different trade mark

between Therefore the international electrician association then starts to collect

reorganizes various to control the grammar formulated the IEC61131-3

standard in 1999 by to unify may the program controllers grammar

But this article develops ldquothe controller development systemrdquo take the

German Manufacturer 3S Software Company as a main body this program take

the IEC61131-3 standards grammar as a foundation is a set may step the

different goal platform to be possible the program controller simulation

mechanism By the mold train plan and the design the control action will divide

into the logic operation and the hardware acts two parts the arithmetic portion

iii

unifies various grammars which by the common description form IEC61131-3

defines and realizes the hardware movement aims at various hardware design

exclusive firmware letter type storehouse causes the control logic to be possible

to use the hardware resources in the different goal platform (this article

discussion) such design causes the different control chip to be possible to carry

out the control action which designs by the IEC61131-3 grammar but the

designer only need learn the IEC61131-3 grammar then may use the control

software which supports to carry on may the program controller design In

addition because the program code which designs may be redundant the use in

the different goal platform therefore by voluntarily the establishment letter

type storehouse and the use redundant uses characteristic may reduce the

automated flow the development time interval reduces the research and

development cost speeds up the development innovation the time interval

iv

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 5: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

unifies various grammars which by the common description form IEC61131-3

defines and realizes the hardware movement aims at various hardware design

exclusive firmware letter type storehouse causes the control logic to be possible

to use the hardware resources in the different goal platform (this article

discussion) such design causes the different control chip to be possible to carry

out the control action which designs by the IEC61131-3 grammar but the

designer only need learn the IEC61131-3 grammar then may use the control

software which supports to carry on may the program controller design In

addition because the program code which designs may be redundant the use in

the different goal platform therefore by voluntarily the establishment letter

type storehouse and the use redundant uses characteristic may reduce the

automated flow the development time interval reduces the research and

development cost speeds up the development innovation the time interval

iv

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 6: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

目錄

感謝helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipi

中文摘要helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipii

英文摘要(Abstract)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipiii

目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipv

圖目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipviii

表目錄helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellipxii

第 1 章緒論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip1

11CoDeSys 程式介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

111 開發廠商helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

112 功能 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip2

113 架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

114 應用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

12 PLC 的發展歷史與現況helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip3

13 PLC 的實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

131 執行核心與執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip4

132 PLC 設計語法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

14 研究動機helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip6

15 論文架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip7

第 2 章 IEC61131 國際標準helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

21 IEC61131 簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

22 IEC61131-3 的軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip8

23 IEC61131-3 程序的組成helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

v

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 7: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

2 3 1 Common E lemontshelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

2 3 2 P r o g r a mmi n g L a n g u a g e s hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip hellip 9

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較helliphelliphelliphellip10

25 IEC 61131-3 的優勢與缺陷 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

251 優勢helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip11

2 52 缺陷helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

26 支援 IEC61131-3 的開發介面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip14

第 3 章 PLC 控制系統規劃與語法介紹helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

31 可程式控制器系統架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

32 可程式控制器的語法結構與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

321 IEC61131-3 五種語言的共通描述法helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip17

322 IEC61131-3 語法的描述格式helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

323 IEC61131-3 語法的執行概念與實現helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

33 IEC61131-3 語法詳述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

331 階梯圖 LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

332 IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

333 SFC (Sequential Function Chart)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip27

334 功能方塊圖(FBD)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

335 結構化文字(ST)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

336 不同語法的混用helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip31

34 韌體函式庫helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip32

第 4 章程式操作簡介與實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

41 程式操作簡介helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

42 實際模擬helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

421 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

422 SFC 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

vi

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 8: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

423 IL 語言helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

第 5 章結論helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip61

參考文獻helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip62

附錄 1 名詞解釋helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip63

vii

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 9: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖目錄

圖 11 PLC 實現法-核心運作helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 12 PLC 實現法-執行檔helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip5

圖 21 IEC61131-3 軟體架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip9

圖 22 POU呼叫權限helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip10

圖 31 可程式控制器規劃架構圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip16

圖 32 IL運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 33 ST運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip18

圖 34 FBD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 35 LD 運算描述helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip19

圖 36 描述檔架構helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip20

圖 37 模擬器之模擬視窗LD (Ladder Diagram)helliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 38 LD 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip21

圖 39 LDLDIOUT 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 310 ANDANDI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip23

圖 311 ORORI 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 312 ANBORB 指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip24

圖 313 模擬器之模擬視窗IL (Instruction List)helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 314 IL 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip25

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)helliphelliphelliphelliphelliphellip28

圖 316 SFC 程式之使用元件helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip28

圖 317 基本元素helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip29

圖 318 選擇性分歧與並進式分歧helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip30

圖 319 中斷控制helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 33

圖 320 韌體函式庫控制程式與硬體間的呼叫關係helliphelliphelliphelliphelliphelliphelliphelliphelliphellip33

viii

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 10: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 41 剛進入畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 42 從 File 點選 New project創造一個新專案helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip34

圖 43 選取 Standard project再決定其名稱與儲存的位置helliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 44 選取你所要使用的語言點選完畢後點選 OKhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip35

圖 45 點選完出現以上圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 46 若要出現想要得知的訊息點選 Viewhelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip36

圖 47 若想打入程式碼或圖形在 View 點選 Devices 在點選 PLC_RPG(RPG)37

圖 48 此時點選紅色框框裡面的圖形即可編寫程式helliphelliphelliphelliphelliphelliphelliphelliphelliphellip37

圖 49 SFC 實際操作例子helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 410 進入 SFC 程式後剛開始畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip38

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置hellip39

圖 412 利用 SFC 程式之元件產生想要的圖形helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip39

圖 413 點選 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 414 點選狀態點 Step0並按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip40

圖 415 點選狀態點 Step1並按下 按下 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 416 更改移行條件 1 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip41

圖 417 更改移行條件 2 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 418 利用鍵盤輸入 D T 10s helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip42

圖 419 點選如圖 329 位置 helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 420 用鍵盤輸入 A helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip43

圖 421 點選如圖 331 位置helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 422 用鍵盤輸入 B helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip44

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulationhelliphelliphelliphelliphelliphellip45

圖 424 點選完之畫面右下角會出現 Simulation的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquohelliphelliphelliphelliphelliphelliphelliphellip46

ix

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 11: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 426 點選完出現此畫面點選是程式會下載一些元件helliphelliphelliphelliphelliphelliphelliphellip46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行helliphellip47

圖 428 執行成功之畫面下方會出現 RUN的字樣helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip47

圖 429 若出現錯誤在 Massages 會出現程式出錯的地方及原因helliphelliphelliphellip48

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言helliphelliphelliphelliphelliphelliphelliphelliphellip48

圖 431 LD 範例helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 432 用滑鼠左鍵點選紅色框框處helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 433 點選按鈕後出現之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip49

圖 434 點選紅色框框輸入想要的名稱 X0helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 435 輸入完後結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip50

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱helliphellip50

圖 437 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip 50

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2helliphelliphelliphellip50

圖 439 更改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1helliphelliphelliphellip51

圖 441 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0helliphelliphelliphelliphelliphelliphelliphellip51

圖 443 改完後之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network52

圖 445 重複上述步驟即可得上圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip52

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulationhelliphelliphellip52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣helliphelliphelliphelliphelliphelliphelliphelliphellip53

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值helliphelliphellip53

圖 449點選 Online 內的 Write Values 即可執行改寫後的值helliphelliphelliphelliphelliphelliphelliphellip54

圖 450 點選完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip54

圖 451 選擇 IL 語言後在 View 點選 Devices 在點選 PLC_RPG(RPG)即可輸入

x

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 12: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

指令碼helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip55

圖 453 執行完之結果helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 454 跑馬燈之時序圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip56

圖 455利用 LD 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip57

圖 456 利用 LD 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 457利用 SFC 語言之跑馬燈模擬圖helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip58

圖 458利用 SFC 語言之模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖459利用 IL語言設計的跑馬燈指令helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip59

圖460利用 IL語言模擬畫面helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip60

xi

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 13: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

xii

表目錄

表 31 LD 程式之使用元件說明21

表 32 LD 接點類型22

表 33 接點表示說明22

表 34 IL 程式之使用元件說明 26

表 35 IL 參數 26

表 36 IL 基本指令27

表 37 SFC 程式之使用元件說明28

表 38 SFC Action qualifiers30

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 14: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

第 1 章 緒論

可程式控制器(Programmable Logic Controller PLC)為工業自動化上常用的

控制器它提供了可程式化的規劃方式其中包括了邏輯運算與順序規劃並具

有計時器計數器及其他特定的運算功能PLC 的可程式化規劃方式令其有很

大的彈性空間改善了在 90 年代之前傳統控制器不僅佔用空間大且迴路流

程不易修改與維護的缺點可程式控制器的出現使得這些問題得以解決它也逐

漸取代傳統的繼電器元件控制方式使其可以配合現今不斷汰舊換新的各式產品

與製程迅速的完成製程數據和控制流程的修改

本研究的目的是要熟悉並且靈活運用控制軟體 CoDeSys由於此程式所採用

IEC61131-3 規範的語法以實現在各式控制控制硬體上的跨平台機制因此

適用於所有類型的控制而使用者僅需學會以 IEC61131-3 語法設計控制動作

即可涵蓋不同目標平台的可程式控制器實現機制在選用上更可依需求選用適當

的控制平台來進行控制為達成上述目的本研究針對兩個主題進行研究第一

是整合 IEC61131 所規範的各不同語法IEC61131 中所規範的語法有五種而

各語法皆有各自的運算機制與架構因此需要一個通用的實現機制來整合各語法

的實現架構第二是設計出可在不同硬體平台上實現 SoftPLC 控制運算的跨平台

機制使得者用者以 IEC61131 語法設計的控制動作可以正確的在不同的控制平

台上實現控制運算與動作

對於語法的整合本研究簡單的設計概念來描述並加以實現在跨平台整合

上則利用程式本身內含之函式庫來達成目標規範中透過模組化的規劃與設計

將控制動作分為邏輯運算與硬體動作兩個部份邏輯部分以共同的描述格式來統

一 IEC 61131-3 所定義的各語法並加以實現硬體動作則針對各硬體設計專屬之

韌體函式庫使得控制邏輯可以在各目標平台上使用硬體資源這樣的設計使不

同的控制晶片皆可執行以 IEC 61131-3 語法所設計的控制動作而設計人員只需

學會 IEC 61131-3 語法便可使用所支援的控制晶片進行可程式控制器設計除

1

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 15: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

此之外由於所設計的程式碼可以在不同的目標平台間重複使用因此透過自

行建立的函式庫及利用重複使用的特性更可縮短自動化流程的開發時程

11 CoDeSys 程式介紹

111 開發廠商

3S 軟體公司是一家在自動化軟體和嵌入式系統開發平台領域的德國廠

商總部位於德國多年來始終致力於以自動化軟體發展平台 CoDeSys向客戶

提供基於 IEC 61131-3 國際標準的高品質軟體發展工具和優秀的整體解決方案

如今全球有近 300 家的知名廠商是 3S 公司的合作夥伴其中不乏 ABB

Schneider Electric 等知名大廠

112 功能

1由於採用 IEC61131-3 標準適用於大多數類型的 PLC 控制系統

2校正編程都十分簡便可提供模組資料庫配置軟件和驅動器通過現場

即時連線介面控制電驅動器

3通過設計工具對 FED 顯示器和控制單元進行快速參數配置和編程

4數據介面適用於 VIPWin

5用於簡易編程之乙太網通訊包括模塊資料庫

6用於電驅動器的模塊數據庫

7一種編程工具適用於大多數的 PLC 控制器包括從小型 FEC 到模組化

CPX-FEC

和 FEC 模組化系統

8標準編程語言-降低培訓成本

9支援 CAN open ProfibusEtherCAT SERCOSDevice NetProfiNet

ModbusEthernet 等多種協定

10可將不同自動化廠商提供的產品和系統進行組合配置後統一編程從而真正

2

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 16: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

實現控制系統的開放性和可重構性

113 架構

CoDeSys 的架構基本上可以分為三層應用開發層(Development Layer)

通信層(Communication Layer)和設備層(Device Layer)

(1)應用發展層

發展層包含臨時規劃系統 CoDeSys 完成連線和離線功能 編譯器以及其他元

件的配置視覺化等等

(2)通信層

發展和設備層之間的通信基於 CoDeSys 閘道伺服器的電腦與一個 OPC 伺服

器的影響

(3)設備層

設備可在 61131-3 的開發工具 CoDeSys其在設備層上的副本與 ICE 操作之前

運行時系統 CoDeSys SP已付諸實行 在此功能還可以進行擴展如 CoDeSys

目標或 Web 視覺化的可選 CoDeSys 元件

114 應用

CoDesys 能應用的層面非常廣比如像能源交通市政冶金化工製藥

食品紡織包裝印刷橡塑金屬加工和汽車製造等行業之中皆可以看到

它的應用

12 PLC 的發展歷史與現況

在PLC 的發展過程中諸多廠商投入可程式控制器的開發各家廠商自訂

PLC 語法使的語法使得語法種類相當繁雜造成使用者在不同廠牌間程式轉

換不便的困擾因此國際電工協會(National Electrical Manufacturers Association)

便整合各家的PLC 語法與硬體架構在1993 年制定了IEC1131 的標準而第三

部分IEC1131-3 為語法的相關規範其中定義了五種PLC 程式語法包含了

3

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 17: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

階梯圖(Ladder Diagram LD)功能方塊圖(Function Block Diagram

FBD)順序功能圖(Sequential Function Chart SFC)等三種圖形化語言

以及指令表(Instruction List IL)與結構化文字(Structured Text ST)等兩種文字化

語言[1][2]1999 年將修改後的IEC1131 更名為IEC61131 標準

並成立PLCopen 推廣組織進行IEC61131標準的推廣不過現今國內最常使用的

三菱(Mitsubishi)歐姆龍(OMRON) 等日系品牌還是以階梯圖為主要的設計法

主要是因為圖形化語言的可讀性高學習也比較容易階梯圖對於無程式設計基

礎的人而言只要具備邏輯觀念並輔以特定的設計法則即可進行流程的

規劃與程式的設計

13 PLC 的實現

除了PLC 的使用之外設計一部好用的PLC 更是控制器設計技術發展的指

標目前國內PLC 廠商有台安台達電士林豐煒永宏等至於學術方面

的探討PLC 語言的實現方法有傳統的指令動作式[3][4][5]節點分析法[6]Petri

Net 塑模法[7]與UML 塑模法[8]等而實現在硬體上的方法可簡單區分為兩種類

型一種是將設計完成的階梯圖或階梯程式透過轉換機制變為一個中介檔再轉

換成可編譯的程式描述格式(如C 語言)經編譯成執行檔後直接下載到目標平

台則此目標平台即為一可執行所規劃動作的專用PLC另一種PLC 的實現方

式是先完成PLC 的核心設計並將核心預先置於目標平台內PLC 使用者透過

PLC 程式發展環境完成PLC 的程式設計後將設計完成的階梯圖或階梯程式下

載到目標平台再由內部的PLC 核心解讀並執行所規劃的動作

131 執行核心與執行檔

如上所述利用PLC 實現流程控制的方法可分為兩種一種是將設計完的程式

分解成單一的簡單指令且目標平台必須先存在可解讀並執行這些指令的執行核

心當使用者將控制動作規劃完成之後將其轉成執行核心可讀取執行的指令

4

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 18: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

碼再載入目標平台中執行圖11為使用核心運作式PLC 進行控制規劃的流程

與執行方式

圖 11 PLC 實現法-核心運作

另一種方法通常架構在PC-Based 的目標平台上將PLC 程式碼的控制動作轉譯

成執行檔再載入目標平台即可在該平台上直接使用執行檔來進行所規劃的控制

程序所有控制動作與IO 讀寫都由執行檔完成圖12為使用核心運作式PLC 進

行控制規劃的流程與執行方式

圖 12 PLC 實現法-執行檔

132 PLC 設計語法

PLC 的設計語法依廠商所提供的PLC 而各有差異但大致上可分為階梯圖指令

式邏輯運算式函數方塊法等幾種設計法指令式是PLC 最早應用的設計法

適用於內部IO 與記憶體已規劃好的PLC是目前國內最普遍的設計法其他兩

5

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 19: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

種則適合在可運作執行檔(exe)上的PLC相較於指令式設計法可更有彈性的

靈活運用

(1) 指令式

指令式PLC 執行類似於組合語言的程式碼一行程式只執行一種動作此

種PLC將執行核心動作設計在PLC 內由執行核心一行一行的去執行使用者所

輸入的運算控制動作這種指令式PLC 的好處是指令簡單文字式修改容易

撰寫面板簡潔但簡單的指令相對的會使程式的可讀性降低且程式邏輯修改不

易一般會輔以階梯圖設計法來做設計使用者只需學習基本的邏輯觀念再透

過階梯圖的設計法則即可設計出所需要的控制動作

(2) 邏輯運算式

邏輯運算式即是將控制程式轉為加減乘除等四則運算與邏輯運算這些運算

對C 語言等程式是最直接的運算方法只需設定好IO 變數的實體對應即可編

譯出控制程式進行控制因此可說是比較靈活的設計法此設計法適用於對程式

設計有基礎的設計人員使用對無程式設計基礎的使用而言比較不容易熟悉

(3) 函數方塊法

函數方塊是一種圖形化語言它將邏輯數值等運算函式以圖形方塊表示

函式之間的參數引用則以訊號線來連結使用者撰寫時是以拖曳函數方塊與訊號

線的方式完成設計在執行時依序執行函數動作並更新訊號線狀態以實現控

制運算函數方塊在設計上雖然沒有邏輯運算式的設計法來的靈活但對於無程

式基礎的人來說更容易學習接受在程式可讀性上也比階梯圖更佳

14 研究動機

本文的研究目標主要著重於控制程式在不同目標平台上的兼容性在日常生

活中許多東西的運作都有其原理使之動作但我們卻鮮少發現它是如何運作

只是盲目的使用著舉例來說像是我們時常搭乘的電梯就是其中最典型的例子之

6

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 20: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

一在做專題之前我們並不知道其工作原理更不曉得裡面竟然包含了龐大的

PLC(可程式邏輯控制單元)架構在經過教授詳細的原理解說後產生了興趣想

要做這方面的專題隨後在多次與指導教授討論的過程中決定做PLC的控制軟體

CoDeSys

在台灣不算是特別常用的模擬軟體此程式是一套跨平台的機制它採用

IEC 61131其中IEC 61131 是一個國際標準它規範了 PLC 相關之軟硬體的

標準目的是可以讓PLC的使用者在不改軟體設計的狀況下可以輕易更換PLC硬

體讓設計者在轉換目標平台時可以重複使用以前的控制程式碼那將可以大

幅縮短在目標平台轉換時所花費的時間另一方面由於所使用的控制程式碼可

以在不同的目標平台間重複使用因此可以將常用的程式碼撰寫成常用函式資料

庫對於PLC 的使用者而言建立屬於自己的函式資料庫而重複使用的特性

更可縮短程式的開發時程因此若是能夠熟悉其架構跟操作的話對之後的升學

跟就業也有不少的助益

15 論文架構

本文第1章緒論介紹CoDeSys PLC控制軟體並說明說明PLC 的發展實現

與規劃法第2章介紹 IEC61131 國際標準中的系統架構與其優缺點以及程式

CoDeSys所支援的介面而第3章提出可程式控制器的架構與實現法其中提出

描述檔為主要實現概念並說明 IEC61131 國際標準中之語法規範在第4章中

說明程式功能與架構並對操作介面與模擬之步驟做出說明最後設計一實例(跑

馬燈)進行模擬展示其實驗結果第5章討論目前所完成的部分與功能再提出

可加強擴充的部份在加強介面的完整性之後延續本論文的發展與應用性

7

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 21: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

第 2 章 IEC61131 國際標準

21 IEC61131 簡介

IEC 61131-3是由國際電工委員會(IEC)於1993年12月所制定IEC 61131標

準的第3部分用於規範可程式邏輯控制器(PLC)DCSIPCCNC和SCADA

的編程系統的標準應用IEC 61131-3標準已經成為工業控制領域的趨勢 在PLC

方面編輯軟體只需符合IEC 61131-3國際標準規範便可藉由符合各項標準的

語言架構進而能建立任何人皆可瞭解的程式其中定義了PLC 系統的硬體

與程式撰寫規範也包含了大家熟知的傳統程式語法與新的程式語法IEC61131

由八個部分組成

IEC 61131 標準區分成以下八個部分

第 1 部分一般資訊(1992 年頒布)

第 2 部分設備需求與測試(1992 年頒布)

第 3 部分程式語言(1993 年頒布)

第 4 部分使用者指引(1995 年頒布)

第 5 部分訊息服務規格(2000 年頒布)

第 6 部分透過 fieldbus 通訊(尚等待 fieldbus 標準的完成)

第 7 部分模糊控制程式編輯(2000 年頒布)

第 8 部分程式語言應用與導入指引(2001 年頒布)

制定了可程式控制器的硬體安裝測試語法通訊等標準其中第三部分

(IEC61131-3) 即是關於程式語法的規範

22 IEC61131-3 的軟體架構

IEC61131 將軟體區分為ConfigurationResourceTask 與Run-time

program 四個部分各自管理不同的相關配置其中Configuration 代表

著一個PLC 系統一個PLC 系統可能擁有一個以上的CPU 數量

8

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 22: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

Resource 表示一個PLC 系統內的一個CPU可能支援多執行序Task

為CPU 底下所執行的程序可能呼叫執行一個Program 或是Function

BlockRun-time program 則是一個執行程序可包含Program 或是

Function Block其執行方式與 Task 的規劃相關聯

圖 21 IEC61131-3 軟體架構

23 IEC61131-3 程序的組成

POU(Program Organisation Unit)是IEC61131-3 程式規劃的最小程序單位每個

POU 可以再分兩個部分

231 Common Elemonts

此部分主要是定義程式內所使用到的變數這些變數可以 對應到實體也可以

是內部變數

232 Programming Languages

此部分主要是程式內容也就是上述的 5 種程式語法的任一種 在程式內可以

叫用其他的 POU 又可細分為ProgramFunction Block 與Function 三種各

有不同的特徵與呼叫權限

(1) Program(PROG)

Program 是規劃一個任務的主核心可用於撰寫程序的主程式內容包括了IO 的

使用配置全域變數與通用變數的定義Program 在三種POU中擁有最大的呼叫

9

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 23: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

權限它可以呼叫Function Block 與Function 在程式中使用

(2) Function Block(FB)

Function Block 是一種函數可被PROG 與同等級的FB 呼叫使用與一般函數

不同的是FB 擁有專屬於自己的記憶體空間以存放變數值而且可以有多個出

FB 可以呼叫其他有相同權限的FB也可以呼叫FUN 使用但是不能被FUN 呼

叫使用

(3) Function(FUN)

Function 在所有POU 中是權限最小也是最受限制的與FB 相比它只能有

一個函數回傳值且沒有使用記憶體空間的權限Function 只能單純的使某些值

經過設計好的運算再將結果回傳在使用上Function 只能呼叫Function而

不能呼叫FB最大的原因是Function 並沒有記憶體空間

圖22 POU呼叫權限

24 IEC 61131-3 軟體模型與傳統的 PLC 模型之比較

1IEC 61131-3 的軟體模型是一種分層結構每一層均隱含其下層的許

多特徵

10

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 24: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

2它奠定了將一個複雜的程式分解為若干個可以進行管理和控制的小

單元而這些被分解的小單元之間存在著清晰而規範的介面

3可滿足由多個處理器構成的 PLC 系統的軟體設計

4可方便地處理事件驅動的程式執行(傳統的 PLC 的軟體模型僅為按

時間週期執行的程式結構)

5對以工業通信網路為基礎的分散控制系統(例如由現場匯流排將分

佈於不同硬體內的功能塊構成一個具體的控制任務)尤其是軟體邏

輯PC 控制這些正在發展中的新興控制技術該軟體模型均可覆蓋和

適用

25 IEC 61131-3 的優勢與缺陷

251 優勢

1採用現代軟體模組化原則

程式設計語言支援模組化將常用的程式功能劃分為若干單元並

加以封裝構成程式設計的基礎

模組化時只設置必要的盡可能少的輸入和輸出參數儘量減少交

互作用儘量減少內部資料交換

模組化介面之間的交互作用均採用顯性定義

將資訊隱藏於模組內對使用者來講只需瞭解該模組的外部特性(即

功能輸入輸出參數)而無需瞭解模組內演算法的具體實現方法

2IEC 61131-3 支援自頂而下(top-down)和自底而上(bottom-up)

程式開發方法用戶可先進行總體設計將控制應用劃分若干個部

分定義應用變數然後編各個部分的程式 這就是自頂而下用

戶也可以先從底部開始程式設計例如先導出函數和功能塊再進

行按照控制要求編制程式 這是自底而上無論選擇何種開方法

11

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 25: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

IEC 61131-3 所創建的開發環境均會在整個程式設計過程中給予強

有力的支持

3IEC 61131-3 所規範的程式設計系統獨立于任一個具體的目標系

統它可以最大限度地在不同的 PLC 目標系統中運行這樣就創造

了一種具有良好開放性的氛圍奠定了 PLC 程式設計開放性的基礎

4將現代軟體概念濃縮並加以運用例如

資料使用 DATA_TYPE 說明機制

函數使用 FUNTION 說明機制

資料和函數的組合使用 FUNTION_BLOCK 說明機制

在 IEC 61131-3 中功能塊並不只是 FBD 語言的程式設計機制它還

是物件導向元件的結構基礎一旦完成了某個功能塊的程式設計並

通過調試和試用證明了它確能正確執行所規定的功能那麼就不允許

用戶再將它打開改變其演算法即使是一個功能塊因為其執行效率

有必要再提高或者是在一定的條件下其功能執行的正確性存在問

題需要重新程式設計我們只要保持該功能塊的外部介面(輸入輸

出定義)不變仍可照常使用同時許多原創設備製造廠(OEM)

它們的專有控制技術壓縮在用戶自訂的功能塊中既可以保護智慧財

產權又可以反復使用不必一再地為同一個目的而編寫和偵錯工具

5標準要求嚴格的資料類型定義這意味著IEC 61131-3 程式設計語

言為減少程式開發人員對一個變數做出錯誤的資料類型定義創造了

有效的限制

軟體工程中很早就認識到許多程式設計的錯誤往往發生在程式

的不同部分其資料的表達和處理不同IEC 61131-3 從源頭上注意

防止這類低級的錯誤雖然採用的方法可能導致效率降低一點但

12

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 26: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

換來的價值卻是程式的可靠性可讀性和可維護性IEC 61131-3

採用以下方法防止這些錯誤

限制函數與功能塊之間的互連範圍只允許相容的資料類型與功能

塊之間互連

限制運算只可對其資料類型已明確定義的變數進行

禁止隱含的資料類型變換比如實型數不可執行按位運算若要

運算程式設計者必須先通過顯式變換函數 REAL_TO_WORD把

實型數變換為 WORD 型位元串變數標準中規定了多種標準固定字

長的資料類型包括位元串帶符號位元和不帶符號位元的整數型(8

位元16 位32 位和 64 位字長)

6對程式執行具有完全的控制能力傳統的 PLC 只能按掃描方式循序

執行程式對程式執行的多樣性要求如由事件驅動某一段程式的執

行程式的並行處理等均無能為力IEC 61131-3 允許程式的不同

部分在不同的條件(包括時間條件)下以不同的比率並存執行

即允許對一個程式的不同部分規定不同的執行次數不同的執行時

間和並存執行的方式這意味著以ldquo任務rdquo控制的方式可讓一個

程式的不同部分以不同的掃描週期進行掃描

7提供靈活的程式設計語言選擇有三種圖形化語言和兩種文本化語

言可在表達一個控制應用程式的不同部分時讓程式編制人員有很

大的自由度去選用他認為合適的語言來設計換句話說就是程式

的不同部分可用上述五種語言的任意一種來表達

8支援資料結構的定義由於支援資料結構所以相關的資料元素即

便屬於不同的資料類型也可在程式不同的部分傳送就如它們是

一個單一的實體在不同程式組織單元 POU 之間傳送複雜資訊如

同傳送單一變數一樣這不但改善了程式的可讀性而且保證了相

關資料的存取準確無誤

13

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 27: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

9完全支援順序控制的各種描述再複雜的順序行為也可輕而易舉地

用順序功能圖 SFC 這樣的圖形化語言加以分解描述及程式設計

順序控制過程的每一步都可用步(steps)其動作(actions)和

轉移(transitions between steps)準確描述

252 缺陷

1IEC 61131-3 沿用了直接表示與硬體有關的變數的方法這就妨礙了

均符合標準的 PLC 系統之間做到真正意義上的程式可移植由於不

同機種有自己的輸入輸出的定義(這些均與硬體相關)如果想

把一個在某個廠商的 PLC 中運行得很好的程式原封不動地搬到另一

個 PLC 廠商的機器必須先從技術檔中找到有關與硬體相關變數的

定義然後再在另一個機型中對此重新定義至少可以這樣說不

存在與硬體相關變數之間的變換

2IEC 61131-3 只給出一個單一的集中 PLC 系統的配置機制這顯然不

能適應分散式結構的軟體要求由於工業通信技術的飛速發展特

別是現場匯流排和乙太網在工業中的實際應用給工業自動化的體

系結構帶來了巨大影響因此IEC 61131-3 必須適應客觀形勢的

發展在這方面進行突破它應該允許功能塊不一定集中常駐在單

個硬體中允許分散於不同硬體的功能塊通過通信方式也可以構

成一個控制程式這就是正處於制定中的 IEC 61499 的主攻方向

26 支援 IEC61131-3 的開發介面

1TwinCAT

TwinCAT是一套 SoftPLC所謂的SoftPLC就是以電腦作為PLC 經由

FieldBusRS-232Ethernet與外部RemoteIO模組通訊作實體的IO控制因為

SoftPLC本身就在電腦內執行所以本身就提供線上除錯圖控介面等等也

14

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 28: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

因為 PLC 就在電腦內執行所以在同一部電腦的其他軟體可以快速且大量

取得 PLC 內的資料TwinCAT的RemoteIO模組可以選用Beckhoff Bus Terminal

或是WAGO-IO-SYSTEM 它們有高度的相容性

2WAGO IO PRO

WAGO IO PRO是用來開發WAGO-IO-SYSTEM中的Bus Controller(也就是一般

的PLC)所使用的工具

3NAiS FPWIN Pro

NAiS FPWIN Pro是用來開發NAiS PLC所使用的工具

4CoDeSys-本研究主題

CoDeSys也是一套 SoftPLCTwinCAT與WAGO IO PRO是由它修改而來的 這

三套軟體幾乎是相容的

15

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 29: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

第 3 章 PLC 控制系統規劃與語法介紹

31 可程式控制器系統架構

可程式控制器在架構上可分為軟體的控制運算與硬體的IO 動作在控制運

算方面本文以IEC61131-3 所規範的語法標準為基礎設計出在CoDeSys上可

運作的執行架構並使程式碼可以在不同的目標平台上進行控制流程的實現當

一個控制動作設計完成之後其執行階段的主要掃描動作分為三個部分依序為

讀取輸入接點 rarr 執行控制運算 rarr 輸出運算結果其中讀取輸入接點與輸出運

算結果與硬體IO 有實際的互動而控制運算則是可以完全與硬體分離出來基

於這個概念對於不同的硬體平台上我們將控制運算的部分獨立出來以完成

分離運算與硬體動作針對不同的硬體IO規劃對應的IO 暫存空間如此在

實際運作時讀取輸入接點所得到的值並不直接進行控制運算而是儲存在規劃

好的暫存空間控制運算可透過函式取得這些輸入狀態經過運算之後將結果

儲存在輸出暫存空間至於輸出運算結果的動作在每次掃描時依輸出暫存器內的

值將結果輸出如此便可以實現在不同的目標平台上使用同一個控制運算所規

劃的控制動作

圖 31 可程式控制器規劃架構圖

16

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 30: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖31描述一個控制系統架構將控制系統區分為軟體韌體硬體三個部

分並依功能特性分為若干模組軟體部分透過IO 存取函式讀取韌體上所記錄

的的IO 值經過控制計算後將運算結果寫入韌體上的輸出暫存器韌體部分

則以固定時間週期讀取輸入接點狀態並將其存放在輸入暫存器再以輸出暫存

器所記錄的值來更新輸出接點的狀態如此透過規劃好的IO 暫存器與存取方

法即可將軟體與硬體部分完整分離

32 可程式控制器的語法結構與實現

本研究的主要目的是要以IEC61131-3 所定義的語言為基礎提出一系列的

機制使得所規劃的程式控制動作可以在不同的目標平台上順利的執行為提高

程式的可攜性本文以描述檔來記錄不同控制器語法中所代表的各種控制運算

再針對使用的目標平台編輯出可編譯執行的控制程式碼最後說明整個系統的執

行架構與方法

321 IEC61131-3 五種語言的共通描述法

IEC61131-3 所定義的五種語法雖然每種語言的描述法大不相同但幾乎

所有的控制動作都可以在每一個語法中來描述與實現這意謂著可以使用一種共

同的描述法來描述這五種不同語法的語言所代表的同一個動作因此本文的

目標之一就是建立不同語法的通用描述法以此通用描述法將不同語言的控制描

述轉為同一種格式如此只要可以執行通用描述法的控制動作就可以使用同

一個架構來實現各種語言

描述檔除了可以將不同語言控制動作描述出來之外還有另一個目的即是

整合不同硬體平台上的實現法這裡使用通用描述檔為轉碼依據只需要為描述

檔設計兩種對應的處理方案即可又由於描述檔並不是以任何語法所編寫裡面

只記錄所使用的函數變數與引用的方法所以在編譯上可以針對不同的程式環

境編出符合該程式語法的程式碼圖3-2 說明描述檔在產生目的檔的過程中所扮

17

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 31: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

演的角色它可將IEC61131-3 所定義的各種語法以通用描述法記錄針對不同

支援度的控制硬體只需為描述檔設計對應的轉換控制碼即可達到跨平台的功

322 IEC61131-3 語法的描述格式

在前一節提到各種語言雖然描述型式各不相同但相同的運算在各語法中皆

有所屬的描述法而在函數使用方面也各自有其呼叫的使用方法以下將以簡單

的實例來說明不同語法中相同的運算動作與函式呼叫方法由於SFC 是專為流

程規劃所設計的語言並不提供運算或IO 的使用法所以SFC 的實現法將另外

提出以加法運算為例底下列出四種語言對X=A+B 的表示法首先是文字式

描述法指令表的描述是將被加數A 使用LD 運算子堆入運算堆疊內再呼叫

ADD 函式將堆疊內的值與引數B 相加將結果存入堆疊內再使用ST 運算子

將堆疊內的值讀出存放在變數X 內如圖32 所示 而結構化文字的描述則類

似於慣用的文字式描述式語言如圖33所示

圖 32 IL 運算描述 圖 3 3 ST 運算描述

再來說明圖形式描述法FBD 將引數A 與B 從函數方塊左邊訊號線引入

經過ADD 函數運算之後將結果由右側輸出訊號線存放在X 變數如圖34 所

示LD 是以布林運算為主的控制語法並沒有提供其他的運算方法不過

IEC61131-3 內所定義的LD 語法允許使用標準函數只是在LD 呼叫函數時有

個必要條件即LD 設計圖面上所呼叫的任何函數的輸入與輸出都必須有一個以

上的布林型態值如圖35 所示經由以上所提之四種語法的ADD 描述可以了

解即使語法架構不同但都可以使用各自的描述方法表示各語法的執行概念

18

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 32: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

與函式呼叫格式為相異之處相同的地方則是各語法的運算皆以呼叫標準函式的

方式來達成描述檔的基礎概念即由此出發利用各語法皆以標準函式進行運算

的特性將其統一描述並加以實現

圖 34 FBD 運算描述 圖 35 LD 運算描述

323 IEC61131-3 語法的執行概念與實現

在IEC61131-3 語法的執行上將每個語言所使用的描述法以函式的方式去

描述它並將使用者設計好的動作以IEC61131-3 內所定義的標準函式為基準

分解為一連串的函式呼叫式在控制階段則以執行這些函式來做運算而所謂的

描述檔內所記錄的就是由使用者設計好的程式碼所分解的一連串函式呼叫列

表將這些函式呼叫式以各種硬體所支援的語法描述轉譯成程式碼再由各目標

平台支援的編譯器編譯成目的檔與執行檔最後將執行檔下載到目標平台上即可

執行控制動作如此就可以使用一套執行方法來實現IEC61131-3 所定義的各

種語言SFC 在IEC61131-3 標準中是用來規劃流程的設計工具它沒有邏輯運

算的部分只提供其它語法在執行流程上的規劃故在實現上與其它語法不同

將SFC 中所有的Step 規劃為一段程式碼再以SFC 規劃這些程式碼的執行順序

與流程在複雜的控制程式中是一個很方便的規劃工具在實現的方法上將每

個Step 內的動作規劃為一段副程式再依使用者所規劃的執行流程法則去管理

這些副程式的執行動作

IEC61131-3 所定義的五種語法中ST 是屬於高階的程式語言在設

計上是最具彈性的語法因此IEC61131-3 中其他的語法所描述的動作

19

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 33: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

皆可使用ST 表示ST 語法接近C 語言的特性也使得他在執行上容易實

現所以本研究中提到的描述檔其描述架構上是以ST 語法為出發點

進行規劃與設計

圖 36 描述檔架構

33 IEC61131-3 語法詳述

國際標準 IEC61131-3 將各家PLC廠商所使用的控制語法整理為五類其中

包含了三種圖形化語言與兩種文字式語言圖形化語言有階梯圖 (LD)功能方

塊圖(FBD)與順序功能圖(SFC)文字式則有指令表(IL)與結構化文字(ST)兩種

這些語言依國家不同而各有其慣用的使用群而 IEC61131-3 所定義的語言之間

允許有條件的混合使用這點提高了PLC設計階段的靈活與便利性而本研究將

針以較常運用的LDSFCIL三種語法為主搭配另兩種語法做前顯易懂的介紹

331 階梯圖 LD (Ladder Diagram)

Ladder Diagram是由傳統的電器控制原理演變而來主要以開關接點繼電

器等電器控制元件的組合來描述控制動作與運算邏輯

其階梯圖類似於傳統上以繼電器控制接觸器的電路圖梯形圖是通過連線把

PLC指令的梯形圖符號連接在一起的連通圖用以表達所使用的PLC指令及其前

後順序它與電氣原理圖很相似

20

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 34: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

他的連線有兩種一為母線另一為內部橫豎線內部橫豎線把一個個梯

形圖符號指令連成一個指令組這個指令組一般總是從裝載(LD)指令開始

必要時再繼以若干個輸入指令(含 LD 指令)以建立邏輯條件最後為輸出類

指令實現輸出控制或為資料控制流程式控制通訊處理監控工作等指令

以進行相應的工作

圖 37 模擬器之模擬視窗LD (Ladder Diagram)

圖 38 LD 程式之使用元件

表 31 LD 程式之使用元件說明

21

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 35: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

1 連接線

LD 圖面上的所有元件都以連接線將其連接透過元件聯結的方式描

述運算式連接線分為水平與縱向兩種水平連結線將左側連結物件的

訊號傳送給右側元件而縱向連結線則將左側所連結的多個水平連結線

訊號以OR 運算整合將其結果傳送到所連接的右側水平線

2 接點與線圈

接點將左側母線的訊號經過運算之後將結果輸出到輸出變數不

同的接點連接方式代表著不同的邏輯運算

3 接點圖形說明

表 32 LD 接點類型

表 33 接點表示說明

4 基本指令

A起點由母線開始之 a 接點指令用 LD由母線開始之 b 接點用 LDI

B並聯並聯 a 接點用 OR並聯 b 接點用 ORI

C串聯串聯 a 接點用 AND串聯 b 接點用 ANDI

22

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 36: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

D輸出對控制用繼電器線圈用 OUT

E 結束程式結束處用 END

F LDLDIOUT 指令

圖 39 LDLDIOUT 指令

G ANDANDI 指令

圖 310 ANDANDI 指令

23

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 37: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

H ORORI 指令

圖 311 ORORI 指令

I ANBORB 指令

圖 312 ANBORB 指令

24

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 38: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

5 跳躍元件

跳躍元件是用來控制執行流程的元件有無條件跳躍與條件式跳躍

兩種當流程跳躍時程式流程將跳躍到所指定的標籤下繼續執行

332 IL (Instruction List)

Instruction List 以處理堆疊為運算的主軸撰寫格式基本上就是一個指令一

個引數類似組合語言但是稍具可讀性執行時以堆疊的方式將引數一個一個

堆入堆疊中再呼叫指令將堆疊內的引數引入函數內計算再將結果堆入堆疊內

圖 313 模擬器之模擬視窗IL (Instruction List)

圖 314 IL 程式之使用元件

25

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 39: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

表 34 IL 程式之使用元件說明

表 35 IL 參數

26

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 40: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

表 36 IL 基本指令

指令 引數類型 說明

LD ANY 將引數堆入堆疊

ST ANY 將堆疊的值取出

S BOOL 將引數狀態設為 TURE

R BOOL 將引數狀態設為 FALSE

AND BOOL 邏輯 AND 運算

OR BOOL 邏輯 OR 運算

XOR BOOL 邏輯 XOR 運算

ADD ANY 加法運算

SUB ANY 減法運算

MUL ANY 乘法運算

DIV ANY 除法運算

333 SFC (Sequential Function Chart)

Sequential Function Chart 本身並未支援任何運算處理功能只提供程式模組

順序的規劃主要用來規劃流程的設計工具它沒有邏輯運算的部分只提供其

它語法在執行流程上的規劃故在實現上與其它語法不同將 SFC 中所有的Step

規劃為一段程式碼再以 SFC 規劃這些程式碼的執行順序與流程在複雜的控

制程式中是一個很方便的規劃工具

SFC相似於流程設計(Flow Design)流程圖中的步驟組合而完成主要是規

劃動作順序的流程圖故稱時序流程圖如下圖所謂步進式控制即是一步一

步控制而這一步與上一步是有關連性的有順序性的必須有上一個動作

(STL)才會啟動(SET)下一個動作(STL)

27

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 41: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 315 模擬器之模擬視窗SFC (Sequential Function Chart)

圖 316 SFC 程式之使用元件

表 37 SFC 程式之使用元件說明

28

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 42: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 317 基本元素

圖 317 說明

a 初始狀態點啟動時執行的動作

b 狀態點子流程圖執行的動作

c 移行條件控制該狀態點是否執行的條件若條件滿足食由上一步進 狀

態點移動到下一步進而且會將上一步進狀態點關閉且停止上一步進狀態點的

動作

d 控制動作執行的動作規劃方法類似階梯圖以長方形方塊符號表示

29

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 43: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

表 38 SFC Action qualifiers

在實現的方法上將每個 Step 內的動作規劃為一段副程式再依使用者所

規劃的執行流程法則去管理這些副程式的執行動作跟其他的圖形語言一樣

SFC 的流程規劃也有分歧的型式分歧點有兩種並進式分歧與選擇式分歧

並進式分歧是流程分為兩個分流且同時處理兩個分流下的流程動作而選擇式

分歧則只選擇一個分流處理不執行其他分流下的流程

圖 318 選擇性分歧與並進式分歧

30

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 44: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

334 功能方塊圖(FBD)

功能方塊圖是以訊號流的運算處理為概念發展出來的在圖面上依控制目的

適當的使用功能方塊組合以進行輸入訊號的運算處理訊號經過所設計的處理

動作後再行輸出功能方塊以訊號為處理目標輸入訊號由功能方塊左側的輸入

點引入經運算之後由功能方塊右側的輸出點接收再經由訊號線將訊號傳給下

一個功能方塊或輸出變數功能方塊在IEC61131-3 的圖形化語言中是一個很重

要的部分使用它代表著一個函數的呼叫如圖2-3 所示在功能方塊左側所連

接的訊號線代表著函數的輸入引數而右側訊號線則代表函數的回傳值也因為

功能方塊可以描述函數的呼叫所以它除了可以在FBD 中處理訊號之外還可

以使用在LD 語法的設計圖面上提供LD 所欠缺的一些運算功能此外對使

用者自定函數而言功能方塊也是一個撰寫自定函數的描述工具

335 結構化文字(ST)

結構化文字是一種高階的程式語言它提供條件式判斷與迴圈的使用適用

於複雜的控制邏輯在IEC61131-3 所定義的5 種語言裡ST是最靈活的編寫語

言表2-4 列出ST 語法所定義的基本指令

336 不同語法的混用

IEC61131-3 所定義的五種語法可以混合使用在一段控制程式碼裡可能存

在著兩種以上的語言雖然定義語法可以混用但也不是無條件的參雜使用至

少在同一個程式區段(POU)裡必須使用同一種語法至於POU 內所引用的

Function 則可以使用另一種語法設計以下說明IEC61131-3 所允許的語法混用

情況在同一個程式裡我們可能寫了幾個自定的函式而這些函式可以使用任

意一種語法但是在同一個函式裡只能使用一種語法設計例如以FBD 為設

計的主要語言寫出一段控制程式在這段程式裡可以呼叫以LD 設計的

Function也可以呼叫ST 所設計的Function圖2-5說明語法混用的情形主程

式以FBD 語法設計其中可以呼叫以IL 語法與ST 語法所設計的函數另一種

31

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 45: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

混用的情形是在SFC 的流程轉換條件SFC 的流程轉換條件是一個布林代數的

值只要運算結果是一個布林代數便可以使用LD去設計條件也可以用FBD 去

設計並沒有強制必須使用何種語言

34 韌體函式庫

一般支援程式語法運算的控制晶片大多會提供本身的中斷呼叫法以往使用

者在規劃晶片的控制動作之前必須先熟悉該晶片所提供的中斷方法透過中斷

服務去執行硬體動作使用者通常會將常用的中斷服務寫成函式庫以簡化設計

過程有些晶片甚至直接提供中斷使用函式以方便使用者自行呼叫使用

為使所提供的語法可以在不同的硬體平台上順利的執行硬體動作必須統一

不同平台上的中斷函式呼叫介面使控制程式能以統一的硬體呼叫介面去執行不

同平台上的硬體動作因此在各硬體平台提供的中斷函式之上另外設計一個

中斷函式與控制動作間的介面函式庫此措施使控制動作可以透過介面函式庫所

提供的統一呼叫格式去使用不同硬體介面上的中斷服務中斷函式與控制動作間

的介面函式庫稱統稱為韌體函式庫在跨平台的實現上若目標平台提供中斷函

式庫則在韌體函式庫中直接以統一的呼叫介面去使用這些中斷函式若目標平

台只提供中斷方法來控制硬體動作為求流程統一則先為該平台撰寫基本中斷

函式再撰寫韌體函式庫來呼叫該中斷函式在設計平台上先規劃控制動作再

根據所使用的目標平台引入為該平台所撰寫的韌體函式庫經過支援的編譯器完

成編譯動作產生執行檔最後將執行檔載入目標平台上如此相同的控制程式

即可在不同的硬體平台上實現控制動作

32

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 46: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 319 中斷控制

圖 320 韌體函式庫控制程式與硬體間的呼叫關係

33

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 47: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

第 4 章程式操作簡介與實際模擬

41 程式操作簡介

圖 41剛進入畫面

圖 42從 File 點選 New project創造一個新專案

34

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 48: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 43選取 Standard project再決定其名稱與儲存的位置

圖 44選取要使用的語言 SFC點選完畢後點選 OK

35

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 49: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 45點選完出現以上圖形

圖 46若要出現想要得知的訊息點選 View

36

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 50: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 47若想打入程式碼或圖形在 View 點選 Devicesy再點選 PLC_RPG(RPG)

圖 48此時點選紅色框框裡面的圖形即可編寫程式

37

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 51: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

(一)SFC 操作 (以圖 49為例子)

圖 49 SFC 實際操作例子

1進入 SFC 程式後剛開始畫面如圖 410

圖 410 進入 SFC 程式後剛開始畫面

38

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 52: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

2利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置其畫面會

變成紅色如圖 411

圖 411 利用滑鼠點選初始狀態點狀態點移行條件控制動作等位置

3利用 SFC 程式之元件產生想要的圖形以 圖 49 為例子

步驟 A 點選 其圖型如圖 412

圖 412 利用 SFC 程式之元件產生想要的圖形

39

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 53: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

步驟 B 點選 其圖型如 圖 413

圖 413點選

步驟 C 點選狀態點 Step0並按下 其圖型如 圖 414

圖 414點選狀態點 Step0並按下

40

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 54: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

步驟 D 點選狀態點 Step1並按下 按下 其圖型如 圖 415

圖 415點選狀態點 Step1並按下 按下

步驟 E 更改移行條件點選如圖 416位置則會產生圖 417之圖形

圖 416更改移行條件之位置

41

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 55: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 417點選更改移行條件後之狀態

步驟 F 利用鍵盤輸入 D T 10s並產生 418的圖形

圖 418利用鍵盤輸入 D T 10s

42

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 56: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

步驟 G 點選如圖 419位置

圖 419點選更改移行條件位置

步驟 H 用鍵盤輸入 A並產生 420的圖形

圖 420用鍵盤輸入 A

43

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 57: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

步驟 I 點選如圖 421位置

圖 421點選紅框位置

步驟 J 用鍵盤輸入 B並產生 422的圖形即可完成相同於圖 49

圖形

圖 422用鍵盤輸入 B

44

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 58: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

步驟 K執行模擬

圖 423 用滑鼠右鍵點選 Device在用滑鼠左鍵點選 Simulation

圖 424 點選完之畫面右下角會出現 Simulation 的字樣

45

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 59: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 425 此時點選 Login to lsquo application [Device Plc Logic] rsquo

圖 426 點選完出現此畫面點選是程式會下載一些元件

46

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 60: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 427 完成後接著可點選 Start lsquo application [Device Plc Logic] rsquo以執行

圖 428 執行成功之畫面下方會出現 RUN 的字樣

47

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 61: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 429 假如出現錯誤在 Massages 裡面會出現程式出錯的地方及原因

(二)LD 操作

1 開新專案在 PLC_RPG in 內選擇 LD 語言

圖 430 欲選擇 LD 語言在 PLC_RPG in 選擇 LD 語言

48

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 62: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

2以圖 431為例子來說明如何操作

圖 431 LD 範例

(1)選擇紅色框框來開始使用 LD

圖 432 用滑鼠左鍵點選紅色框框處

(2)按圖 432 紅色框框後點選工具列上 按鈕

圖 433 點選按鈕後出現之結果

49

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 63: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

(3)其他操作

圖 434 點選紅色框框輸入想要的名稱 X0

圖 435 輸入完後結果

圖 436 在 X0 上點選右鍵選擇 Insert Contact Parallel(below)並更改名稱

圖 437 更改完後之結果

圖 438 在 X0 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X2

50

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 64: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 439 更改完後之結果

圖 440 在 X2 旁點選右鍵選擇 Insert Negated Contact並更改名稱 X1

圖 441 改完後之結果

圖 442 在 X1 旁點選右鍵選擇 Insert Coil並更改名稱 Y0

圖 443 改完後之結果

51

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 65: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 444 在紅色處標 2的地方右邊空白輸入程式按右鍵選擇 Insert Network

圖 445 重複上述步驟即可得上圖

(4)執行編譯模擬

圖 446 程式碼輸入完成後用滑鼠右鍵點選 Device在點選 Simulation

52

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 66: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 447 點選完之畫面右下角會出現 Simulation 的字樣

圖 448 紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要的值

53

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 67: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 449 點選 Online 內的 Write Values 即可執行改寫後的值

圖 450 點選完之結果

54

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 68: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

(三)IL 之實際操作

(1)開啟新專案在 PLC_RPG in 選擇 IL 語言

圖 451 選擇 IL 語言後在 PLC_RPG in 選擇 IL 語言

(2)打出指令後執行可得如圖 452紅色框框內可點選想設定之資料

圖 452 輸入指令碼紅色框框內可以點選已改變 TRUE 和 FALSE 以輸入想要

的值

55

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 69: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

(3)更改資料後利用主選單 Online 之副選單 write value 執行後可得圖 453

圖 453 執行完之結果

42 實際模擬

跑馬燈

功能說明以一個開關(X0)來控制四個燈號(Y0Y1Y2Y3)依序亮滅並循環

圖 454 跑馬燈之時序圖

56

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 70: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

421 LD 語言

圖 455 利用 LD 語言之跑馬燈模擬圖

57

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 71: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 456 利用 LD 語言之模擬畫面

422 SFC 語言

圖 457 利用 SFC 語言之跑馬燈模擬圖

58

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 72: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 458 利用 SFC 語言之模擬畫面

423 IL 語言

圖 459 利用 IL 語言設計的跑馬燈指令

59

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 73: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

圖 460 利用 IL 語言模擬畫面

60

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 74: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

第 5 章結論

本專題主要所探討的是CoDeSys(Controller Development System)的軟體本

身包括語法程式架構符合ICE61131-3的規格都是符合通用國際化的規

格程式功能也相當齊全幾乎在市面上流通的PLC皆可搭配使用是一款相當

實用的控制軟體程式介面方式相當人性化大多都有輔助說明讓使用者能夠

輕易上手使得在程式開發初期就能及早發現錯誤縮減研發時程支援的語法

和規格相當多元在大多數的情形下五種語法可混合使用

使用過CoDeSys(Controller Development System)之後瞭解到PLC控制軟體

的龐大功能以及它所帶給我們的便利性以往早期在PLC尚未發展至普及往

往只能夠靠著人工的方式去完成一些精細的加工或搬運使得大量的人力資源白

白浪費大大地降低了工作效率導致不必要的人事成本過多但上述所提及的

皆可用PLC可程式控制器來完成可是如果只有硬體無軟體輔助配合的話無

法使機器作動做出使用者所想要的動作或功能由此可知一款好用能夠擴

充的PLC控制軟體是相當重要的CoDeSys即為擁有這樣強大又實用的PLC控制

軟體之ㄧ

61

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 75: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

參考文獻

[1] Karl-Heinz John Michael Tiegelkamp IEC61131-3 ProgrammingIndustrial

Automation Systems 2000

[2] R W Lewis Programming Industrial Control System using IEC1131-31995

[3] 蕭欣智 簡詔群 三荾可程式自動控制實用手冊 範例 全華科技圖書股份有

限公司 1999

[4] R W Lewis Programming Industrial Control System using IEC1131-31995

[5] 陳福春 PLC 可程式控制器原理與實習 高立圖書有限公司 2000

[6] 林陳進 rdquoPLC 電腦輔助設計軟體原理解析rdquo 機電整合雜誌 第4期

pp122-137 1988

[7] 吳福川 PC-Based SoftPLC 控制規劃軟體之實現 國立台灣大學電機工程研

究所 碩士論文 1999

[8] Birgit Vogel-Heuser Daniel Witsch Uwe Katzke ldquoAutomatic Code

Generation from a UML model to IEC 61131-3 and system configuration

toolsrdquo Intermational Conference on Control and Automation

pp1034-1039 June 27-29 2005 Budapest Hungary

[9] 李新濤可程式控制器設計與應用滄海出版社2001

[10]John Karl-Heinz Tiegelkamp MichaelIec 61131-3 Programming Industrial

Automation Systems Concepts And Programming Languages Requirements for

Programming SystemsSpringer Verlag2001

[11]黃顯川可程式控制器原理與實習新文京出版社2005

[12]洪志育可程式控制器應用實習文京圖書有限公司2003

[13]陳瑞錡可程式控制器原理與應用全華圖書股份有限公司1996

[14]葛世偉可程式控制器應用全華圖書股份有限公司1996

[15] httpwwwpdf-search-enginecom61131-pdfhtml

62

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 76: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

附錄 1 專有名詞解釋

1CANopen

CANopen是一種架構在控制器區域網路(Controllor Area Network CAN)上

的高層通訊協定包括通訊子協定及設備子協定常在嵌入式系統中使用也是工

業控制常用到的一種現場總線

CANopen 實作了OSI模型中的網路層以上(包括網路層)的協定CANopen

標準包括定址方案數個小的通訊子協定及由設備子協定所定義的應用層

CANopen 支援網路管理設備監控及節點間的通訊其中包括一個簡易的傳輸

層可處理資料的分段傳送及其組合

2PROFIBUS

PROFIBUS是一種具備多種電路層(electrical-layer)選項的工業網路標準如

自動化應用最常見的PROFIBUS電路層即為RS-485 標準的改良版它增加多項要

求以提高資料傳輸效能本文將概要介紹PROFIBUS應用的網路技術並說明適

合其匯流排收發器應具備那些特性 現場匯流排(fieldbus)技術提供製程自動

化工廠自動化或移動控制所需的工業通訊現場匯流排是一種使用銅線材光

纖或無線等各種媒介的工業通訊系統可透過位元串列傳輸方式把散佈於應用現

場的各類裝置(如感測器致動器驅動器和換能器等)連結到中央控制或管理系

3OPC

OPC (OLE for Process Control) 是

世界一項應用介面的平台它能夠連接

不同業界的設備或控制器使用 OPC 介

63

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 77: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

面則可將不同機器設備所使用各種不同廠牌之 PLC 相互連接讀取資料進行

控制

何謂 OPC ServerOPC SEVER 是一項透過 OPC 介面去讀取機器資料(如

PLC)並回傳資料的使用者端的應用軟體所以在整合的應用時只要機器設備

支援 OPC 介面即可輕易讀取資料而不需任

何 PLC 的通訊技術資訊

OPC 運作方式

在說明 OPC ServerClient 運作方式之

前我們先簡單介紹一下 Microsoft 發展的

COMDCOM 是什麼

COM 是一種發展軟體元件的方法所謂

的軟體元件是指一個可以提供應用程式作業系統以及其他元件服務的二進

位可執行程式事實上發展自訂的 COM 物件就好像是在建構一套可以動態

執行的物件導向 API 一般你可以在應用程式執行的時期隨意拼上或移除所需

要的元件依據 COM 這樣的概念發展應用程式就像是堆積木一樣每一個

COM 元件就是一塊積木你可以利用各式各樣不同的積木拼湊出你所需要的

應用程式

在實作上COM 透過一組一組的介面 (Interface) 提供服務所有 COM 元

件的使用者都必須透過這些 Interface 來使用元件提供的功能OPC 的規格中

便定義了許多 OPC Server 應該提供的 Interface要撰寫一個 OPC Server 的

COM 元件你必須在你的元件中加入這些介面並提供它們的實作Client 便

可以透過這些介面操作連接到 OPC Server 的硬體裝置這也就是 OPC

ServerClient 運作的方式

64

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 78: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

Figure OPC ClientServer Relationship

Figure The OPC Interfaces

OPC Server 架構

OPC Server 透過一組一組的介面提供服務不過在實作的架構上OPC

Server 共分為三層分別是 OPCServer OPCGroup OPCItem

其中每一個 OPCItem 對應到一個實際的硬體裝置上的某一個 channel 或

port每一個 OPCGroup 則包含了許多的 OPCItem同時並定義這些 OPCItem

更新的時間方式以及提供讀取 OPCItem 值的介面而每一個 OPCServer 則

包含若干個 OPCGroup同時提供操作這些 OPCGroup 的介面

65

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 79: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

4EtherCAT

EtherCAT 的代表ldquo以太網控制自動化技術rdquo 它是一個開源的高性能的系

統其目的是使用以太網協議(是最受青睞的系統局域網)在工業環境中特別

是對工廠和其他製造業的關注是利用機器人和其他流水線技術

5SERCOS

SERCOS 是 SErial Real-time COmmunication System 的縮寫由德國率先發

展於 1989 年 7 月向國際標準組織(IEC)提出申請並於 1995 年 11 月獲得通過

成為 IEC 1491 國際標準 SERCOS 是一個以光纖為傳輸介質的週期式網路通訊

協定主要即針對自動化系統中的多軸運動控制系統而設計 SERCOS 不僅可

適用於快速精密的多軸馬達協調控制也明確的定義了伺服馬達位置速度與

扭力控制命令的通訊協定因此可藉由 SERCOS 的通訊標準完成多個馬達的運

動控制乃至伺服控制

6DeviceNet

DeviceNet 是一種國際上標準化的(IEC 62026-3)的基於 CAN 的高層協議

可專門用於工業自動化特别是工廠自動化DeviceNet 規範集由應用層和設備

子協議構成这些規範由非營利組織ldquo開放式DeviceNet供貨商協會(簡稱ODVA)rdquo

開發和維護

66

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 80: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

7Modbus

Modbus是一種串行通信協議是Modicon於 1979 年為使用可程式邏輯控

制器(PLC)而發表的事實上它已經成為工業領域通信協議標準並且現在

是工業電子設備之間相當常用的連接方式Modbus比其他通信協議使用的更廣

泛的主要原因有

1 公開發表並且無版稅要求

2 相對容易的工業網絡部署

3 對供應商來說修改移動原生的位或位元組沒有很多限制

補充

Modbus協議目前存在用於串口以太網以及其他支持互聯網協議的網絡的版本

大多數Modbus設備通信通過串口EIA-485物理層進行[1]

對於串行連接存在兩個變種它們在數值數據表示不同和協議細節上略有不

同Modbus RTU是一種緊湊的採用二進製表示數據的方式Modbus ASCII是

一種人類可讀的冗長的表示方式這兩個變種都使用串行通訊(serial

communication)方式RTU格式後續的命令數據帶有循環冗餘校驗的校驗和

而ASCII格式採用縱向冗餘校驗的校驗和被配置為RTU變種的節點不會和設置

為ASCII變種的節點通信反之亦然

對於通過TCPIP(例如以太網)的連接存在多個ModbusTCP變種這種方式

不需要校驗和的計算

對於所有的這三種通信協議在數據模型和功能調用上都是相同的只有封裝方式

是不同的

Modbus 有一個擴展版本 Modbus Plus(Modbus+或者MB+)不過此協定是

Modicon專有的和 Modbus不同它需要一個專門的協處理器來處理類似HDLC

的高速令牌旋轉它使用 1Mbits的雙絞線並且每個節點都有轉換隔離裝置

是一種採用轉換邊緣觸發而不是電壓水平觸發的裝置連接Modbus Plus到

計算機需要特別的接口通常是支持ISA(SA85)PCI或者PCMCIA總線的板卡

67

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 81: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

8Ethernet

是區域網路 (LAN) 中最為普遍的連接型式 以 IEEE 8023 協定

主要用兩種線材

SCADA

系統監控和資料擷取功能的軟體都可以稱之為 SCADA

產自

10CNC

電腦數值控制 CNC(Computer Numerical Control)利用 NC 程式指令輸入數

11IPCInterProcessCommunicationsprotocol(進程間通信)

系统中使用它

Ethernet

為標準 其最高傳送速度為 Gigabit Ethernet (1Gbs) 而大部份寬頻網絡均採用

Ethernet Card 以接駁寬頻設備

Ethernet 就是所謂的乙太網路

9

凡是具有

(Supervisory Control And Data Acqusition) 軟體它是架構在 PC 之上的生

動化及控制系統

控系統之記憶體後經由電腦編譯計算透過位移控制系統將資訊傳至驅動器

以驅動馬達之過程來切削加工所設計之零件通常 利用電腦控制的工作母機

(工具機) 就通稱為 CNC

IPC 分为兩種類型口本地過程調用(LPC)在多任务操作

们允許開發運行的任務能彼此對话LPC 能共享内存空间同步任務並相互發送

消息

68

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys
Page 82: CoDeSys 控制軟體操作說明 The Controllable Software Operating ... · 擬機制。透過模組化的規劃與設計,將控制動作分為邏輯運算與硬體動作兩個部

69

12DCS 系统

DCS 英文全稱 DISTRIBUTED CONTROL SYSTEM 中文全稱為集散型控

制系统DCS 可以解釋為在模擬量回路控制較多的行业中廣泛使用的盡量將

控制所造成的危险性分散而將管理和顯示功能集中的一種自動化高技術產品

DCS 一般由五部份组成1控制器 2IO 板 3操作站 4通訊網路 5圖形

及遍程软件

  • CoDeSys 控制軟體操作說明
  • The Controllable Software Operating Description of CoDeSys