codesys講義-2iec編程基礎(chǔ)_第1頁
codesys講義-2iec編程基礎(chǔ)_第2頁
codesys講義-2iec編程基礎(chǔ)_第3頁
codesys講義-2iec編程基礎(chǔ)_第4頁
codesys講義-2iec編程基礎(chǔ)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

WAGO-I/O-PRO

CAA

是基于WAGO-I/O-SYSTEM

750

系列可編程現(xiàn)場總線控制器(PFC)的編程開發(fā)與可視化圖形

工具

。WAGO-I/O-PRO

CAA符合IEC

61131-3國際標準,提供標準的開發(fā)環(huán)境與基于該標準的6種程序設(shè)計語言:梯形邏輯程序設(shè)計語言(LD)指令列表程序設(shè)計語言(IL)順序功能圖程序設(shè)計語言(SFC)功能塊程序設(shè)計語言(FBD)結(jié)構(gòu)化語句程序設(shè)計語言(ST)流程功能圖程序設(shè)計語言(CFC)WAGO-I/O-PRO

CAA功能:豐富的程序功能指令WAGO-I/O-PRO

CAA

提供了位邏輯運算、整數(shù)與浮點數(shù)運算、定時器與計數(shù)器功能、比較與賦值功能、移位與循環(huán)功能、數(shù)據(jù)類型轉(zhuǎn)換功能、

PID功能等大量豐富的程序功能指令。此外,用戶還可以根據(jù)特定需要編寫自己的功能塊、子程序。離線程序仿真到PFC中,方便用戶對程序的測試與修改并節(jié)省用戶應(yīng)用程序可在計算機中進行仿真執(zhí)行,無須將其了開發(fā)時間。監(jiān)視在程序離線仿真或聯(lián)機運行的過程中,用戶可以在WAGO-I/O-PROCAA中以文本或圖形的方式監(jiān)視程序運行狀態(tài)及數(shù)據(jù)變化情況。與調(diào)試在程序離線仿真或聯(lián)機運行的過程中,用戶可以通過在程序中設(shè)置斷點、逐步執(zhí)行程序、手動為變量賦值的方式對程序進行

與調(diào)試。多任務(wù)管理WAGO-I/O-PROCAA提供了多任務(wù)管理功能,復(fù)雜的應(yīng)用系統(tǒng)可以劃分為多個任務(wù),任務(wù)的執(zhí)行取決其優(yōu)先級與執(zhí)行條件,降低了系統(tǒng)的響應(yīng)時間。開發(fā)環(huán)境系統(tǒng)要求:CPU:In

Pentium或更高操作系統(tǒng):MS-WINDOWS

95MS-WINDOWS

NT

4.0MS-WINDOWS

2000MS-WINDOWS

XP內(nèi)存:

16MB

RAM

Windows

95)64MB

RAM

(WindowsNT)10MB本機硬盤空間鼠標2倍速以上光驅(qū)RS232串行口通訊電纜RS232IPC:758-870,266MHzPFC:

750-8XX運行環(huán)境:第一講POU

的基本概念第二講程序設(shè)計語言梯形圖LD第三講程序設(shè)計語言功能塊FBD第四講程序設(shè)計語言指令列表IL第五講結(jié)構(gòu)化文本ST第六講IEC運算符POU

是程序組織單元(Program

Organization

Unit)的簡稱。變量部分程序指令部分POU由函數(shù)(Function)、功能塊(Function

Block)、程序(Program)三種類型組成。POU由變量部分組成部分和程序代碼每一個POU包含兩部分:變量部分與程序指令部分。程序指令部分

由六種語言(IL、LD、SFC、FBD、ST、CFC)之一編寫。程序(Program)是為了完成某項任務(wù)而編寫的語句序列,是一組指令的集合。程序是唯一可執(zhí)行的POU,是邏輯執(zhí)行的主體。程序可以通過任務(wù)組態(tài)來激活,也可以通過其它程序來調(diào)程序可以被調(diào)用。程序中所有變量的數(shù)據(jù)在被調(diào)用執(zhí)行后保留直至下一次執(zhí)行。PLC_PRG

