羅克韋爾ControlLogix編程_第1頁
羅克韋爾ControlLogix編程_第2頁
羅克韋爾ControlLogix編程_第3頁
羅克韋爾ControlLogix編程_第4頁
羅克韋爾ControlLogix編程_第5頁
已閱讀5頁,還剩160頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

羅克韋爾ControlLogix編程第1頁/共165頁3.1ControlLogix編程語言3.1.1編程語言簡介1.編程語言(1)梯形圖LD(LadderDiagram)梯形圖LD是一種圖形語言,直觀易懂,是最常采用、應(yīng)用最廣泛的編程語言之一。(2)結(jié)構(gòu)文本ST(StructuredText)結(jié)構(gòu)文本ST類似于計算機(jī)高級語言,符合IEC

61131-3標(biāo)準(zhǔn),使用由操作符和操作數(shù)組成的表達(dá)式結(jié)構(gòu),描述功能、功能塊、程序的行為,在執(zhí)行表達(dá)式時會返回值。(3)功能塊圖FBD(FunctionBlockDiagram)功能塊圖FBD使用類似于布爾代數(shù)的圖形邏輯符號來表示控制邏輯,組態(tài)過程控制,是引入DCS系統(tǒng)的儀表控制組態(tài)方式,由功能塊之間的連接建立程序結(jié)構(gòu)。(4)順序功能圖SFC(SequentialFunctionChart)順序功能圖SFC類似于順序控制的流程圖,將工作流程細(xì)化到步,提供全部的結(jié)構(gòu)且協(xié)調(diào)面向批處理的過程。第2頁/共165頁3.1.1編程語言簡介2.編程語言的選用與相互轉(zhuǎn)換ControlLogix系列PLC的編程語言各有特色,一般情況下,如果程序沒有錯誤,并且被正確地劃分為程序段,則編程語言之間可以相互轉(zhuǎn)換。第3頁/共165頁3.1.2梯形圖LD1.梯形圖程序的邏輯結(jié)構(gòu)梯形圖程序是由指令構(gòu)成的邏輯梯級集合而成的,而邏輯梯級的結(jié)構(gòu)則由輸入指令和輸出指令兩部分組成,如圖3-1所示。第4頁/共165頁3.1.2梯形圖LD輸入指令的運(yùn)行,并不直接執(zhí)行某種操作的動作,但都會得到邏輯結(jié)果,這就是梯級條件,它決定要不要執(zhí)行指令。梯級條件邏輯上存在兩種脈沖形式,如圖3-2所示。輸出指令的執(zhí)行是具體操作的動作,但這種執(zhí)行動作與輸入指令的存續(xù)有很大的關(guān)系,輸入指令和輸出指令之間的對應(yīng)關(guān)系是非常明確的,即梯級條件會決定輸出指令的執(zhí)行狀況。第5頁/共165頁3.1.2梯形圖LD2.梯級運(yùn)行條件梯形圖的并列分支層數(shù)沒有限制。圖3-3顯示的是一個5層并列分支,第一層分支是主梯級,后面跟著4個附加分支。第6頁/共165頁3.1.2梯形圖LD梯形圖嵌套的分支最多可以為6層。圖3-4顯示的是一個嵌套分支情況,底部輸出指令在一個3層深度的嵌套分支上。第7頁/共165頁3.1.2梯形圖LD3.梯級預(yù)掃描和后掃描(1)預(yù)掃描預(yù)掃描的執(zhí)行條件是:

程序從編程狀態(tài)切換至運(yùn)行狀態(tài);

從上電狀態(tài)自動切換到運(yùn)行狀態(tài)。預(yù)掃描的主要內(nèi)容包括:

掃描所有的主程序;

掃描所有設(shè)備階段的狀態(tài)程序和預(yù)狀態(tài)程序;

掃描程序和設(shè)備階段的所有子程序,但不會重復(fù)預(yù)掃描;

掃描所有的FOR調(diào)用的子程序;

不按照跳轉(zhuǎn)指令指向的順序;

按照預(yù)掃描方式執(zhí)行的所有指令;

將所有非保持型指令復(fù)位到0狀態(tài);

不刷新輸入數(shù)據(jù),且不輸出數(shù)據(jù)。第8頁/共165頁3.1.2梯形圖LD(2)后掃描后掃描的執(zhí)行條件是:

當(dāng)MCR指令結(jié)束區(qū)域控制時;

當(dāng)設(shè)備階段的狀態(tài)程序轉(zhuǎn)向下一個狀態(tài)時;

當(dāng)SFC步的轉(zhuǎn)換條件成立,離開激活步時。后掃描的主要內(nèi)容包括:

掃描條件不成立的MCR區(qū)域;

掃描所有未激活的設(shè)備階段狀態(tài)程序;

掃描所有未激活的SFC步;

按照后掃描方式執(zhí)行的所有指令;

每個梯級都被掃描,但梯級條件永遠(yuǎn)不成立;

將所有非保持型指令復(fù)位到0狀態(tài);

刷新輸入數(shù)據(jù),但有可能被梯級條件否認(rèn);

輸出虛擬數(shù)據(jù)。第9頁/共165頁3.1.2梯形圖LD4.?dāng)?shù)據(jù)刷新時間與程序執(zhí)行的關(guān)系傳統(tǒng)PLC的工作周期由輸入掃描、程序掃描、輸出掃描三個階段組成。輸入掃描刷新所有的輸入映像表;程序掃描則根據(jù)最新輸入數(shù)據(jù),按照編制好的梯形圖邏輯執(zhí)行,產(chǎn)生控制結(jié)果,即刷新輸出映像表;輸出掃描刷新所有的輸出模塊。在這個過程中,輸入數(shù)據(jù)是不發(fā)生改變的。

5.梯形圖編程的主要側(cè)重點(diǎn)

連續(xù)的操作或沒有順序的多個操作并列執(zhí)行;

布爾量或位操作,可簡單使用繼電器指令;

綜合復(fù)雜的邏輯操作;

信息處理或通信處理(MSG指令);

解決生產(chǎn)現(xiàn)場機(jī)器的聯(lián)鎖關(guān)系,充分體現(xiàn)明確的邏輯關(guān)系;

維護(hù)維修人員的操作可能檢查出機(jī)器或生產(chǎn)過程的故障;

伺服控制,可明確運(yùn)動控制指令的執(zhí)行順序。

第10頁/共165頁3.1.3結(jié)構(gòu)文本ST1.賦值語句(Assignment)賦值語句的語法如下:Tag:=Expression;標(biāo)簽數(shù)據(jù)類型必須為BOOL、SINT、INT、DINT、REAL類型。2.表達(dá)式(Expression)表達(dá)式可以包括以下內(nèi)容:

用于存儲數(shù)值的標(biāo)簽名,即變量;

立即數(shù),即常數(shù);

函數(shù);

運(yùn)算符。第11頁/共165頁3.1.3結(jié)構(gòu)文本ST運(yùn)算符的運(yùn)算優(yōu)先級如表3-1所示。運(yùn)算優(yōu)先級運(yùn)

符1()2函數(shù)()3**指數(shù)(x的y次冪)4-(取反)5NOT6*、/、MOD7+、-(減)8<、≤、>、≥9=、<>10&、AND11XOR12OR第12頁/共165頁3.1.3結(jié)構(gòu)文本ST3.指令(Instruction)指令是一個標(biāo)準(zhǔn)語句,使用圓括號包含其操作數(shù)。根據(jù)指令的不同類型,運(yùn)行時,指令可以產(chǎn)生一個或多個數(shù)值。指令在每次被掃描且結(jié)構(gòu)條件為真時執(zhí)行,如果結(jié)構(gòu)條件為假,就不執(zhí)行該結(jié)構(gòu)內(nèi)的語句。4.結(jié)構(gòu)(Construct)

IF…THEN當(dāng)特定條件發(fā)生時,執(zhí)行操作。

CASE…OF根據(jù)數(shù)值選擇執(zhí)行的操作。

FOR…DO根據(jù)指定的次數(shù)重復(fù)執(zhí)行操作,然后再執(zhí)行其他操作。

WHILE…DO當(dāng)條件為真時,重復(fù)執(zhí)行操作。

REPEAT…UNTIL直到條件為真,否則重復(fù)執(zhí)行操作。第13頁/共165頁3.1.3結(jié)構(gòu)文本ST5.注釋(Comment)當(dāng)添加注釋內(nèi)容時,使用的注釋格式是:(*注釋內(nèi)容*)

