西門子6ES7332-5HB01-0AB0
盡量用子程序參數(shù)代替全局內(nèi)存,使用子程序參數(shù),盡量減少庫(kù)對(duì)全局內(nèi)存的依賴性??梢詭?kù)指令使用的內(nèi)存。例如,您可以有一個(gè)計(jì)算四個(gè)數(shù)加法的子程序,并將該MT8100IE的輸出存儲(chǔ)在一個(gè)V內(nèi)存 位置。程序的其余部分則會(huì)讀取該V內(nèi)存位置,以便確定計(jì)算的結(jié)果。如果您希望將該子程序放入庫(kù),考慮在子程序中增加一個(gè)輸出參數(shù),并將計(jì)算結(jié)果存儲(chǔ)在該參 數(shù)中。這樣就無(wú)須V內(nèi)存位置,并允許您決定存儲(chǔ)結(jié)果的位置。
使用臨時(shí)變量進(jìn)行計(jì)算,將臨時(shí)變量用于計(jì)算和臨時(shí)結(jié)果可盡量減少用戶庫(kù)對(duì)全局內(nèi)存的使用。臨時(shí)變量(在局部變量表中對(duì)子程序和中斷例行程序進(jìn)行定義)從西門子plc的局部?jī)?nèi)存分配,不與項(xiàng)目發(fā)生沖突。局部?jī)?nèi)存并非持久性內(nèi)存,無(wú)法用于在指令調(diào)用之間保存數(shù)據(jù)。其使用期是說(shuō)明局部?jī)?nèi)存的子程序或中斷例行程序的執(zhí)行階 段。
需要使用V內(nèi)存時(shí),有時(shí)必須在包括在指令庫(kù)中的子程序和中斷例行程序中使用全局V內(nèi)存。此時(shí),為在這些POU中使用的所有V內(nèi)存說(shuō)明符號(hào),并在程序中使用符號(hào)。當(dāng)庫(kù)被編譯后,這些符號(hào)被用于決定庫(kù)需要的內(nèi)存量。
6ES7312-5BF04-0AB0 | CPU312C,32K內(nèi)存 10DI/6DO |
6ES7313-5BG04-0AB0 | CPU313C,64K內(nèi)存 24DI/16DO / 4AI/2AO |
6ES7313-6BG04-0AB0 | CPU313C-2PTP,64K內(nèi)存 16DI/16DO |
6ES7313-6CG04-0AB0 | CPU313C-2DP,64K內(nèi)存 16DI/16DO |
6ES7 313-6CF03-0AM0 | CPU313C-2DP,64K內(nèi)存 16DI/16DO組合件(6ES7 313-6CF03-0AB0+6ES7 392-1AM00-0AA0) |
6ES7 314-1AG13-0AB0 | CPU314,96K內(nèi)存 |
6ES7 314-1AG14-0AB0 | CPU314,128K內(nèi)存 |
6ES7314-6BH04-0AB0 | CPU314C-2PTP 96K內(nèi)存 24DI/16DO / 4AI/2AO |
6ES7314-6CH04-0AB0 | CPU314C-2DP 96K內(nèi)存 24DI/16DO / 4AI/2AO |
6ES7 314-6EH04-0AB0 | CPU314C-2PN/DP 192K內(nèi)存/24DI/16DO/ 4AI/2AO |
6ES7 314-6CG03-9AM0 | CPU314C-2DP 96K內(nèi)存 24DI/16DO / 4AI/2AO組合件(6ES7 314-6CG03-0AB0+6ES7 392-1AM00-0AA0*2) |
6ES7 315-2AG10-0AB0 | CPU315-2DP, 128K內(nèi)存 |
6ES7 315-2AH14-0AB0 | CPU315-2DP, 256K內(nèi)存 |
6ES7315-2EH14-0AB0 | CPU315-2 PN/DP, 256K內(nèi)存 |
6ES7317-2AK14-0AB0 | CPU317-2DP,512K內(nèi)存 |
需要I/O地址時(shí),有時(shí)必須在包括在指令庫(kù)中的子程序和中斷例行程序中使用實(shí)際I/O地址。必要時(shí),這些POU中使用的所有I/O地址符號(hào),并在應(yīng)用程序中使用這些符號(hào)。
2)將POU注釋用于文檔編制
如果選擇用密碼保護(hù)庫(kù)指令,庫(kù)用戶則無(wú)法看到指令中的源碼。但是,他們能夠看到構(gòu)成庫(kù)的每個(gè)子程序和中斷例行程序的POU指令。POU注釋是記錄每條指令功能的優(yōu)秀位置。請(qǐng)考慮使用POU注釋提供下列詳細(xì)信息:
1.該指令具體執(zhí)行什么功能?POU注釋是給出指令功能說(shuō)明的優(yōu)秀位置。
2.如何調(diào)用指令?例如,如果指令僅限在*掃描時(shí)調(diào)用,或者如果指令依賴于成功地完成另一條指令,應(yīng)當(dāng)使用POU注釋記錄這些指令的詳細(xì)用法。
3.指令使用何種全局內(nèi)存?如果指令直接參考全局內(nèi)存,POU內(nèi)存應(yīng)當(dāng)提醒用戶這一用法,以便用戶對(duì)程序進(jìn)行設(shè)計(jì),以避免內(nèi)存訪問(wèn)沖突。
4.指令如何指示錯(cuò)誤?很多指令需要通過(guò)輸出參數(shù)或全局內(nèi)存位置指示錯(cuò)誤條件。向用戶提供可能產(chǎn)生的錯(cuò)誤說(shuō)明以及如何糾正這些錯(cuò)誤的說(shuō)明會(huì)很有幫助。
3)分發(fā)用戶庫(kù)
庫(kù)編譯輸出是一個(gè)磁盤文件(mwl文件),該文件包含STEP 7-Micro/WIN識(shí)別和使用指令庫(kù)所需的所有內(nèi)容。如果希望向其他STEP 7-Micro/WIN用戶分發(fā)用戶庫(kù),可以將該文件復(fù)制,為用戶提供一份文件的拷貝。
西門子PLC常用的功能指令
1、串聯(lián)電路塊的并聯(lián)連接指令OLD
兩個(gè)或兩個(gè)以上的接點(diǎn)串聯(lián)連接的電路叫串聯(lián)電路塊。串聯(lián)電路塊并聯(lián)連接時(shí),分支開始用LD、LDN指令,分支結(jié)束用OLD指令。OLD指令與后述的ALD指令均為無(wú)目標(biāo)元件指令,而兩條無(wú)目標(biāo)元件指令的步長(zhǎng)都為一個(gè)程序步。OLD有時(shí)也簡(jiǎn)稱或塊指令。
2、并聯(lián)電路的串聯(lián)連接指令A(yù)LD
兩個(gè)或兩個(gè)以上接點(diǎn)并聯(lián)電路稱為并聯(lián)電路塊,分支電路并聯(lián)電路塊與前面電路串聯(lián)連接時(shí),使用ALD指令。分支的起點(diǎn)用LD、LDN指令,并聯(lián)電路結(jié)束后,使用ALD指令與前面電路串聯(lián)。ALD指令也簡(jiǎn)稱與塊指令,ALD也是無(wú)操作目標(biāo)元件,是一個(gè)程序步指令。
3、輸出指令=
1、=輸出指令是將繼電器、定時(shí)器、計(jì)數(shù)器等的線圈與梯形圖右邊的母線直接連接,線圈的右邊不允許有觸點(diǎn),在編程中,觸點(diǎn)以重復(fù)使用,且類型和數(shù)量不受限制。
4、置位與復(fù)位指令S、R
S為置位指令,使動(dòng)作保持;R為復(fù)位指令,使操作保持復(fù)位。從的位置開始的N個(gè)點(diǎn)的寄存器都被置位或復(fù)位,N=1~255如果被復(fù)位的是定時(shí)器位或計(jì)數(shù)器位,將清除定時(shí)器或計(jì)數(shù)器的當(dāng)前值。
5、跳變觸點(diǎn)EU,ED
正跳變觸點(diǎn)檢測(cè)到一次正跳變(觸點(diǎn)的入信號(hào)由0到1)時(shí),或負(fù)跳變觸點(diǎn)檢測(cè)到一次負(fù)跳變(觸點(diǎn)的入信號(hào)由1到0)時(shí),觸點(diǎn)接通到一個(gè)掃描周期。正/負(fù)跳變的符號(hào)為EU和ED,他們沒(méi)有操作數(shù),觸點(diǎn)符號(hào)中間的”P”和”N”分別表示正跳變和負(fù)跳變。
西門子PLC局部變量的說(shuō)明類型 對(duì)局部變量賦值的類型取決于在其中賦值的POU。西門子PLC的主程序(OB1)、中斷例行程序和子例行程序可使用臨時(shí)(TEMP)變量。
說(shuō)明類型 說(shuō)明
IN 調(diào)用POU提供的輸入?yún)?shù)。
OUT 返回調(diào)用POU的輸出參數(shù)。
IN_OUT 數(shù)值由調(diào)用POU提供的參數(shù),由西門子PLC的子例行程序修改,然后返回調(diào)用POU。
TEMPORARY 臨時(shí)保存在局部數(shù)據(jù)堆棧中的臨時(shí)變量。一旦POU*執(zhí)行,臨時(shí)變量數(shù)值則無(wú)法再用。在兩次POU執(zhí)行之間,臨時(shí)變量不保持其數(shù)值。
局部變量數(shù)據(jù)類型檢查 返回高級(jí)
將局部變量作為仿西門子PLC的子例行程序參數(shù)傳遞時(shí),在該子例行程序局部變量表中的數(shù)據(jù)類型必須與調(diào)用 POU中數(shù)值的數(shù)據(jù)類型相匹配
舉例:
您從OB1調(diào)用SBR0,將稱為INPUT1的全局符號(hào)用作子例行程序的輸入?yún)?shù)。
在SBR0的局部變量表中,您已經(jīng)將一個(gè)稱為FIRST的局部變量定義為輸入?yún)?shù)。
當(dāng)0B1調(diào)用SBR0時(shí),INPUT1數(shù)值被傳遞至FIRST。
INPUT1和FIRST的數(shù)據(jù)類型必須匹配。
如果INPUT1是實(shí)數(shù),F(xiàn)IRST也是實(shí)數(shù),則數(shù)據(jù)類型匹配。如果INPUT1是實(shí)數(shù),但FIRST是整數(shù),則數(shù)據(jù)類型不匹配
西門子6ES7332-5HB01-0AB0
13: 選擇單邊通信指令;
注意:
在選擇指令時(shí),要根據(jù)使用的產(chǎn)品來(lái)確定。如果采用CPU集成的以太網(wǎng)接口建立S7 通信,要采用左側(cè)的指令;如果采用CP 以太網(wǎng)卡建立S7通信,要采用右側(cè)的指令。
圖14:在OB1中調(diào)用FB14 ;
圖15:在OB1中調(diào)用FB15 ;
• 創(chuàng)建變量表VAT_1監(jiān)視寫數(shù)據(jù)操作(PUT);
圖16:變量表VAT_1 ;
• 創(chuàng)建變量表VAT_2監(jiān)視讀數(shù)據(jù)操作(GET);
圖17:變量表VAT_2 ;
5.調(diào)試 S7-1200 與S7-300 PLC 通信
• 從S7-300 程序中可知,在M1.0 從0變?yōu)?時(shí),讀取S7-1200的數(shù)據(jù)DB2.DBB0~DB2.DBB15 到S7-300 DB3.DBB0~ DB3.DBB15中;
圖18:S7-300調(diào)用GET函數(shù)讀取S7-1200數(shù)據(jù)
• 從S7-300 程序中可知,在M5.0 從0變?yōu)?時(shí),將S7-300的數(shù)據(jù)DB1.DBB0~ DB1.DBB15 寫入S7-1200 的DB2.DBB16~DB2.DBB31中;
圖19:S7-300調(diào)用PUT函數(shù)寫入S7-1200數(shù)據(jù)