引言 隨著(zhù)PLC技術(shù)的不斷發(fā)展,越來(lái)越顯示其強大的核心控制功能,PLC和其他設備之間的連接已經(jīng)從比較煩瑣的傳統I/O方式向越來(lái)越受歡迎的簡(jiǎn)潔先進(jìn)的通信方式過(guò)渡,不僅為設計者節省了大量的硬件成本,更能為遠程控制,組網(wǎng)提供了可能,使控制系統更加無(wú)縫地融為一體。 本文主要通過(guò)艾默生PLC和多臺變頻器組網(wǎng)通信(以MODBUS協(xié)議方式)為例,說(shuō)明PLC和多臺變頻器網(wǎng)絡(luò )控制的通信程序的設計方法。 一、 MODBUS協(xié)議簡(jiǎn)要介紹 Modbus協(xié)議由美國著(zhù)名的MODICON公司提出,通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò )(例如以太網(wǎng))和其它設備之間可以通信,不同廠(chǎng)商生產(chǎn)的控制設備可以連成工業(yè)網(wǎng)絡(luò ),進(jìn)行集中監控,它已經(jīng)成為一通用工業(yè)標準?刂破魍ㄐ攀褂弥鳌獜募夹g(shù),即僅一設備(主設備)能初始化傳輸(查詢(xún))。其它設備(從設備)根據主設備查詢(xún)提供的數據作出相應反應。典型的主設備:IPC,HMI,PLC等;典型的從設備:各種儀表,PLC,變頻器等。主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢(xún)的,則不作任何回應。Modbus協(xié)議建立了主設備查詢(xún)和從設備回應的格式:設備(或廣播)地址、功能代碼、所有要發(fā)送的數據、錯誤檢測域。Modbus協(xié)議同時(shí)支持RTU模式和ASCII模式,RTU模式對應的幀格式如下:(ASCII模式介紹省略) ![]() 更詳細的說(shuō)明請查閱MODBUS協(xié)議的有關(guān)資料(或登陸網(wǎng)站 www.modbus.org)。 二、 艾默生PLC集成的MODBUS協(xié)議功能 艾默生EC20系列PLC的通信口COM 1集成了MODBUS主站協(xié)議, 在編程時(shí)先在編程軟件的系統塊里進(jìn)行設置具體如下:系統塊—》“通信口”菜單—》“通信口1參數設置”菜單—》 選“MODBUS協(xié)議”—》 進(jìn)行“MODBUS設置”—》 進(jìn)行通信參數和(主模式)站號等設置即可。 然后利用MODBUS指令進(jìn)行編程-----------MODBUS (S1) (S2)(S3)各參數含義如下: S1 指定的通訊通道; S2 發(fā)送數據起始地址; S3 接收數據起始地址; MODBUS指令發(fā)送過(guò)程中,自動(dòng)加上所需的起始字符,結束字符和校驗和;發(fā)送的數據,不需設定發(fā)送的數據長(cháng)度,系統會(huì )根據功能碼自動(dòng)按系統內部設定長(cháng)度進(jìn)行發(fā)送。 2個(gè)重要的通信標志:SM135-- MODBUS的通訊成功標志位,通訊成功時(shí)置位,不會(huì )自動(dòng)復位,所以在發(fā)送數據的時(shí)候要進(jìn)行一次復位;SM136—MODBUS的通信錯誤標志位,通信錯誤(包括從設備沒(méi)有回應)時(shí)置位,不會(huì )自動(dòng)復位,所以在接收數據的時(shí)候要進(jìn)行一次復位; 三、 艾默生變頻器通信協(xié)議 艾默生公司生產(chǎn)的EV系列變頻器都集成MODBUS協(xié)議,且提供RS232C和RS485通信口供用戶(hù)選擇,所以通過(guò)PLC和變頻器通信的方式完成控制比較簡(jiǎn)單經(jīng)濟,而且顯得系統比較高檔,下面簡(jiǎn)單介紹其協(xié)議: 1. 支持MODBUS RTU和ASCII格式; 2. 參數的MODBUS協(xié)議地址影射規則:變頻器的功能碼參數、控制參數和狀態(tài)參數都映射為Modbus的讀寫(xiě)寄存器。變頻器功能碼的組號映射為寄存器地址的高字節,組內索引映射為寄存器地址的低字節。變頻器的控制參數和狀態(tài)參數均虛擬為變頻器功能碼組。功能碼組號與其映射的寄存器地址高字節的對應關(guān)系如下: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;變頻器狀態(tài)參數組:0x33。例如變頻器功能碼參數F3.02的寄存器地址為0x302,變頻器功能碼參數FF.01的寄存器地址為0xF01。 3. 支持的功能碼如下: ![]() 4. 具體的協(xié)議介紹請參考艾默生變頻器用戶(hù)手冊; 四、 程序流程圖 主設備對從設備的消息查詢(xún)命令主要分為2大類(lèi),連續命令序列和隨機命令序列。 連續命令序列: 主設備需要定時(shí)或連續向從設備發(fā)送的命令序列。特點(diǎn)是周期性,連續性。如PLC對變頻器讀取運行頻率命令,運行狀態(tài)命令等。 隨機命令序列: 主設備不定時(shí)或隨機向從設備發(fā)送的命令序列。特點(diǎn)是不定時(shí)性,隨機性。如PLC對變頻器的啟?刂,改寫(xiě)頻率或其他參數等。 五、程序清單:( 子程序和主程序 ) 本程序主要介紹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ā)送輔助使能 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 //寫(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 ANI M1 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 //****************************************** //**********以下是9個(gè)隨機命令序列*********** //9個(gè)隨機命令思路都一樣; //隨機命令使能標志置位后,若連續命令處于切換狀態(tài),則可進(jìn)入發(fā)送狀態(tài),否則只有等待; //發(fā)送時(shí)先置位發(fā)送輔助位M1993,調用子程序進(jìn)行發(fā)送和接收; //無(wú)論通信成功或失敗都復位各自的隨機命令使能標志,當然這里仍然省略了通信錯誤處理程序; //如果所有的隨機命令都完成,則隨機命令等待標志M1000=OFF; //調用“頻率設定”子程序-2#站 LD M9 //隨機命令序列7使能標志 ANI M1001 //判斷連續命令處于切換狀態(tài)時(shí) MPS EU SET M1993 //置位發(fā)送輔助位 MRD CALL 運頻設定 2 D1100 M1993 //參數注釋?zhuān)赫镜刂,設定頻率,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M9 //復位隨機命令序列7使能標志 //調用“頻率設定”子程序-3#站 LD M10 //隨機命令序列8使能標志 ANI M1001 //判斷連續命令處于切換狀態(tài)時(shí); MPS EU SET M1993 //置位發(fā)送輔助位 MRD CALL 運頻設定 3 D1101 M1993 //參數注釋?zhuān)赫镜刂,設定頻率,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M10 //調用“頻率設定”子程序-4#站 LD M11 /隨機命令序列9使能標志 ANI M1001 MPS EU SET M1993 MRD CALL 運頻設定 4 D1102 M1993 //參數注釋?zhuān)赫镜刂,設定頻率,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M10 //調用“正轉開(kāi)機”子程序-2#站 LD X11 //開(kāi)機按扭 EU SET M0 //隨機命令序列1使能標志 LD M0 ANI M1001 MPS EU SET M1993 MRD CALL 正轉開(kāi)機 2 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M0 //調用“正轉開(kāi)機”子程序-3#站 LD X12 //開(kāi)機按扭 EU SET M1 //隨機命令序列2使能標志 LD M1 ANI M1001 MPS EU SET M1993 MRD CALL 正轉開(kāi)機 3 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M1 //調用“正轉開(kāi)機”子程序-4#站 LD X13 //開(kāi)機按扭 EU SET M2 //隨機命令序列3使能標志 LD M2 ANI M1001 MPS EU SET M1993 MRD CALL 正轉開(kāi)機 4 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M2 //調用“停機”子程序-2#站 LD X14 //停機按扭 EU SET M3 //隨機命令序列4使能標志 LD M3 ANI M1001 MPS EU SET M1993 MRD CALL 停機 2 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M3 //調用“停機”子程序-3#站 LD X15 //停機按扭 EU SET M4 //隨機命令序列5使能標志 LD M4 ANI M1001 MPS EU SET M1993 MRD CALL 停機 3 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M4 //調用“停機”子程序-4#站 LD X16 //停機按扭 EU SET M5 //隨機命令序列6使能標志 LD M5 ANI M1001 MPS EU SET M1993 MRD CALL 停機 4 M1993 //參數注釋?zhuān)赫镜刂,發(fā)送輔助位 MPP LD SM135 OR SM136 ANB RST M5 六、 程序說(shuō)明: 例程設計時(shí)實(shí)際在連續命令序列切換的間隙停留了100MS的時(shí)間,這就是說(shuō)程序中的連續序列是間歇性的;如果要采用非間歇性的連續序列,把中間的延時(shí)部分去掉就可以了。 七、 結論 本例程所闡述的通信序列邏輯處理的方法在筆者的一些項目中得到實(shí)際應用,效果也達到預期設想,運行比較穩定,這種PLC通過(guò)通信的方式對多臺變頻器通信的方法在實(shí)際應用中有很大的參考價(jià)值,不僅能夠充分利用EMERSON PLC和變頻器的硬件資源達到節省成本的目的,而且更易于進(jìn)行整個(gè)系統的整合。 來(lái)源: 電子工程網(wǎng) |