或/*注釋內(nèi)容*/當(dāng)添加的注釋內(nèi)容是單獨(dú)一行時,使用的注釋格式是://注釋內(nèi)容6.結(jié)構(gòu)文本編程的主要側(cè)重點(diǎn)

復(fù)雜的非常規(guī)算術(shù)運(yùn)算;

專用數(shù)組或循環(huán)處理表格,其他編程方式不能處理的數(shù)組和表格;

ASCII字符串處理或協(xié)議處理,適用于文字表達(dá)的模式。第14頁/共165頁3.1.4功能塊圖FBD功能塊編程主要用于過程控制,側(cè)重于以下應(yīng)用范圍:

連續(xù)過程,功能塊組態(tài)連接信息流向,使控制具有連續(xù)性;

驅(qū)動控制,專用于驅(qū)動控制要求;

閉環(huán)控制,專用于較復(fù)雜的閉環(huán)控制要求;

流量計算,專用的累加器功能塊滿足控制要求。第15頁/共165頁3.1.5順序功能圖SFC順序功能圖編程主要用于工藝步驟分明的控制要求,側(cè)重于以下應(yīng)用范圍:

多個操作的高水平管理,嚴(yán)格控制執(zhí)行步驟;

反復(fù)的操作順序,可反復(fù)掃描活動步的執(zhí)行邏輯;

大量重復(fù)操作的批量處理;

運(yùn)行控制順序(具有內(nèi)嵌結(jié)構(gòu)語句的功能塊),準(zhǔn)確協(xié)調(diào)執(zhí)行順序;

控制機(jī)械操作進(jìn)程狀態(tài)。第16頁/共165頁3.2數(shù)據(jù)描述與數(shù)據(jù)類型3.2.1數(shù)據(jù)描述數(shù)據(jù)是計算機(jī)所表示的信息總稱,它可以分為數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)兩種。數(shù)值數(shù)據(jù)包括整數(shù)、小數(shù),既可以是正數(shù),也可以是負(fù)數(shù)。數(shù)據(jù)以某種特定的形式存在,數(shù)據(jù)類型決定了數(shù)據(jù)的屬性。不同的數(shù)據(jù)之間往往還存在某些聯(lián)系。數(shù)據(jù)類型為數(shù)據(jù)說明數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)格式、數(shù)據(jù)行為等,用于定義標(biāo)簽使用的數(shù)據(jù)位、字節(jié)或字的個數(shù)。第17頁/共165頁3.2.2數(shù)據(jù)類型1.基本數(shù)據(jù)類型(1)基本數(shù)據(jù)類型二進(jìn)制格式的數(shù)據(jù)類型是指單一數(shù)據(jù)類型。一個二進(jìn)制格式的數(shù)據(jù)由一位或者多位組成,其中的每一位都用兩個基數(shù)(0或1)表示。數(shù)據(jù)的大小由其位數(shù)決定,如圖3-5所示。第18頁/共165頁3.2.2數(shù)據(jù)類型單個的十進(jìn)制數(shù)需要用4位二進(jìn)制數(shù)進(jìn)行編碼,為了用BCD碼表示十進(jìn)制數(shù)的0~9,使用與二進(jìn)制數(shù)相同的表示方法,如圖3-6所示。第19頁/共165頁3.2.2數(shù)據(jù)類型例如,對十進(jìn)制數(shù)“2

350”用16位編碼,如表3-2所示。十進(jìn)制數(shù)(2

350)2350二進(jìn)制數(shù)0010001101010000例如,對十進(jìn)制數(shù)“58

293

016”用32位格式編碼,如表3-3所示。十進(jìn)制數(shù)(58

293

016)58293016二進(jìn)制數(shù)01011000001010010011000000010110第20頁/共165頁3.2.2數(shù)據(jù)類型ControlLogixPLC系統(tǒng)的基本數(shù)據(jù)類型如表3-4所示。類

型名

稱格式(位)數(shù)

據(jù)

圍BOOL布爾10~1SINT短整數(shù)8-128~+127INT整數(shù)16-32

768~+32

767DINT長整數(shù)32-2

147

483

648~+2

147

483

647REAL實(shí)數(shù)32-3.4×10-38~-1.17×10+38(負(fù)數(shù));1.17×10+38~3.4×10+38(正數(shù))第21頁/共165頁3.2.2數(shù)據(jù)類型例如,1

024可以表示為1.024E3。實(shí)數(shù)占用存儲器的2個字,最高位是符號位,其余的位代表指數(shù)和尾數(shù)。浮點(diǎn)數(shù)為1.m×2e,其存儲結(jié)構(gòu)如圖3-7所示。第22頁/共165頁3.2.2數(shù)據(jù)類型ControlLogix

PLC系統(tǒng)數(shù)據(jù)處理和傳送的基本單元是32位。當(dāng)數(shù)據(jù)類型為BOOL、SINT、INT,被分配給一個標(biāo)簽時,控制器仍然占了一個完整的4字節(jié)DINT,剩余部分則被閑置,如圖3-8所示。第23頁/共165頁3.2.2數(shù)據(jù)類型(2)基本數(shù)據(jù)類型的優(yōu)點(diǎn)

名稱是獨(dú)立的;

標(biāo)簽的數(shù)量沒有限制;

標(biāo)簽編輯器(EditTags)和數(shù)據(jù)監(jiān)視(MonitorTags)可以任意選擇標(biāo)簽并顯示任何參數(shù);

允許在標(biāo)簽編輯器和數(shù)據(jù)監(jiān)視中按字母排序顯示;

標(biāo)簽及其他的位都可以支持別名;

在線編程時可以增加。(3)基本數(shù)據(jù)類型的注意點(diǎn)

每個標(biāo)簽都要消耗4字節(jié);

需要消耗較多的通信管理和控制器內(nèi)存;

在線時不可以改變標(biāo)簽的數(shù)據(jù)類型。第24頁/共165頁3.2.2數(shù)據(jù)類型2.結(jié)構(gòu)數(shù)據(jù)類型(1)系統(tǒng)預(yù)定義結(jié)構(gòu)數(shù)據(jù)類型①I/O模塊組態(tài)時產(chǎn)生的I/O數(shù)據(jù)。②功能塊(過程控制)的數(shù)據(jù)結(jié)構(gòu)。③系統(tǒng)組態(tài)信息和狀態(tài)信息。(2)自定義結(jié)構(gòu)數(shù)據(jù)類型①字符串自定義數(shù)據(jù)結(jié)構(gòu)。②用戶自定義數(shù)據(jù)結(jié)構(gòu)UDF。③AOI自定義指令。第25頁/共165頁3.2.2數(shù)據(jù)類型3.?dāng)?shù)組(1)數(shù)組類型數(shù)組是同一數(shù)據(jù)類型的連續(xù)分布的集合,可由基本數(shù)據(jù)類型和結(jié)構(gòu)數(shù)據(jù)類型構(gòu)成。(2)數(shù)組類型和結(jié)構(gòu)數(shù)據(jù)類型的優(yōu)點(diǎn)

允許特定的名稱和用戶自定義的結(jié)構(gòu);

在控制器中固定信息;

控制器內(nèi)存占用沖突得到解決,且通信時間得到優(yōu)化;

能夠動態(tài)地索引數(shù)組;

在線編程可以創(chuàng)建新數(shù)組。第26頁/共165頁3.2.2數(shù)據(jù)類型(3)數(shù)組類型和結(jié)構(gòu)數(shù)據(jù)類型的注意點(diǎn)

每個用戶自定義的結(jié)構(gòu)或數(shù)組限于2MB;

用戶自定義的結(jié)構(gòu)充滿32位整倍數(shù)的空間;

數(shù)組中的數(shù)據(jù)元素只能被基本標(biāo)簽指向;

標(biāo)簽編輯器(EditTags)和數(shù)據(jù)監(jiān)視(MonitorTags)的篩選有限;

只有在離線時才能創(chuàng)建或改變結(jié)構(gòu)數(shù)據(jù)類型和數(shù)組類型的結(jié)構(gòu);

在結(jié)構(gòu)里面的數(shù)組只可以是一維數(shù)組;

用戶自定義結(jié)構(gòu)的子元素不能超過500個,如果需要更多,可以采用嵌套的形式,即子元素本身就是自定義結(jié)構(gòu);

