版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vb编写的modbus rtu协议通讯源程序vb编写的modbus rtu协议通讯源程序sunwu建议删除该贴!丨收藏丨回复修改| 2005-12-09 12:37:09楼主modbus rtu协议叮以算是一种事实上 的工业标准协议,为许多仪表、plc等所支持。以前有几个用户问如 何使用vb编程来与我们的knd-k3系列plc通讯,于是整了一个demo 程序。这次把这个demo共享,希望能给大家一点帮助。1)模块文件:modcrc,其中包含了 crc校验的函数。'delta待校验的数组名称'no数组中元素个数'btlocrc 算出的crc高字节'bthicrc
2、算出的crc低字节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器进行异或bthicrc xor data(i) j 每一个数据与 crc 寄存for flag = 0 to 7savehi = btlocrcsavelo = bthicrcbtlocrc = btlocrc 2bthicrc 二 bthicrc 2'高位右移一位 '低位右移一位一位为1前面补1if (savehi and &h1)二 &h1) then '如果高位字节最后bthicrc二bthicrc or &h80'则低位字节右移后end if'否则自动补0if (savelo and &ii1) =
4、 &1i1) then '如果 lsb 为 1,则 与多项式码进行异或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低位字节值表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高位字节值表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据height二 495left二 1200tabindex二 2top二 2280width二 1335end'注:放置接收上来的ib0数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在此主要是实现了打开并初始化串口 form load事件,
25、private sub form_load()with comk3.commport 二 1 .settings 二"19200, n, 8, 1.inputmode = comlnputmodebinary '二进制收发.inbuffersize 二 512 .0utbuffersize 二 512if (not . portopen) then . portopen 二 true end withend sub formjjriload事件,在此主要是关闭串口private sub form_unload(cancel as integer)if (comk3. port
26、open) thencomk3. portopen 二 falseend ifend sub “置位qi. 1"按钮单击事件'设置ql1为1private sub cmdsdo_click()dim btsend (8) as bytebtsend (0)二 &h1'目标站号btsend (1) = &h5btsend (2)二 &ii0btsend (3)二 &ii9'功能码'qi. 1地址(0009)高字节'qi. 1地址(0009)低字节btsend (4)=&hff '强制值高字节btsend (5)&ii0 '强制值低字节dim crcdim btcrciii as byte, btcrc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论