新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 西門子PLC與英威騰CHV系列變頻器通信

        西門子PLC與英威騰CHV系列變頻器通信

        作者: 時間:2016-12-20 來源:網絡 收藏

        一.功能介紹

          英威騰CHV系列矢量變頻器內置國際標準的MODBUS(從站)通信協議,配合CHV系列變頻器專用通訊卡,可非常方便的實現遠程通訊控制功能。通訊卡上提供RS232RS485兩種物理通訊端口,用戶可通過設置卡上的跳線選擇。

          下面以西門子S7-200系列PLC為例,介紹PLC與CHV矢量變頻器建立通訊并實現對變頻器起停、頻率給定、監控等功能的控制。

          變頻器作為MODBUS協議從站接收來自CPU224 PLC的通信指令,。

          CHV系列矢量變頻器在與CPU224通信前須做好以下準備工作:

          1.確認已安裝好CHV系列矢量變頻器的通訊卡,并將卡上的端口跳線置于RS485端;

          2.用一根帶9針陽性插頭的串口通信電纜連接在CPU224

          PLC的自由通信口端,電纜另一端的第5、3、8線分別接在CHV變頻器RS485通訊卡的GND、485+、485-端子上,其余線屏蔽不用;

          3.預先設置變頻器以下參數:

        PC0.0=1 //變頻器通訊地址為1
        PC0.1=3 //通訊波特率9.6K
        PC0.2=1 //通訊數據偶校驗
        P0.01=2 //變頻器的運行指令采用通訊方式
        P0.03=7 //變頻器的A頻率設定采用通訊方式

        二.PLC內存使用說明

          西門子S7-200系列PLC的自由通訊端口編程必定會用到兩個指令,即XMT(發送)指令和RCV(接收)指令。編寫程序時需要為這兩個指令指定數據緩沖區,一般以最低位數為0的地址作為數據緩沖區的起始地址。

          1.發送指令XMT緩沖區(寫/讀)

        VB100 //xmt指令要發送的字節個數
        VB101 //變頻器通訊地址(01)
        VB102 //modbus功能碼(06/03)
        VB103 //變頻器被寫地址高位/變頻器被讀起始地址高位
        VB104 //變頻器被寫地址低位/變頻器被讀起始地址低位
        VB105 //被寫數據高位/被讀數據字個數高位
        VB106 //被寫數據低位/被讀數據字個數低位
        VB107 //被發送數據CRC低位
        VB108 //被發送數據CRC高位
        2.接收指令RCV緩沖區
        VB200 //rcv指令要接收的字節個數
        VB201 //變頻器地址(01)
        VB202 //modbus功能碼(06/03)
        VB203 //變頻器被寫地址高位/被讀數據字節個數高位
        VB204 //變頻器被寫地址低位/被讀數據字節個數低位
        VB205 //被寫數據高位/被讀數據高位
        VB206 //被寫數據低位/被讀數據低位
        VB207 //被接收數據CRC低位
        VB208 //被接收數據CRC高位
        VB217 //被接收數據CRC驗算低位
        VB218 //被接收數據CRC驗算高位

          2.CRC校驗子程序(SBR0)

          英威騰CHV系列矢量變頻器內置的MODBUS協議采用RTU傳輸格式,該格式使用CRC校驗方式對每次發出或接收的數據幀進行校驗。因此,該子程序使用了多個局部變量,以方便其它子程序調用。

          在西門子STEP 7-Micro/Win編程環境下(如圖一),需要在該子程序的局部變量表中預先設定以下局部變量:

          (1)輸入型局部變量(VAR_INPUT)

        1d_0:DWORD; // 待發送數據地址指針變量
        lw_4:WORD; // 待發送數據字節個數變量

          (2)輸出型局部變量(VAR_OUTPUT)

        lb_6:BYTE; // CRC校驗值高位變量
        lb_7:BYTE; // CRC校驗值低位變量

          (3)臨時局部變量(VAR)

        lw_8:WORD; // 待發送數據字節個數計數變量
        lw_10:WORD; // 待發送數據每字節8位二進制數計數變量
        Network 1
        LD SM0.0
        MOVW 16#FFFF, LW6 //將16位CRC校驗寄存器LW6全置為1
        Network 2
        LD SM0.0
        FOR LW8, +1, LW4 //對待發送數據字節個數(LW4)計數(LW8)循環
        Network 3
        LD SM0.0
        XORB *LD0, LB7 //使待發送數據的第一個字節(*LD0)與
        //CRC校驗寄存器低位字節(LB7)進行異或運算
        Network 4
        LD SM0.0
        INCD LD0 //ld_0指向待發送數據的下一個地址
        Network 5
        LD SM0.0
        FOR LW10, +1, +8 //對每字節8位二進制數計數(LW10)循環
        Network 6
        LD SM0.0
        SRW LW6, 1 //CRC校驗寄存器LW6右移一位
        Network 7
        LD SM1.1 //若移位后的溢出值SM1.1為1
        XORW 16#A001, LW6 //則使值16#A001與LW6進行異或運算
        Network 8
        NEXT //結束每字節8位二進制數計數循環
        Network 9
        NEXT //結束每數據幀字節個數計數循環

          3. 初始化子程序(SBR1)

          該程序在PLC的第一個掃描周期運行,主要是設置CPU224自由端口的通信格式、數據接收格式及復位各寄存區(參見西門子S7-200編程手冊)。

          通信格式內容包括:波特率9.6K、每字節位數8位、偶校驗等(注意與變頻器一致)。

          數據接收格式完全參照MODBUSRTU格式設定,以不少于3.5個字節傳輸時間的通信口空閑間隔作為數據接收的開始及結束信號。根據協議,PLC在準備接收數據前會先監測通信口是否空閑,如連續空閑時間超過了3.5個字節的傳輸時間,則PLC默認數據接收開始,此后通訊口上出現的信息即被認為是一個數據幀的內容。同理,隨著一個數據幀的最后一個字節傳輸完成,又會出現一個3.5字節傳輸時間的空閑間隔,來表示一個數據幀傳輸的結束。(參見MODBUS協議標準及CHV系列矢量變頻器通訊卡使用說明書對9.6K的通信波特率來說,3.5個字節傳輸時間約為5ms左右。因該程式的每個指令只準備接收一個數據幀的回饋信息,所以接收數據前的空閑檢測時間可設為0,即PLC在發出數據后立即開始接收數據,但一個數據幀的傳輸結束空閑檢測時間仍需設為5ms以上。

        Network 1
        LD SM0.0
        MOVB 16#49, SMB30 //設置自由通信口格式
        MOVW +0, SMW90 //空閑行間隔檢測時間0ms
        MOVW +5, SMW92 //字符間定時器超時檢測時間5ms
        MOVB 20, SMB94 //接收信息的最大緩沖區20字節
        MOVB 148, SMB87 //設置自由通信口的數據接收格式
        FILL +0, QW0, 1 //輸出印象寄存區復位
        FILL +0, MW0, 1 //標志寄存區復位
        FILL +0, VW100, 5 //發送緩沖區復位
        FILL +0, VW200, 5 //接收緩沖區復位
        ATCH INT_0, 23 //接收完成中斷
        ATCH INT_1, 9 //發送完成中斷
        ENI //在全局啟用中斷



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 高淳县| 乌兰察布市| 贵德县| 那曲县| 嘉定区| 太仆寺旗| 呼伦贝尔市| 德昌县| 行唐县| 祁阳县| 文安县| 本溪市| 三穗县| 怀来县| 临猗县| 松滋市| 南宁市| 石棉县| 梧州市| 罗平县| 巴中市| 河南省| 葫芦岛市| 东光县| 巫山县| 南昌市| 定襄县| 松滋市| 屏东县| 秭归县| 循化| 平罗县| 昭觉县| 卓资县| 宜宾市| 家居| 临沂市| 剑阁县| 平昌县| 新津县| 金堂县|