要用于通信的用戶自定義結(jié)構(gòu)也有限制,Produce/Consume的標(biāo)簽,通過背板的不超過500B,通過ControlNet網(wǎng)絡(luò)的不超過480B;

I/O數(shù)據(jù)要放入結(jié)構(gòu)中,只能使用COP指令,注意數(shù)據(jù)類型要保持一致,以避免數(shù)據(jù)轉(zhuǎn)換;

當(dāng)需要在程序開始時將輸入數(shù)據(jù)裝載在結(jié)構(gòu)數(shù)據(jù)中,在程序結(jié)束時將結(jié)構(gòu)數(shù)據(jù)裝載到輸出數(shù)據(jù)中,這時,要用合適的指令把數(shù)據(jù)裝載到結(jié)構(gòu)數(shù)據(jù)里,單一的位用XIC指令和OTE指令,連續(xù)的位用BTD指令,單一的量用COP指令,連續(xù)的量用CPS指令。第27頁/共165頁3.2.2數(shù)據(jù)類型4.不同數(shù)據(jù)類型的內(nèi)存占用和時間消耗情況對比例如,在1756-L63控制器中執(zhí)行一條ADD指令,使用不同數(shù)據(jù)類型的消耗情況如表3-5所示。使

況SINTINTDINTREAL獨(dú)立建立標(biāo)簽耗用內(nèi)存(B)4444用戶自定義標(biāo)簽的子元素耗用內(nèi)存(B)1244ADD指令執(zhí)行用于訪問的內(nèi)存(B)2362602844L63控制器執(zhí)行ADD指令耗用時間(ms)3.313.490.261.45第28頁/共165頁3.3數(shù)據(jù)結(jié)構(gòu)3.3.1ControlLogix控制器程序文件結(jié)構(gòu)Logix5000控制器實(shí)時多任務(wù)系統(tǒng)內(nèi)核圖如圖3-9所示。第29頁/共165頁3.3.1ControlLogix控制器程序文件結(jié)構(gòu)1.任務(wù)

連續(xù)型任務(wù)是指周而復(fù)始執(zhí)行的任務(wù),在后臺運(yùn)行。

周期型任務(wù)是指定時中斷執(zhí)行的邏輯程序,周期性地執(zhí)行任務(wù),必須定義周期時間。執(zhí)行周期默認(rèn)值是10ms,選擇范圍是0.1~2

000ms。

事件觸發(fā)型任務(wù)是指事件觸發(fā)引起的任務(wù)調(diào)用,事件觸發(fā)可以是由外部輸入點(diǎn)變化引起的,如數(shù)字量輸入觸發(fā)或模擬量的新采樣數(shù)據(jù),也可以是由ConsunedTag引起或直接由指令調(diào)用引起的,還可以由運(yùn)動控制狀態(tài)引起。第30頁/共165頁3.3.1ControlLogix控制器程序文件結(jié)構(gòu)例如,項(xiàng)目中有3個任務(wù),分別是1個事件觸發(fā)型任務(wù)、1個周期型任務(wù)、1個連續(xù)型任務(wù),如表3-6所示。任

務(wù)

號任

務(wù)

型執(zhí)

間中斷優(yōu)先級1事件觸發(fā)型任務(wù)2ms52周期型任務(wù)4ms103連續(xù)型任務(wù)24ms最低第31頁/共165頁3.3.1ControlLogix控制器程序文件結(jié)構(gòu)任務(wù)執(zhí)行情況如圖3-10所示。第32頁/共165頁3.3.1ControlLogix控制器程序文件結(jié)構(gòu)2.程序程序是第二層的組織結(jié)構(gòu),由一個數(shù)據(jù)庫和多個子程序組成。每個程序都有一個獨(dú)立的數(shù)據(jù)庫,在這個數(shù)據(jù)庫建立的數(shù)據(jù)標(biāo)簽只能被本程序內(nèi)的子程序引用,而且都是內(nèi)部數(shù)據(jù)。3.子程序子程序是真正的執(zhí)行程序,所有的控制程序都被編寫在子程序中。第33頁/共165頁3.3.1ControlLogix控制器程序文件結(jié)構(gòu)4.故障處理子程序和上電程序故障處理子程序一般用來編寫清除故障的恢復(fù)程序。在本程序內(nèi)由于指令執(zhí)行產(chǎn)生的錯誤,或本程序引用的I/O連接故障,都有可能引起停機(jī),定義的故障處理子程序是停機(jī)之前要調(diào)用的子程序,若能在這個子程序中清除可恢復(fù)故障的錯誤代碼,就可以避免停機(jī)。5.刪除子程序、程序和任務(wù)

刪除子程序的所有執(zhí)行代碼;

選定子程序并刪除它們;

刪除程序區(qū)域的所有標(biāo)簽;

選定程序并刪除它們;

最后刪除任務(wù)。第34頁/共165頁3.3.2ControlLogix控制器程序文件規(guī)劃1.任務(wù)確定的原則

大部分執(zhí)行代碼都應(yīng)該放在連續(xù)任務(wù)中;

長時間才操作一次的執(zhí)行代碼或要求時間精確處理的操作,采用周期類型的任務(wù);

特定的事件需要同步執(zhí)行的代碼采用事件觸發(fā)類型的任務(wù),這類任務(wù)每觸發(fā)一次只執(zhí)行一遍;

任務(wù)的個數(shù)不要太多,否則可能導(dǎo)致維護(hù)困難;

為了改善系統(tǒng)性能,有的任務(wù)的輸出處理應(yīng)該取消,不需要執(zhí)行的任務(wù)可以屏蔽。第35頁/共165頁3.3.2ControlLogix控制器程序文件規(guī)劃2.任務(wù)的優(yōu)先級ControlLogix控制器是一個多任務(wù)的處理器,當(dāng)多個任務(wù)同時請求工作時,優(yōu)先級高的任務(wù)先處理??刂破魅蝿?wù)的優(yōu)先級如圖3-11所示。第36頁/共165頁3.3.2ControlLogix控制器程序文件規(guī)劃不同優(yōu)先級的任務(wù)執(zhí)行時相互中斷的過程如圖3-12所示。第37頁/共165頁3.3.3系統(tǒng)高層管理1.系統(tǒng)高層管理的作用ControlLogix系統(tǒng)高層管理時間主要是耗費(fèi)在信息通信和后臺任務(wù)的時間。這里的信息通信不是在I/O組態(tài)中預(yù)先設(shè)定的,而是外部訪問的通信。例如,外部另一個控制器發(fā)出的MSG指令,只有在周期任務(wù)和事件中斷任務(wù)都不能執(zhí)行的情況下,信息通信才可以進(jìn)行。2.系統(tǒng)高層管理的主要內(nèi)容

控制器與編程終端和人機(jī)界面的通信;

控制器發(fā)出的MSG指令;

控制器響應(yīng)外部的MSG指令;

串口信息和指令處理(如ASCII碼)。第38頁/共165頁3.3.3系統(tǒng)高層管理系統(tǒng)高層管理和執(zhí)行代碼掃描的工作是同一個CPU實(shí)現(xiàn)的,如何分配這兩者之間的工作關(guān)系,如圖3-13所示。第39頁/共165頁3.3.4ControlLogix控制器數(shù)據(jù)文件結(jié)構(gòu)1.控制器的數(shù)據(jù)區(qū)域

全局?jǐn)?shù)據(jù)區(qū)域,又稱為控制器數(shù)據(jù)區(qū)域,它含有全部的對外數(shù)據(jù)和公用的內(nèi)部數(shù)據(jù),其數(shù)據(jù)可被控制器內(nèi)所有的子程序引用。

程序數(shù)據(jù)區(qū)域,全部為內(nèi)部數(shù)據(jù),其數(shù)據(jù)只能被本程序內(nèi)的子程序引用。各程序之間的數(shù)據(jù)區(qū)域是隔離的,以防止標(biāo)簽命名的沖突。2.?dāng)?shù)據(jù)庫標(biāo)簽建立的基本原則

盡可能短地建立描述性的標(biāo)簽名稱;

標(biāo)簽名稱存放在控制器中,并且要占用內(nèi)存空間;

每個字符使用一字節(jié)的控制器內(nèi)存,每個標(biāo)簽耗用的字節(jié)都是4字節(jié)的整數(shù)倍,如標(biāo)簽實(shí)際使用了10字節(jié),但將耗用12字節(jié)的內(nèi)存空間;

