1. 程式人生 > >02_ACS550變頻器RS485Modbus通訊-通訊命令

02_ACS550變頻器RS485Modbus通訊-通訊命令

ACS550變頻器Modbus定址

當我們能正確進行通訊的時候,即可開始對變頻器進行控制。

Modbus功能程式碼比較多,其中我們在對ACS550進行控制的時候,用的比較多的為03和06。

03:讀取4x暫存器。

06:寫單個4x暫存器。

因為03和06直接對映為4x對應的暫存器,因此我們在進行控制的時候,比較簡單,例如:

0000對應的為40001暫存器,0001對應的為40002暫存器,00032對應的為40033暫存器。

ACS550變頻器Modbus控制字

Modbus控制字即40001對應的暫存器的值,我們通過往該暫存器寫值,根據每一位的不同控制其實現不同的功能。

控制字有16位。以ABB傳動為例。

0(關斷1控制):

位0為關斷1控制,當取值為1時標識進入準備執行狀態,取0時表示緊急關斷。

當該位為1,且1、2位為1(關斷1、2不啟用)的時候,且為3為允許執行的時候,變頻器即可執行。

1/2(關斷1/2控制):

位1和2分別為關斷1和關斷2。當取值為1的時候,為不啟用。

關斷0/1/2為互鎖狀態,即其中一個啟用的時候,另兩個應該為不啟用。

3(禁止執行):

當位3取0的時候為禁止執行,取1為允許執行。

4(積分輸出置零):

該位在ABB傳動簡裝版中未使用。

在ABB傳動完整版中,1表示加速允許,0表示置積分函式發生器為0,傳動器停車。

5(積分保持):

1表示積分允許,即加速允許,0表示積分輸出保持,停止積分,積分函式發生器輸出保持。

6(積分輸出置0):

1表示積分輸入允許,正常執行,進入執行狀態。0表示積分輸入置0,將積分函式發生器輸入置0。

注:個人理解,當我們需要變頻器加速的時候,需要給他一個目標值,距離目標值越遠,加速越快,當積分函式發生器保持為某一個值的時候,變頻器恆速執行,當積分輸入置0的時候,停止執行。

7(復位):

該位為0表示正常執行,如果出現故障,該位有0變為1,進行故障復位。

8/9:

未使用。

10:

ABB傳動簡裝版中未使用。

ABB傳動完整版中1表示現場匯流排控制允許。

11(外部控制本地):

1外部2選擇,0為外部1選擇。

12~15:未使用。

注:當我們進行指令傳送的時候,儘量以ABB傳動完整版的指令進行控制和傳送,例如第10位,不管是簡裝版還是完整版,都將其置1,這樣即使我們從簡裝版切換為完整版,也能保證指令能夠正常執行。

ACS550變頻器控制

/**
 * 變頻器控制
 * ========================================================================
 * ACS550的通訊啟動過程:
 * 變頻器上電以後(狀態為不具備合閘條件(Not Ready To Switch On)),則需要逐個進行6次成功的
 * 通訊才可以啟動完畢(每次通訊變頻器的迴應應與PLC所發內容相同)
 * 1.使變頻器具備合閘條件(Ready To Switch On)
 *      01 06 00 00 00 06 09 C8             (09C8為CRC校驗碼)
 * 2.使變頻器給定1的值清0(Clear The Text REF1)
 *      01 06 00 01 00 00 D8 A0
 * 3.使變頻器狀態為準備就緒(Ready To Operate)
 *      01 06 00 00 00 07 C8 08
 * 4.使變頻器狀態為允許執行(Operation Enabled)
 *      01 06 00 00 00 0F C9 CE
 * 5.使變頻器狀態為允許加速(ACCELERATOR ENABLED)
 *      01 06 00 00 00 2F C8 16
 * 6.使變頻器狀態為執行(Operating)
 *      01 06 00 00 00 6F C9 E6
 *=======================================================================
 * 要停止正在執行的變頻器,應發停止命令(不應以0速命令代替停止命令)
 * 停止命令有三種:
 *      急停1(變頻器按照減速時間1(引數2203)減速停止)
 *      急停2(變頻器按照減速慣性減速停止)
 *      急停3(變頻器按照減速時間2(引數2205)減速停止)
 * 一般可使用急停1(變頻器迴應應與PLC所發內容相同)
 *      01 06 00 00 00 6D 48 27
 *=======================================================================
 * 改變執行速度命令
 * 正在執行的變頻器可以接收變速命令,即通訊給定。
 * 寫入給定1保持暫存器的值0~20000對應變頻器輸出速度0~EXT REF1 MAX = 50.0HZ
 * 欲使變頻器輸出10.0HZ,應寫入20000/5 = 4000 即 0F A0
 * 變頻器的迴應應與PLC相同
 *      01 06 00 01 00 00 D8 0A
 *      (注意:CRC校驗字的放置順序應為先低位元組後高位元組)
 *=======================================================================
 * 讀變頻器資料引數
 * 可以經通訊讀變頻器引數如輸出速度,電流,轉矩,功率等引數,若所讀引數在變頻器暫存器地址上連續,
 * 還可以用一條命令讀取多個引數,如讀取輸出電流:
 *      01 03 00 67 00 01 35 D5
 * 變頻器的迴應:
 *      01 03 01 電流H 電流L CRCL CRCH
 *
 * 若要讀取輸出頻率,電流,轉矩,功率連續四個引數:
 *      01 03 00 66 00 04 A4 16
 * 變頻器的迴應:
 *      01 03 04 頻率H 頻率L 電流H 電流L 轉矩H 轉矩L 功率H 功率L CRCL CRCH
 *
 * 若讀回的電流字(電流H,電流L) 為 01 A5,則實際電流數值為 01 A5 = 42.1A
 *
 */

變頻器傳送的例子如上所示,例如我們要控制其他功能,例如修改變頻器加速時間,即對應的引數為2202,則2202對應的地址為2201,16進位制值為0x0899,修改加速時間為60.0s,則設定其值為600,對應的二進位制為0x0258,則我們傳送的指令應為:

    01 06 08 99 02 58 CRCH CRCL

總結

本文只介紹了控制字的部分功能,當我們進行資料讀取的時候,可能需要用到狀態字,根據我們對控制字的分析,結合使用者手冊查詢對應的狀態字各個位對應的功能,即可方便傳送我們需要的指令,就不再對狀態字即其他暫存器進行贅述了。