云南西門子S7-1500PLC模塊代理(量大從優(yōu))

STEP 7設(shè)計(jì)順序控制程序的基本方法
根據(jù)順序功能圖設(shè)計(jì)梯形圖時(shí),可以用M存儲(chǔ)器來(lái)代表步。為了便于將順序功能圖轉(zhuǎn)換為梯形圖,用代表各步的存儲(chǔ)器位的地址作為步的代號(hào),并用編程元件地址的邏輯代數(shù)表達(dá)式來(lái)標(biāo)注轉(zhuǎn)換條件,用編程元件的地址來(lái)標(biāo)注各步的動(dòng)作。
順序控制程序分為控制電路和輸出電路兩部分。輸出電路的輸入量是代表步的編程元件M,輸出量是PLC的輸出位Q。它們之間的邏輯關(guān)系是極為簡(jiǎn)單的相等或相“或”的邏輯關(guān)系,輸出電路是很容易設(shè)計(jì)的。
控制電路用PLC的輸入量來(lái)控制代表步的編程元件。某一步為活動(dòng)步時(shí),對(duì)應(yīng)的存儲(chǔ)器位M為1,某一轉(zhuǎn)換實(shí)現(xiàn)時(shí),該轉(zhuǎn)換的后續(xù)步應(yīng)變?yōu)榛顒?dòng)步??梢杂靡粋€(gè)串聯(lián)電路來(lái)表示轉(zhuǎn)換實(shí)現(xiàn)的這兩個(gè)條件,該電路接通時(shí),應(yīng)將該轉(zhuǎn)換的所有后續(xù)步的存儲(chǔ)器位M置為1,將所有前級(jí)步對(duì)應(yīng)的M復(fù)位為0。轉(zhuǎn)換實(shí)現(xiàn)的兩個(gè)條件對(duì)應(yīng)的串聯(lián)電路接通的時(shí)間只有一個(gè)掃描周期,因此應(yīng)使用有記憶功能的電路或指令來(lái)控制代表步的存儲(chǔ)器位。起保停電路和置位/復(fù)位電路都有記憶功能,下面將介紹這兩種電路的設(shè)計(jì)方法。
在同時(shí)有手動(dòng)和自動(dòng)模式的程序中,都需要控制PLC輸入Q,因此同一個(gè)輸出位的線圈可能會(huì)出現(xiàn)多次,這稱為雙線圈問(wèn)題。
在跳轉(zhuǎn)條件相反的兩個(gè)程序段中,允許出現(xiàn)雙線圈,即同一元件的線圈可以在自動(dòng)程序和手動(dòng)程序中分別出現(xiàn)一次。實(shí)際上CPU在每次循環(huán)中,只執(zhí)行手動(dòng)程序或只執(zhí)行自動(dòng)程序,不可能同時(shí)執(zhí)行兩個(gè)程序。對(duì)于分別位于這兩個(gè)程序中的兩個(gè)相同線圈,每次循環(huán)只執(zhí)行其中一個(gè),因此在本質(zhì)上并沒(méi)有違反不允許出現(xiàn)雙線圈的規(guī)定。
用相反的條件調(diào)用功能時(shí),也允許同一元件的線圈在自動(dòng)程序和手動(dòng)程序中各出現(xiàn)一次。因?yàn)閮蓚€(gè)功能的調(diào)用條件相反,在一個(gè)掃描周期中只會(huì)調(diào)用其中的一個(gè)功能,而功能中的指令只在該功能被調(diào)用時(shí)才執(zhí)行,因此實(shí)際上CPU也只是處理其中的一個(gè)線圈。
開始執(zhí)行自動(dòng)程序之前,要求系統(tǒng)處于規(guī)定的初始狀態(tài)。如果開機(jī)時(shí)系統(tǒng)沒(méi)有處于初始狀態(tài),則應(yīng)進(jìn)入手動(dòng)工作模式,用手動(dòng)操作進(jìn)入初始狀態(tài)后,在切換到自動(dòng)工作模式,也可以通過(guò)初始化程序使系統(tǒng)自動(dòng)進(jìn)入初始狀態(tài)。
系統(tǒng)滿足規(guī)定的初始狀態(tài)后,應(yīng)將順序功能圖的初始步對(duì)應(yīng)的存儲(chǔ)器位置1,使初始步變?yōu)榛顒?dòng)步,為啟動(dòng)自動(dòng)運(yùn)行作好準(zhǔn)備。同時(shí)還應(yīng)將其余各步的存儲(chǔ)器位復(fù)位為0,這是因?yàn)樵跊](méi)有并行序列或并行序列未處于活動(dòng)狀態(tài)時(shí),同時(shí)只能有一個(gè)活動(dòng)步。
絕大多數(shù)自動(dòng)控制系統(tǒng)除了自動(dòng)工作模式外,還需要設(shè)置手動(dòng)工作模式。在下列兩種情況下需要工作在手動(dòng)模式下:
1)啟動(dòng)自動(dòng)控制程序之前,系統(tǒng)必須處于要求的初始狀態(tài)。如果系統(tǒng)的狀態(tài)不滿足啟動(dòng)自動(dòng)程序的要求,需要進(jìn)入手動(dòng)工作模式,用手動(dòng)操作使系統(tǒng)進(jìn)入初始狀態(tài),然后再回到自動(dòng)模式。一般在調(diào)試階段使用手動(dòng)工作模式。
2)順序自動(dòng)控制對(duì)硬件的要求很高,如果有硬件故障,就不可能正確地完成整個(gè)工作過(guò)程。在這種情況下,為了使設(shè)備不停機(jī),可以使用手動(dòng)工作模式。
自動(dòng)和手動(dòng)工作模式下控制系統(tǒng)的兩種典型控制結(jié)構(gòu)如圖1和圖2所示。
圖1和圖2中的I2.0是手/自動(dòng)切換開關(guān)。在圖1中,當(dāng)I2.0為1時(shí),*條條件跳轉(zhuǎn)指令( JMP)的跳轉(zhuǎn)條件滿足,將跳過(guò)自動(dòng)程序;執(zhí)行手動(dòng)程序,當(dāng)I2.0為0時(shí),第二條跳轉(zhuǎn)指令的跳轉(zhuǎn)條件滿足,將跳過(guò)手動(dòng)程序,執(zhí)行自動(dòng)程序。
圖2的梯形圖中,當(dāng)I2.0為1時(shí)調(diào)用處理手動(dòng)操作的子程序“MAN”,為0時(shí)調(diào)用處理自動(dòng)操作的子程序“AUTO”。
圖1 自動(dòng)/手動(dòng)程序1

