VB控件Mscomm控件与PLC进行RSModbus通讯源码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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'发送命令

相关文档
最新文档