閱讀 | 訂閱
閱讀 | 訂閱
控制系統(tǒng)

西門(mén)子PLC與CHV系列變頻器通信(二)

星之球激光 來(lái)源:中國(guó)自動(dòng)化網(wǎng)2013-03-16 我要評(píng)論(0 )   

2.CRC校驗(yàn)子程序(SBR0) 英威騰CHV系列矢量 變頻器 內(nèi)置的MODBUS協(xié)議采用RTU傳輸格式,該格式使用CRC校驗(yàn)方式對(duì)每次發(fā)出或接收的數(shù)據(jù)幀進(jìn)行校驗(yàn)。因此,該子程序使用...

    2.CRC校驗(yàn)子程序(SBR0)

  英威騰CHV系列矢量變頻器內(nèi)置的MODBUS協(xié)議采用RTU傳輸格式,該格式使用CRC校驗(yàn)方式對(duì)每次發(fā)出或接收的數(shù)據(jù)幀進(jìn)行校驗(yàn)。因此,該子程序使用了多個(gè)局部變量,以方便其它子程序調(diào)用。

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

  

 ?。?)輸入型局部變量(VAR_INPUT)

  1d_0:DWORD; // 待發(fā)送數(shù)據(jù)地址指針變量

  lw_4:WORD; // 待發(fā)送數(shù)據(jù)字節(jié)個(gè)數(shù)變量

 ?。?)輸出型局部變量(VAR_OUTPUT)

  lb_6:BYTE; // CRC校驗(yàn)值高位變量

  lb_7:BYTE; // CRC校驗(yàn)值低位變量

 ?。?)臨時(shí)局部變量(VAR)

  lw_8:WORD; // 待發(fā)送數(shù)據(jù)字節(jié)個(gè)數(shù)計(jì)數(shù)變量

  lw_10:WORD; // 待發(fā)送數(shù)據(jù)每字節(jié)8位二進(jìn)制數(shù)計(jì)數(shù)變量

  Network 1

  LD SM0.0

  MOVW 16#FFFF, LW6 //將16位CRC校驗(yàn)寄存器LW6全置為1

#p#分頁(yè)標(biāo)題#e#  Network 2

  LD SM0.0

  FOR LW8, +1, LW4 //對(duì)待發(fā)送數(shù)據(jù)字節(jié)個(gè)數(shù)(LW4)計(jì)數(shù)(LW8)循環(huán)

  Network 3

  LD SM0.0

  XORB *LD0, LB7 //使待發(fā)送數(shù)據(jù)的第一個(gè)字節(jié)(*LD0)與

  //CRC校驗(yàn)寄存器低位字節(jié)(LB7)進(jìn)行異或運(yùn)算

  Network 4

  LD SM0.0

  INCD LD0 //ld_0指向待發(fā)送數(shù)據(jù)的下一個(gè)地址

  Network 5

  LD SM0.0

  FOR LW10, +1, +8 //對(duì)每字節(jié)8位二進(jìn)制數(shù)計(jì)數(shù)(LW10)循環(huán)

  Network 6

  LD SM0.0

  SRW LW6, 1 //CRC校驗(yàn)寄存器LW6右移一位

  Network 7

  LD SM1.1 //若移位后的溢出值SM1.1為1

#p#分頁(yè)標(biāo)題#e#  XORW 16#A001, LW6 //則使值16#A001與LW6進(jìn)行異或運(yùn)算

  Network 8

  NEXT //結(jié)束每字節(jié)8位二進(jìn)制數(shù)計(jì)數(shù)循環(huán)

  Network 9

  NEXT //結(jié)束每數(shù)據(jù)幀字節(jié)個(gè)數(shù)計(jì)數(shù)循環(huán)

    3. 初始化子程序(SBR1)

  該程序在PLC的第一個(gè)掃描周期運(yùn)行,主要是設(shè)置CPU224自由端口的通信格式、數(shù)據(jù)接收格式及復(fù)位各寄存區(qū)(參見(jiàn)西門(mén)子S7-200編程手冊(cè))。

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

  數(shù)據(jù)接收格式完全參照MODBUS RTU格式設(shè)定,以不少于3.5個(gè)字節(jié)傳輸時(shí)間的通信口空閑間隔作為數(shù)據(jù)接收的開(kāi)始及結(jié)束信號(hào)。根據(jù)協(xié)議,PLC在準(zhǔn)備接收數(shù)據(jù)前會(huì)先監(jiān)測(cè)通信口是否空閑,如連續(xù)空閑時(shí)間超過(guò)了3.5個(gè)字節(jié)的傳輸時(shí)間,則PLC默認(rèn)數(shù)據(jù)接收開(kāi)始,此后通訊口上出現(xiàn)的信息即被認(rèn)為是一個(gè)數(shù)據(jù)幀的內(nèi)容。同理,隨著一個(gè)數(shù)據(jù)幀的最后一個(gè)字節(jié)傳輸完成,又會(huì)出現(xiàn)一個(gè)3.5字節(jié)傳輸時(shí)間的空閑間隔,來(lái)表示一個(gè)數(shù)據(jù)幀傳輸?shù)慕Y(jié)束。(參見(jiàn)MODBUS協(xié)議標(biāo)準(zhǔn)及CHV系列矢量變頻器通訊卡使用說(shuō)明書(shū))

  對(duì)9.6K的通信波特率來(lái)說(shuō),3.5個(gè)字節(jié)傳輸時(shí)間約為5ms左右。因該程式的每個(gè)指令只準(zhǔn)備接收一個(gè)數(shù)據(jù)幀的回饋信息,所以接收數(shù)據(jù)前的空閑檢測(cè)時(shí)間可設(shè)為0,即PLC在發(fā)出數(shù)據(jù)后立即開(kāi)始接收數(shù)據(jù),但一個(gè)數(shù)據(jù)幀的傳輸結(jié)束空閑檢測(cè)時(shí)間仍需設(shè)為5ms以上。

  Network 1

  LD SM0.0

  MOVB 16#49, SMB30 //設(shè)置自由通信口格式

  MOVW +0, SMW90 //空閑行間隔檢測(cè)時(shí)間0ms

  MOVW +5, SMW92 //字符間定時(shí)器超時(shí)檢測(cè)時(shí)間5ms

  MOVB 20, SMB94 //接收信息的最大緩沖區(qū)20字節(jié)#p#分頁(yè)標(biāo)題#e#

  MOVB 148, SMB87 //設(shè)置自由通信口的數(shù)據(jù)接收格式

  FILL +0, QW0, 1 //輸出印象寄存區(qū)復(fù)位

  FILL +0, MW0, 1 //標(biāo)志寄存區(qū)復(fù)位

  FILL +0, VW100, 5 //發(fā)送緩沖區(qū)復(fù)位

  FILL +0, VW200, 5 //接收緩沖區(qū)復(fù)位

  ATCH INT_0, 23 //接收完成中斷

  ATCH INT_1, 9 //發(fā)送完成中斷

  ENI //在全局啟用中斷

 

轉(zhuǎn)載請(qǐng)注明出處。

暫無(wú)關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來(lái)源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來(lái)源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系我們刪除。
③ 任何單位或個(gè)人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請(qǐng)及時(shí)向本網(wǎng)提出書(shū)面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會(huì)依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評(píng)
0相關(guān)評(píng)論
精彩導(dǎo)讀