艾默生工業自動化 李慶敏
本文通過艾默生PLC和多台變頻器組網通信控製編程(以MODBUS協議方式)為例,說明PLC和多台變頻器網絡控製的通信程序的設計方法。
Serves to illuminate design of communication program based on PLC and multi converter network control, by taking the match under MODBUS mode
關鍵詞:艾默生PLC,變頻器,MODBUS協議,連續命令序列,隨機命令序列
KEY WORDS:EMERSON PLC,INVERTER,MODBUS PROTOCOL, a series of orders, incidental orders
引言 隨著PLC技術的不斷發展,越來越顯示其強大的核心控製功能,PLC和其他設備之間的連接已經從比較煩瑣的傳統I/Ofangshixiangyuelaiyueshouhuanyingdejianjiexianjindetongxinfangshiguodu,bujinweishejizhejieshengledaliangdeyingjianchengben,gengnengweiyuanchengkongzhi,zuwangtigonglekeneng,shikongzhixitonggengjiawufengdirongweiyiti。
本文主要通過艾默生PLC和多台變頻器組網通信(以MODBUS協議方式)為例,說明PLC和多台變頻器網絡控製的通信程序的設計方法。
一、 MODBUS協議簡要介紹
Modbus協議由美國著名的MODICON公司提出,通過此協議,控製器相互之間、控製器經由網絡(例如以太網)和he其qi它ta設she備bei之zhi間jian可ke以yi通tong信xin,不bu同tong廠chang商shang生sheng產chan的de控kong製zhi設she備bei可ke以yi連lian成cheng工gong業ye網wang絡luo,進jin行xing集ji中zhong監jian控kong,它ta已yi經jing成cheng為wei一yi通tong用yong工gong業ye標biao準zhun。控kong製zhi器qi通tong信xin使shi用yong主zhu―從技術,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)根據主設備查詢提供的數據作出相應反應。典型的主設備:IPC,HMI,PLC等;典型的從設備:各種儀表,PLC,bianpinqideng。zhushebeikedanduhecongshebeitongxin,yenengyiguangbofangshihesuoyoucongshebeitongxin。ruguodandutongxin,congshebeifanhuiyixiaoxizuoweihuiying,ruguoshiyiguangbofangshizhaxunde,zebuzuorenhehuiying。Modbus協議建立了主設備查詢和從設備回應的格式:設備(或廣播)地址、功能代碼、所有要發送的數據、錯誤檢測域。Modbus協議同時支持RTU模式和ASCII模式,RTU模式對應的幀格式如下:(ASCII模式介紹省略)