使用結(jié)構(gòu)數(shù)據(jù),將節(jié)省標(biāo)簽的數(shù)目和尺寸大??;

程序上傳可以帶回標(biāo)簽的名稱,但沒有注釋。第40頁/共165頁3.4應(yīng)用程序的結(jié)構(gòu)3.4.1程序循環(huán)執(zhí)行CPU的循環(huán)掃描包括3個主要部分:(1)CPU檢查輸入信號的狀態(tài)并刷新過程映像輸入表;(2)執(zhí)行用戶程序;(3)把過程映像輸出表的值寫到輸出模塊。第41頁/共165頁3.4.2應(yīng)用程序結(jié)構(gòu)設(shè)計應(yīng)用程序結(jié)構(gòu)設(shè)計通常有3種方法:線性化編程、模塊化編程和結(jié)構(gòu)化編程,如圖3-14所示。第42頁/共165頁3.4.2應(yīng)用程序結(jié)構(gòu)設(shè)計1.線性化編程對于線性化編程,在設(shè)計一個控制過程時,采用線性化編程的步驟如下:(1)描述過程的具體任務(wù);(2)把任務(wù)分解成輸入任務(wù)和輸出任務(wù);(3)確定每個任務(wù)的輸入和輸出;(4)編制每個任務(wù)的程序,直到完成所有的任務(wù)。2.模塊化編程模塊化編程是把程序分成若干個程序塊,每個程序塊含有一些設(shè)備和任務(wù)的邏輯指令。主程序中的指令決定控制程序模塊的執(zhí)行。模塊化程序段控制不同的過程任務(wù),這些塊相當(dāng)于主循環(huán)程序的子程序。第43頁/共165頁3.4.2應(yīng)用程序結(jié)構(gòu)設(shè)計3.結(jié)構(gòu)化編程【例3.1】食品加工工藝。在選擇產(chǎn)品添加劑時,需要決定哪個罐的成分加到混合罐內(nèi)。由于罐的控制具有相似特點(diǎn),可以建立一個任務(wù),用于選擇產(chǎn)品。在選擇開關(guān)的基礎(chǔ)上,任務(wù)段調(diào)用相應(yīng)的程序塊,分配當(dāng)前的參數(shù),控制混合罐的流入量。解決方案:①建立一個任務(wù)段控制罐的流出量。②為相關(guān)的任務(wù)段建立變量定義表,注意參數(shù)的設(shè)計和地址。③建立一個任務(wù)段,根據(jù)選擇開關(guān)調(diào)用其他任務(wù)段。在結(jié)構(gòu)化編程中,調(diào)用功能的處理與在模塊化編程中一樣。第44頁/共165頁3.4.2應(yīng)用程序結(jié)構(gòu)設(shè)計結(jié)構(gòu)化程序設(shè)計如下:①確定哪些部件和操作應(yīng)用于所有罐和相關(guān)控制中。

