VB編寫(xiě)的ModbusRTU協(xié)議通訊源程序_第1頁(yè)
VB編寫(xiě)的ModbusRTU協(xié)議通訊源程序_第2頁(yè)
VB編寫(xiě)的ModbusRTU協(xié)議通訊源程序_第3頁(yè)
VB編寫(xiě)的ModbusRTU協(xié)議通訊源程序_第4頁(yè)
VB編寫(xiě)的ModbusRTU協(xié)議通訊源程序_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、vb編寫(xiě)的modbus rtu協(xié)議通訊源程序vb編寫(xiě)的modbus rtu協(xié)議通訊源程序sunwu建議刪除該貼!丨收藏丨回復(fù)修改| 2005-12-09 12:37:09樓主modbus rtu協(xié)議叮以算是一種事實(shí)上 的工業(yè)標(biāo)準(zhǔn)協(xié)議,為許多儀表、plc等所支持。以前有幾個(gè)用戶(hù)問(wèn)如 何使用vb編程來(lái)與我們的knd-k3系列plc通訊,于是整了一個(gè)demo 程序。這次把這個(gè)demo共享,希望能給大家一點(diǎn)幫助。1)模塊文件:modcrc,其中包含了 crc校驗(yàn)的函數(shù)。'delta待校驗(yàn)的數(shù)組名稱(chēng)'no數(shù)組中元素個(gè)數(shù)'btlocrc 算出的crc高字節(jié)'bthicrc

2、算出的crc低字節(jié)public function calcrc16fast(data() as byte, no as integer, btlocrc as byte, bthicrc as byte) as stringdim cl as byte, ch as byte&ha001dim savehi as byte, savelo as bytedim i as integerdim flag as integerbthicrc = &hff btlocrc 二 &hffcl = &h1ch 二 &ha0for i = 0 to (no - 1)

3、bthicrc器進(jìn)行異或bthicrc xor data(i) j 每一個(gè)數(shù)據(jù)與 crc 寄存for flag = 0 to 7savehi = btlocrcsavelo = bthicrcbtlocrc = btlocrc 2bthicrc 二 bthicrc 2'高位右移一位 '低位右移一位一位為1前面補(bǔ)1if (savehi and &h1)二 &h1) then '如果高位字節(jié)最后bthicrc二bthicrc or &h80'則低位字節(jié)右移后end if'否則自動(dòng)補(bǔ)0if (savelo and &ii1) =

4、 &1i1) then '如果 lsb 為 1,則 與多項(xiàng)式碼進(jìn)行異或btlocrc = btlocrc xor chbthicrc 二 bthicrc xor clend ifnext flagnext idim returndata(l) as bytereturndata(o) = bthicrcreturndata(l)二 btlocrccalcrc16fast = returndataend functionpublic function calcrc16tbl(data() as byte, no as integer, btlocrc as byte, btlli

5、crc as byte) as stringdim btlocrc as bytedim btllicrc as byte btlocrc 二 &hffbthicrc = &hffdim i as integerdim ilndex as longfor i = 0 to (no 一 1)訂ndex 二 bthicrc xor data(i)bthicrc 二 btlocrc xor getcrclo(ilndex)'低位處理'高位btlocrc = getcrchi(ilndex)處理next idim returndata(1) as bytereturnd

6、ata(0) = bthicrcreturndata (1)二 btlocrccalcrc16tbl = returndataend function'crc低位字節(jié)值表function getcrclo(ind as long) as bytegetcrclo = choose(ind + 1,&h0,&hc1, &h81, &h40, &h1, &hc0, &h80,&h41,&h1, &hc0, _&h80,&h41,&h0,&hc1,&h81,&h40

7、,&h1,&hc0,&h80, &h41, _&h0,&hc1,&h81,&h40,&h0,&hc1,&h81,&ii40,&1i1, &iic0, _&ii80,&ii41,&ii1,&iic0,&ii80,&1i41,&ii0,&hc1,&h81, &h40, _&ii0,&iic1,&ii81,&ii40,&ii1,&iic0,&ii80,&a

