PLC在變頻器網(wǎng)絡(luò )控制中的通信程序設計
五、程序清單:( 子程序和主程序 )
本程序主要介紹1臺EC20PLC(作為主站)按照MODBUS協(xié)議網(wǎng)絡(luò )對3臺變頻器(從站號分別是2,3,4)進(jìn)行通信控制的簡(jiǎn)單范例,本例中:
連續命令序列 包括對2,3,4號變頻器的運行頻率的讀??;
隨機命令序列 包括對2,3,4號變頻器進(jìn)行啟動(dòng),停止,更改頻率的命令操作;
1) “變頻器正轉”子程序清單如下:
//主程序中用M1993作為各發(fā)送輔助使能,主要用于 MODBUS指令的上升沿觸發(fā)無(wú)其他用
LD LM0 //位輸入參數型—發(fā)送輔助使能
RSTSM135 //復位成功標志
RST SM136 //復位失敗標志
LD SM0 //運行標志
MOV Z0 V9 //保存Z0值到V9
LD SM0 //運行標志
MOV V0 V10 //從機地址
MOV 16#6 V11 //功能碼
MOV 16#32 V12 //寄存器地址高字節
MOV 16#0 V13 //寄存器地址低字節
MOV 1 V14 //寫(xiě)入數據高字節
MOV 16#C7 V15 //寫(xiě)入數據低字節
//以下把發(fā)送數據轉移到D7940-D7945里
LD SM0
MOV 0 Z0
LD SM0
FOR 6
LD SM0
MOV V10Z0 D7940Z0
LD SM0
INC Z0
NEXT
//發(fā)送接收數據,數據放在D7970開(kāi)始區域
LD LM0
MODBUS 1 D7940 D7970
RST LM0 //馬上復位發(fā)送輔助使能
//無(wú)論成功失敗都還原Z0值
//當然這里省略了錯誤報告的處理
LD SM135
OR SM136
EU //上升沿
MOV V9 Z0
2) “停機”子程序(省略)
3) “設定頻率”子程序(省略)
4) “讀取運行頻率”子程序(省略)
5) 主程序清單:
//******以下為通信邏輯處理部分******
LD SM1 //運行第一周期脈沖
//***這里省略了檢查從機準備好否的環(huán)節***
//***程序里設計了3個(gè)連續命令序列***
RST M6 //復位連續命令序列1使能標志
RST M7 //復位連續命令序列2使能標志
RST M8 //復位連續命令序列3使能標志
ED //下降沿
//置位連續命令序列1使能標志,以開(kāi)始第1條連續命令執行
SET M6
//***程序里設計了共9個(gè)隨機命令序列***
//只要有至少1個(gè)隨機命令, // M1000=ON,表示有隨機命令等待,這樣在連續命令切換時(shí)優(yōu)先執行隨機命令系列。
LD M0 //隨機命令序列1使能標志
OR M1 //隨機命令序列2使能標志
OR M2 //隨機命令序列3使能標志
OR M3 //隨機命令序列4使能標志
OR M4 //隨機命令序列5使能標志
OR M5 //隨機命令序列6使能標志
OR M9 //隨機命令序列7使能標志
OR M10 //隨機命令序列8使能標志
OR M11 //隨機命令序列9使能標志
SET M1000
//所有隨機命令都處理完成后, M1000=OFF,表示隨機命令完成,則連續命令可以正常切換。
LDI M0
ANIM1
ANI M2
ANI M3
ANI M4
ANI M5
ANI M9
ANI M10
ANI M11
RST M1000
//任何1個(gè)連續命令未完成時(shí),M1001=ON,標志連續命令在進(jìn)行,如果有隨機命令必須等待。
LD M6
OR M7
OR M8
SET M1001
//連續命令處于切換狀態(tài)時(shí),M1001=OFF,標志連續命令完成,如果有隨機命令可以進(jìn)行。
LDI M6
ANI M7
ANI M8
RST M1001
//每1個(gè)連續命令完成且無(wú)隨機命令等待時(shí),啟動(dòng)延時(shí)T0 100MS,以便切換下1個(gè)連續命令執行
LD M100 //連續命令1完成標志
OR M101 //連續命令2完成標志
OR M102 //連續命令3完成標志
ANI M1000
TON T0 1 //啟動(dòng)延時(shí)T0 100MS
//******************************************
//**********以下為3個(gè)連續命令序列**********
//調用“讀取運行頻率”子程序-2#站,頻率存在D1000里;
//通信成功或失敗都復位連續命令序列1使能標志M6,同時(shí)置位完成標志M100,以便進(jìn)行切換。當然這里省略了失敗的處理子程序;
//延時(shí)T0時(shí)間后,執行連續命令2序列,置位連續命令2序列使能標志M7;
LD M6 //連續命令序列1使能
MPS
EU
SET M1993 //發(fā)送前置位發(fā)送輔助標志
MRD
CALL 讀取運行頻率 2 M1993 D1000
//參數注釋?zhuān)赫镜刂?,發(fā)送輔助位,頻率存放地址
MPP
LD SM135
OR SM136
ANB
RST M6
SET M100
LD T0
AND M100
EU
RST M100 //復位連續命令1完成標志
SET M7
//調用“讀取運行頻率”子程序-3#站,頻率存在D1001里;
//通信成功或失敗都復位連續命令序列2使能標志M7,同時(shí)置位完成標志M101,以便進(jìn)行切換。當然這里省略了失敗的處理子程序;
//延時(shí)T0時(shí)間后,執行連續命令3序列,置位連續命令3序列使能標志M8;
LD M7 //連續命令2序列使能
MPS
EU
SET M1993 //發(fā)送前置位發(fā)送輔助標志
MRD
CALL 讀取運行頻率 3 M1993 D1001
//參數注釋?zhuān)赫镜刂?,發(fā)送輔助位,頻率存放地址
MPP
LD SM135
OR SM136
ANB
RST M7 //復位使能標志
SET M101 //置位完成標志
LD T0
AND M101
EU
RST M101 //復位連續命令2完成標志
SET M8 //置位連續命令3使能標志
//調用“讀取運行頻率”子程序-4#站,頻率存在D1002里
//通信成功或失敗都復位連續命令序列3使能標志M8,同時(shí)置位完成標志M102,以便進(jìn)行切換。當然這里省略了失敗的處理子程序;
//延時(shí)T0時(shí)間后,重新執行連續命令1序列,置位連續命令1序列使能標志M6;
LD M8 //連續命令3序列使能
MPS
EU
SET M1993
MRD
CALL 讀取運行頻率 4 M1993 D1002
//參數注釋?zhuān)赫镜刂?,發(fā)送輔助位,頻率存放地址
MPP
LD SM135
OR SM136
ANB
RST M8
SET M102
LD T0
AND M102
EU
RST M102
SET M6
評論