②建立任務(wù)段完成所要求的控制。③建立任務(wù)段的變量定義表,以便于對要操作的罐和相關(guān)控制分配地址。④設(shè)計一個程序,根據(jù)選擇開關(guān)調(diào)用任務(wù)段。第45頁/共165頁3.5常用指令系統(tǒng)1.標(biāo)準(zhǔn)常開觸點(diǎn)和標(biāo)準(zhǔn)常閉觸點(diǎn)例如,如果機(jī)器中的常閉觸點(diǎn)不動作,過程表中的信號狀態(tài)為“1”,LD中用“常開觸點(diǎn)”符號檢查信號的“1”狀態(tài),當(dāng)信號狀態(tài)為“0”時,“常閉觸點(diǎn)”的符號提供檢查結(jié)果為“1”,如圖3-15所示。第46頁/共165頁3.5常用指令系統(tǒng)2.位邏輯指令(1)常閉輸入指令XIC常閉輸入指令XIC檢查數(shù)據(jù)位是否為置位狀態(tài),為1時導(dǎo)通,梯級條件成立,如圖3-16所示。(2)常開輸入指令XIO常開輸入指令XIO檢查數(shù)據(jù)位是否為斷開狀態(tài),為0時導(dǎo)通,梯級條件成立,如圖3-17所示。第47頁/共165頁2.位邏輯指令例如,時序圖如圖3-18所示,編寫成梯形圖如圖3-19所示。第48頁/共165頁2.位邏輯指令(3)非保持型使能輸出指令OTE非保持型使能輸出指令OTE置位或清零數(shù)據(jù)位。當(dāng)梯級條件存在時,為1;當(dāng)梯級條件不存在時,為0。其一直與梯級條件保持一致,如圖3-20所示。(4)保持型鎖存輸出指令OTL保持型鎖存輸出指令OTL置位鎖存數(shù)據(jù)位,必須與OUT指令配對使用,通常與ONS指令配合使用。梯級條件只要存在一個掃描周期,位操作數(shù)即被鎖存為1,如圖3-21所示。第49頁/共165頁2.位邏輯指令(5)保持型解鎖存輸出指令OUT保持型解鎖存輸出指令OUT解鎖存清零數(shù)據(jù)位,一般與OTL指令配對使用,通常與ONS指令配合使用。單獨(dú)使用時,常用做復(fù)位狀態(tài)鎖存位。梯級條件只要存在一個掃描周期,位操作數(shù)即被解鎖存為0,如圖3-22所示。第50頁/共165頁2.位邏輯指令(6)單脈沖觸發(fā)指令ONS單脈沖觸發(fā)指令ONS、上升沿觸發(fā)指令OSR、OSF都是這樣的一次啟動有效型指令。ONS指令不能單獨(dú)使用,必須跟在某個梯級條件之后,梯級條件前沿觸發(fā)后保持一個掃描周期,且存儲已觸發(fā)狀態(tài),直到梯級條件復(fù)位,存儲位也隨即復(fù)位為0。ONS指令的作用相當(dāng)于硬件電路中的微分電路,ONS指令時序圖如圖3-23所示。第51頁/共165頁2.位邏輯指令(7)上升沿觸發(fā)指令OSR上升沿觸發(fā)指令OSR根據(jù)存儲位的狀態(tài)置位或清零輸出位。這是一條輸出指令,當(dāng)梯級條件成立時觸發(fā),即上升沿觸發(fā),設(shè)置輸出位。OSR指令圖如圖3-24所示。第52頁/共165頁2.位邏輯指令指令時序圖如圖3-25所示。第53頁/共165頁2.位邏輯指令(8)下降沿觸發(fā)指令OSF下降沿觸發(fā)指令OSF是與OSR指令對應(yīng)的輸出指令,當(dāng)梯級條件消失時觸發(fā),即下降沿觸發(fā),設(shè)置輸出位。OSF指令圖如圖3-26所示。第54頁/共165頁2.位邏輯指令指令時序圖如圖3-27所示。第55頁/共165頁2.位邏輯指令(9)按位與指令A(yù)ND按位與指令A(yù)ND將輸入值A(chǔ)和輸入值B進(jìn)行按位與運(yùn)算,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-28所示。第56頁/共165頁2.位邏輯指令(10)按位或指令OR按位或指令OR將輸入值A(chǔ)和輸入值B進(jìn)行按位或運(yùn)算,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-29所示。第57頁/共165頁2.位邏輯指令(11)按位非指令NOT按位非指令NOT將輸入值A(chǔ)和輸入值B進(jìn)行按位非運(yùn)算,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-30所示。第58頁/共165頁2.位邏輯指令先串聯(lián)后并聯(lián)的程序結(jié)構(gòu)如圖3-31所示。其特點(diǎn)是觸點(diǎn)組先串聯(lián),再將整個觸點(diǎn)組和其他觸點(diǎn)或觸點(diǎn)組并聯(lián)。先并聯(lián)后串聯(lián)的程序結(jié)構(gòu)如圖3-32所示。其特點(diǎn)與先串聯(lián)后并聯(lián)的次序正好相反。第59頁/共165頁2.位邏輯指令(12)按位異或指令XOR按位異或指令XOR將輸入值A(chǔ)和輸入值B進(jìn)行按位異或運(yùn)算,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。指令如表3-7所示。輸入值A(chǔ)輸入值B輸出值Dest000011101110第60頁/共165頁2.位邏輯指令梯形圖的表示形式如圖3-33所示。第61頁/共165頁3.計時器指令(1)非保持型延時導(dǎo)通計時器指令TON非保持型延時導(dǎo)通計時器指令TON是最常用的指令之一,主要用以延時或定時,如圖3-34所示。第62頁/共165頁3.計時器指令當(dāng)梯級輸入條件為真(導(dǎo)通)時,指令使能,開始計時,直到累加器值(.ACC)大于等于預(yù)置值(.PRE);當(dāng)梯級輸入條件消失(斷開)時,指令未使能,累加器(ACC)復(fù)位,所有狀態(tài)位復(fù)位,利用狀態(tài)位DN作為梯級條件,令其自復(fù)位,計時器循環(huán)進(jìn)行,從而產(chǎn)生定時工作脈沖。時序圖如圖3-35所示。第63頁/共165頁3.計時器指令執(zhí)行邏輯如圖3-36所示。第64頁/共165頁3.計時器指令(2)非保持型延時斷開計時器指令TOF非保持型延時斷開計時器指令TOF對應(yīng)于TON指令,是滿足負(fù)邏輯關(guān)系的計時器指令,當(dāng)梯級輸入條件為假時,開始累計。不但梯級條件要求負(fù)邏輯,動作DN也是負(fù)邏輯,如圖3-37所示。第65頁/共165頁3.計時器指令當(dāng)梯級輸入條件為假(斷開)時,指令使能,開始計時,直到累加器值(.ACC)大于等于預(yù)置值(.PRE);當(dāng)梯級輸入條件消失(導(dǎo)通)時,指令未使能,累加器(ACC)復(fù)位,所有狀態(tài)位復(fù)位。時序圖如圖3-38所示。第66頁/共165頁3.計時器指令執(zhí)行邏輯如圖3-39所示。第67頁/共165頁3.計時器指令(3)保持型延時導(dǎo)通計時器指令RTO保持型延時導(dǎo)通計時器指令RTO多用于時間累加,尤其是梯級條件間斷型的時間累加,因?yàn)楫?dāng)梯級條件消失時,只復(fù)位狀態(tài)位,累加值不復(fù)位。當(dāng)梯級條件再次成立時,累加值會在原來累加值的基礎(chǔ)上繼續(xù)累加。復(fù)位RTO指令可用RES指令實(shí)現(xiàn),如圖3-40所示。第68頁/共165頁3.計時器指令當(dāng)梯級條件成立(導(dǎo)通)時,指令使能,開始計時;當(dāng)梯級條件消失(斷開)時,指令未使能,累加值(.ACC)不復(fù)位,所有狀態(tài)位復(fù)位。時序圖如圖3-41所示。第69頁/共165頁4.計數(shù)器指令(1)加計數(shù)器指令CTU加計數(shù)器指令CTU,梯級條件跳變一次,CU被使能一次,累加值增加1,無論計數(shù)器狀態(tài)位(完成位DN或上溢出位OV)是什么狀態(tài),都不會影響加計數(shù),即計數(shù)器的計數(shù)只能通過梯級條件的跳變實(shí)現(xiàn),不受計數(shù)器狀態(tài)位的影響,如圖3-42所示。第70頁/共165頁4.計數(shù)器指令如果指令被使能時CU位是清零狀態(tài),則CTU指令使計數(shù)累加值加1;如果指令被使能時CU位是置位狀態(tài),或指令被禁止,則CTU指令保持累加值(.ACC)不變。時序圖如圖3-43所示。第71頁/共165頁4.計數(shù)器指令執(zhí)行邏輯如圖3-44所示。第72頁/共165頁4.計數(shù)器指令(2)減計數(shù)器指令CTD減計數(shù)器指令CTD,梯級條件跳變一次,CD被使能一次,累加值減1,無論計數(shù)器狀態(tài)位(完成位DN或下溢出位UN)是什么狀態(tài),都不會影響減計數(shù),如圖3-45所示。第73頁/共165頁4.計數(shù)器指令執(zhí)行邏輯如圖3-46所示。第74頁/共165頁4.計數(shù)器指令如果要實(shí)現(xiàn)雙向計數(shù)功能,可以同時使用加計數(shù)器指令CTU和減計數(shù)器指令CTD,兩條指令使用同一個計數(shù)器結(jié)構(gòu)體,修改同一個標(biāo)簽的數(shù)據(jù)元素ACC,如圖3-47所示。第75頁/共165頁4.計數(shù)器指令例如,一條食品生產(chǎn)車間的傳輸帶將食品送進(jìn)包裝箱內(nèi),每傳輸進(jìn)一個食品,Limit_box1就接通一次,計數(shù)器Counter的累加值加1;每傳輸出一個食品,Limit_box2就接通一次,計數(shù)器Counter的累加值減1。如果有包裝箱內(nèi)已有100個食品,Counter.DN被置位,則Conveyor接通,傳輸帶停止傳輸食品,如圖3-48所示。第76頁/共165頁4.計數(shù)器指令(3)復(fù)位指令RES復(fù)位指令RES可以將保持型指令RTO、RTU、CTU的結(jié)構(gòu)體數(shù)據(jù)TIMER、COUNTER和數(shù)組操作結(jié)構(gòu)體數(shù)據(jù)CONTROL復(fù)位。復(fù)位指令RES不僅將累加器值復(fù)位,而且將結(jié)構(gòu)體的狀態(tài)位都復(fù)位。通常在程序的最后安排復(fù)位指令RES。第77頁/共165頁5.比較指令(1)單一比較指令①等于比較指令EQU。②不等于比較指令NEQ。③大于比較指令GRT。④大于等于比較指令GEQ。⑤小于比較指令LES。⑥小于等于比較指令LEQ。(2)表達(dá)式比較指令表達(dá)式比較指令CMP是復(fù)合式比較指令,用于比較表達(dá)式中指定的算術(shù)運(yùn)算。指令的表達(dá)式可以是運(yùn)算符、立即數(shù)和標(biāo)簽。如果表達(dá)式比較復(fù)雜,可以使用圓括號。第78頁/共165頁5.比較指令(3)屏蔽比較指令屏蔽比較指令MEQ通過屏蔽字,位對位地比較兩個數(shù)據(jù),屏蔽字可以是地址,也可以是立即數(shù),立即數(shù)的默認(rèn)值是十進(jìn)制數(shù),如果要改用其他數(shù)制,則在數(shù)字前加相應(yīng)的前綴16#、8#、2#。MEQ結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位:BOOL數(shù)據(jù)類型,置位狀態(tài)表示指令被使能。

源值(Source):DINT數(shù)據(jù)類型,要與參考值進(jìn)行比較的數(shù)值。

屏蔽值(Mask):DINT數(shù)據(jù)類型,定義要屏蔽的位。

參考值(Compare):DINT數(shù)據(jù)類型,要與源值進(jìn)行比較的數(shù)值。

