如何用vb实现modbus串行通讯

如何用vb实现modbus串行通讯

ID:9787265

大小:29.50 KB

页数:4页

时间:2018-05-09

如何用vb实现modbus串行通讯_第1页
如何用vb实现modbus串行通讯_第2页
如何用vb实现modbus串行通讯_第3页
如何用vb实现modbus串行通讯_第4页
资源描述:

《如何用vb实现modbus串行通讯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和TwidoPLC间的通讯进行说明。  对于大部分应用,TwidoPLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。    VB程序通过利用MSComm控件很容易就能够实现。  

2、1.通讯口初始化:  MSComm1.Settings="9600,n,8,1"  MSComm1.CommPort=1  MSComm1.SThreshold=0  IfNotMSComm1.PortOpenThenMSComm1.PortOpen=True    2.CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。字串9  Functioncrc16_1(ByRefcmdstring()AsByte,ByValjAsInteger)  D

3、imdataAsInteger  DimiAsInteger      Addressreg_crc=&HFFFF  Fori=0Toj  Addressreg_crc=Addressreg_crcXorcmdstring(i)  Forj=0To7  data=Addressreg_crcAnd&H1  IfdataThen  Addressreg_crc=Int(Addressreg_crc/2)  Addressreg_crc=Addressreg_crcAnd&H7FFF  Addres

4、sreg_crc=Addressreg_crcXor&HA001  Else  Addressreg_crc=Addressreg_crc/2  Addressreg_crc=Addressreg_crcAnd&H7FFF  EndIf  Nextj  Nexti    IfAddressreg_crc<0Then  Addressreg_crc=Addressreg_crc-&HFFFF0000  EndIf    HiByte=Addressreg_crcAnd&HFF  LoByte=(A

5、ddressreg_crcAnd&HFF00)/&H100  EndFunction    3.读多个字的命令(本例是从2号站读%MW10起始的4个字):字串2  DimSendStr(7)AsByte  DimRcvStr()AsByte  SendStr(0)=2,从站号是2  SendStr(1)=&H3,读多个字的命令代码  SendStr(2)=0,起始地址高字节  SendStr(3)=10,起始地址低字节  SendStr(4)=&H0,数据长度高字节  SendStr(5)=4,

6、数据长度低字节    Callcrc16(SendStr(),5),CRC计算  SendStr(6)=HiByte  SendStr(7)=LoByte  ,读命令发送后,当接收5+SendStr(5)*2个字节时产生中断  CmdLenth=5+SendStr(5)*2  MSComm1.RThreshold=CmdLenth  MSComm1.Output=SendStr,发送命令      4.写多个字的命令(本例是写2号站%MW20起始的3个字):  DimWriteStr()AsBy

7、te  k=6,写6个字节  ReDimWriteStr(8+k)    WriteStr(0)=2,从站号是2  WriteStr(1)=&H10,写多个字的命令代码  WriteStr(2)=0,起始地址高字节  WriteStr(3)=20,起始地址低字节  WriteStr(4)=&H0,数据长度高字节<字的个数>字串9  WriteStr(5)=k/2,数据长度低字节<字的个数>    WriteStr(6)=k,数据长度<字节的个数>  WriteStr(7)=&H12,写的第1个字

8、的高字节  WriteStr(8)=&H34,写的第1个字的低字节  WriteStr(9)=&H56,写的第2个字的高字节  WriteStr(10)=&H78,写的第2个字的低字节  WriteStr(11)=&H9A,写的第3个字的高字节  WriteStr(12)=&HBC,写的第3个字的低字节    Callcrc16(WriteStr(),6+k)  WriteStr(9+(k/2-1)*2)=HiByte  WriteStr(10+(k/2-1)*2)=LoByte    MSCo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。