1. 控制任務(wù)
一恒壓供水水箱,通過變頻器驅(qū)動(dòng)的水泵供水,維持水位在滿水位的70%。過程變量PVn為水箱的水位(由水位檢測計(jì)提供),設(shè)定值為70%,PID輸出控制變頻器,即控制水箱注水調(diào)速電機(jī)的轉(zhuǎn)速。要求開機(jī)后,先手動(dòng)控制電機(jī),水位上升到70%時(shí),轉(zhuǎn)換到PID自動(dòng)調(diào)節(jié)。
2. PID回路參數(shù)表,如表6-17所示。
表6-17 恒壓供水 PID控制參數(shù)表dzkfw.com.cn
地址 | 參數(shù) | 數(shù)值 |
VB100 | 過程變量當(dāng)前值PVn | 水位檢測計(jì)提供的模擬量經(jīng)A/D轉(zhuǎn)換后的標(biāo)準(zhǔn)化數(shù)值 |
VB104 | 給定值SPn | 0.7 |
VB108 | 輸出值Mn | PID回路的輸出值(標(biāo)準(zhǔn)化數(shù)值) |
VB112 | 增益Kc | 0.3 |
VB116 | 采樣時(shí)間Ts | 0.1 |
VB120 | 積分時(shí)間Ti | 30 |
VB124 | 微分時(shí)間Td | 0(關(guān)閉微分作用)www.shkcfs.com |
VB128 | 上一次積分值Mx | 根據(jù)PID運(yùn)算結(jié)果更新 |
VB132 | 上一次過程變量PVn-1 | 最近一次PID的變量值 |
(1)I/O分配
手動(dòng)/自動(dòng)切換開關(guān)I0.0 模擬量輸入AIW0 模擬量輸出AQW0
(2)程序結(jié)構(gòu)
由主程序,子程序,中斷程序構(gòu)成。主程序用來調(diào)用初始化子程序,子程序用來建立PID回路初始參數(shù)表和設(shè)置中斷,由于定時(shí)采樣,所以采用定時(shí)中斷(中斷事件號(hào)為10),設(shè)置周期時(shí)間和采樣時(shí)間相同(0.1s),并寫入SMB34。中斷程序用于執(zhí)行PID運(yùn)算,I0.0=1時(shí),執(zhí)行PID運(yùn)算,本例標(biāo)準(zhǔn)化時(shí)采用單極性(取值范圍32000)。
3. 語句表程序
主程序
LD SM0.1
CALL SBR_0
子程序(建立PID回路參數(shù)表,設(shè)置中斷以執(zhí)行PID指令)
LD SM0.0
MOVR 0.7, VD104 // 寫入給定值(注滿70%)
MOVR 0.3, VD112 // 寫入回路增益(0.25)
MOVR 0.1, VD116 // 寫入采樣時(shí)間(0.1秒)
MOVR 30.0, VD120 // 寫入積分時(shí)間(30分鐘)
MOVR 0.0, VD124 // 設(shè)置無微分運(yùn)算
MOVB 100, SMB34 // 寫入定時(shí)中斷的周期100ms
ATCH INT_0, 10 // 將INT-0(執(zhí)行PID)和定時(shí)中斷連接
ENI // 全局開中斷
中斷程序(執(zhí)行PID指令)
LD SM0.0
ITD AIW0, AC0 // 將整數(shù)轉(zhuǎn)換為雙整數(shù)
DTR AC0, AC0 // 將雙整數(shù)轉(zhuǎn)換為實(shí)數(shù)


MOVR AC0, VD100 // 將標(biāo)準(zhǔn)化PV寫入回路參數(shù)表


LD SM0.0
MOVR VD108, AC0 // 將PID回路輸出移至累加器
*R 32000.0, AC0 // 實(shí)際化數(shù)值


圖6-18 恒壓供水 PID控制
ROUND AC0, AC0 // 將實(shí)際化后的數(shù)值取整
DTI AC0, AC0 // 將雙整數(shù)轉(zhuǎn)換為整數(shù)
MOVW AC0, AQW0 // 將數(shù)值寫入模擬輸出
4. 梯形圖程序
梯形圖程序如圖6-18所示。