輸出值(Dest):BOOL數(shù)據(jù)類型,表示指令執(zhí)行的輸出結(jié)果。第79頁/共165頁5.比較指令例如,兩個數(shù)值Value1和Value2,通過屏蔽后,如果相等,則置位Light,燈亮;如果不相等,則清零Light,燈滅。示意圖如圖3-49所示。第80頁/共165頁5.比較指令梯形圖如圖3-50所示。第81頁/共165頁5.比較指令(4)極限比較指令極限比較指令LIM檢測被測數(shù)據(jù)是否在上限和下限之間。當(dāng)下限值小于上限值時,如果被測數(shù)據(jù)在范圍之內(nèi),則梯級條件為真;如果被測數(shù)據(jù)在范圍之外,則梯級條件為假。第82頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(1)加法指令A(yù)DD加法指令A(yù)DD將輸入值相加,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-51所示。第83頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(2)減法指令SUB減法指令SUB從SourceA的值中減去SourceB的值,并輸出結(jié)果。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-52所示。第84頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(3)乘法指令MUL乘法指令MUL將輸入值相乘,并將結(jié)果傳給輸出Dest。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-53所示。第85頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(4)除法指令DIV除法指令DIV用輸入值SourceA除以SourceB的值,并將結(jié)果傳給輸出Dest。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-54所示。第86頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(5)求模指令MOD求模指令MOD計算輸入值SourceA除以SourceB的余數(shù),并將計算結(jié)果的余數(shù)傳給輸出Dest。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-55所示。第87頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(6)平方根指令SQR平方根指令SQR計算輸入值Source的平方根,并將計算結(jié)果傳給輸出Dest。輸入值和輸出值的數(shù)據(jù)類型必須是一致的。梯形圖的表示形式如圖3-56所示。第88頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(7)取負(fù)值指令NEG取負(fù)值指令NEG改變輸入值的符號,并將結(jié)果傳給輸出Dest。梯形圖的表示形式如圖3-57所示。第89頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令(8)正弦函數(shù)指令SIN正弦函數(shù)指令SIN用于計算角度的正弦值,結(jié)果存儲到Dest中。(9)余弦函數(shù)指令COS余弦函數(shù)指令COS用于計算角度的余弦值,結(jié)果存儲到Dest中。(10)綜合計算指令CPT綜合計算指令CPT用于計算表達(dá)式中指定的算術(shù)運(yùn)算。指令表達(dá)式的長度沒有限制,如果表達(dá)式比較復(fù)雜,可以使用圓括號。第90頁/共165頁6.基本數(shù)學(xué)運(yùn)算指令例如,當(dāng)指令使能時,用CPT指令計算(Value13)/(Value2/5)的值,如圖3-58所示。第91頁/共165頁7.傳輸指令和邏輯指令(1)傳輸指令MOV傳輸指令MOV復(fù)制輸入數(shù)值到Dest,源輸入數(shù)值保持不變。(2)位域分配指令BTD位域分配指令BTD復(fù)制輸入數(shù)值中的指定位,傳送到指定位置,實(shí)現(xiàn)數(shù)據(jù)單元的移動。如果傳輸位字段超出目標(biāo)長度,不保存超出位。例如,當(dāng)指令使能時,用BTD指令傳輸Source值到Dest,如圖3-59所示。第92頁/共165頁7.傳輸指令和邏輯指令指令將Source的值從第3位開始的10個位傳輸?shù)紻est,如圖3-60中,陰影部分表示被改變的值。第93頁/共165頁8.?dāng)?shù)組綜合指令(1)文件算術(shù)與邏輯指令FAL結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示FAL指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,該位置位表示指令已經(jīng)處理完最后的元素(.POS=.LEN)。

錯誤位(.ER):BOOL數(shù)據(jù)類型,置位該位表示計算表達(dá)式時發(fā)生溢出。

長度值(.LEN):DINT數(shù)據(jù)類型,指定FAL指令操作的數(shù)組內(nèi)元素的數(shù)量。

位置值(.POS):DINT數(shù)據(jù)類型,指定指令正在訪問的當(dāng)前元素的位置。第94頁/共165頁8.?dāng)?shù)組綜合指令①整體模式。整體模式是在繼續(xù)執(zhí)行下一條指令前對數(shù)組內(nèi)所有的指定元素進(jìn)行的操作。這個操作從指令所在梯級的輸入條件由假變換為真時開始。該模式一般用于數(shù)組對數(shù)組的操作,如圖3-61所示。第95頁/共165頁8.?dāng)?shù)組綜合指令結(jié)構(gòu)體尋址狀態(tài)位和操作指令之間的時序關(guān)系如圖3-62所示,當(dāng)指令完成時,完成位(.DN)被置位。第96頁/共165頁8.?dāng)?shù)組綜合指令執(zhí)行過程如圖3-63所示。第97頁/共165頁8.?dāng)?shù)組綜合指令②數(shù)值模式。數(shù)值模式把對數(shù)組的操作分配給多個掃描周期。這個操作從指令所在梯級的輸入條件由假變換為真時開始。一旦被觸發(fā),則指令每次被掃描都執(zhí)行,且經(jīng)過多次掃描指令才能完成對整個數(shù)組的操作。該模式一般用于數(shù)據(jù)量較大的操作或?qū)r間要求不是很嚴(yán)格的應(yīng)用,如圖3-64所示。第98頁/共165頁8.?dāng)?shù)組綜合指令結(jié)構(gòu)體尋址狀態(tài)位和操作指令之間的時序關(guān)系如圖3-65所示,當(dāng)指令完成時,完成位(.DN)被置位。第99頁/共165頁8.?dāng)?shù)組綜合指令執(zhí)行過程如圖3-66所示。第100頁/共165頁8.?dāng)?shù)組綜合指令③增量模式。增量模式是當(dāng)每次指令所在梯級輸入條件由假變?yōu)檎鏁r,只處理數(shù)組內(nèi)的一個元素,一般用于數(shù)組對元素的操作,如圖3-67所示。第101頁/共165頁8.?dāng)?shù)組綜合指令結(jié)構(gòu)體尋址狀態(tài)位和操作指令之間的時序關(guān)系如圖3-68所示,只有當(dāng)梯級的輸入條件由假變?yōu)檎鏁r,指令才執(zhí)行一次,每執(zhí)行一次,只處理數(shù)組內(nèi)的一個元素。第102頁/共165頁8.?dāng)?shù)組綜合指令執(zhí)行過程如圖3-69所示。第103頁/共165頁8.?dāng)?shù)組綜合指令(2)文件搜索與比較指令FSC文件搜索與比較指令FSC用于逐個比較數(shù)組內(nèi)的元素。結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示FSC指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,該位置位表示指令已經(jīng)處理完最后的元素(.POS=.LEN)。

錯誤位(.ER):BOOL數(shù)據(jù)類型,表示出現(xiàn)錯誤。

禁止位(.IN):BOOL數(shù)據(jù)類型,表示檢測到一個為真的比較,必須清零該位,才能繼續(xù)比較。

發(fā)現(xiàn)位(.FD):BOOL數(shù)據(jù)類型,表示檢測到一個為真的比較。

長度值(.LEN):DINT數(shù)據(jù)類型,指定FAL指令操作的數(shù)組內(nèi)元素的數(shù)量。

位置值(.POS):DINT數(shù)據(jù)類型,指定指令正在訪問的當(dāng)前元素的位置。第104頁/共165頁8.?dāng)?shù)組綜合指令(3)文件復(fù)制指令COP與文件同步復(fù)制指令CPS文件復(fù)制指令COP與文件同步復(fù)制指令CPS復(fù)制源數(shù)據(jù)值到目標(biāo)值,源數(shù)據(jù)值保持不變。文件復(fù)制指令COP與文件同步復(fù)制指令CPS分別如圖3-70和圖3-71所示。第105頁/共165頁8.?dāng)?shù)組綜合指令圖3-70和圖3-71中,輸入?yún)?shù)Source表示輸入值,Dest存儲輸出結(jié)果,Length表示被復(fù)制到目的標(biāo)簽的元素個數(shù)。第106頁/共165頁8.?dāng)?shù)組綜合指令(4)平均值指令A(yù)VE平均值指令A(yù)VE可以計算一組數(shù)值的平均值。結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示AVE指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,該位置位表示指令已經(jīng)處理完最后的元素(.POS=.LEN)。

錯誤位(.ER):BOOL數(shù)據(jù)類型,置位該位表示指令執(zhí)行時發(fā)生溢出。

長度值(.LEN):DINT數(shù)據(jù)類型,指定AVE指令操作的數(shù)組內(nèi)元素的數(shù)量。

位置值(.POS):DINT數(shù)據(jù)類型,指定指令正在訪問的當(dāng)前元素的位置。第107頁/共165頁8.?dāng)?shù)組綜合指令例如,array_dint是二維數(shù)組DINT[3,4],如圖3-72所示,計算array_dint平均值。指令如圖3-73所示。第108頁/共165頁8.?dāng)?shù)組綜合指令(5)排序指令SRT排序指令SRT可以對數(shù)組內(nèi)的一維數(shù)據(jù)按照升序進(jìn)行排序。結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示SRT指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,置位該位表示指定的數(shù)據(jù)已經(jīng)排序。

錯誤位(.ER):BOOL數(shù)據(jù)類型,置位該位表示長度值(.LEN)<0或位置值(.POS)<0。

長度值(.LEN):DINT數(shù)據(jù)類型,指定SRT指令操作的數(shù)組內(nèi)元素的數(shù)量。

