運(yùn)城SIEMENS西門子S7-300模塊代理商
SIEMENS潯之漫智控技術(shù)(上海)有限公司 本公司西門子自動(dòng)化產(chǎn)品,質(zhì)量保證,價(jià)格優(yōu)勢(shì) 西門子PLC,西門子觸摸屏,西門子數(shù)控系統(tǒng),西門子軟啟動(dòng),西門子以太網(wǎng) 西門子電機(jī),西門子變頻器,西門子直流調(diào)速器,西門子電線電纜 我公司大量現(xiàn)貨供應(yīng),價(jià)格優(yōu)勢(shì),*
西門子PLC程序的設(shè)計(jì)無(wú)規(guī)定的方法,只要?jiǎng)幼骺煽?、程序?jiǎn)捷、明了便是好程序。至于采用的是什么樣的方法、何種語(yǔ)言,這并不重要。 通過(guò)典型應(yīng)用程序的組合和靈活應(yīng)用,以完成大多數(shù)常規(guī)程序的設(shè)計(jì),是一般設(shè)計(jì)人員使用的基本方法之一,可以供初學(xué)者參考。 假設(shè)某車間排風(fēng)系統(tǒng),采用S7-200 PLC控制,并利用工作狀態(tài)指示燈的不同狀態(tài)進(jìn)行監(jiān)控,指示燈狀態(tài)輸出的控制要求如下: ①排風(fēng)系統(tǒng)共由3臺(tái)風(fēng)機(jī)組成,利用指示進(jìn)行報(bào)警顯示: ②當(dāng)系統(tǒng)中有2臺(tái)以上風(fēng)機(jī)工作時(shí),指示燈保持連續(xù)發(fā)光; ③當(dāng)系統(tǒng)中沒(méi)有風(fēng)機(jī)工作時(shí),指示燈以2Hz頻率閃爍報(bào)警: ④當(dāng)系統(tǒng)中只有l(wèi)臺(tái)風(fēng)機(jī)工作時(shí),指示燈以0.5Hz頻率閃爍報(bào)警。 根據(jù)以上要求,PLC的程序設(shè)計(jì)可以按照如下步驟進(jìn)行。 1.確定I/O地址 為了實(shí)現(xiàn)本控制要求,系統(tǒng)至少應(yīng)有3個(gè)輸入與1個(gè)輸出,假設(shè)所確定對(duì)應(yīng)的輸入/輸出地址與狀態(tài)如表9-5.1所示。
在以上PLC地址確定以后,即可以進(jìn)行PLC程序的設(shè)計(jì)。PLC程序的設(shè)計(jì)可以根據(jù)系統(tǒng)的基本動(dòng)作要求,分步進(jìn)行編制,并充分應(yīng)用前述的典型程序。 CPU寄存器狀態(tài)字的各位給出了有關(guān)指令狀態(tài)或結(jié)果的信息以及所出現(xiàn)的錯(cuò)誤,我們可以將二進(jìn)制邏輯操作狀態(tài)位信號(hào)狀態(tài)直接集成到程序中,以控制程序執(zhí)行的流程。 2.狀態(tài)字寄存器 先簡(jiǎn)單介紹一下CPU中狀態(tài)字。 位,如果/FC位的信號(hào)狀態(tài)為“0",則表示伴隨著下一條邏輯指令,程序中將開(kāi)始一個(gè)新的邏輯串。FC前面的斜杠表示對(duì)FC取反。 邏輯運(yùn)算結(jié)果:狀態(tài)字的第1位為RLO位(RLO=“邏輯運(yùn)算結(jié)果"),在二進(jìn)制邏輯運(yùn)算中用作暫時(shí)存儲(chǔ)位。比如,一串邏輯指令中的某個(gè)指令檢查觸點(diǎn)的信號(hào)狀態(tài),并根據(jù)布爾邏輯運(yùn)算規(guī)則將檢查的結(jié)果(狀態(tài)位)與RLO位進(jìn)行邏輯門運(yùn)算,然后邏輯運(yùn)算結(jié)果又存在RLO位中。 狀態(tài)位:狀態(tài)位(第2位)用以保存被尋址位的值。狀態(tài)位總是向掃描指令(A,AN,O,…)或?qū)懼噶睿?,S,R,)顯示尋址位的狀態(tài)(對(duì)于寫指令,保存的尋址位狀態(tài)是本條寫指令執(zhí)行后的該尋址位的狀態(tài))。 OR位:在用指令OR執(zhí)行或邏輯操作之前,執(zhí)行與邏輯操作的時(shí)候,就需要用到OR這一狀態(tài)位。OR位表示先前執(zhí)行的與邏輯操作產(chǎn)生的值為“1",于是,邏輯操作或的執(zhí)行結(jié)果就已被確定為“1"。 OV位:溢出表示算術(shù)或比較指令執(zhí)行時(shí)出現(xiàn)了錯(cuò)誤。根據(jù)所執(zhí)行的算術(shù)或邏輯指令結(jié)果對(duì)該位進(jìn)行設(shè)置。 OS位:溢出存儲(chǔ)位是與OV位一起被置位的,而且在更新算術(shù)指令之后,它能夠保持這種狀態(tài),也就是說(shuō),它的狀態(tài)不會(huì)由于下一個(gè)算術(shù)指令的結(jié)果而改變。這樣,即使是在程序的后面部分,也還有機(jī)會(huì)判斷數(shù)字區(qū)域是否溢出或者指令是否含有無(wú)效實(shí)數(shù)。OS位只有通過(guò)如下這些命令進(jìn)行復(fù)位:JOS(若OS=1,則跳轉(zhuǎn))命令,塊調(diào)用和塊結(jié)束命令。 1.什么是全局變量和局部變量? 以西門子的S7-200為例,輸入I、輸出Q、變量存儲(chǔ)器V、內(nèi)部存儲(chǔ)器位M、定時(shí)器T、計(jì)數(shù)器C等屬于全局變量,可以在符號(hào)表中為全局變量定義符號(hào)名。 程序組織單元(ProgramOrganizationalUnit)簡(jiǎn)稱為POU,包括主程序、子程序和中斷程序。每個(gè)POU均有自己的64字節(jié)局部變量,局部變量用L(Local)來(lái)表示,局部變量只能在它所在的POU中使用。與此相反,全局變量可以在各POU中使用。 2.局部變量有哪些類型? 子程序可以使用下列局部變量: 1)TEMP(臨時(shí)變量)是暫時(shí)保存在局部數(shù)據(jù)區(qū)中的變量。只有在執(zhí)行該P(yáng)OU時(shí),定義的臨時(shí)變量才被使用,POU執(zhí)行完后,不再保存臨時(shí)變量的數(shù)值。主程序和中斷程序的局部變量表中只有TEMP變量。 2)IN(輸入?yún)?shù))由調(diào)用它的POU提供的傳入子程序的輸入?yún)?shù)。 3)OUT(輸出參數(shù))是子程序的執(zhí)行結(jié)果,它被返回給調(diào)用它的POU。 4)IN_OUT(輸入_輸出參數(shù))的初始值由調(diào)用它的POU傳送給子程序,并用同一變量將子程序的執(zhí)行結(jié)果返回給調(diào)用它的POU。 主程序和中斷程序的局部變量表中只有臨時(shí)變量TEMP。 3.子程序的輸入、輸出參數(shù)有什么作用? 具有輸入、輸出參數(shù)和局部變量的子程序易于實(shí)現(xiàn)結(jié)構(gòu)化編程,對(duì)于長(zhǎng)期生產(chǎn)同類設(shè)備或生產(chǎn)線的廠家尤為有用。編程人員為設(shè)備的各部件或工藝功能編寫了大量的通用的子程序。即使不知道子程序的內(nèi)部代碼,只要知道子程序的功能和輸入、輸出參數(shù)的意義,就可以用它們快速“組裝"出滿足不同的用戶要求的控制程序。就好像可以用數(shù)字集成電路芯片組成復(fù)雜的數(shù)字電路一樣。 如果子程序沒(méi)有輸入、輸出參數(shù),這種子程序沒(méi)有明確的軟件接口,使用起來(lái)很不方便。 4.局部變量有什么優(yōu)點(diǎn)? 1)子程序如果沒(méi)有局部變量,它和調(diào)用它的程序之間只能通過(guò)全局變量來(lái)交換數(shù)據(jù),子程序內(nèi)部也只能使用全局變量。將它移植到別的項(xiàng)目時(shí),需要對(duì)各POU使用的全局變量作統(tǒng)一安排,以保證不會(huì)出現(xiàn)地址沖突。當(dāng)程序很復(fù)雜,子程序很多時(shí),這種地址分配是很花時(shí)間的。 如果子程序有局部變量,并且在子程序中只使用局部變量,不使用全局變量,因?yàn)榕c其他POU沒(méi)有地址沖突,不作任何改動(dòng),就可以將子程序移植到別的項(xiàng)目中去。 為了減少移植子程序的工作量,在子程序中應(yīng)盡量避免使用全局變量和全局符號(hào)。 2)如果使用局部變量表中的臨時(shí)變量(TEMP),同一片物理存儲(chǔ)器可以在不同的程序中重復(fù)使用。
|