![VB控件Mscomm控件与PLC进行RS485Modbus通讯源码_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/5d193fb9-e80e-4c63-8461-83d659f2b5c7/5d193fb9-e80e-4c63-8461-83d659f2b5c71.gif)
![VB控件Mscomm控件与PLC进行RS485Modbus通讯源码_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/5d193fb9-e80e-4c63-8461-83d659f2b5c7/5d193fb9-e80e-4c63-8461-83d659f2b5c72.gif)
![VB控件Mscomm控件与PLC进行RS485Modbus通讯源码_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/5d193fb9-e80e-4c63-8461-83d659f2b5c7/5d193fb9-e80e-4c63-8461-83d659f2b5c73.gif)
![VB控件Mscomm控件与PLC进行RS485Modbus通讯源码_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-1/17/5d193fb9-e80e-4c63-8461-83d659f2b5c7/5d193fb9-e80e-4c63-8461-83d659f2b5c74.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、V B 控件 Mscomm 控件与 PLC 进行 RS485(Modbus)通讯源码本人用的是 ModbusRTU通讯模式,通过at算机串口转RS485与外围设备通行通讯,读写外围设备指定地址里的数据,从而到达自动化限制远端设备.DimHiByteAsByteDimLoByteAsByteDimCRC16LoAsByteDimCRC16HiAsByteDimReturnData(1)AsByteDimKAsIntegerDimCmdLenthAsIntegerPrivateSubCommand1_Click()K=Text9.Text6 个字节Text13.Text="",
2、=嗷组赋值输入代码'<<算法一 >>DimWriteStr()AsByteDimuAsIntegerReDimWriteStr(K+2)Foru=0ToKWriteStr(u尸Val("&H"&Text1(u).Text)Next'<<算法二>>DimCRC_2()AsByteDimvAsIntegerReDimCRC_2(K)Forv=0ToKCRC_2(v)=Val("&H"&Text1(v).Text)NextCallCRC161(CRC_2()Call
3、CRC16(WriteStr(),K)MSComm1.InBufferCount=0 = 显示发送代码DimmAsIntegerForm=0To23Ifm<=KThenText8(m).Text=Hex(WriteStr(m)ElseText8(m).Text=""EndIfNext ,WriteStr(K+1)=LoByteWriteStr(K+2)=HiByte '发送代码Text4.Text=""DimgAsIntegerForg=0ToK+2Text4.Text=Text4.Text+""+Hex(WriteSt
4、r(g) Next'写命令发送后,当接收到8个字节时中断CmdLenth=8MSComm1.RThreshold=CmdLenthMSComm1.Output=WriteStrEndSubPrivateSubCommand2_Click()EndEndSubPrivateSubCommand3_Click()Label34.Caption="="Text13.Text=""K=Text9.Text6 个字节 ,=嗷组赋值输入代码'<<算法>>DimCRC_2()AsByteDimvAsIntegerReDimCRC
5、_2(K)Forv=0ToKCRC_2(v)=Val("&H"&Text1(v).Text)Next ,CallCRC161(CRC_2()CallCRC16(WriteStr(),K)MSComm1.InBufferCount=0 '= 显示发送代码DimmAsIntegerForm=0To23Ifm<=KThenText8(m).Text=Hex(WriteStr(m)ElseText8(m).Text=""EndIfNext ,WriteStr(K+1)=LoByteWriteStr(K+2)=HiByte '
6、发送代码Text4.Text=""DimgAsIntegerForg=0ToK+2Text4.Text=Text4.Text+""+Hex(WriteStr(g) Next读命令发送后,当接收5+SendStr(5)*2个字节时产生中断CmdLenth=5+WriteStr(5)*2MSComm1.RThreshold=CmdLenthMSComm1.Output=WriteStr'发送命令'*'*'*'DimsAddrAsString ''DimCheckStringAsString'Di
7、mCheckCodeAsString'DimCmdCodeAsString'DimSumAsInteger'DimaAsInteger'DimtmpAsString'a=0'tmp=0'DoWhileLen(tmp)<8 tmp=tmp+MSComm1.Input'testNO.Caption=testNO.Caption+""+Str(Hex(Asc(tmp) 'a=a+1'Ifa>=3000Then'MSComm1.PortOpen=False 'ExitFunc
8、tion 'ExitDo 'EndIf 'Loop'Label33.Caption=tmp 'Text16.Text=Len(tmp) 'DimnsAsInteger 'Forns=1ToLen(tmp) 'Label34.Caption=Label34.Caption+"+"+Str(Asc(Mid(tmp,ns,1) ''Next'Label35.Caption=Str(Val(Asc(Mid(tmp,6,1)/10) '''tmp=Mid$(tmp,6,4)
9、 '''DimstrHexAsString 'DimHex2DecAsLong 'DimstrTmpAsString 'DimlongTmpAsLong 'DimlongDecAsLong 'DimintLenAsInteger 'Dimn1AsInteger ''strHex=Right$(tmp,2)+Left$(tmp,2) ''intLen=Len(strHex) 'Forn1=1TointLen 'strTmp=Mid(strHex,n1,1) 'Selec
10、tCaseAsc(strTmp) 'Case48To57'longTmp=Val(strTmp) 'Case65To70'longTmp=Asc(strTmp)-55 'CaseElse 'Hex2Dec=0 ''ExitFunction 'EndSelect'Text13.Text=Text13.Text+"+"+Str(Asc(strTmp)'longDec=longDec+longTmp*16A(intLen-n1) 'Nextnl ''Hex2Dec=lo
11、ngDec'Text13.Text=Hex2Dec(*(* *(* *EndSubPrivateSubMSComm1_OnComm()DimNeAsIntegerSelectCaseMSComm1.CommEventCasecomEvReceiveDimBufferAsVariantMSComm1.InputMode=comInputModeBinaryMSComm1.InputLen=0Buffer=MSComm1.InputForNe=LBound(Buffer)ToUBound(Buffer)Text13.Text=Text13.Text&"+"&am
12、p;Buffer(Ne)Label34.Caption=Buffer(3)&""&Buffer(4)NextNeCaseElseEndSelectBeepEndSubPrivateSubCommand4_Click()EndSubPrivateSubCommand5_Click()Label34.Caption="="EndSubPrivateSubForm_Load()MSComm1.Settings="9600,N,8,1MSComm1.CommPort=1MSComm1.SThreshold=0IfNotMSComm1.P
13、ortOpenThenMSComm1.PortOpen=True EndSubPrivateSubTimer1_Timer()'显示 崂法一 结果Text2.Text=Hex(HiByte)Text3.Text=Hex(LoByte)'显示 崂法二 结果Text6.Text=Hex(CRC16Hi)Text7.Text=Hex(CRC16Lo)IfText5.Text<>""Then'十进制转十六进制Text10.Text=Hex(Text5.Text)EndIfIfText11.Text<>""Then&
14、#39;十六进制转十进制Text12.Text=Val("&H"&Text11.Text)EndIfText14.Text=MSComm1.OutBufferCountEndSub'=CRO验 <<算法X>>=FunctionCRC161(data()AsByte)AsString'CRCU 算函数'DimCRC16LoAsByte,CRC16HiAsByte'CR存放器DimCLAsByte,CHAsByte多项式码 &HA001DimSaveHiAsByte,SaveLoAsByteDimI
15、AsIntegerDimFlagAsIntegerCRC16Lo=&HFFCRC16Hi=&HFFCL=&H1CH=&HA0ForI=0ToUBound(data)CRC16Lo=CRC16LoXordata(微一个数据与 CRC存放器进行异或ForFlag=0To7CRC16Hi=CRC16Hi淌位右移一位CRC16Lo=CRC16Lo2 氐位右移一位If(SaveHiAnd&H1)=&H1)Then'如果高位字节最后一位为1CRC16Lo=CRC16LoOr&H8那么低位字节右移后前面补1EndIf否那么自动补0If(SaveLoAnd&H1)=&H1)Then'如果LSB为1,那么与多项式码进行异或CRC16Hi=CRC16HiXorCHCRC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车销售渠道推广服务合同
- 香菇购销合同
- 云存储技术及服务解决方案
- 新材料产业技术创新合作项目协议书范本
- 房屋买卖协议书合同
- 汽车零件采购合同
- 军婚自愿离婚协议
- 三年期新型能源科技开发合作协议
- 影视制作行业演员角色表现免责协议
- 公司工程装修合同
- 全自动甘蔗剥叶装置的设计
- T-CSAE 11.3-2021 商用车润滑导则 第3部分:润滑脂的选用
- 工业级七水硫酸亚铁
- 内科休克急救
- 变电站的电气主接线课件
- 妇科运用PDCA循环降低腹腔镜术后肠胀气的发生率品管圈成果汇报
- 新零售实务PPT完整全套教学课件
- 小学生1-6册必背古诗楷书字帖(可直接打印-已排版)
- 基本电子电路装调维修知识考试题库(含答案)
- CLSIM100-S24英文版 抗菌药物敏感性试验执行标准;第二十四版资料增刊
- 中国甲状腺疾病诊治指南
评论
0/150
提交评论