位置值(.POS):DINT數(shù)據(jù)類型,指定指令正在訪問的當(dāng)前元素的位置。第109頁/共165頁8.?dāng)?shù)組綜合指令例如,array_dint是二維數(shù)組DINT[3,4],如圖3-72所示,對array_dint排序,排序指令SRT如圖3-74所示。第110頁/共165頁8.?dāng)?shù)組綜合指令排序指令SRT執(zhí)行后,數(shù)組排序如圖3-75所示。第111頁/共165頁8.?dāng)?shù)組綜合指令(6)元素尺寸指令SIZE元素尺寸指令SIZE用于統(tǒng)計數(shù)組中指定維數(shù)內(nèi)元素的數(shù)量,并將統(tǒng)計結(jié)果存放在操作數(shù)Size內(nèi)。(7)左移位指令BSL和右移位指令BSR移位指令用于改變數(shù)組內(nèi)數(shù)據(jù)的位置,是對存儲器本身內(nèi)容進(jìn)行調(diào)整,操作對象是存儲器內(nèi)的連續(xù)區(qū)域,且必須是雙整數(shù)類型。結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示移位指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,置位該位表示數(shù)組中的位已經(jīng)移動。

卸載位(.UL):BOOL數(shù)據(jù)類型,存儲移出數(shù)組位的狀態(tài)。

錯誤位(.ER):BOOL數(shù)據(jù)類型,置位該位表示長度值(.LEN)<0。

長度值(.LEN):DINT數(shù)據(jù)類型,指定數(shù)組內(nèi)被移動元素的數(shù)量。第112頁/共165頁8.?dāng)?shù)組綜合指令例如,用BSL指令將數(shù)組array_dint的位0開始的10個元素左移一位,如圖3-76所示。第113頁/共165頁8.?dāng)?shù)組綜合指令指令執(zhí)行如圖3-77所示。第114頁/共165頁8.?dāng)?shù)組綜合指令(8)堆棧操作指令LFL、LFU堆棧操作指令LFL、LFU按照先進(jìn)后出的順序存取數(shù)據(jù),必須成對使用,且共用同一個結(jié)構(gòu)體控制文件,對內(nèi)存中的連續(xù)區(qū)域進(jìn)行操作。結(jié)構(gòu)體的尋址狀態(tài)位如下。

使能位(.EN):BOOL數(shù)據(jù)類型,表示堆棧操作指令被使能。

完成位(.DN):BOOL數(shù)據(jù)類型,置位該位表示堆棧已滿。

??瘴唬?EM):BOOL數(shù)據(jù)類型,表示堆??铡?/p>

長度值(.LEN):DINT數(shù)據(jù)類型,表示可容納的最多元素數(shù)量。

位置值(.POS):DINT數(shù)據(jù)類型,指示裝載的下一個數(shù)據(jù)。第115頁/共165頁9.輸入/輸出指令(1)數(shù)據(jù)通信指令MSG數(shù)據(jù)通信指令MSG主要用于控制器以異步的方式讀取網(wǎng)絡(luò)上另一個模塊的數(shù)據(jù)塊。結(jié)構(gòu)體的主要尋址狀態(tài)位如下:

狀態(tài)標(biāo)記(.FLAGS):INT數(shù)據(jù)類型,在16位字內(nèi)存儲狀態(tài)位,如圖3-78所示。第116頁/共165頁9.輸入/輸出指令時序關(guān)系如圖3-79所示。第117頁/共165頁9.輸入/輸出指令MSG指令執(zhí)行過程如圖3-80所示。第118頁/共165頁9.輸入/輸出指令MSG指令執(zhí)行過程的主要錯誤代碼如表3-8所示。主要擴(kuò)展錯誤代碼分別如表3-9和表3-10所示。錯誤代碼(十六進(jìn)制)代碼描述錯誤代碼(十六進(jìn)制)代碼描述1數(shù)據(jù)通信連接失敗,詳見擴(kuò)展錯誤代碼表(見表3-9)13缺命令數(shù)據(jù)2資源不足14屬性不支持3無效數(shù)值15數(shù)據(jù)太多4語法錯誤1A請求數(shù)據(jù)太多5擴(kuò)展?fàn)顟B(tài)溢出1B響應(yīng)數(shù)據(jù)太多6數(shù)據(jù)包空間不足1C缺少屬性列表7連接失敗1D無效屬性列表8服務(wù)類型不支持1E嵌入服務(wù)錯誤9數(shù)據(jù)段錯誤或數(shù)值屬性無效1F連接錯誤A屬性列表錯誤22接收無效應(yīng)答B(yǎng)狀態(tài)已存在25關(guān)鍵數(shù)據(jù)段錯誤C對象模型沖突28DeviceNet錯誤D對象已存在D1模塊不在運(yùn)行狀態(tài)E屬性不可設(shè)置FB通信端口不支持F超出權(quán)限FC數(shù)據(jù)類型不支持10設(shè)備狀態(tài)沖突FD通信未初始化11應(yīng)答不合適FE通信超時12未使用的存儲器單元FF一般錯誤,詳見擴(kuò)展錯誤代碼表(見表3-10)第119頁/共165頁9.輸入/輸出指令(2)讀取系統(tǒng)值GSV指令/設(shè)置系統(tǒng)值SSV指令讀取系統(tǒng)值GSV指令如圖3-81所示。第120頁/共165頁9.輸入/輸出指令設(shè)置系統(tǒng)值SSV指令如圖3-82所示。第121頁/共165頁9.輸入/輸出指令讀取系統(tǒng)值GSV指令/設(shè)置系統(tǒng)值SSV指令可以訪問以下對象:

CONTROLLER,控制器用于通信管理的CPU比值信息;

CONTROLLERDEVICE,控制器模塊產(chǎn)品及狀態(tài)信息;

CST,協(xié)調(diào)系統(tǒng)時間的狀態(tài)及當(dāng)前值信息;

DF1,串口DF1通信協(xié)議信息;

FAULTLOG,控制器主要故障和次要故障信息;

MESSAGE,MSG指令執(zhí)行狀態(tài)信息;

MODULE,模塊的狀態(tài)信息;

MOTIONGROUP,伺服模塊信息;

PROGRAM,程序執(zhí)行信息;

ROUTINE,例程執(zhí)行狀態(tài)信息;

SERIALPORT,串口通信組態(tài)信息;

TASK,任務(wù)執(zhí)行狀態(tài)和組態(tài)信息;

WALLCLOCKTIME,控制器系統(tǒng)日期信息。第122頁/共165頁9.輸入/輸出指令例如,使用讀取系統(tǒng)值GSV指令、設(shè)置系統(tǒng)值SSV指令訪問MESSAGE對象,通過改變ConnectionPath屬性,將數(shù)據(jù)傳輸?shù)讲煌目刂破髦?。MESSAGE對象可以建立和觸發(fā)對等通信。MESSAGE對象屬性如表3-11所示。對象屬性數(shù)據(jù)類型功

能ConnectionPathSINT設(shè)置連接路徑ConnectionRateDINT請求數(shù)據(jù)包的連接速率MessageTypeSINT設(shè)置信息類型,默認(rèn)數(shù)值為0,未初始化PortSINT設(shè)置信息應(yīng)發(fā)送到的端口。數(shù)值為1,表示背板;數(shù)值為2,表示串行口TimeoutMultiplierSINT設(shè)置連接的超時時間和關(guān)閉時間。數(shù)值為0,表示連接超時時間為4倍速率;數(shù)值為1,表示連接超時時間為8倍速率;數(shù)值為2,表示連接超時時間為16倍速率UnconnectedTimeoutDINT設(shè)置未連接數(shù)據(jù)的超時時間,單位為毫秒(ms)第123頁/共165頁9.輸入/輸出指令當(dāng)msg_path為導(dǎo)通狀態(tài)時,將msg_t信息的路徑值設(shè)置為msg_t_path,以將數(shù)據(jù)發(fā)送到不同的控制器。msg_t為要改變屬性的數(shù)據(jù)信息;msg_t_type為信息類型屬性值;tag_ex用于存儲一個0值;msg_t_path用于存儲信息新連接路徑的數(shù)組。IFmsg_pathTHENGSV(MESSAGE,msg_t,MessageType,msg_t_type);SSV(MESSAGE,msg_t,MessageType,tag_ex);SSV(MESSAGE,msg_t,ConnectionPath,msg_t_path[0]);SSV(MESSAGE,msg_t,MessageType,msg_t_type);END_IF;IFNOTmsg_t.ENTHENMSG(msg_t);END_IF;第124頁/共165頁9.輸入/輸出指令(3)立即輸出IOT指令立即輸出IOT指令用于立即更新特定的輸出數(shù)據(jù)(生產(chǎn)者標(biāo)簽或I/O模塊的輸出標(biāo)簽),指令如圖3-83所示。第125頁/共165頁10.用戶自定義指令(1)用戶自定義指令A(yù)OI用戶自定義指令A(yù)OI(AddOnInstruction)是由用戶自己創(chuàng)建的指令,可以多次調(diào)用,且可以帶入/帶出用戶自定義的參數(shù)。AOI指令是使用標(biāo)準(zhǔn)的指令集或其他AOI指令,按照用戶特定的要求進(jìn)行代碼的開發(fā),封裝為新的指令,可以獨(dú)立使用的特殊指令。第126頁/共165頁10.用戶自定義指令(2)AOI指令的優(yōu)點(diǎn)

