资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
基于 MODBUS 总线多功能电力仪表远程通讯的软件开发技术 【内容摘要】本文通过对江阴长江斯菲尔电力仪表公司的多功能电力仪 表进行具体的分析,介绍了基于 Visual Basic 软件编程开发了远程读 取多功能电力仪表数据的程序。通过 MSComm 控件对 RS-232 串口 COM1 的进行控制,实现了对多功能电力仪表远程控制功能。 【关键词】RS-232 串口,MODBUS 总线,MSComm 控件,232/485 转换模 块 Abstract The paper analyzes multifunctional electrical instrument of JianYin Changjiang Sfere Electric Power Company Limited specifically. It is introduced remotely accessing multifunctional electrical instrument by application of Visual Basic. The paper achieves to remotely control multifunctional electrical instrument by using MSComm control to access serial port COM1. Key Words RS-232 serial port, MODBUS, MSComm Control, 232/485 Converter Module 一、前言 原来的电力系统中,高低压配电柜中往往要安装各种各样的仪表, (如电度表、电流表、电压表等)实现对电力系统的监视。而如果在一 些大厂往往就有很多仪表,每隔一段时间就要有专人带着纸笔到厂区内 的所有仪表点巡视一番,并将所有的数值记录下来,带回办公室作数据 分析和处理。 随着计算机科学技术的发展,计算机在电力监控领域中得到了越来 越广泛的应用。使用多功能智能电力仪表代替机械式的电力仪表是工业 自动化的大势所趋。由于多功能仪表不但可以一表多用,而且一般的多 功能仪表都可以通过其通讯接口来实现对仪表的编程、数据采集等功能。 所以使用多功能电力仪表能够在很大程度上减少人们的劳力,并且可以 极大地提高效率。由于实现对电力多功能仪表的监视,功能比较单一, 且市场上的组态软件也比较昂贵。在这里作者就是用 MSComm 控件实现 对串口的控制,实现对阴长江斯菲尔电力仪表公司的多功能电力仪表远 程读取电能数据,从而达到软件的设计。MSComm 控件是 Microsoft 提 供的扩展控件,用于支持 VB 程序对串口的访问,该控件“隐藏”了大 部分串口通讯的底层运行过程和许多烦琐的处理过程,同时支持查询方 法和事件驱动通讯的机制。因此用其实现微机串口的数据通讯相当简单, 以很少的程序代码就可以轻松串口的访问和数据通讯。 二、MODBUS 通讯协议分析: 由于江阴长江斯菲尔电力仪表公司 CD194E 系列的多功能电力仪表 是采用远程 RS-485 数字接口(差分、半双工)和使用 MODBUS-RTU 通 讯协议,来实现对仪表的编程、数据采集等功能,所以先介绍 MODBUS 协议: MODBUS 协议是一种主从式点对点的通讯协议,允许一台主机和多 台从机之间进行数据通信,在 CD194E 系列的多功能电力仪表通讯系统 中,主机是微机(PC、工控机、PLC),从机是 CD194E 列仪表。在该通 讯系统中,允许系统连接多达 128 个仪表及 1200 米的通讯距离。通讯方式采用主机请求,从机应答。即:主机提出命令请求,从机响应接收 数据后作数据分析,如果数据满足通讯规约,从机做数据响应。 主、 从机间的通讯每一帧数据包含以下信息(16 进制): 从机地址、命令字、信息字、校验码 从机地址(1 个字节):从机设备号,主机利用从机地址来识别进行通 讯从机设备。 命令字(1 个字节):设定主机对从机的通讯内容。 信息字(N 个字节):包括进行两机通讯中各种数据地址、数据长度、 数据信息。 校验码(2 个字节):用于检测数据通讯错误,采用循环冗余码 CRC16。 通讯参数的设置:通过仪表上的编程键盘对仪表的仪表地址(1-247)、 通讯速度(4800 或 9600)和 数据格式(1 个起始位,8 个数据位,1 个停止位,可选择无校验位、奇 校验位、偶校验位。)进行设置。 网络连线如图一如示: 在这里,作者使用的是台湾泓格科技有限公司的 232/485 转换模块 I- 7520。由主控计算机送出的命令是通过 RS-232 串行通信端口发送出去, 此信号经过 232/485 转换模块(模块编号 I-7520)将信号标准电位及 类型转换后,在 485 网络上传播开来。多功能电力仪表收到属于自身 的命令后,会进行分析控制的操作,最后将结果送至 485 网络,让此信 号再通过 I-7520 的转换后,可由计算机的 RS-232 串行通信端口接收进 来。整个送收过程全是以串行处理。 三、软件的设计和开发 注:从 CD194E 系列的多功能电力仪表传过来的电功率数据就存放在 Byte1 到 Byte4 内。 3.通信步骤: 加入通信控件。也就是 MSComm 控件 设置通信端口号码。即 CommPort 属性,在本文使用 Com1。 设置通讯参数。即 Settings 属性。在本文设置为 9600,n,8,1。即通 讯速度为 9600,数据格式为 1 个起始位,8 个数据位,1 个停止位,无 校验位。注意必须与多功能电力仪表的设置一致,不然就会通信失败。 设置其它参数。必要时再加上其它的属性设置。 打开通信端口。即 PortOpen 属性设成 True。 每隔毫秒送出字符串或读入字符串。即发送命令 4(读 N 个字 节)来读取电功率参数,使用 Input 及 Output 属性。 使用完 MSComm 控件后,将通信端口关闭。 4.人机界面: 5程序代码: API 函数声名 Private Declare Function GetTickCount Lib “kernel32“ () As Long 点击结束程序按钮 Private Sub CmdEnd_Click() End End Sub 点击读取电功率按钮 Private Sub CmdRead_Click() Timer1.Enabled = Not Timer1.Enabled If Timer1.Enabled Then CmdRead.Caption = “停止读数“ Else CmdRead.Caption = “读取电功率“ End If End Sub 程序初始化 Private Sub Form_Load() MSComm1.InputMode = comInputModeBinary MSComm1.PortOpen = True Timer1.Enabled = False End Sub Private Sub Timer1_Timer() Dim C4%, C5%, C6%, C7% Dim Tick& Dim Data As Double Dim Buf() As Byte Dim ByteOut(7) As Byte MSComm1.InputLen = 0 Buf = MSComm1.Input 重新定义数据输入缓冲区, 发送命令 4 MSComm1.InputLen = 1 ByteOut(0) = &H1 ByteOut(1) = &H4 ByteOut(2) = &H0 ByteOut(3) = &H5C ByteOut(4) = &H0 ByteOut(5) = &H4 ByteOut(6) = &H31 ByteOut(7) = &HDB MSComm1.Output = ByteOut(0) & ByteOut(1) & ByteOut(2) & ByteOut(3) & ByteOut(4) & ByteOut(5) & ByteOut(6) & ByteOut(7) 等待多功能电力仪表响应的数据到达串口 Tick = GetTickCount() Do If (GetTickCount() - Tick) / 1000# 10 Then MsgBox “时间过久,请检查多功能电力仪表及传输状态!“, vbCritical + vbOKOnly, “系统信息“ Exit Sub End If DoEvents Loop Until MSComm1.InBufferCount = 9 从输入缓冲区读数据 Buf = MSComm1.Input If Buf(0) 4 Then MsgBox “长度错误!“, vbCritical + vbOKOnly, “系统信息“ Exit Sub End If Buf = MSComm1.Input C4 = Buf(0) Buf = MSComm1.Input C5 = Buf(0) Buf = MSComm1.Input C6 = Buf(0) Buf = MSComm1.Input C7 = Buf(0) Buf = MSComm1.Input Buf = MSComm1.Input Data = Power(C4, C5, C6, C7) TxtPower.Text = CStr(Data) End Sub 自定义功率换算函数 Private Function Power(C4%, C5%, C6%, C7%) Dim PowerExp As String, Mantissa As String Dim ReadValue# Dim ValueSign& If (C4 And &H80) / 2 7) = True Then ValueSign = -1 Else ValueSign = 1 End If PowerExp = CStr(C4 And &H7F) 2 + (C5 And &H80) / 2 7) Mantissa = CStr(&H80 Or C5) 2 16 + C6 2 8 + C7) ReadValue = ValueSign 2 (Val(PowerExp) - 126) Val(Mantissa) / (256 65536) Power = ReadValue End Function 四、结论 本实例是作者在实验室做过多次实验,达到了预定的应用效果,目 前在江西某厂取得了实际的应用。 该控制系统的最大优点是: 1,从硬件上看,仅仅使用一个转换模块就可以实现全厂电能远程监控 和集中管理的功能。大大提高了效率,且十分经济实惠。 2,从软件上看,直接使用串口的控制技术,而不必需要写额外的驱动 程序。采用 VB 开发应用软件十分方便,编程工作量小。 【参考文献】 1.李肇庆、韩涛。串行端口技术,国防工业出版社,2004 2.范逸之。Visual Basic 与 RS-232 串行通信控制,清华大学出版社, 2002 3.范逸之。Visual Basic 与分布监控系统RS232/485 串行通信, 清华大学出版社,2002 4.江阴长江斯菲尔电力仪表有限公司使用手册 5. 台湾泓格科技有限公司的 232/485 转换模块说明书.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号