PLC(Programmable Logic Controller)是一種數(shù)字計算機(jī),用于控制工業(yè)過程中的機(jī)器和設(shè)備。PLC編程是一種特殊的編程語言,用于編寫控制程序,以控制PLC的輸入和輸出。西門子PLC是PLC市場上的領(lǐng)導(dǎo)者之一,其編程指令非常豐富。
德國西門子(SIEMENS)公司生產(chǎn)的可編程序控制器在我國的應(yīng)用也相當(dāng)廣泛,在冶金、化工、印刷生產(chǎn)線等領(lǐng)域都有應(yīng)用。西門子(SIEMENS)公司的PLC產(chǎn)品包括LOGO、S7-200、S7-1200、S7-300、S7-400、S7-1500等。 西門子S7系列PLC體積小、速度快、標(biāo)準(zhǔn)化,具有網(wǎng)絡(luò)通信能力,功能更強(qiáng),可靠性高。S7系列PLC產(chǎn)品可分為微型PLC(如S7-200),小規(guī)模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。
在用戶程序執(zhí)行階段,PLC總是按由上而下的順序依次地掃描用戶程序(梯形圖)。在掃描每一條梯形圖時,又總是先掃描梯形圖左邊的由各觸點構(gòu)成的控制線路,并按先左后右、先上后下的順序?qū)τ捎|點構(gòu)成的控制線路進(jìn)行邏輯運算,然后根據(jù)邏輯運算的結(jié)果,刷新該邏輯線圈在系統(tǒng)RAM存儲區(qū)中對應(yīng)位的狀態(tài);或者刷新該輸出線圈在I/O映象區(qū)中對應(yīng)位的狀態(tài);或者確定是否要執(zhí)行該梯形圖所規(guī)定的特殊功能指令。
即,在用戶程序執(zhí)行過程中,只有輸入點在I/O映象區(qū)內(nèi)的狀態(tài)和數(shù)據(jù)不會發(fā)生變化,而其他輸出點和軟設(shè)備在I/O映象區(qū)或系統(tǒng)RAM存儲區(qū)內(nèi)的狀態(tài)和數(shù)據(jù)都有可能發(fā)生變化,而且排在上面的梯形圖,其程序執(zhí)行結(jié)果會對排在下面的凡是用到這些線圈或數(shù)據(jù)的梯形圖起作用;相反,排在下面的梯形圖,其被刷新的邏輯線圈的狀態(tài)或數(shù)據(jù)只能到下一個掃描周期才能對排在其上面的程序起作用。
本文將介紹西門子PLC的一些常用編程指令。
1. LD(Load)
LD指令用于將一個值或一個地址加載到一個寄存器中。例如,LD I0.0將輸入I0.0的狀態(tài)加載到一個寄存器中。
2. LDI(Load Immediate)
LDI指令用于將一個立即數(shù)加載到一個寄存器中。例如,LDI #10將數(shù)字10加載到一個寄存器中。
3. AND(And)
AND指令用于將兩個值進(jìn)行邏輯與操作。例如,AND I0.0 I0.1將輸入I0.0和I0.1的狀態(tài)進(jìn)行邏輯與操作。
4. OR(Or)
OR指令用于將兩個值進(jìn)行邏輯或操作。例如,OR I0.0 I0.1將輸入I0.0和I0.1的狀態(tài)進(jìn)行邏輯或操作。
5. NOT(Not)
NOT指令用于將一個值進(jìn)行邏輯非操作。例如,NOT I0.0將輸入I0.0的狀態(tài)進(jìn)行邏輯非操作。
6. SET(Set)
SET指令用于將一個輸出置為1。例如,SET Q0.0將輸出Q0.0的狀態(tài)置為1。
7. RESET(Reset)
RESET指令用于將一個輸出置為0。例如,RESET Q0.0將輸出Q0.0的狀態(tài)置為0。
8. MOV(Move)
MOV指令用于將一個值從一個寄存器移動到另一個寄存器。例如,MOV I0.0 M0.0將輸入I0.0的狀態(tài)移動到M0.0寄存器中。
9. ADD(Add)
ADD指令用于將兩個值進(jìn)行加法操作。例如,ADD M0.0 M0.1將M0.0和M0.1寄存器中的值進(jìn)行加法操作。
10. SUB(Subtract)
SUB指令用于將兩個值進(jìn)行減法操作。例如,SUB M0.0 M0.1將M0.0和M0.1寄存器中的值進(jìn)行減法操作。
11. MUL(Multiply)
MUL指令用于將兩個值進(jìn)行乘法操作。例如,MUL M0.0 M0.1將M0.0和M0.1寄存器中的值進(jìn)行乘法操作。
12. DIV(Divide)
DIV指令用于將兩個值進(jìn)行除法操作。例如,DIV M0.0 M0.1將M0.0和M0.1寄存器中的值進(jìn)行除法操作。
13. JMP(Jump)
JMP指令用于跳轉(zhuǎn)到程序中的另一個位置。例如,JMP LBL1將跳轉(zhuǎn)到程序中標(biāo)記為LBL1的位置。
14. CALL(Call)
CALL指令用于調(diào)用一個子程序。例如,CALL SUB1將調(diào)用程序中標(biāo)記為SUB1的子程序。
15. RET(Return)
RET指令用于從一個子程序中返回。例如,RET將從當(dāng)前子程序返回到調(diào)用它的位置。
總結(jié)
西門子PLC的編程指令非常豐富,本文介紹了其中的一些常用指令。PLC編程需要掌握的知識包括PLC的基本原理、PLC的硬件和軟件組成、PLC編程語言、PLC編程工具等。在學(xué)習(xí)PLC編程時,需要注重實踐,通過實際操作來加深對PLC編程的理解和掌握。