8、mp;h41,&h0, &hc1, _&h81,&h40,&h1,&hc0,&h80,&h41,&h1,&iic0,&1i80, &ii41, _&h0,&hc1,&h81,&h40,&h1,&hc0,&h80,&h41,&h0, &hc1, _&ii81,&ii40,&ii0,&iic1,&ii81,&ii40,&ii1,&hc0,&h80, &a

9、mp;h41, _&h0,&hc1,&h81,&h40,&h1,&hc0,&h80,&ii41,&1i1, &iic0, _&ii80,&ii41,&ii0,&iic1,&ii81,&ii40,&ii0,&hc1,&h81, &h40, _&ii1, &iic0, &ii80, &ii41, &ii1, &iic0, &ii80,&h41, &h0, &hc

10、1,&h81, &h40, &h1, &hco, &h80, &h41, &h0,&hc1, &h81, &h40,&ii0, &iic1, &ii81, &ii40, &ii1, &iic0, &ii80,&ii41,&1i1,&iic0, _&h80, &h41, &h0,&hc1,&h81,&h40,&h0,&1ic1,&ii81,&ii40, _&a

11、mp;h1, &hc0, &h80,&h41,&h0,&hc1,&h81,&h40,&h1,&hc0, _&ii80, &h41, &ii1,&iic0,&ii80,&1i41,&ii0,&hc1,&h81,&h40, _&h0, &hc1, &h81,&h40,&h1,&hc0,&h80,&h41,&h1,&hc0, _&h80, &h41, &a

12、mp;h0,&hc1,&h81,&h40,&h1,&hc0,&h80,&h41, _&ii0, &iic1, &ii81,&ii40,&ii0,&iic1,&ii81,&ii40,&1i1,&iic0, _&h80, &h41, &h0,&hc1,&h81,&h40,&h1,&iic0,&ii80,&ii41, _&h1, &hc0, &h80,&h

13、41,&h0,&hc1,&h81,&h40,&h1,&hc0, _&ii80, &ii41, &ii0,&iic1,&ii81,&ii40,&ii0,&hc1,&h81,&h40, _&h1, &hc0, &h80,&h41,&h1,&hc0,&h80,&ii41,&i10,&iic1, _&h81, &h40, &h0,&hc1,&h81,&

14、;h40,&h1,&hc0,&h80,&h41, &h0,&hc1, &h81, &h40,&h1,&hc0,&h80,&h41,&1i1, &iico, &ii80,&ii41, &iio, &iic1, &ii81, &ii40)'crc高位字節(jié)值表function getcrchi(ind as long) as bytegetcrciii 二 choose (ind + 1,&h0, &hc0, &

15、;hc1, &h1, &hc3, &h3, &h2, &hc2,&iic6,&ii6, &ii7, &hc7, &ii5, &1ic5, &1ic4, &ii4, &hcc, &iic, &iid,&iicd,&hf, &hcf, &hce, &he, &ha, &hca, &hcb, &hb, &hc9, &h9, &h8,&hc8,&hd8,&h

16、18,&h19,&hd9,&h1b,&hdb,&hda,&h1a,&h1e,&hde,&hdf,&ii1f,&iidd,&ii1d,&ii1c,&iidc,&ii14,&iid4,&iid5,&ii15,&iid7,&1i17,&h16,&hd6,&i1d2,&h12,&h13,&hd3,&h11,&hd1,&hd0,&h10,&hf0,&h

17、30,&h31,&hf1,&h33,&hf3,&hf2,&h32,&h36,&hf6,&hf7,&h37,&hf5,&h35,&h34,&hf4,&h3c,&hfc,&hfd,&h3d,&hff,&h3f,&h3e,&hfe,&hfa,&h3a,&h3b,&hfb,&h39,&hf9,&hf8,&h38,&h28,&he8,&he9,

