下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《AE抠像技术》课件
- 2024年度矿井废弃物处理与生态恢复合同
- 电气专项:企业用电安全管理
- 2024年国际马拉松赛道草坪种植合同
- 2024年度单位与物业公司安保服务合同:确保单位财产安全的合作协议
- 2024年度苗木运输及保险服务合同
- 《食品添加剂的毒性》课件
- 2024年度园林景观电照施工合同2篇
- 2024年度股权投资合同:企业投资与股权转让协议
- 2024中国移动湖北公司春季校园招聘易考易错模拟试题(共500题)试卷后附参考答案
- 咽喉部正常解剖
- 短视频营销与运营PPT完整全套教学课件
- 周三多管理学5版课后答案
- 乙二醇丁醚化学品安全技术说明书
- 新能源智能充电桩商业计划书
- 2024年郭麒麟岳云鹏相声《三大才子》台词完整版
- 个人营业执照注销委托书范文
- 自变量中含有定性变量的回归分析
- 安全主题班会课件 知危险、会避险安全文明出行
- HXD3型电力机车受电弓故障机理与诊断方法研究
- 机织课件 08打纬
评论
0/150
提交评论