VB控件Mscomm控件与PLC进行RSModbus通讯源码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
V B控件M s c o m m控件与P L C进行
R S M o d b u s通讯源码集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-
V B控件M s c o m m控件与P L C进行R S485(M o d b u s)通讯源码本人用的是ModbusRTU通讯模式,通过计算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而达到自动化控制远端设备。
DimHiByteAsByte
DimLoByteAsByte
DimCRC16LoAsByte
DimCRC16HiAsByte
DimReturnData(1)AsByte
DimKAsInteger
DimCmdLenthAsInteger
PrivateSubCommand1_Click()
K=Text9.Text'写6个字节
Text13.Text=""
'===========数组赋值输入代码
=============================================================== ========================
'<<算法一>>
DimWriteStr()AsByte
DimuAsInteger
ReDimWriteStr(K+2)
Foru=0ToK
WriteStr(u)=Val("&H"&Text1(u).Text)
Next
'<<算法二>>
DimCRC_2()AsByte
DimvAsInteger
ReDimCRC_2(K)
Forv=0ToK
CRC_2(v)=Val("&H"&Text1(v).Text)
Next
'============================================================== ====================================
CallCRC161(CRC_2())
CallCRC16(WriteStr(),K)
MSComm1.InBufferCount=0
'==========显示发送代码
=============================================================== =========================
DimmAsInteger
Form=0To23
Ifm<=KThen
Text8(m).Text=Hex(WriteStr(m))
Else
Text8(m).Text=""
EndIf
Next
'============================================================== ====================================
WriteStr(K+1)=LoByte
WriteStr(K+2)=HiByte
'发送代码
Text4.Text=""
DimgAsInteger
Forg=0ToK+2
Text4.Text=Text4.Text+""+Hex(WriteStr(g))
Next
'写命令发送后,当接收到8个字节时中断
CmdLenth=8
MSComm1.RThreshold=CmdLenth
MSComm1.Output=WriteStr
EndSub
PrivateSubCommand2_Click()
End
EndSub
PrivateSubCommand3_Click()
Label34.Caption="="
Text13.Text=""
K=Text9.Text'写6个字节
'===========数组赋值输入代码
=============================================================== ========================
'<<算法>>
DimCRC_2()AsByte
DimvAsInteger
ReDimCRC_2(K)
Forv=0ToK
CRC_2(v)=Val("&H"&Text1(v).Text)
Next
'============================================================== ====================================
CallCRC161(CRC_2())
CallCRC16(WriteStr(),K)
MSComm1.InBufferCount=0
'==========显示发送代码
=============================================================== =========================
DimmAsInteger
Form=0To23
Ifm<=KThen
Text8(m).Text=Hex(WriteStr(m))
Else
Text8(m).Text=""
EndIf
Next
'============================================================== ====================================
WriteStr(K+1)=LoByte
WriteStr(K+2)=HiByte
'发送代码
Text4.Text=""
DimgAsInteger
Forg=0ToK+2
Text4.Text=Text4.Text+""+Hex(WriteStr(g))
Next
'读命令发送后,当接收5+SendStr(5)*2个字节时产生中断
CmdLenth=5+WriteStr(5)*2
MSComm1.RThreshold=CmdLenth
MSComm1.Output=WriteStr'发送命令