圖2 自動(dòng)/手動(dòng)程序2
ANY參數(shù)必須使用在編譯階段定義過(guò)的數(shù)據(jù)區(qū)或變量來(lái)參數(shù)化。比如使用SFC 20BLKMOV把一個(gè)變量復(fù)制到數(shù)據(jù)區(qū):
CALL SFC20 (
SRCBLK := “ReC eiveMailbox”. Data,
RET_VAL :=SFC20Error,
DSTBLK :=P#DB63.DBX0.0 BYTE 8);
在運(yùn)行時(shí)可以修改或重新定義變量或數(shù)據(jù)區(qū),因?yàn)榫庉嬈靼岩粋€(gè)確定的ANY指針指向了暫態(tài)局部數(shù)據(jù)中的實(shí)參。
如果實(shí)參自身也在暫態(tài)局部數(shù)據(jù)中,且實(shí)參數(shù)據(jù)類型為ANY,編輯器將會(huì)出現(xiàn)例外。此時(shí)將不再設(shè)置更多的ANY指針,編輯器將會(huì)把ANY變量當(dāng)做指向?qū)崊⒌?/span>ANY指針。這意味著ANY變量的結(jié)構(gòu)必須與ANY指針的結(jié)構(gòu)相同。
然后就可以在運(yùn)行時(shí)修改暫態(tài)局部數(shù)據(jù)中的ANY變量,給ANY參數(shù)其他實(shí)參。按照下列步驟使用ANY指針“變量”:
●應(yīng)用數(shù)據(jù)類型為ANY的暫態(tài)局部變量(ANY變量的名稱可以在塊局部變量允許
的結(jié)構(gòu)內(nèi)自由地選擇):
VAR_TEMP
ANY_POINTER :ANY;
END_VAR
●使用數(shù)值初始化ANY變量。
●初始化ANY參數(shù),比如,在SFC 20中
CALL SFC20 (
SRCBLK :=“ReceiveMailbox”.Data,
RET_VAL :=SFC20Error,
DSTBLK :=ANY_POINTER);
這些程序并不限制SFC 20 BLKMOV的使用,可以在任意塊的所有ANY參數(shù)中使用它。
舉例:如果要寫一個(gè)復(fù)制塊,用于在數(shù)據(jù)塊中復(fù)制數(shù)據(jù)區(qū)。源操作數(shù)區(qū)和目標(biāo)操作數(shù)區(qū)將被參數(shù)化。使用SFC 20 BLKMOV來(lái)復(fù)制。該塊(一個(gè)功能FC)具有下列參數(shù):
VAR_INPUT
QDB : INT; //Source data block
SSTA : INT; //Source starting address
NUMB : INT; //Number of bytes
DDB : INT; //Destination data block
DSTA : INT; //destination starting address
END_VAR
功能值將包含SFC 20的出錯(cuò)信息,并且如果直接使用SFC 20,功能值可以參與計(jì)算。另外,在錯(cuò)誤事件中,狀態(tài)位BR將設(shè)為“0”。
兩個(gè)ANY變量,一個(gè)作為源操作數(shù)區(qū)的指針,一個(gè)作為目標(biāo)操作數(shù)區(qū)的指針,對(duì)于塊局部數(shù)據(jù)來(lái)說(shuō)足夠用了。
VAR_TEMP
SANY : ANY; //ANY pointer source
DANY : ANY; //ANY pointer destination
END_VAR
由于知道暫態(tài)局部數(shù)據(jù)中ANY指針的地址,就可以使用其地址來(lái)編程,比如源指針的準(zhǔn)備:
L W#16#1002 ; //Type BYTE
T LW 0;
L NUMB; //Number ofbytes
T LW 2
L QDB; //Source DB
T LW4:
L SSTA; //Start of the source
SLD 3;
OD DW#16#8400_0000;
T LD 6:
起始地址為LB 10的目標(biāo)指針也用同樣的方式來(lái)準(zhǔn)備。它僅用于初始化SFC 20:
CALL SFC20 (
SRCBLK :=SANY,
RET_VAL :=RET_VAL,
DSTBLK :=DANY):
SFC 20的功能值RET_VAL使用功能FC的RET_VAL來(lái)初始化。
在原書磁盤上可以找到這個(gè)完整的小實(shí)例(程序“General Examples”中的功能FC 47)。
這樣,可以給ANY指針賦任意值,可以在WORD字2或區(qū)指針中變換不同的類型,所以,從原理上來(lái)說(shuō),可以尋址任意變量或數(shù)據(jù)區(qū),比如位存儲(chǔ)區(qū)。
注意:如果暫態(tài)局部數(shù)據(jù)中的ANY指針指向的變量也位于所調(diào)用塊的暫態(tài)局部數(shù)據(jù)中,必須輸入V作為地址區(qū),因?yàn)閺谋徽{(diào)用塊的觀點(diǎn)來(lái)看,這個(gè)變量位于前任塊的暫態(tài)局部數(shù)據(jù)中。
云南西門子S7-1500PLC模塊代理(量大從優(yōu))