starcctv2008
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看starcctv2008的 主題 / 回貼
樓主  發(fā)表于: 2010-01-25 19:40
我的郵箱是 starcctv2008@163.com  謝謝!
george(王)
級別: *
精華主題: * 篇
發(fā)帖數(shù)量: * 個
工控威望: * 點
下載積分: * 分
在線時間: (小時)
注冊時間: *
最后登錄: *
查看george(王)的 主題 / 回貼
1樓  發(fā)表于: 2010-01-27 09:41
西門子PLC與CHV系列變頻器通信
一.功能介紹
英威騰CHV系列矢量變頻器內(nèi)置國際標準的MODBUS(從站)通信協(xié)議,配合CHV系列變頻器專用通訊卡,可非常方便的實現(xiàn)遠程通訊控制功能。通訊卡上提供RS232及RS485兩種物理通訊端口,用戶可通過設置卡上的跳線選擇。
下面以西門子S7-200系列PLC為例,介紹PLC與CHV矢量變頻器建立通訊并實現(xiàn)對變頻器起停、頻率給定、監(jiān)控等功能的控制。
變頻器作為MODBUS協(xié)議從站接收來自CPU224 PLC的通信指令,。
CHV系列矢量變頻器在與CPU224通信前須做好以下準備工作:
1.確認已安裝好CHV系列矢量變頻器的通訊卡,并將卡上的端口跳線置于RS485端;
2.用一根帶9針陽性插頭的串口通信電纜連接在CPU224 PLC的自由通信口端,電纜另一端的第5、3、8線分別接在CHV變頻器RS485通訊卡的GND、485+、485-端子上,其余線屏蔽不用;
3.預先設置變頻器以下參數(shù):
PC0.0=1                  //變頻器通訊地址為1
PC0.1=3                  //通訊波特率9.6K
PC0.2=1                  //通訊數(shù)據(jù)偶校驗
P0.01=2                  //變頻器的運行指令采用通訊方式
P0.03=7                  //變頻器的A頻率設定采用通訊方式
二.PLC內(nèi)存使用說明
西門子S7-200系列PLC的自由通訊端口編程必定會用到兩個指令,即XMT(發(fā)送)指令和RCV(接收)指令。編寫程序時需要為這兩個指令指定數(shù)據(jù)緩沖區(qū),一般以最低位數(shù)為0的地址作為數(shù)據(jù)緩沖區(qū)的起始地址。
    1.發(fā)送指令XMT緩沖區(qū)(寫/讀)
VB100        //xmt指令要發(fā)送的字節(jié)個數(shù)
VB101        //變頻器通訊地址(01)
VB102        //modbus功能碼(06/03)
VB103        //變頻器被寫地址高位/變頻器被讀起始地址高位
VB104        //變頻器被寫地址低位/變頻器被讀起始地址低位
VB105        //被寫數(shù)據(jù)高位/被讀數(shù)據(jù)字個數(shù)高位
VB106        //被寫數(shù)據(jù)低位/被讀數(shù)據(jù)字個數(shù)低位
VB107        //被發(fā)送數(shù)據(jù)CRC低位
VB108        //被發(fā)送數(shù)據(jù)CRC高位
2.接收指令RCV緩沖區(qū)
VB200        //rcv指令要接收的字節(jié)個數(shù)
VB201        //變頻器地址(01)
VB202        //modbus功能碼(06/03)
VB203        //變頻器被寫地址高位/被讀數(shù)據(jù)字節(jié)個數(shù)高位
VB204        //變頻器被寫地址低位/被讀數(shù)據(jù)字節(jié)個數(shù)低位
VB205        //被寫數(shù)據(jù)高位/被讀數(shù)據(jù)高位
VB206        //被寫數(shù)據(jù)低位/被讀數(shù)據(jù)低位
VB207        //被接收數(shù)據(jù)CRC低位
VB208        //被接收數(shù)據(jù)CRC高位
VB217       //被接收數(shù)據(jù)CRC驗算低位
VB218       //被接收數(shù)據(jù)CRC驗算高位
2.CRC校驗子程序(SBR0)
英威騰CHV系列矢量變頻器內(nèi)置的MODBUS協(xié)議采用RTU傳輸格式,該格式使用CRC校驗方式對每次發(fā)出或接收的數(shù)據(jù)幀進行校驗。因此,該子程序使用了多個局部變量,以方便其它子程序調(diào)用。
在西門子STEP 7-Micro/Win 編程環(huán)境下(如圖一),需要在該子程序的局部變量表中預先設定以下局部變量:

(1)輸入型局部變量(VAR_INPUT)
1d_0:DWORD; // 待發(fā)送數(shù)據(jù)地址指針變量
lw_4:WORD;  // 待發(fā)送數(shù)據(jù)字節(jié)個數(shù)變量
(2)輸出型局部變量(VAR_OUTPUT)
lb_6:BYTE;  // CRC校驗值高位變量
lb_7:BYTE;  // CRC校驗值低位變量
(3)臨時局部變量(VAR)
lw_8:WORD;    // 待發(fā)送數(shù)據(jù)字節(jié)個數(shù)計數(shù)變量
lw_10:WORD;    // 待發(fā)送數(shù)據(jù)每字節(jié)8位二進制數(shù)計數(shù)變量
Network 1
LD     SM0.0
MOVW   16#FFFF, LW6                //將16位CRC校驗寄存器LW6全置為1
Network 2
LD     SM0.0
FOR    LW8, +1, LW4                //對待發(fā)送數(shù)據(jù)字節(jié)個數(shù)(LW4)計數(shù)(LW8)循環(huán)
Network 3
LD     SM0.0
XORB   *LD0, LB7                   //使待發(fā)送數(shù)據(jù)的第一個字節(jié)(*LD0)與
                                   //CRC校驗寄存器低位字節(jié)(LB7)進行異或運算
Network 4
LD     SM0.0
INCD   LD0                         //ld_0指向待發(fā)送數(shù)據(jù)的下一個地址
Network 5
LD     SM0.0
FOR    LW10, +1, +8                //對每字節(jié)8位二進制數(shù)計數(shù)(LW10)循環(huán)
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                               //結(jié)束每字節(jié)8位二進制數(shù)計數(shù)循環(huán)
Network 9
NEXT                               //結(jié)束每數(shù)據(jù)幀字節(jié)個數(shù)計數(shù)循環(huán)
3.   初始化子程序(SBR1)
該程序在PLC的第一個掃描周期運行,主要是設置CPU224自由端口的通信格式、數(shù)據(jù)接收格式及復位各寄存區(qū)(參見西門子S7-200編程手冊)。
通信格式內(nèi)容包括:波特率9.6K、每字節(jié)位數(shù)8位、偶校驗等(注意與變頻器一致)。
數(shù)據(jù)接收格式完全參照MODBUS RTU格式設定,以不少于3.5個字節(jié)傳輸時間的通信口空閑間隔作為數(shù)據(jù)接收的開始及結(jié)束信號。根據(jù)協(xié)議,PLC在準備接收數(shù)據(jù)前會先監(jiān)測通信口是否空閑,如連續(xù)空閑時間超過了3.5個字節(jié)的傳輸時間,則PLC默認數(shù)據(jù)接收開始,此后通訊口上出現(xiàn)的信息即被認為是一個數(shù)據(jù)幀的內(nèi)容。同理,隨著一個數(shù)據(jù)幀的最后一個字節(jié)傳輸完成,又會出現(xiàn)一個3.5字節(jié)傳輸時間的空閑間隔,來表示一個數(shù)據(jù)幀傳輸?shù)慕Y(jié)束。(參見MODBUS協(xié)議標準及CHV系列矢量變頻器通訊卡使用說明書)
對9.6K的通信波特率來說,3.5個字節(jié)傳輸時間約為5ms左右。因該程式的每個指令只準備接收一個數(shù)據(jù)幀的回饋信息,所以接收數(shù)據(jù)前的空閑檢測時間可設為0,即PLC在發(fā)出數(shù)據(jù)后立即開始接收數(shù)據(jù),但一個數(shù)據(jù)幀的傳輸結(jié)束空閑檢測時間仍需設為5ms以上。
Network 1
LD     SM0.0
MOVB   16#49, SMB30                //設置自由通信口格式
MOVW   +0, SMW90                   //空閑行間隔檢測時間0ms
MOVW   +5, SMW92                   //字符間定時器超時檢測時間5ms
MOVB   20, SMB94                   //接收信息的最大緩沖區(qū)20字節(jié)
MOVB   148, SMB87                  //設置自由通信口的數(shù)據(jù)接收格式
FILL   +0, QW0, 1                  //輸出印象寄存區(qū)復位
FILL   +0, MW0, 1                  //標志寄存區(qū)復位
FILL   +0, VW100, 5                //發(fā)送緩沖區(qū)復位
FILL   +0, VW200, 5                //接收緩沖區(qū)復位
ATCH   INT_0, 23                   //接收完成中斷
ATCH   INT_1, 9                    //發(fā)送完成中斷
ENI                                //在全局啟用中斷
本帖最近評分記錄:
  • 下載積分:+1(zwk34) 熱心助人!