下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和Twido PLC间的通讯进行说明。对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。 VB程序通过利用MSComm控件很容易就能够实现。1 通讯口初始化: MSComm1.Settings = "9600,n,8,1" MSC
2、omm1.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
3、_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 = Addres
4、sreg_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()
5、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)
6、 * 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 ,数据长度高字节<字的个数
7、> 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(W
8、riteStr(), 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 = CmdLenth5 通讯事件中断产生时的数据处理:Private Sub MSComm1_OnComm() Dim inx() As Byte Select Case MSComm1.CommEvent Case comEvReceive ,判断为接收事件 MSComm1.InputLen = CmdLenth ,接收数据的长度 inx = MSComm1.Input ,接收数据 MSComm1.InBufferCount = 0 For k = 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高级管理人员能力考核试题
- 2026年旅游行业从业者服务技能考核题
- 2026年金融投资风险管理与理财规划题
- 2026年会计职称考试会计制度应用实操题
- 2026年二级心理咨询师专业技能实操模拟试题
- 2026年网络工程师考试网络设备配置与管理题库
- 2026年智能制造与工业0实践模拟题
- 2026年心理学科专业知识与心理学应用技能模拟题
- 2026年人力资源管理人际沟通与激励策略模拟题
- 港股t+0交易制度
- 2026年广东省事业单位集中公开招聘高校毕业生11066名笔试模拟试题及答案解析
- 2025年淮北职业技术学院单招职业适应性测试题库带答案解析
- 安全生产九个一制度
- 司法鉴定资料专属保密协议
- (更新)成人留置导尿护理与并发症处理指南课件
- 丝路基金招聘笔试题库2026
- 巨量引擎《2026巨量引擎营销IP通案》
- 2026届高考化学冲刺复习化学综合实验热点题型
- 电缆接驳施工方案(3篇)
- 唐代皇太子教育制度与储君培养
- 中职生理学考试真题及解析
评论
0/150
提交评论