通過創(chuàng)建通用的用戶指令集,可以節(jié)省項(xiàng)目開發(fā)時間;

可以實(shí)現(xiàn)多個項(xiàng)目的一致性,不用每次都編制通用的控制算法;

支持多種編程語言創(chuàng)建AOI指令—LD、FBD、ST;

支持多種編程語言調(diào)用AOI指令—LD、FBD、ST、SFC;

可以實(shí)現(xiàn)源代碼密碼保護(hù),防止源代碼密碼被修改;

源代碼鎖定,對關(guān)鍵代碼進(jìn)行鎖定,防止意外修改,但是可以查看和編譯;

原始輸入和輸出參數(shù)類型可以自動轉(zhuǎn)換,減少指令代碼和編譯;

基于實(shí)例(Instance)的查看功能;

調(diào)用實(shí)例(Instance)標(biāo)簽時,自動生成指令調(diào)用的描述,減少輸入工作;

易于維護(hù)。第127頁/共165頁10.用戶自定義指令(3)創(chuàng)建AOI指令

控制器結(jié)構(gòu)中包含“Add-OnInstruction”文件夾;

AOI指令只需定義一次,指令可以被多個程序調(diào)用;

指令的數(shù)量僅受限于控制器的內(nèi)存。例如,在Controller管理器中,右鍵單擊“Add-on自定義指令”,如圖3-84所示,即可創(chuàng)建AOI指令。第128頁/共165頁10.用戶自定義指令(4)定義指令數(shù)據(jù)

用戶配置指令的參數(shù),支持原始數(shù)據(jù)類型;

將參數(shù)名字和定義保存在控制器中,描述保存在項(xiàng)目文件中;

數(shù)據(jù)類型自動轉(zhuǎn)換。指令被調(diào)用之前,輸入值進(jìn)行轉(zhuǎn)換;指令執(zhí)行之后,輸出值進(jìn)行轉(zhuǎn)換。新建AOI指令的頁面如圖3-85所示。第129頁/共165頁10.用戶自定義指令單擊“確定”按鈕,進(jìn)入AOI指令參數(shù)設(shè)置頁面,如圖3-86所示。第130頁/共165頁10.用戶自定義指令(5)定義本地標(biāo)簽①指令可以定義本地標(biāo)簽。②本地標(biāo)簽在指令范圍內(nèi)被使用。進(jìn)入AOI指令的本地標(biāo)簽頁面,如圖3-87所示。第131頁/共165頁10.用戶自定義指令(6)AOI掃描模式進(jìn)入AOI指令的掃描模式頁面,如圖3-88所示。第132頁/共165頁10.用戶自定義指令至此,新創(chuàng)建了一條名為AOI_US的用戶自定義指令,如圖3-89所示。第133頁/共165頁10.用戶自定義指令創(chuàng)建的指令參數(shù)和本地標(biāo)簽都存儲在AOI_US的數(shù)據(jù)庫里,如圖3-90所示。第134頁/共165頁10.用戶自定義指令(7)AOI指令的使用

一次定義,在FBD、LD、ST中直接使用;

每個AOI實(shí)例(Instance)都擁有獨(dú)立的數(shù)據(jù)實(shí)例(DataInstance),實(shí)現(xiàn)數(shù)據(jù)的自動隔離;

允許每個指令工作于定制的一套數(shù)據(jù)。第135頁/共165頁10.用戶自定義指令(8)導(dǎo)出AOI指令可以將編寫好的AOI指令導(dǎo)出,以文件形式保存,如圖3-91所示。第136頁/共165頁10.用戶自定義指令(9)AOI指令和子程序的比較AOI指令和子程序的比較如表3-12所示。AOI指令子

序調(diào)用實(shí)現(xiàn)方式控制器范圍內(nèi)復(fù)制,且僅復(fù)制一次程序范圍內(nèi),多次復(fù)制參數(shù)傳遞方式通過數(shù)值或參考值通過數(shù)值傳遞數(shù)據(jù)類型原始類型原始類型、數(shù)組、結(jié)構(gòu)體數(shù)字型參數(shù)自動數(shù)據(jù)類型轉(zhuǎn)換無格式轉(zhuǎn)換參數(shù)檢查驗(yàn)證檢查用戶管理數(shù)據(jù)封裝本地數(shù)據(jù)隔離,僅在指令內(nèi)使用所有程序和控制器范圍內(nèi)的數(shù)據(jù),任何數(shù)據(jù)均可被使用查看調(diào)用單次調(diào)用,實(shí)例數(shù)據(jù)重復(fù)調(diào)用,混合數(shù)據(jù)內(nèi)部編程語言LD、ST、FBDLD、ST、FBD、SFC外部編程語言LD、ST、FBD、SFCLD、ST、FBD、SFC保護(hù)方式鎖定、只讀鎖定、只讀內(nèi)存使用緊湊調(diào)用時,會占用較多內(nèi)存執(zhí)行性能調(diào)用更為高效;輸入/輸出傳遞參照值;參照值自動實(shí)現(xiàn)定標(biāo)控制指令增加運(yùn)算負(fù)荷;復(fù)制所有數(shù)據(jù);影響索引的參照第137頁/共165頁11.程序設(shè)計舉例【例3.2】

置位、復(fù)位語句在時序圖中的使用。實(shí)現(xiàn)電動機(jī)故障報警,在電動機(jī)控制回路和主回路中,有3個故障信號,分別是控制回路電源跳閘信號(KT)、主回路電源跳閘信號(ZT)、電動機(jī)過熱保護(hù)信號(BH)。信號如表3-13所示。信號描述符

號信號狀態(tài)信號類型控制回路電源跳閘信號KT斷開為1,合閘為0故障信號主回路電源跳閘信號ZT斷開為1,合閘為0故障信號電動機(jī)過熱保護(hù)信號BH過熱保護(hù)動作時為1,過熱保護(hù)未動作時為0故障信號控制回路合閘動作KH合閘為1,跳閘為0動作信號主回路合閘動作ZH合閘為1,跳閘為0動作信號控制回路合閘標(biāo)志位KHY合閘標(biāo)志位,合閘為1,跳閘為0中間量標(biāo)志信號主回路合閘標(biāo)志位ZHY合閘標(biāo)志位,合閘為1,跳閘為0中間量標(biāo)志信號控制回路故障標(biāo)志KER故障為1,正常為0故障信號主回路故障標(biāo)志ZER故障為1,正常為0故障信號第138頁/共165頁11.程序設(shè)計舉例控制回路故障報警時序圖如圖3-92所示。第139頁/共165頁11.程序設(shè)計舉例梯形圖實(shí)現(xiàn)過程如圖3-93所示。第140頁/共165頁11.程序設(shè)計舉例全部梯形圖如圖3-94所示。第141頁/共165頁11.程序設(shè)計舉例【例3.3】

單按鍵啟停一臺電動機(jī)。用一個按鍵實(shí)現(xiàn)電動機(jī)的啟動/停止。要求按動一下啟動,再按一下停止。輸入:輸入端P,為自動復(fù)位式按鍵。輸出:輸出端Q,為1時啟動,為0時停止。如圖3-95所示。第142頁/共165頁11.程序設(shè)計舉例梯形圖如圖3-96所示。第143頁/共165頁11.程序設(shè)計舉例【例3.4】

水廠有3個水泵,工作順序是:A水泵先啟動,然后B水泵啟動,最后C水泵啟動。3個水泵各自啟動后即開始運(yùn)行工作。停止時,執(zhí)行順序與啟動時相反,即C水泵先停止工作,然后B水泵停止工作,最后A水泵停止工作。水泵A、B、C的啟動完成反饋分別為A_END_START、B_END_START、C_END_START,水泵A、B、C的停止完成反饋分別為A_END_STOP、B_E

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論