




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用VB实现Modbus RTU串行通讯在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和Twido PLC间的通讯进行说明。对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。 VB程序通过利用MSComm控件很容易就能够实现。1 通讯口初始化: MSComm1.Settings = 9600,n,8,1 MSComm1.CommPort = 1 MSComm1.SThreshold = 0 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True2 CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。Function crc16_1(ByRef cmdstring() As Byte, ByVal j As Integer) Dim data As Integer Dim i As Integer Addressreg_crc = &HFFFF For i = 0 To j Addressreg_crc = Addressreg_crc Xor cmdstring(i) For j = 0 To 7 data = Addressreg_crc And &H1 If data Then Addressreg_crc = Int(Addressreg_crc / 2) Addressreg_crc = Addressreg_crc And &H7FFF Addressreg_crc = Addressreg_crc Xor &HA001 Else Addressreg_crc = Addressreg_crc / 2 Addressreg_crc = Addressreg_crc And &H7FFF End If Next j Next i If Addressreg_crc 0 Then Addressreg_crc = Addressreg_crc - &HFFFF0000 End If HiByte = Addressreg_crc And &HFF LoByte = (Addressreg_crc And &HFF00) / &H100End Function3 读多个字的命令(本例是从2号站读%MW10起始的4个字): Dim SendStr(7) As Byte Dim RcvStr() As Byte SendStr(0) = 2 ,从站号是2 SendStr(1) = &H3 ,读多个字的命令代码 SendStr(2) = 0 ,起始地址高字节 SendStr(3) = 10,起始地址低字节 SendStr(4) = &H0,数据长度高字节 SendStr(5) = 4 ,数据长度低字节 Call crc16(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个字): Dim WriteStr() As Byte k = 6 ,写6个字节 ReDim WriteStr(8 + k) WriteStr(0) = 2 ,从站号是2 WriteStr(1) = &H10 ,写多个字的命令代码 WriteStr(2) = 0 ,起始地址高字节 WriteStr(3) = 20 ,起始地址低字节 WriteStr(4) = &H0 ,数据长度高字节 WriteStr(5) = k / 2 ,数据长度低字节 WriteStr(6) = k ,数据长度 WriteStr(7) = &H12,写的第1个字的高字节 WriteStr(8) = &H34,写的第1个字的低字节 WriteStr(9) = &H56,写的第2个字的高字节 WriteStr(10) = &H78,写的第2个字的低字节 WriteStr(11) = &H9A,写的第3个字的高字节 WriteStr(12) = &HBC,写的第3个字的低字节 Call crc16(WriteStr(), 6 + k) WriteStr(9 + (k / 2 - 1) * 2) = HiByte WriteStr(10 + (k / 2 - 1) * 2) = LoByte MSComm1.InBufferCount = 0 MSComm1.Output = WriteStr ,写命令发送后,当接收到8个字节时中断 CmdLenth = 8 MSComm1.RThreshold = CmdLenth 5 通讯事件中断产生时的数据处理:Private Sub MSComm1_OnComm() Dim inx() As Byte Select Case MSComm1.CommEvent Case comEvReceive ,判断为接收事件 MSComm1.InputLen = CmdLenth ,接收数据的长度 inx = MSComm1.Input ,接收数据 MSComm1.InBufferCount =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合作式学习在高职专业英语课堂中的应用与革新
- 节气课程课件
- 应激相关障碍(一)
- 2025内蒙古呼伦贝尔农垦莫拐农牧场有限公司招聘16人笔试备考及1套参考答案详解
- 教师招聘之《小学教师招聘》考前冲刺测试卷含答案详解(突破训练)
- 教师招聘之《小学教师招聘》通关训练试卷详解附参考答案详解【研优卷】
- 教师招聘之《幼儿教师招聘》综合提升测试卷附参考答案详解(基础题)
- 教师招聘之《小学教师招聘》考前冲刺测试卷讲解及1套完整答案详解
- 教师招聘之《幼儿教师招聘》考试综合练习含答案详解【基础题】
- 基于2025年物联网的智能仓储风险管理体系研究报告
- 肥料代理合作协议书
- 小学科学大象版四年级上册全册教案(共27课)(2022秋季)
- 2024-2030年中国集成智能功率模块(IPM)行业深度调查与发展趋势研究研究报告
- 职业技术学校《药物分析检测技术》课程标准
- 苏教版(2024年新教材)七年级上册生物全册教案
- 自动售货机投放合作合同2024版
- 医院院感检查表格全套汇总
- 动漫手办制作课
- 《现代控制理论》(刘豹-唐万生)
- 食品包装用纸盒企业标准
- 小学生作文方格纸A4纸直接打印版
评论
0/150
提交评论