在用戶建立一個新項目時由系統(tǒng)自動加載。PLC_PRG是項目中系統(tǒng)預(yù)定義的一個特殊的程序。PLC_PRG每一循環(huán)周期被系統(tǒng)調(diào)用執(zhí)行一次,相當(dāng)于一個單任務(wù)程序的主程序。當(dāng)用戶在項目中進行了多任務(wù)管理的相關(guān)設(shè)置后,系統(tǒng)可以不需要PLC_PRG

。否則,用戶不要刪除PLC_PRG或改變其程序名。變量

部分:PROGRAM

PRGExampleVAR_OUTPUTPAR:INT;END_VAR程序指令部分:LD

PARADD

1ST

PARPOU的類型-程序(Program)與PLC_PRG程序的調(diào)用在IL中調(diào)用:CAL

PRGExampleLD

PRGExample.PARST

ERG在ST中調(diào)用:PRGEXample;ERG:=

PRGEample.PAR;程序(Program)POU的類型-程序(Program)與PLC_PRG功能塊(FunctionBlock)是預(yù)先編好的、實現(xiàn)某種運算的程序。功能塊在執(zhí)行時,輸入量可以是一個或多個值,輸出量可以是一個或多個執(zhí)行結(jié)果。功能塊以調(diào)用其實例(Instance)的方式執(zhí)

行。功能塊的實例需在POU的變量

部分進行

。實例可以

為局部實例或全局實例。功能塊實例的輸入輸出變量可以在POU中設(shè)置,

變量在調(diào)用時對于用戶是不可見的。變量

部分:FUNCTION_BLOCK

FUBVAR_INPUTPAR1:INT;PAR2:INT;END_VARVAR_OUTPUTMULERG:INT;VERGL:BOOL;END_VAR程序指令部分:輸入變量輸出變量MULERG=PAR1*PAR2LD

PAR1MUL

PAR2PAR1=PAR2STMULERGVERGL=TRUELDPAR1EQPAR2PAR1≠PAR2STVERGLVERGL=FALSEPOU的類型-功能塊(Function

Block)功能塊的實例*)變量并賦初值*)程序

部分:PROGRAM

PLC_PRGVARINSTANCE:FUB;

