盡量用子程序參數(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)行定義)從西門(mé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è)磁盤(pán)文件(mwl文件),該文件包含STEP 7-Micro/WIN識(shí)別和使用指令庫(kù)所需的所有內(nèi)容,。如果希望向其他STEP 7-Micro/WIN用戶分發(fā)用戶庫(kù),,可以將該文件復(fù)制,為用戶提供一份文件的拷貝。
西門(mén)子PLC常用的功能指令
1,、串聯(lián)電路塊的并聯(lián)連接指令OLD
兩個(gè)或兩個(gè)以上的接點(diǎn)串聯(lián)連接的電路叫串聯(lián)電路塊,。串聯(lián)電路塊并聯(lián)連接時(shí),分支開(kāi)始用LD,、LDN指令,,分支結(jié)束用OLD指令。OLD指令與后述的ALD指令均為無(wú)目標(biāo)元件指令,,而兩條無(wú)目標(biāo)元件指令的步長(zhǎng)都為一個(gè)程序步,。OLD有時(shí)也簡(jiǎn)稱(chēng)或塊指令。
2,、并聯(lián)電路的串聯(lián)連接指令A(yù)LD
兩個(gè)或兩個(gè)以上接點(diǎn)并聯(lián)電路稱(chēng)為并聯(lián)電路塊,,分支電路并聯(lián)電路塊與前面電路串聯(lián)連接時(shí),使用ALD指令,。分支的起點(diǎn)用LD,、LDN指令,并聯(lián)電路結(jié)束后,,使用ALD指令與前面電路串聯(lián),。ALD指令也簡(jiǎn)稱(chēng)與塊指令,ALD也是無(wú)操作目標(biāo)元件,,是一個(gè)程序步指令,。
3、輸出指令=
1,、=輸出指令是將繼電器,、定時(shí)器、計(jì)數(shù)器等的線圈與梯形圖右邊的母線直接連接,,線圈的右邊不允許有觸點(diǎn),,在編程中,觸點(diǎn)以重復(fù)使用,,且類(lèi)型和數(shù)量不受限制,。
4、置位與復(fù)位指令S,、R
S為置位指令,,使動(dòng)作保持;R為復(fù)位指令,,使操作保持復(fù)位。從的位置開(kāi)始的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ù)跳變,。
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)存 |
西門(mén)子PLC局部變量的說(shuō)明類(lèi)型 對(duì)局部變量賦值的類(lèi)型取決于在其中賦值的POU,。西門(mén)子PLC的主程序(OB1),、中斷例行程序和子例行程序可使用臨時(shí)(TEMP)變量。
說(shuō)明類(lèi)型 說(shuō)明
IN 調(diào)用POU提供的輸入?yún)?shù),。
OUT 返回調(diào)用POU的輸出參數(shù),。
IN_OUT 數(shù)值由調(diào)用POU提供的參數(shù),由西門(mén)子PLC的子例行程序修改,,然后返回調(diào)用POU,。
TEMPORARY 臨時(shí)保存在局部數(shù)據(jù)堆棧中的臨時(shí)變量。一旦POU*執(zhí)行,,臨時(shí)變量數(shù)值則無(wú)法再用,。在兩次POU執(zhí)行之間,臨時(shí)變量不保持其數(shù)值,。
局部變量數(shù)據(jù)類(lèi)型檢查 返回高級(jí)
將局部變量作為仿西門(mén)子PLC的子例行程序參數(shù)傳遞時(shí),,在該子例行程序局部變量表中的數(shù)據(jù)類(lèi)型必須與調(diào)用 POU中數(shù)值的數(shù)據(jù)類(lèi)型相匹配
舉例:
您從OB1調(diào)用SBR0,將稱(chēng)為INPUT1的全局符號(hào)用作子例行程序的輸入?yún)?shù),。
在SBR0的局部變量表中,,您已經(jīng)將一個(gè)稱(chēng)為FIRST的局部變量定義為輸入?yún)?shù)。
當(dāng)0B1調(diào)用SBR0時(shí),,INPUT1數(shù)值被傳遞至FIRST,。
INPUT1和FIRST的數(shù)據(jù)類(lèi)型必須匹配。
如果INPUT1是實(shí)數(shù),,F(xiàn)IRST也是實(shí)數(shù),,則數(shù)據(jù)類(lèi)型匹配。如果INPUT1是實(shí)數(shù),,但FIRST是整數(shù),,則數(shù)據(jù)類(lèi)型不匹配,,