二、 艾默生PLC集成的MODBUS協議功能
艾默生EC20係列PLC的通信口COM 1集成了MODBUS主站協議, 在編程時先在編程軟件的係統塊裏進行設置具體如下:係統塊―>“通信口”菜單―>“通信口1參數設置”菜單―> 選“MODBUS協議”―> 進行“MODBUS設置”―> 進行通信參數和(主模式)站號等設置即可。
然後利用MODBUS指令進行編程-----------MODBUS (S1) (S2)(S3)各參數含義如下:
S1 指定的通訊通道;
S2 發送數據起始地址;
S3 接收數據起始地址;
MODBUS指令發送過程中,自動加上所需的起始字符,結束字符和校驗和;發送的數據,不需設定發送的數據長度,係統會根據功能碼自動按係統內部設定長度進行發送。
2個重要的通信標誌:SM135-- MODBUS的通訊成功標誌位,通訊成功時置位,不會自動複位,所以在發送數據的時候要進行一次複位;SM136―MODBUS的通信錯誤標誌位,通信錯誤(包括從設備沒有回應)時置位,不會自動複位,所以在接收數據的時候要進行一次複位;
三、 艾默生變頻器通信協議
艾默生公司生產的EV係列變頻器都集成MODBUS協議,且提供RS232C和RS485通信口供用戶選擇,所以通過PLC和變頻器通信的方式完成控製比較簡單經濟,而且顯得係統比較高檔,下麵簡單介紹其協議:
1. 支持MODBUS RTU和ASCII格式;
2. 參數的MODBUS協議地址影射規則:變頻器的功能碼參數、控製參數和狀態參數都映射為Modbusdeduxiejicunqi。bianpinqigongnengmadezuhaoyingsheweijicunqidizhidegaozijie,zuneisuoyinyingsheweijicunqidizhidedizijie。bianpinqidekongzhicanshuhezhuangtaicanshujunxuniweibianpinqigongnengmazu。gongnengmazuhaoyuqiyingshedejicunqidizhigaozijiededuiyingguanxiruxia:F0組:0x00;F1組:0x01;F2組:0x02;F3組:0x03;F4組:0x04;F5組:0x05;F6組:0x06;F7組:0x07;F8組:0x08;F9組:0x09;FA組:0x0A;Fb組:0x0B;FC組:0x0C;Fd組:0x0D;FE組:0x0E;FF組:0x0F;FH組:0x10;FL組:0x11;Fn組:0x12;FP組:0x13;FU組:0x14;變頻器控製參數組:0x32;變頻器狀態參數組:0x33。例如變頻器功能碼參數F3.02的寄存器地址為0x302,變頻器功能碼參數FF.01的寄存器地址為0xF01。
3. 支持的功能碼如下:
|
功能碼 |
功能碼意義 |
|
0x03 |
讀取變頻器功能碼參數和運行狀態參數 |
|
0x06 |
改寫單個變頻器功能碼或者控製參數,掉電之後不保存 |
|
0x08 |
線路診斷 |
|
0x10 |
改寫多個變頻器功能碼或者控製參數,掉電之後不保存 |
|
0x41 |
改寫單個變頻器功能碼或者控製參數,掉電之後保存 |
|
0x42 |
功能碼管理 |
4. 具體的協議介紹請參考艾默生變頻器用戶手冊;
四、 程序流程圖
主設備對從設備的消息查詢命令主要分為2大類,連續命令序列和隨機命令序列。
連續命令序列: 主設備需要定時或連續向從設備發送的命令序列.特點是周期性,連續性.如PLC對變頻器讀取運行頻率命令,運行狀態命令等。
五、程序清單:( 子程序和主程序 )
本程序主要介紹1台EC20PLC(作為主站)按照MODBUS協議網絡對3台變頻器(從站號分別是2,3,4)進行通信控製的簡單範例,本例中:
連續命令序列 包括對2,3,4號變頻器的運行頻率的讀取;
隨機命令序列 包括對2,3,4號變頻器進行啟動,停止,更改頻率的命令操作;
1) “變頻器正轉”子程序清單如下:
//主程序中用M1993作為各發送輔助使能,主要用於 MODBUS指令的上升沿觸發無其他用
LD LM0 //位輸入參數型―發送輔助使能
RST SM135 //複位成功標誌
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 //寫入數據高字節
MOV 16#C7 V15 //寫入數據低字節
//以下把發送數據轉移到D7940-D7945裏
LD SM0
MOV 0 Z0
LD SM0
FOR 6
LD SM0
MOV V10Z0 D7940Z0
LD SM0
INC Z0
NEXT
//發送接收數據,數據放在D7970開始區域
LD LM0
MODBUS 1 D7940 D7970
RST LM0 //馬上複位發送輔助使能
//無論成功失敗都還原Z0值
//當然這裏省略了錯誤報告的處理
LD SM135
OR SM136
EU //上升沿
MOV V9 Z0
2) “停機”子程序(省略)
3) “設定頻率”子程序(省略)
4) “讀取運行頻率”子程序(省略)
5) 主程序清單:
//******以下為通信邏輯處理部分******
LD SM1 //運行第一周期脈衝
//***這裏省略了檢查從機準備好否的環節***
//***程序裏設計了3個連續命令序列***
RST M6 //複位連續命令序列1使能標誌
RST M7 //複位連續命令序列2使能標誌
RST M8 //複位連續命令序列3使能標誌
ED //下降沿
//置位連續命令序列1使能標誌,以開始第1條連續命令執行
SET M6
//***程序裏設計了共9個隨機命令序列***
//隻要有至少1個隨機命令, // M1000=ON,表示有隨機命令等待,這樣在連續命令切換時優先執行隨機命令係列.
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
ANI M1
ANI M2
ANI M3
ANI M4
ANI M5
ANI M9
ANI M10
ANI M11
RST M1000
//任何1個連續命令未完成時,M1001=ON,標誌連續命令在進行,如果有隨機命令必須等待。
LD M6
OR M7
OR M8
SET M1001
//連續命令處於切換狀態時,M1001=OFF,標誌連續命令完成,如果有隨機命令可以進行。
LDI M6
ANI M7
ANI M8
RST M1001
//每1個連續命令完成且無隨機命令等待時,啟動延時T0 100MS,以便切換下1個連續命令執行
LD M100 //連續命令1完成標誌
OR M101 //連續命令2完成標誌
OR M102 //連續命令3完成標誌
ANI M1000
TON T0 1 //啟動延時T0 100MS
//******************************************
//**********以下為3個連續命令序列**********
//調用“讀取運行頻率”子程序-2#站,頻率存在D1000裏;
//通信成功或失敗都複位連續命令序列1使能標誌M6,同時置位完成標誌M100,以便進行切換。當然這裏省略了失敗的處理子程序;
//延時T0時間後,執行連續命令2序列,置位連續命令2序列使能標誌M7;
LD M6 //連續命令序列1使能
MPS
EU
SET M1993 //發送前置位發送輔助標誌
MRD
CALL 讀取運行頻率 2 M1993 D1000
//參數注釋:站地址,發送輔助位,頻率存放地址
MPP
LD SM135
OR SM136
ANB
RST M6
SET M100
LD T0
AND M100
EU
RST M100 //複位連續命令1完成標誌
SET M7
//調用“讀取運行頻率”子程序-3#站,頻率存在D1001裏;
//通信成功或失敗都複位連續命令序列2使能標誌M7,同時置位完成標誌M101,以便進行切換。當然這裏省略了失敗的處理子程序;
//延時T0時間後,執行連續命令3序列,置位連續命令3序列使能標誌M8;
LD M7 //連續命令2序列使能
MPS
EU
SET M1993 //發送前置位發送輔助標誌
MRD
CALL 讀取運行頻率 3 M1993 D1001
//參數注釋:站地址,發送輔助位,頻率存放地址
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,同時置位完成標誌M102,以便進行切換。當然這裏省略了失敗的處理子程序;
//延時T0時間後,重新執行連續命令1序列,置位連續命令1序列使能標誌M6;
|