资源描述:
《modbus通信vb源程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用VisualBasic编写的Modbus通信源程序以下是PC机与PLC进行Modbus通信的VB源程序,提供给大家做个参考。1)模块文件:modCRC,其中包含了CRC校验的函数。'data待校验的数组名称'no数组中元素个数'btLoCRC算出的CRC高字节'btHiCRC算出的CRC低字节PublicFunctionCalCRC16Fast(data()AsByte,noAsInteger,btLoCRCAsByte,btHiCRCAsByte)AsStringDimCLAsByte,CHAs
2、Byte'多项式码&HA001DimSaveHiAsByte,SaveLoAsByteDimiAsIntegerDimFlagAsIntegerbtHiCRC=&HFFbtLoCRC=&HFFCL=&H1CH=&HA0Fori=0To(no-1)btHiCRC=btHiCRCXordata(i)'每一个数据与CRC寄存器进行异或ForFlag=0To7SaveHi=btLoCRCSaveLo=btHiCRCbtLoCRC=btLoCRC2'高位右移一位btHiCRC=btHiCRC2'低位右移一
3、位If((SaveHiAnd&H1)=&H1)Then'如果高位字节最后一位为1btHiCRC=btHiCRCOr&H80'则低位字节右移后前面补1EndIf'否则自动补0If((SaveLoAnd&H1)=&H1)Then'如果LSB为1,则与多项式码进行异或btLoCRC=btLoCRCXorCHbtHiCRC=btHiCRCXorCLEndIfNextFlagNextiDimReturnData(1)AsByteReturnData(0)=btHiCRC'CRC高位ReturnData(1)=
4、btLoCRC'CRC低位CalCRC16Fast=ReturnDataEndFunctionPublicFunctionCalCRC16Tbl(data()AsByte,noAsInteger,btLoCRCAsByte,btHiCRCAsByte)AsStringDimbtLoCRCAsByteDimbtHiCRCAsBytebtLoCRC=&HFFbtHiCRC=&HFFDimiAsIntegerDimiIndexAsLongFori=0To(no-1)iIndex=btHiCRCXordat
5、a(i)btHiCRC=btLoCRCXorGetCRCLo(iIndex)'低位处理btLoCRC=GetCRCHi(iIndex)'高位处理NextiDimReturnData(1)AsByteReturnData(0)=btHiCRC'CRC高位ReturnData(1)=btLoCRC'CRC低位CalCRC16Tbl=ReturnDataEndFunction'CRC低位字节值表FunctionGetCRCLo(IndAsLong)AsByteGetCRCLo=Choose(Ind+1,_
6、&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,&H1,&HC0,_&H80,&H41,&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,_&H0,&HC1,&H81,&H40,&H0,&HC1,&H81,&H40,&H1,&HC0,_&H80,&H41,&H1,&HC0,&H80,&H41,&H0,&HC1,&H81,&H40,_&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,&H0,&HC1,_&H81,&H40,
7、&H1,&HC0,&H80,&H41,&H1,&HC0,&H80,&H41,_&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,&H0,&HC1,_&H81,&H40,&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,_&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,&H1,&HC0,_&H80,&H41,&H0,&HC1,&H81,&H40,&H0,&HC1,&H81,&H40,_&H1,&HC0,&H80,&H41,
8、&H1,&HC0,&H80,&H41,&H0,&HC1,_&H81,&H40,&H1,&HC0,&H80,&H41,&H0,&HC1,&H81,&H40,_&H0,&HC1,&H81,&H40,&H1,&HC0,&H80,&H41,&H1,&HC0,_&H80,&H41,&H0,&HC1,&H81,&H40,&H0,&HC1,&H81,&H40,_&H1,&HC0,&H80,&H41,&H0,&HC1,&H81,&H40,&H1,&HC0,_&H80,&H41,&H1