(*ERG:INT:=0;

(*QUAD:BOOL;END_VAR在IL中調(diào)用:CAL

INSTANCE(PAR1:=5,PAR2:=5)LD

INSTANCE.VERGLST

QUADLD

INSTANCE.MULERGST

ERG在ST中調(diào)用:INSTANCE(PAR1:=5,PAR2:=5);

QUAD:=INSTANCE.VERGL;ERG:=INSTANCE.MULERG;在程序中

名為INSTANCE的功能塊FUB

的實例,乘積的結(jié)果保存在變量ERG中,比較的結(jié)果保存在變量QUAD中。功能塊(Function

Block)POU的類型-功能塊(Function

Block)函數(shù)(Function)也是預(yù)先編好的、實現(xiàn)某種運算的程序。函數(shù)在執(zhí)行時,會針對一系列特定的輸入,產(chǎn)生一個輸出結(jié)果,這個輸出結(jié)果被賦給函數(shù)本身,稱為返回值。函數(shù)只能被其它POU

調(diào)用,函數(shù)本身不能單獨執(zhí)行。在

一個Function后,需要指定該Function所返回的數(shù)值的數(shù)據(jù)類型。Function的名字為該Function的輸出變量結(jié)果。變量

部分:FUNCTION

Fct:

INTVAR_INPUTPAR1:INT;PAR2:INT;PAR3:INT;

END_VAR程序指令部分:LDPAR1MULPAR2Fct=(PAR1*PAR2/PAR3)DIVPAR3STFctINT:function返回的數(shù)據(jù)類型Fct:

Function輸入變量POU的類型-函數(shù)(Function)result=(7*2/4)在IL中調(diào)用:LD

7FCT

2,4ST

Result在ST中調(diào)用:Result:=Fct(7,2,4);函數(shù)(Function)POU的類型-函數(shù)(Function)POU

的調(diào)用有兩種方法:??被其它已經(jīng)調(diào)用的POU來調(diào)用。通過任務(wù)配置來調(diào)用,這種方法僅限于程序調(diào)用。當(dāng)程序中沒有進行任務(wù)配置時,系統(tǒng)會自動調(diào)用主程序PLC_PRG。POU的組成程序。??POU

的調(diào)用有兩種方法:程序可以調(diào)用函數(shù)、功能塊和其它功能塊可以調(diào)用函數(shù)和其它功能塊。函數(shù)可以調(diào)用函數(shù)。POU的調(diào)用POU

的組成

。所有的POU

都包含一個

部分和一個代碼部分。代碼部分可以選用IEC

標準編程語言的一種或幾種來編寫。不同性質(zhì)的POU,其標題名稱也不相同。第一講POU

的基本概念第二講程序設(shè)計語言梯形圖LD第三講程序設(shè)計語言功能塊FBD第四講程序設(shè)計語言指令列表IL第五講結(jié)構(gòu)化文本ST第六講IEC運算符LD

是梯形圖(Ladder

Diagram)的簡稱。LD

是一種圖形化的編程語言。用LD

可以方便地構(gòu)造邏輯運算。LD

主要由觸點、線圈、功能塊和連接線等編程元件組成。是LD通過水平線和垂直線連接成平面網(wǎng)狀圖。一般稱最左邊的垂直線為“能量線”,其狀態(tài)真(TRUE)。各編程元件以一定的規(guī)則互相連接,最終連接到這條能量線上,形成一個個“節(jié)”、“段”或“網(wǎng)絡(luò)”,完成特定的邏輯運算。梯形圖

LD介紹元素:標識:注釋:常開觸點—|

|—如果指定地址信號狀態(tài)為“1”,則觸點閉合,反之觸點斷開。常閉觸點—|/|—如果指定地址信號狀態(tài)為“1”,則觸點斷開,反之觸點閉合。輸出線圈—(

)—線圈前運算結(jié)果為“1”,輸出狀態(tài)為“1”,反之輸出狀態(tài)“0”。置位輸出線圈—(S

)—線圈前運算結(jié)果為“1”,輸出狀態(tài)為“1”,反之信號狀態(tài)不變。復(fù)位輸出線圈—(

R

)—線圈前運算結(jié)果為“1”,輸出狀態(tài)為“0”,反之信號狀態(tài)不變。串聯(lián)結(jié)構(gòu):相當(dāng)于位邏輯的“與”運算。并聯(lián)結(jié)構(gòu):相當(dāng)于位邏輯的“或”運算。輸出線圈不允許串聯(lián)結(jié)構(gòu)梯形圖

LD介紹當(dāng)新

觸點、線圈時,標記文本缺省值為“???”。點擊文本輸入可以所要的變量或常量。或者,可以使用輸入助手(快捷鍵F2),直接從變量列表中選擇輸入。梯形圖

LD-竅門1在梯形邏輯程序設(shè)計語言中允許以圖形的方式使用系統(tǒng)運算符與功能塊,運算符與功能塊可以在梯級網(wǎng)絡(luò)中間使用(如圖1),也可以在梯級網(wǎng)絡(luò)右側(cè)以“使能”的方式使用(如圖2)。圖1注:在此種方式下,要求運算符或功能塊所連接的變量為布爾型。圖2注:“EN”為該運算符或功能塊的使能端,如果前面運算結(jié)果為“1”,則使能端激活,程序執(zhí)行;反之程序不執(zhí)行。梯形圖

LD-

功能塊/運算符&使能功能塊/運算符當(dāng)新

觸點、線圈時,標記文本缺省值為“???”。點擊文本輸入可以所要的變量或常量?;蛘?,可以使用輸入助手(快捷鍵F2),直接從變量列表中選擇輸入。梯形圖

LD-竅門第一講POU

的基本概念第二講程序設(shè)計語言梯形圖LD第三講程序設(shè)計語言功能塊FBD第四講程序設(shè)計語言指令列表IL第五講結(jié)構(gòu)化文本ST第六講IEC運算符功能模塊圖程序設(shè)計語言是采用功能模塊來表示模塊所具有的功能,

不同的功能模塊有不同的功能。它有

若干個輸入端和輸出端,通過軟連接

的方式,分別連接到所需的其它端口,完成所需的運算或控制功能。FBD包含一系列程序網(wǎng)絡(luò),每個網(wǎng)絡(luò)以圖形的方式表示邏輯或數(shù)算,POU的調(diào)用。功能塊

FBD使用FBD:對當(dāng)前運算符添加輸入端

對當(dāng)前運算符或添加輸出端運算符賦值指令(Assign),用于為運算符或POU的輸入/輸出變量或其他變量賦值。跳轉(zhuǎn)指令(Jump)返回指令(Return)運算符或POU的輸入/輸出變量或其他變量(布爾型)取反變量置位/復(fù)位功能塊

FBD功能塊

FBD-使用輸入/輸出命令對于某些運算符,輸入/輸出的數(shù)量是變化的,有時需要擴展運算符的輸入。例如,ADD

可兩個數(shù)相加,也可以是

的數(shù)相加。選中輸入,

的新輸入成為功能塊的第一個輸入。如果要一個位于末端位置的輸入,能塊本身。

的輸入缺省值為文本“???”。點擊選中文本,改變成所需要的常量必須選或變量。用戶使用“Insert”下拉菜單中的相關(guān)命令可以在梯級網(wǎng)絡(luò)中運算符、POU、賦值指令、跳轉(zhuǎn)指令、返回指令和程序注釋等,使用“Extras”下拉菜單中的相關(guān)命令可以設(shè)置變量取反,變量置位/復(fù)位。注意:用戶應(yīng)用程序的開發(fā)可以在IL、LD、FBD3種程序設(shè)計語言之間相互切換。操作方法:選中所需切換的

POU,使用“Project”-“Object”-“Convert”命令,在“ConvertObject” 框中選擇所需切換的程序設(shè)計語言。功能塊

FBD-編程語言切換功能塊

FBD-示例本程序可以產(chǎn)生“1s斷2s通”的脈沖信號。第一講POU

的基本概念第二講程序設(shè)計語言梯形圖LD第三講程序設(shè)計語言功能塊FBD第四講程序設(shè)計語言指令列表IL第五講結(jié)構(gòu)化文本ST第六講IEC運算符IL語言是用布爾助記符來描述程序的一種程序設(shè)計語言。IL語言與計算機中的匯編語言非常相似,采用布爾助記符來表示操作功能。IL語言程序由一系列指令構(gòu)成,每一條指令包括一個操作符與一個或多個操作數(shù)。在程序的每一行起始出可以設(shè)置(Label),在每行指令后可以添加注釋文本(Comment)。下面是一個用IL

語言實現(xiàn)的簡單運算程序。舉例:操作a符:操作數(shù):注釋:LDTRUE(*將“TRUE”存入緩存*)ANDNBOOL1(*取“BOOL1”反,與“TRUE”做與運算*)JMPCmark(*如果結(jié)果為“True”,跳轉(zhuǎn)到“mark”*)LDNBOOL2(*取“BOOL2”反STERG存入變量“ERG”中*)mark:LDBOOL2(*取“BOOL2”STERG存入變量“ERG”中*)修飾符:C:用于JMP、CAL、RET語句,如果該指令前的表達式結(jié)果為“真”,則執(zhí)行該指令。N:用于JMP、CAL、RET語句,如果該指令前的表達式結(jié)果為“假”,則執(zhí)行該指令。N:在其他語句中用于操作數(shù)(布爾量)取反。操作符、操作數(shù)、函數(shù)與功能用戶使用“Insert”下拉菜單中的相關(guān)命令可以在指令中塊。ANDN位邏輯“與”運算ORN位邏輯“或”運算XORN位邏輯“異或”運算ADD“加”運算SUB“減”運算MUL“乘”運算DIV“除”運算操作符可用修飾符:注釋:LDN將操作數(shù)結(jié)果寫入緩存STN將運算結(jié)果寫入操作數(shù)S置位布爾操作數(shù)R復(fù)位布爾操作數(shù)操作符可用修飾符:注釋:LT小于EQ等于NE不等于LE小于等于GT大于GE大于等于JMPC,N跳轉(zhuǎn)到“Label”CALC,N調(diào)用程序或功能塊RETC,N返回本程序可以產(chǎn)生“1s

斷2s

通”的脈沖信號。第一講POU

的基本概念第二講程序設(shè)計語言梯形圖LD第三講程序設(shè)計語言功能塊FBD第四講程序設(shè)計語言指令列表IL第五講結(jié)構(gòu)化文本ST第六講IEC運算符結(jié)構(gòu)化語句程序設(shè)計語言是用結(jié)構(gòu)化的描述語句來描述系統(tǒng)中各種變量之間的各種運算關(guān)系,完成所需的功能或操作的一種程序設(shè)計語言。結(jié)構(gòu)化語句描述程序設(shè)計語言是一種類似于高級語言的程序設(shè)計語言。在大中型的可編程序控制器系統(tǒng)中,

常采用結(jié)構(gòu)化語句描述程序設(shè)計語言

來描述控制系統(tǒng)中各個變量的關(guān)系。ST與IL同屬于基于文本的程序設(shè)計語言,但是由于ST采用了類似于高級語言的程序結(jié)構(gòu),在開發(fā)較復(fù)雜的應(yīng)用程序時更為簡便快捷。賦值表達式運算符優(yōu)先級:括號函數(shù)調(diào)用(…)最高指數(shù)運算取負數(shù)EXPT-取反NOT乘除運算*

,

/求余數(shù)MOD加減運算+

,

-比較運算<

,

>

,

<=

,

>=等于=不等于<>邏輯與AND邏輯異或XOR邏輯或OR最低優(yōu)先級注意:優(yōu)先級相同的運算符運算順序為“從左至右”。賦值語句賦值語句(:=)用于將右邊的數(shù)值賦值給左邊的運算數(shù)(變量、地址)。例如:Var1

:=

Var2

*

10;變量Var2的十倍數(shù)值被賦值給變量Var1。在ST中調(diào)用功能塊在ST中調(diào)用功能塊,需要功能塊的實例名,然后在圓括號中給參數(shù)賦值。通過下面的例子可以看到,調(diào)用定時器并給參數(shù)IN和PT賦值,然后將結(jié)果變量Q的值賦給變量A。同IL一樣,結(jié)果變量由功能塊名,點號和變量名表示。TON(IN

:=

TRUE,

PT

:=

t#300S);A:=CMD_TMR.Q在ST中調(diào)用功能塊IF語句IF

語句用于檢查某個執(zhí)行條件,并根據(jù)具體條件執(zhí)行相應(yīng)的指令。IF

語句語法結(jié)構(gòu):IF

<Boolean_expression1>

THEN<IF_instructions>;{ELSIF

<Boolean_expression2>

THEN<ELSIF_instructions1>;:ELSIF

<Boolean_expressionn>

THEN<ELSIF_instructions

n-1>;ELSE<ELSE_instructions>;}END_IF例子:IF

temp<17THENELSEheating_on

:=

TRUE;heating_on

:=

FALSE;END_IF;CASE語句CASE語句可以根據(jù)同一個條件變量的數(shù)值變化而去執(zhí)行多個不同的程序段。CASE

語句語法結(jié)構(gòu):CASE

<Var1>

OF<Value1>:

<instruction1>;<Value2>:

<instruction2>;<Value3,Value4>

:<instruction3>;…<Value

n>

:

<instruction

n>;ELSE

<ELSE

instruction>;END_CASE例子:CASE

INT1

OF1,5:BOOL1:=TRUE;BOOL3:=FALSE;2:BOOL2:=FALSE;BOOL3:=TRUE;ELSEBOOL1:=TRUE;BOOL2:=TRUE;BOOL3:=TRUE;END_CASE;FOR循環(huán)語句FOR

循環(huán)語句用于編寫可重復(fù)執(zhí)行的程序。FOR

語句語法結(jié)構(gòu):Var:

INT;FOR

<Var>

:=

<Init

_Value>

TO<End_Value>

{

BY

<Step_Size>

}

DO<instructions>;END_FOR例子:FORCounter:=1TO5

BY

1

DOVar1:=Var1*2;END_FOR;Erg:=Var1;(*Var1is

32*)WHILE循環(huán)語句WHILE循環(huán)語句的用法和FOR循環(huán)語句類似,只是WHILE循環(huán)語句的中斷條件可以是任何的邏輯表達式。即只要滿足給定的條件,循環(huán)就會一直被執(zhí)行。WHILE語句語法結(jié)構(gòu):WHILE

<Boolean_expression><instructions>;END_WHILE例子:WHILE

counter<>0

DOVar1:=Var1*2;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論