基礎實用入門的西門子S7-200PLC學習筆記
一、輸入信號:I0.0-I0.7; I1.0-I1.7
二、輸出信號:Q0.0-Q0.7; Q1.0-Q1.5
三、繼電器:M0.0-M31.7;共256位
四、時間繼電器(從T37開始編):通電延時(TON)
有記憶的通電延時(TONR)
斷電延時(TOF)
圖1
以圖1為例,IN為輸入信號,TON表示這個時間繼電器是通電延時,T37表示這個繼電器命名為T37,100ms是單位基數, PT為延遲時間
時間繼電器延遲時間算法:PT時間單位基數;圖1中延遲時間為100100ms=10000ms=10s
五、計數器(C0-C255):增計數器(CTU)
減計數器(CTD)
增減計數器(CTUD)
圖2
以圖2為例,C1表示這個計時器命名為C1,CTU表示這個計數器為增計數器,CU為觸發信號,R為復位信號,PV為計數次數
提示:1. 計數器CU端與R端不能存在or狀態
2.計數器要從最左端主線直接輸入信號
3.一個網絡里只能有一個計數器
六、上升沿(P):上升沿觸發,當輸入信號狀態由0—1則發生動作,反之由1—0則不動作
下降沿(N):下降沿觸發,當輸入信號狀態由1—0則發生動作,反之由0—1則不動作
七、特殊功能寄存器(SM):
SM0.0:使運行時一直為1,是常ON繼電器,一般用在程序開始最左側第一位置,辦證每次都掃描;
SM0.1:是CPU第一次上電運行時動作一次,也就是一個上升沿,一般作為初始故障復位使用;
SM0.2:當機器執行數學運算結果為負時,該位被置1;
SM0.3:開機后進入RUN方式,該位被置1一個掃描周期;
SM0.4:是以1min為周期的脈沖波形,可以作為計數器觸發使用;
SM0.5:是以1秒為周期的脈沖波形,可以作為計數器觸發使用;
SM0.6:為掃描時鐘脈沖,首次掃描為1,下次為0,在下次為1,以此類推;
SM1.0:當執行某些指令,其結果為0時,將改位置為1;
SM1.1:當執行某些指令,其結果溢出或非法數值時,將改位置為1;
SM1.2:當執行數學運算指令,其結果為負數時,將改位置為1;
SM1.3:試圖除以0時,將改位置為1。
八、順序控制繼電器(S):
順序控制繼電器區為順序控制繼電器的數據而建立一個存儲區,用S表示;可以按位、字節、字、雙字四種方式來存取。
(1)位:S0.0-S31.7,共256點
(2)字節:SB0-SB31,共32字節
(3)字:SW0-SW30,共16字
(4)雙字:SD0-SD28,共8個雙字
注:程序中S上方是置位的起始位置,下方的數字是從起始位置開始的總點數,如圖三表示從Q0.0開始置位三個點(Q0.0,Q0.1,Q0.2);R的上方下方表達意思與S一樣。
圖3
九、復位(R):用法與順序控制繼電器一樣,順序控制繼電器是置位,R為復位。
十、跳轉指令與標簽指令
跳轉指令(JMP):在預置觸發信號接通時,使程序跳轉到標簽處執行;
標簽(LBL):標記跳轉的目的地位置;
JMP與LBL指令上方的數字為對應的位置,即當JMP指令上方數字為n時,接通時會自動跳轉到相對應的上方數字為n的LBL命令的位置來執行程序,常用來切換兩個不同工作狀態下的不同的程序。
十一、高速計數器(HC)
用來累積比CPU的掃描速率更快的事件,計數過程與掃描周期無關。
十二、累加器(AC)
用來向子程序傳遞參數和從子程序返回參數,或用來臨時保存中間的運算結果。
十三、程序組織單元(POU)
將主程序、子程序和中斷程序統稱為程序組織單元(POU),各POU都有自己的64B的局部存儲器;使用梯形圖和功能模塊圖時,將保留局部存儲器的最后4B。
十四、局部存儲器(L)、變量存儲器(V)
僅在它被創建的POU中有效,各POU不能訪問別的POU的局部存儲器;變量存儲器(V)是全局存儲器,可以被所有的POU訪問。
十五、模擬量輸入(AI)
AI模塊將連續變化的模擬量按比例轉換為一個字長(16位)的數字量,用區域標識符AI、表示數據長度的W(字)和起始字節的地址來表示模擬量輸入的地址,例如AW16,模擬量輸入值為只讀數據。
十六、模擬量輸出(AQ)
AO模塊將長度為一個字的數字轉換為現實世界的模擬量,用區域標識符AQ、表示數據長度W(字)和起始字節的地址來表示存儲模擬量輸出的地址,例如AQW32,模擬量輸出值是只寫數據,用戶不能讀取模擬量輸出值。
十七、使能輸入與使能輸出
梯形圖中,用方框鏢師某些指令,例如定時器和數學運算指令,通常方框指令的輸入端在左邊,輸出端在右邊;能流從左至右,不能有短路、開路和反方向的能流,前一個方框的輸出可以作為后一個方框的輸入。
十八、移位指令與循環移位指令
梯形圖 | 語句表 | 描述 |
---|---|---|
SHR_B | SRB OUT,N | 右移字節 |
SHL_B | SLB OUT,N | 左移字節 |
SHR_W | SRW OUT,N | 右移字 |
SHL_W | SLW OUT,N | 左移字 |
SHR_DW | SRD OUT,N | 右移雙字 |
SHL_DW | SLD OUT,N | 左移雙字 |
表1、移位指令
梯形圖 | 語句表 | 描述 |
---|---|---|
ROR_B | RRB OUT,N | 循環右移字節 |
ROL_B | RLB OUT,N | 循環左移字節 |
ROR_W | RRW OUT,N | 循環右移字 |
ROL_W | RLW OUT,N | 循環左移字 |
ROR_DW | RRD OUT,N | 循環右移雙字 |
ROL_DW | RLD OUT,N | 循環左移雙字 |
SHRB | SHRB DATA,S BIT,N | 移位寄存器 |
表2、循環移位指令
十九、數據轉換指令
實現字節(B)與整數(I)、整數與雙整數(DI)、BCD碼與整數、雙整數(DI)與實數(R)之間的轉換指令,以及七段譯碼指令。
梯形圖 | 語句表 | 描述 |
---|---|---|
B_I | BTI IN,OUT | 字節轉換為整數 |
I_B | ITB IN,OUT | 整數轉換為字節 |
I_DI | ITD IN,OUT | 整數轉換為雙整數 |
DI_I | DTI IN,OUT | 雙整數轉換為整數 |
DI_R | DTR IN,OUT | 雙整數轉換為實數 |
I_BCD | IBCD OUT | 整數轉換為BCD碼 |
BCD_I | BCDI OUT | BCD碼轉換為整數 |
ROUND | ROUND IN,OUT | 實數四舍五入為雙整數 |
TRUNC | TRUNC IN,OUT | 實數截位取整為雙整數 |
SEG | SEG IN,OUT | 段碼 |
DECO | DECO IN,OUT | 解碼 |
ENCO | ENCO IN,OUT | 編碼 |
表3、數據轉換指令
二十、時鐘指令
梯形圖 | 語句表 | 描述 |
---|---|---|
READ_RTC | TORD T | 讀取實時時鐘 |
SET_RTC | TODW T | 設置實時時鐘 |
READ_RTCX | TODRX T | 讀取擴展實時時鐘 |
SET_RTCX | TODWX T | 設置擴展實時時鐘 |
表4、時鐘指令
例:
圖4
如圖4所示,表示在I0.0的上升沿讀取日期時間值,用VB42開始的時間緩沖區保存讀取的值。將所編程序下載到PLC之后,打開I0.0,可以在狀態表里監控VD42和VD46中讀取的BCD碼值,圖中讀取的值為2020年4月21日15點21分16秒,星期二;
在星期的取值中,星期的取值范圍為07,1表示星期日,27表示星期一到星期六,為0時將禁用星期(保持為0)。
二十一、看門狗
CPU循環的循環監視時間的開始(500ms);程序執行時間超過500ms或者進入死循環時會報錯。
二十二、過程映像區
在循環程序處理過程中,CPU需要一致的過程映像信號。為此在程序執行之前讀取/寫入過程信號。在隨后的程序處理中。CPU在對輸入(I)和輸出(Q)地址區尋址時不直接訪問信號模塊,而是訪問包含I/O過程映像的CPU系統存儲區。
二十三、主程序、子程序、中斷程序
主程序循環執行,可以調用子程序;
子程序可以清晰的指出程序需要的功能,主程序中加入的子程序要先執行子程序才能執行下一段主程序,子程序中還可以調用子程序,一共可以調用8個,想全部執行完才能進入下一段主程序;S7-200 CPU最多可以調用64個子程序(CPU226為128個);子程序可以帶參數調用,在子程序的局部變量表中設置參數的類型,一共可以帶16個參數。
中斷程序:發生某一事件后執行此程序;只能嵌一個子程序;中斷程序有不同的優先級,中斷程序不能再被打斷,會按照發生的時間順序和優先級排隊。
二十五、FOR/NEXT指令
每條FOR指令必須對應一條NEXT指令;FOR/NEXT指令循環可嵌套深度可達8層;FOR指令用沿觸發;循環結束,當下一次允許時,FOR/NEXT指令復位它自己,并把初始值拷貝到INDX中。
二十六、程序控制,順序控制
每條SCR指令必須對應有SCRE結束之靈;
不能把同一個S位用于不同程序中,例如:如果在主程序中用了S0.1,在子程序中就不能再使用它;
在SCR段之間不能使用JMP和LBL指令,但可以在SCR段內使用跳轉和標號指令;SCR段之間的跳轉,可以使用SCRT或復位/置位指令
在SCR段中不能使用END指令
二十七、程序控制其余指令
RET:根據前一個邏輯從子程序返回主程序;軟件自動在子程序最后增加無條件返回。
END:根據前一個邏輯條件終止主程序;可以在主程序中使用“有條件結束”指令,但不能在子程序或中斷程序中使用;軟件自動在主程序最后增加無條件結束。
STOP:重新將PLC轉換至STOP模式。
WDR:重新觸發CPU的看門狗定時器,擴展掃描允許使用的時間,而不會出現看門狗錯誤;慎用!!!
DIAG-LED:設置診斷LED燈;當輸入參數IN的數值為零,則診斷LED會被設置為不發光。如果輸入參數IN的數值大于零,則診斷LED會被設置為發光(黃色)。
二十八、BGN-ITIME和CAL-ITIME指令可測量兩任務的時間間隔,也可間接實現定時功能。
二十九、rs-485口MODBUS通訊
Modbus主站讀寫程序
注意:1、Modbus RTU主站功能是通過指令庫中預先編好的程序功能塊實現的,該庫只針對Port0口有效
2、Modbus RTU主站使用了一些用戶中斷,在用戶程序中不能禁止中斷
3、此處訪問的為一個從站,若訪問不同的從站,可通過改變從站地址來實現
第一步初始化:復位modbus庫完成位,初始化完成后,啟動讀寫指令m0.1置位
第三步:M0.1置位讀取從站數據,讀取保持寄存器40001-40008 8個數據根據數據格式寫入&VB1000,40001,40002為32位浮點數,則保持在VB1000 VB1001 VB1002 VB1003中,依次類推,讀取完成M2.1置位,復位讀取從站保持寄存器MO.1 M2.3
M2.2置位,寫數據開始,VB3000寫入00001中,寫完成,M2.3置位,開始讀,M2.2復位。
將程序寫入PLC,通過串口調試助手,PLC給電腦發送如下指令
03 02 00 00 00 08 78 2E是PLC要讀取從站的輸入點
03 0F 00 00 00 08 01 00 7F 4C是PLC要寫從站的輸入點
03 03 00 00 00 08 45 EE是PLC要讀從站的保持寄存器
三十、PLC為從站MODBUS通訊
PLC中各寄存器地址與MODBUS地址對照表
功能號 | Modbus地址 | s7-200Plc地址 | 描述 |
---|---|---|---|
0 | 00001—00128 | Q0.0—Q15.7 | Q輸出 |
00001 | Q0.0 | ||
00002 | Q0.1 | ||
00003 | Q0.2 | ||
… | … | ||
00127 | Q15.6 | ||
00128 | Q15.7 | ||
1 | 10001—10128 | I0.0—I15.7 | I輸入 |
10001 | I0.0 | ||
10002 | I0.1 | ||
10003 | I0.2 | ||
… | … | ||
10127 | I15.6 | ||
10128 | I15.7 | ||
3 | 30001—30032 | AIW0—AIW62 | AI模擬量輸入 |
30001 | AIW0 | ||
30002 | AIW2 | ||
30003 | AIW4 | ||
… | … | ||
30031 | AIW60 | ||
30032 | AIW62 | ||
4 | 40001—4**** | T—T+2*(****-1) | V區(T為起始位) |
40001 | T | ||
40002 | T+2*(2-1) | ||
40003 | T+2*(3-1) | ||
… | … |
三十一、SCR指令
SCR指令專門用于編制順序控制程序。順序控制程序被分為LSCR與SCRE指令之間的若干個SCR段,一個SCR段對應于順序功能圖中的一步。
一個SCR程序段一般有以下三種功能:
1)驅動處理:在該段狀態有效時,要做什么工作,有時也可能不做任何工作。
2)指定轉移條件和目標:滿足什么條件后狀態轉移到何處。
3)轉移源自動復位功能:狀態發生轉移后,置位下一個狀態的同時,自動復位原狀態。
S7-200 PLC提供了三條順序控制指令:裝載SCR(LSCR)指令、SCR傳輸(SCRT)指令和SCR結束(SCRE)指令。如下圖所示
SCR指令的操作如下:
1)裝載SCR (LSCR,Load SCR)指令用來表示一個SCR段(即順序功能圖中的步)的開始。指令中的操作數S—Bit為順序控制繼電器S(BOOL型)的地址,順序控制繼電器S為1狀態時,執行對應的SCR段中的程序,反之則不執行。
2) SCR傳輸(SCRT,SCR Transition)指令將程序控制權從一個激活的SCR段傳遞到另一個SCR段,即步的活動狀態的轉換。執行SCRT指令,當SCRT線圈“得電”時,SCRT指令中指定的順序功能圖中的后續步對應的順序控制繼電器S位置位(變為1狀態),同時當前活動步對應的順序控制繼電器S位被系統程序復位(變為0狀態),當前步變為不活動步。
在SCRT指令執行時,復位當前激活的程序段的S位并不會影響S堆棧。SCR段會一直保持能流直到退出。
3) SCR結束(SCRE,SCR END)指令標志著SCR段的結束。
使用SCR指令時有以下的限制:
1) SCR指令僅對元件S有效,順序控制繼電器S也具有一般繼電器的功能,所以對它能夠使用其他指令。
2)不能把同一個S位用于不同程序中,例如如果在主程序中使用了SO.1,則在子程序中就不能再使用它。
3)在SCR段中不能使用JMP和LBL指令,即不允許用跳轉的方法跳入或跳出SCR段;但可以在SCR段附近使用跳轉和標號指令或者在段內跳轉。
4)在SCR段中不能使用FOR、NEXT和END指令。
5)在狀態發生轉移后,所有的SCR段的元件一般也要復位,如果希望繼續輸出,可使用置位/復位指令。
6)在使用順序功能圖時,SCR段的編寫可以不按順序編排。
三十二、閉環控制與PID控制器
PID控制(即比例-積分-微分)優點:
1、即使沒有控制系統的數學模型,也能得到比較滿意的控制效果;
2、通過調用PID指令來編程,程序設計簡單,參數調整方便;
3、有較強的靈活性和適應性,根據被控對象的具體情況,可以采用P、PI、PD、和PID等方式,S7-200的PID指令還采用了一些改進的控制方式。
模擬量閉環控制:
在模擬量閉環控制系統中,被控量c(t)被傳感器和變送器轉換為標準量程的直流電流、電壓信號PV(t),PLC用模擬量輸入模塊中的A-D轉換器,將它們轉換為時間上離散的多位二進制過程變量(又稱為反饋值)PVn。
模擬量與數字量之間的相互轉換和PID程序的執行都是周期性的操作,其間隔時間稱為采樣周期Ts。各數字量中的下標n表示該變量是第n次采樣計算時的數字量。
工作原理:
閉環負反饋控制可以使過程變量PVn等于或跟隨設定值SPn。
性能指標:
由于給定輸入信號或擾動輸入信號的變化,使系統的輸出量發生變化,在系統輸出量達到穩態之前的過程稱為過渡過程或動態過程;系統的動態過程的性能指標用階躍響應的參數來描述,階躍響應是指系統的輸入信號階躍變化時系統的響應。
閉環控制帶來的問題:
使用閉環控制后,并不能保證得到良好的動靜態性能,這主要是由系統中的滯后因素造成的,閉環中的滯后因素主要來源于被控對象。
閉環控制反饋極性的確定:
閉環控制必須保證系統是負反饋(誤差=設定值-過程變量),而不是正反饋(誤差=設定值+過程變量);如果系統接成了正反饋,將會失控,被控量會往單一方向增大或減少,給系統的安全帶來極大的威脅。
判斷反饋極性的辦法:
在調試時斷開模擬量輸出模塊與執行機構之間的連線,在開環狀態下運行PID控制程序。如果控制器有積分環節,因為反饋被斷開了,不能消除誤差,模擬量輸出模塊的輸出電壓或電流會向一個方向變化;這時如果假設接上執行機構,能減少誤差,則為負反饋,反之為正反饋。
自己學習所記錄,有不足請指教,若有興趣一起交流,關注微信公眾號:電子開發網