微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用C++ Builder实现组态王实时监控艾默生变频器

用C++ Builder实现组态王实时监控艾默生变频器

时间:02-24 来源:互联网 点击:

1 引言

  工业自动化通用组态软件——组态王软件系统与最终工程人员使用的具体的变频器或现场部件无关。对于不同的硬件设施,只需为组态王配置相应的通讯驱动程序即可。组态王支持的硬件设备包括:可编程控制器plc、智能模块、板卡、智能仪表、变频器等。工程人员可以把每一台下位机看作一种设备,而不必关心具体的通讯协议,使用时只需要在组态王的设备库中选择设备的类型完成安装即可,使驱动程序的配置更加方便。

窑炉监控系统是为满足生产需要,减少能耗,提高效率而设计的,它的实现必须要借助一定的软件及硬件条件,通过变频器控制风机从而控制窑内多个点的温度及通风量,保质保量的完成出砖要求。因此,对变频器的监控就显得十分重要。

  窑炉实时监控系统以组态王画面为主要运行画面,首先在组态王界面上对被监控系统的参数。进行设置,然后起动,在组态王的界面上可以动态。显示下位机的运行状态、测量参数、作业位置以及完成对多个变频器具体性能指标的测试等。由于组态王只提供这类变频器的驱动程序,没有提供其通讯协议,因此在功能并不很强大的组态王内部直接开发变频器的通讯协议是有较大难度的。

2 c++ builder作为后台间接实现组态王与变频器的通讯

本文采取的方法是:利用c++ builder 提供的串行通讯功能,实现与变频器的通讯,再利用bcb的dde功能完成组态王与c++builder之间的动态数据交换。这样就把从变频器采集到的外部信号通过c++builder间接动态地显示在组态王界面上。其系统的结构图如图1所示。

3 c++ builder与变频器之间串行通信的实现

串行通讯 (serial communication)指的是两个欲交换信息者的信息流动,其信息流动的方式是一个位接一个位,有顺序的由一端向另一端流动。带异步通讯适配器的pc机与变频器只有满足如下条件,才能互联通信:带有异步通讯接口的变频器与带异步通讯适配器的pc机互联;双方采用的总线标准一致,否则要通过“总线标准变换单元”变换之后才能互联;双方的初始化、波特率、数据位数、停止位数、奇偶校验都相同;要对变频器的通讯协议分析清楚,严格的按照协议的规定及帧格式编写pc机的通讯程序。变频器中配有通讯机制,一般不需要用户编程。pc机与艾默生变频器不能直接连接,要通过电缆进行rs232、rs485的变换。

  3.1 c++ builder与变频器的通讯协议

协议是一系列的定义了计算机应该怎样管理通信的规则。协议可以规定数据应该以什么格式进行传递和每个节点在什么时间以及以什么方式进行传递。除了数据通道以外,一个连接可以使用其它线线路来表示什么时候一个发送者有数据要发送,什么时候一个接收者能够接收新数据或者其它控制或状态信息。

  3.2艾默生变频器的通讯协议

变频器通讯协议为modbus协议,除了支持常用的寄存器的读写外,还扩充了部分命令对变频器功能码进行管理。modbus协议同时支持rtu模式和ascii模式,本文采用rtu模式。对应的帧格式如图2所示。

  3.3 c++ builder中通讯协议的实现

在c++builder中mscomm控件可以采用轮询或事件驱动的方法从端口获取数据。这里采用的是事件驱动的方法。就是在一个事件发生的时候,让程序自动的跳到一段程序。该控件的oncomm事件执行这个功能。oncomm程序负责对诸如在串口的硬件中断或者一个软件缓存的计数器到达了一个触发值这样的事件时做出反应。在bcb的classwizard中为新创建的通信控件定义成员对象,通过该对象可以对串口属性进行设置。通过设定其settings、commport、inputmode、handshaking、portopen属性来实现设定bcb的通讯协议。这里设定settings属性为:9600,n,8,1,即该协议的波特率为9600,无奇偶校验,每个字符的数据位为8位。

4 bcb与组态王软件数据交换的实现

“组态王”之间通讯的实现主要是通过“组态王”提供的动态数据交换 (dde)来完成的。dde是windows平台上的一个完整的通信协议,它使应用程序能彼此交换数据和发送指令。dde过程可以比喻为两个人的对话。提问的一方称为“顾客”(client),回答的一方称为“服务器”server)。一个应用程序可以同时是“顾客”、“服务器”:当它向其他程序中请求数据和时,它充当的是“顾客”若有其他程序需要它提供数据,它又成了“服务器”这里关键要实现的是。“组态王”作为顾客程序从bcb得到数据。使bcb成为“服务器”很简单,只需在“组态王”中设置服务器程序的三个标识名(应用程序名、主题名、项目名),并把vb应用程序中提供数据的窗体的linkmode属性设置为1,不必在vb中增加任何程序。值

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top