18、&h29,&heb,&h2b,&h2a,&hea,&hee,&h2e,&h2f,&hef,&h2d,&iied,&iiec,&ii2c,&iie4,&ii24,&ii25,&iie5,&ii27,&iie7,&iie6,&ii26,&ii22,&iie2,&iie3,&ii23, &iie1, &ii21, &ii20, &iie0, &iia0, &

19、;ii60, _&h61,&ha1, &h63, &ha3, &ha2, &h62, &h66, &ha6, &ha7,&ii67,&iia5,&ii65,&ii64,&iia4,&ii6c,&iiac,&iiad,&ii6d,&iiaf,&ii6f,&h6e,&hae,&haa,&h6a,&h6b,&hab,&h69,&ha9,&ha8,&h68,&

20、;h78,&hb&&hb9,&h79,&hbb,&h7b,&h7a,&hba,&hbe,&h7e,&h7f,&hbf,&ii7d,&iibd,&iibc,&ii7c,&iib4,&ii74,&ii75,&iib5,&ii77,&iib7,&iib6,&h76,&h72,&hb2,&hb3,&h73,&hb1,&h71,&h70,&hb0,&a

21、mp;h50,&h90,&h91,&h51,&h93,&h53,&h52,&h92,&h96,&h56,&h57,&h97,&h55,&ii95,&ii94,&ii54,&ii9c,&ii5c,&ii5d,&ii9d,&ii5f,&ii9f,&ii9e,&ii5e,&h5a,&h9a,&h9b,&h5b,&h99,&h59,&h58,&h98,&am

22、p;h88,&h48,&h49,&h89,&h4b,&h8b,&h8a,&h4a,&h4e,&h8e,&h8f,&h4f,&h8d,&h4d,&ii4c,&ii8c,&ii44,&ii84,&ii85,&ii45,&ii87,&ii47,&ii46,&ii86,&ii82,&ii42,&ii43,&ii83, &ii41, &ii81, &ii80, &am

23、p;ii40)2)窗體:forml,上面放置的控件如下:begin vb. form frmcomcaption二,z formclientheight二8235clientleft二3885clienttop二2250clientwidth二6810linktopic二,z formscaleheight二8235scalewidth二6810begin vb. textboxtxtreceive據(jù)height二 495left二 1200tabindex二 2top二 2280width二 1335end'注:放置接收上來(lái)的ib0數(shù)begin vb. commandbutton c

24、ommand1caption二讀取ib0height二 495left二 2760tabindex二 1top二 2280width二 1695endbegin vb. commandbutton cmdsdocaptionheightleft二置位qll二 495=2160tabindex0top二3720width1575in mscommlib mscommcomk3left480top二1080_extentx二1005_extenty1005version二393216dtrenable二-1 'tendendend在此主要是實(shí)現(xiàn)了打開(kāi)并初始化串口 form load事件,

25、private sub form_load()with comk3.commport 二 1 .settings 二"19200, n, 8, 1.inputmode = comlnputmodebinary '二進(jìn)制收發(fā).inbuffersize 二 512 .0utbuffersize 二 512if (not . portopen) then . portopen 二 true end withend sub formjjriload事件,在此主要是關(guān)閉串口private sub form_unload(cancel as integer)if (comk3. port

26、open) thencomk3. portopen 二 falseend ifend sub “置位qi. 1"按鈕單擊事件'設(shè)置ql1為1private sub cmdsdo_click()dim btsend (8) as bytebtsend (0)二 &h1'目標(biāo)站號(hào)btsend (1) = &h5btsend (2)二 &ii0btsend (3)二 &ii9'功能碼'qi. 1地址(0009)高字節(jié)'qi. 1地址(0009)低字節(jié)btsend (4)=&hff '強(qiáng)制值高字節(jié)btsend (5)&ii0 '強(qiáng)制值低字節(jié)dim crcdim btcrciii as byte, btcrc

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論