资源描述:
《Modbus vb源程序(可以读写寄存器)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、modbusvb源程序可以读写寄存器自己的项目做完了,最近比较闲,就帮别人用VB写了一个很简单的modbus程序,可以实现实时数据采集显示,以及能对寄存器进行设置。程序很简单,想用的可以完善,现在只能实时采集显示一个地址的数据,只要修改一下,就可以实时采集多个地址的数据。现在也只能一次对一个寄存器进行设置,也可以更加完善。想用的朋友就自己改改吧。下面是运行界面,采集的模块的地址为75,是一个温湿度采集模块。有3个寄存器,显示的数据上是温度,湿度,露点温度。modbusPrivateSubCommand1_C
2、lick()'设置按钮Dimbisend()AsByteDimcrcDimbtLoCRCAsByte,btHiCRCAsByteDimDataAsIntegerIfMSComm1.PortOpen=TrueThenIfCombo5.ListIndex=0ThenReDimbisend(7)'重新定义数组长度bisend(0)="&h"+Hex(Val(Text1.Text))'地址码bisend(1)="&h"+Hex(3)'功能码读寄存器bisend(2)="&h"+Hex(0)'起始地址高位bisend
3、(3)="&h"+Hex(0)'起始地址低位bisend(4)="&h"+Hex(0)'寄存器个数高位bisend(5)="&h"+Hex(Combo6.ListIndex+1)'寄存器个数低位crc=CRC16(bisend,6,btLoCRC,btHiCRC)bisend(6)="&h"+Hex(btLoCRC)'CRC高位bisend(7)="&h"+Hex(btHiCRC)'CRC低位'发送数据MSComm1.Output=bisendElseReDimbisend(10)'一次只能写一个寄存器bi
4、send(0)="&h"+Hex(Val(Text1.Text))'地址码bisend(1)="&h"+Hex(16)'功能码写寄存器bisend(2)="&h"+Hex(0)'起始地址高位bisend(3)="&h"+Hex(0)'起始地址低位bisend(4)="&h"+Hex(0)'寄存器个数高位bisend(5)="&h"+Hex(1)'寄存器个数低位bisend(6)="&h"+Hex(2)'字节数Data=Val(Trim(Text3.Text))bisend(7)="&h"+Hex(Data
5、256)'要写入寄存器的值的高字节bisend(8)="&h"+Hex(DataMod256)'要写入寄存器的值的低字节crc=CRC16(bisend,9,btLoCRC,btHiCRC)bisend(9)="&h"+Hex(btLoCRC)'CRC高位bisend(10)="&h"+Hex(btHiCRC)'CRC低位MSComm1.Output=bisendEndIfElseMsgBox"串口没有打开"EndIfEndSubPrivateSubCommand2_Click()'实时采集按钮Timer1
6、.Enabled=NotTimer1.Enabled'进行状态切换EndSubPrivateSubCommand3_Click()'初始化,并打开串口WithMSComm1If.PortOpen=FalseThen.CommPort=Combo7.ListIndex+1'打开串口1.Settings=Combo1.Text+","+Combo2.Text+","+Combo3.Text+Combo4.Text.InputMode=1.InputLen=50'一次性从接收缓冲区中读取所有数据(8个字节为一组!
7、!).InBufferCount=0'清空接收缓冲区.OutBufferCount=0'清空发送缓冲区.RThreshold=5+(Combo6.ListIndex+1)*2.InBufferSize=1024.OutBufferSize=1024.PortOpen=TrueElseMsgBox"串口已经打开"EndIfEndWithEndSubPrivateSubCommand4_Click()'关闭串口按钮IfMSComm1.PortOpen=TrueThenMSComm1.PortOpen=False
8、EndIfEndSubPrivateSubForm_Load()DimiAsInteger'波特率设置Combo1.AddItem"4800",0Combo1.AddItem"9600",1Combo1.AddItem"115200",2'校验位设置Combo2.AddItem"N",0Combo2.AddItem"E",1Combo2.AddItem"O",2'数据位设置Combo3.AddItem"7",0C