上位机应用程序

2024-06-26

上位机应用程序(精选10篇)

上位机应用程序 第1篇

随着移动通信的迅速发展, 用户对移动通信的需求进入了追求品质和体验感知的时代, 用户感知已成为决定网络和运营品牌成败的关键之一[1]。我国运营商也正在由基于性能指标的网络优化向基于用户感知的网络优化转型, 致力于构建一个移动通信网络用户感知智能分析系统[2]。

数据采集是移动通信网络用户感知智能分析系统的基础, 传统的数据采集方式是操作人员对采集设备进行现场的管理与控制, 大量耗费人力与财力;本文所研究的基于Linux多线程的CPOS采集机上位机程序, 通过与上层Web技术的结合可实现随时对地对采集机进行维护, 以及对数据采集流程的远程控制;同时, 使用CPOS采集机对移动通信网络A+Abis接口进行数据采集, 可实现有效定位分析网络覆盖、频率干扰、无线参数设置等问题, 对提高用户感知的满意度有很大意义。

2 整体设计

CPOS采集机由机箱、系统管理板和单/多张业务卡组成。其中, 业务卡运行下位机程序, 完成对网络数据的采集;系统管理板基于ARM处理器, 并进行嵌入式Linux操作系统移植, 其上运行上位机程序, 完成Web端与业务卡之间的数据交互工作。

图1所示为CPOS采集机上位机程序的总体架构, 主要包括Web解析模块和串口交互模块两部分。其中, Web解析模块用于接收远端Web页面通过Web服务器传递的数据流, 对数据加工处理后再写入一个串口命令暂存队列;串口交互模块则从队列中读取命令, 经过一定处理后发送给下位机并接收其响应数据, 最后将响应数据写入数据库以供远端Web呈现。设计中引入了一个串口命令暂存队列, 是为了解决两模块处理速率不匹配的问题, 有利于提高系统的执行效率。

在上位机程序中, 采用了Linux多线程编程技术。其中, Web解析模块由Web解析线程实现, 串口交互模块分别由串口发送线程和串口接收线程实现[3]。同时, 通过使用Linux下的FIFO (First Input First Output, 先进先出) 通信技术以及利用互斥锁和条件变量, 解决了上位机与Web服务器之间的数据传递以及上位机程序各线程间的同步与互斥操作问题。

3 详细设计与实现

Linux系统中常用的进程间通信方式有管道、FIFO、消息队列、共享内存等。与其它几种方式相比, FIFO具有创建简单和易于操作的特点, 本设计中即采用FIFO通信来实现进程的通信。

3.1 FIFO通信的设计

3.1.1 FIFO的应用

FIFO由mkfifo函数创建, 被创建的FIFO类似于普通文件一样存在于文件系统之中, 一般的文件I/O函数 (如open、close、read、write等) 都可用于操作FIFO, 唯一不同的是FIFO具有管道特性, 先写入FIFO的数据会被read函数先读出来, 同时已读出的数据会从FIFO中清除[4]。

图2所示为Web服务器和Web解析线程间利用FIFO进行数据传递的大致流程。在利用FIFO进行数据传输之前, Web服务器和Web解析线程分别以读和写的方式调用open函数打开FIFO, 然后分别调用write函数和read函数即可进行数据的传递。

3.1.1 对FIFO数据的处理

有了FIFO作为Web服务器和Web解析线程之间的数据传递通道, 还需对数据在FIFO中的传递格式进行相应的约束。图2所示是Web服务器与Web解析线程之间的FIFO通信格式。

对于上位机来说, 远端Web页面的每一项操作都对应于一条Web命令。该命令由Web服务器构造, 且每一条命令都由一个唯一的命令编码和对应的操作数据组成, 如图2 (a) 所示。Web命令可分为命令头和命令体两部分, 其中命令头又分为命令码和命令长度指示两个字段。命令码用于标明该命令的目的或作用;命令长度指示则标明命令体的数据字节长度;命令体即为执行当前命令所需要的参数。

图2的 (b) 、 (c) 、 (d) 为Web服务器最终写入FIFO的数据格式。图中将Web命令进行了分段, 并在每段前面加上一个控制信息块构成一个FIFO数据块, 且保证各FIFO块大小一致 (如定为64Bytes) 。这样做的好处是有利于Web解析线程根据控制信息识别出FIFO中的非命令数据和错误或不完整的Web命令。在FIFO块控制信息中, StartFlg和EndFlg字段分别用于标识一条Web命令的起始块和结束块;BlockSn字段记录每个FIFO块的序号, 采用0~255循环累加计数方式;Length字段指示本FIFO块中有效Web数据的字节长度, 不够写满一个FIFO块的则进行填充补齐, 如图2 (d) 所示。

按图2的方式对Web命令分段处理后, 在Web服务器写FIFO时, 数据以FIFO块为单位一块一块地写入, 且保证各块的写入顺序, 比如图2中先写 (b) , 再写 (c) , 最后写 (d) 。在读FIFO时, Web解析线程采用阻塞方式一整块一整块地读取, 再通过查看及比对FIFO块控制信息中的StartFlg字段、EndFlg字段和BlockSn字段, 便可轻易识别出一条Web命令, 同时检测出错误或不完整的Web命令。

3.2 线程间的互斥与同步操作

在上位机程序中, 通过使用互斥锁和条件变量来实现线程的同步与互斥操作。

3.2.1 线程间的互斥操作

在图1中, 在Web解析模块和串口交互模块之间引入了一个串口命令暂存队列。该队列为Web解析线程和串口发送线程的共享数据空间, 因此, 如果不对它加上一定的保护措施, 则会在两线程同时操作时发生资源竞争, 最终导致共享数据混乱的问题。

这一问题, 可通过Linux环境下的锁机制——互斥锁来解决[4]。即两线程在操作命令队列之前先对一个互斥量 (mutex) 上锁, 上锁成功后才执行命令入队或出队的相关操作, 操作完成后再对互斥量解锁。互斥锁机制保证了在同一时刻只有一个线程操作命令队列, 避免了资源竞争。

图4所示为带互斥锁的串口命令暂存队列操作流程图。图中, Web解析线程在操作命令队列前先调用pthread_mutex_lock函数对互斥量上锁, 上锁成功才对命令队列进行操作, 在操作结束后调用pthread_mutex_unlock函数对互斥量解锁;若互斥量已被上锁, 则上锁函数会一直阻塞, 直到拥有锁的线程执行解锁操作后才能成功上锁并返回。同样, 串口发送线程操作命令队列也是如此。

3.2.2 线程间的同步实现

在串口交互模块中分别采用了串口接收和串口发送两个线程来实现, 这样做可以确保下位机的响应数据能及时被捕获。串口发送线程发送命令后, 便开始等待接收线程的响应 (即下位机的响应) , 收到响应后才进入下一条命令的发送, 因此需要在串口收/发线程间进行线程的同步。

设计中采用条件变量来实现线程间的同步功能。在互斥量的配合下, 串口发送线程通过调用pthread_cond_timedwait函数进入限时等待;串口接收线程收到响应后调用pthread_cond_signal函数是否信号;串口发送线程收到信号后退出等待, 并继续向下执行。

3.3 Web解析模块的实现

Web解析模块由Web解析线程实现, 图5所示即为Web解析线程的实现流程。

Web解析线程以阻塞方式读取一整个FIFO块后, 若判断该块为一条Web命令的起始块 (StartFlg=1) , 则清空Buffer, DataLen清零, 保存FIFO块中数据部分的前Length个字节, DataLen加上Length;若继续判断该块为Web命令的结束块 (EndFlg=1) , 说明一条Web命令已全部读出, 可以进行Web命令的后续处理, 否则继续读取下一个FIFO块。

若读取一个FIFO块不是起始块, 而之前也未保存数据 (DataLen=0) , 说明该块为一个错误的FIFO块, 丢弃数据并转向读取下一块, 否则参照式 (1) 检查FIFO块序号BlockSn。若等式成立, 说明序号正确, 保存数据并累加DataLen后进入后续操作;若不成立, 说明FIFO块未按顺序写入或存在FIFO块缺失, 将DataLen清零后继续读取下一块, 此时当前Web命令的后续FIFO块将被全部读出并丢弃。

在图5中, 对收到的Web命令是否通过串口下发给下位机进行了判断, 对于非业务卡操作的命令上位机将直接执行而不与下位机通信, 比如从Web页面设置系统板的IP地址等。另外, 构造串口命令主要是将Web命令处理成串口交互模块的命令格式;比如从Web页面执行时间设置操作时, 通过该步骤将Web页面设定的时间信息为每张业务卡生成一条“设置时间”的串口命令, 使各业务卡具有相同的时间配置信息, 达到各业务卡的同步数据采集功能。

3.4串口交互模块的实现

图6所示是串口发送和接收线程的同步操作流程。两线程成功打开串口设备后的操作步骤如下:

(1) 发送线程采用图4所述互斥操作方式从串口命令暂存队列读取串口命令;若读取失败 (队列为空) , 则进行一定时间的延时后重新读取。

(2) 读取到串口命令后, 发送线程先对互斥量上锁, 上锁成功后再将命令通过串口发送出去。

(3) 将等待标志WaitFlg置1, 表示正在等待接收线程的响应;计算限时等待的结束时刻, 并调用pthread_cond_timedwait函数开始等待, 此时该函数会首先对互斥量解锁, 然后等待响应。

(4) 接收线程收到下位机的响应数据, 并调用pthread_mutex_trylock函数尝试对互斥量上锁;若上锁失败, 则说明发送线程正在发送数据, 或已退出等待函数且正在处理等待结果, 收到的数据为无效数据, 丢弃后进入下一次接收。

(5) 接收线程上锁成功后检测等待标志WaitFlg是否为1;若不是, 说明发送线程正在操作串口命令暂存队列, 收到的数据无效, 丢弃并解锁后准备下一次接收;若是, 则说明发送线程正在等待接收线程的响应, 此时调用pthread_cond_signal函数释放信号通知发送线程。

(6) 接收线程对收到的数据进行错误检查, 并根据检查结果设置错误标志ErrFlg, 如检查无错误, 则将收到的响应数据入库, 否则丢弃数据;最后对互斥量解锁。

(7) 发送线程从限时等待函数中返回, 并将等待标志WaitFlg清0, 然后从返回值判断限时等待是否成功;若成功, 则从标志ErrFlg检查收/发数据是否正确;若不成功或检查发现收/发数据不正确, 则进行命令的重发判决;如要重发, 则重新发送命令和接收响应。

(8) 若检查ErrFlg标志通过, 或重发判决为不重发, 则对互斥量解锁, 然后读取下一条串口命令, 以此循环。

需要注意的是, 接收与发送两个线程操作的互斥量必须是同一个。另外, 在图6中使用pthread_cond_timedwait函数进行限时等待时, 等待的是pthread_cond_signal函数释放信号;在进入等待函数后函数首先会对互斥量解锁 (如图6的标号1所示) , 此时接收线程可成功上锁;只要在开始等待到设定的结束时刻之间接收线程成功上锁并释放信号 (如图6的标号2所示) , 发送线程就算等待成功;不论等待成功与否, 等待函数都会在接收线程未对互斥量上锁 (如图6的标号3所示) 的情况下对互斥量上锁, 上锁成功后才返回。

4 测试结果与分析

图7所示为最终的实测截图。左图为系统板“IP设置”功能页面, 通过页面输入配置信息并点击“配置”按钮后, 上位机程序通过FIFO收到配置信息并直接将配置信息写入操作系统并入库后由“获取”按钮查看的结果, 该操作不向下位机发送串口命令;右图为Web页面向上位机程序发送“业务板信息查询”命令后, 通过上位机程序串口收发线程与下位机交互后获取到的业务板信息。经测试发现基于多线程的上位机程序工作效率高、对Web操作的响应时间短、与下位机的通信准确无误。

5 结束语

本文实现了基于多线程的CPOS采集机上位机程序, 并详细阐述了程序各功能模块的功能作用和实现原理。通过引入Linux系统下进程间及线程间的通信机制, 实现了对采集机的远程维护, 以及对数据采集流程的远程控制;对建设移动通信网络用户感知智能分析系统, 提高用户感知的满意度有很大意义。

参考文献

[1]赵川斌, 张骥, 任义.基于用户感知的网络优化体系建设探讨[J].移动通信, 2011 (6) :17-22.

[2]宋琪, 张从武, 丁周.面向用户感知的测试分析和优化方法探讨[J].电信网技术, 2011.8 (8) :54-58.

[3]陈智利, 高明, 杜玉军等.多线程串口通信在闭气塞检测系统中的应用[J].计算机应用与软件, 2008, 25 (5) :185-187.

上位机应用程序 第2篇

1、手机或上位机发出的START指令

typedef struct {

unsigned char header;0xFF

unsi gned char header;0xFD

unsigned char serial[4];4个00

unsigned charchecksum;校验和

};

2、血氧仪与手机或上位机通讯协议

(1)、当血氧仪收到Start指令后,将测量好数据向手机或上位机发送,波特率为9600,数据包格式如下:

typedef struct {

unsigned char header;0xFF

unsi gned char header;0xFC

unsigned char dev_type;0x01

unsigned char dev_serial[4];设备ID号

unsigned charreading0;血氧饱和度值

unsigned charreading1;脉率值

unsigned charchecksum;校验和

};

(2)、血氧仪连续发送5次数据后,上位机或POD向血氧仪发送关机指令。格式如

下:FFFA0A0A.3、血压计与手机或上位机通讯协议

(1)、当血压计收到Start指令后,将测量好数据向手机或上位机发送,波特率为9600,数据包格式如下:

typedef struct {

unsigned char header;0xFF

unsi gned char header;0xFC

unsigned char dev_type;0x02

unsigned char dev_serial[4];设备ID号

unsigned charreading0;收缩压

unsigned charreading1;舒张压

unsigned charreading2;脉率值

unsigned charchecksum;校验和

};

(2)、当上位机或POD收到血压计发来的数据包后,向血氧仪发送一条关机指令。格式如下:FFFA0A0A。

4、上位机或POD发出的重发指令,格式如下:FFFB0B0B

水塔水位控制系统上位机监控 第3篇

关键词: PLC 组态 水位控制

组态软件是工业应用软件的一个组成部分,其发展受到很多因素的制约。归根结底,应用的带动对其发展起着最为关键的推动作用。未来的传感器、数据采集装置、控制器的智能化程度越来越高,实时数据浏览和管理的需求日益高涨,我们需要在自己的办公室里监督其工作过程。本文主要讲的是用PLC实现水塔的水位控制和组态监控。

一、系统情况描述和具体方案的实施

根据我们在现实生活中的运用,画出控制模拟图。

1、保持水池的水位在S1——S2之间,当水池水位低于下限液位开关S1,此时S1为OFF,电磁阀打开,开始往水池里注水,当5S以后,若水池水位没有超过水池下限液位开关S1时,则系统发出警报;若系统正常运行,此时水池下限液位开关S1为ON,表示水位高于下限水位。当液面高于上限水位S2时,则S2为ON,电磁阀关闭。

2、保持水塔的水位在S3——S4之间,当水塔水位低于水塔下限水位开关S3时,则水塔下限液位开关S3为OFF,则驱动电机M开始工作,向水塔供水。当S3为ON时,表示水塔水位高于水塔下限水位。当水塔液面高于水塔上限水位开关S4时,则S4为ON,电机M停止抽水。

3、当水塔水位低于下限水位时,同时水池水位也低于下限水位时,电机M不能启动。

二、硬件设计

1、I/O分配表

根据系统的控制要求给出I/O分配表,如表3所示。

2、PLC硬件接线图

根据控制要求及I/O分配表,绘制PLC控制端子硬件接线图。

3、工作过程

设水塔、水池初始状态都为空着的,4个液位指示灯全亮。当执行程序时,扫描到水池液位低于水池下限位时,电磁阀打开,开始往水池里进水,如果进水超过5S,而水池液位没有超过水池下限位,说明系统出现故障,系统就会自动报警。若5S之后水池液位按预定的超过水池下限位,说明系统在正常的工作,水池下限位的指示灯A1灭。此时,水池的液位已经超过了下限位了,系统检测到此信号时,由于水塔液位低于水塔水位下限,电机M开始工作,向水塔供水,当水池的液位超过水池上限液位时,水池上限指示灯A2灭,电磁阀就关闭,但是水塔现在还没有装满,可此时水塔液位已经超过水塔下限水位,则水塔下限指示灯A3灭,电机M继续工作,在水池抽水向水塔供水,水塔抽满时,水也超过水塔上限,水塔上限指示灯A4灭,但刚刚给水塔供水的时候,电机M已经把水池的水抽走了,此时水塔液位已经低于水池上限,水池上限指示灯A2亮。此次给水塔供水完成。

三、软件设计

水塔的工作方式是通过装设在水塔和水池里的水位传感器的信号来确定的,根据水位传感器检测出的水塔和水池的液位高低,来合理调节。具体系统控制要求如下:

1、流程图

根据系统的控制要求,画出控制流程图。

2、梯形图

根据系统控制要求设计PLC程序梯形图。

四、水塔水位控制系统的组态设计

1、定义外设I/O连接

在项目导航器的工程项目栏双击“I/O设备组态”,在弹出的画面中点击“PLC”前面的“+”,再点击 “SIEMENS (西门子)”前面的“+”,然后双击“S7-200(PPI)”,在弹出的画面中定义I/O设备的名称及设备的地址号,填写后点击“下一步”选择与I/O设备通信的COM口最后形成。

2、定义数据库变量

在Draw导航器中双击“实时数据库”启动组态程序DbManager,将弹出数据库组态界面。在数据库组态界面里,单击菜单栏的“点”然后“新建”,将出现“请指定区域、点类型”向导界面。

在“请指定区域、点类型”向导界面里,双击“区域...00”中的“数字I/O点”,出现界面后在“点名”和“点说明”中输入对应的文字。

将所有的输入、输出用同样的方法新增到数字I/O点,最后新增后的点。

3、建立工程组态画面

在力控组态应用中,最重要的一部分是监控画面图像对象的制作。现场数据采集到装有力控组态的计算机中后,操作人员通过力控组态仿真的画面对象便可以实现监控。

本次需要的画面对象有:水塔、水池、水泵、电磁阀、自动开关、报警灯、供出水管等。在“图库”里精灵图库中都可以找到,将它拖到窗口中。

4、建立动画连接

所有的数据通过数据库变量进行动画连接,人机界面HMI里的数据库变量对应区域数据库DB的一个点参数,通过点参数的数据连接来完成与设备通信的连接。

动画连接是将画面中的图形对象与变量之间建立某种关系,当变量的值发生变化时,在画面上图形对象的动画效果以动态变化方式体现出来,有了变量之后就可以进行动画连接了。一旦创建了一个图形对象,给它进行动画连接就相当于赋予它“生命”,从而活动起来。动画连接使对象按照变量的值改变其大小、颜色、位置、字符等,定义变量和制作动画连接这两件工作可以相互独立的完成。

参考文献

[1] 柴瑞娟,陈海霞.西门子PLC编程技术及工程应用[M].北京:机械工业出版社,2007.

[2] 廖常初.S7—200PLC编程及应用[M].北京:机械工业出版社,2007.

[3] 西门子自动化与驱动集团.西门子S7—200可编程序控制器系统手册.

变频器与上位机串行通讯程序设计 第4篇

1.1 TD2000变频器的安装和使用

TD2000系列通用变频器是艾默生网络能源有限公司自主开发生产的高品质多功能低噪音变频器,其丰富的功能完全满足各种不同的、需求紧凑的结构设计,可以灵活地安装先进的控制算法空间电压矢量控制技术,停电再启动自动电压调整,死区补偿自动转差补偿节能运行内置PI,保证高精度的控制要求按照国际标准进行设计和测试,保证产品的可靠性。外部接口如图1和图2所示。

变频器安装在室内通风良好的场所,一般应垂直安装。选择安装环境时应注意以下事项:环境温度要求在-10℃~40℃的范围内,如周围温度为40℃~50℃时要取下盖板或打开安装柜前门,以利于通风散热;安装在湿度低于90%无水珠凝结的场所,不要安装在多尘埃、金属粉末的场所安装在无腐蚀性、爆炸性气体场所;安装在振动小于5.9米/秒2(0.6g)的场所;安装在无阳光直射的场所。

关于电动机及机械负载,与工频运行比较,TD2000系列变频器为电压型变频器,输出电压是PWM波,有一定的畸波,因此在电机的温升噪声和振动使用时略有增加。恒转矩低速运行,变频器带普通电机长期低速运行时,由于散热效果变差,输出转矩额度有必要降低,如果需低速恒转矩长期运行,必须选用特殊的变频电机。电机的电子热保护值,与变频器匹配的电机如果按要求选配,变频器对电机能实施热保护,如果匹配电机与变频器额定值不符合,务必调整保护值,以保证电机的安全运行。在50Hz以上频率运行,超过50Hz运行除了考虑振动噪音增大外,还必须确保电机轴承及机械装置的使用速度范围,务必事先查询。机械装置的润滑、减速箱及齿轮电动机等需要润滑的机械装置长期低速运行时,由于润滑效果变差可能带来损坏,务必事先查询。负转矩负载,对于如提升负载之类的场合常常会有负转矩发生,变频器常会产生过流或过压故障而跳闸,此时应该考虑选配制动组件。往复式负载,变频器在驱动活塞式往复性负载时请注意输出电流会有不稳定现象,长期低频运行时情况更突出推荐20Hz以上频率运行,负载装置的机械共振点,变频器在一定的输出频率范围内可能会遇到负载装置的机械共振点,必须通过设置跳跃频率来避开。

用操作面板可对变频器进行运转、功能参数设定、状态监控等操作。

1.2 变频器的上位机监控

变频器的上位通信控制指的是用上位机工控机、业PLC机、触摸屏与变频器链接,进行传送变频器开机、关机、设定频率、读取参数等动作的命令代码,遵守通信协议。

变频器内部的基本构成:变频器内置PID调节器和输出24VDC电源,方便组成最简单的内部闭环控制系统,带自动电压提升功能,能在交流304V~456V电压范围内正常工作。并且内含简易PLC,配合内置计数器。外接端子可编程设计,利于用户灵活运用。并且带有速度脉冲反馈输入接口,可以满足高端精度速度控制的要求。频率设定信号与输入频率对应关系的灵活设置,可以与通用变频器和调节器组成正、反两种闭环系统。

2 利用力控组态软件实现变频器上位机监控

2.1 I/O设备组态

I/O设备组态是连接外部设备的关键部分。I/O驱动程序负责力控与控制设备的通信。它将I/O设备寄存器中的数据读出后,传送到力控的数据库,然后在界面运行系统的画面上动态显示。

串口叫做串行接口,也称串行通信接口,按电气标准及协议来分,包括RS-232-C、RS-422、RS485、USB等。RS-232-C、RS-422与RS-485标准只对接口的电气特性进行规定,不涉及接插件、电缆或协议。串口形容一下就是一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不比串口快,由于8位通道之间的互相干扰,传输时速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。串口没有干扰,传输出错后重发一位就可以了。

2.2 上位机监控的运行

首先,将外部设备链接好,把变频器上位机监控的参数设置好。

然后,打开上面建立的变频器上位机监控的工程,单击“运行”,可以通过控制界面对变频器启停、频率设置等进行上位机监控。

注意:操作的时候一定不能过快,因为电机启动停止时需要时间,如果操作过快,会对电机损害,而且监控也会出错立马停止。

3 结语

上位机应用程序 第5篇

关键词:可编程控制器(PCL);VC++

中图分类号:TP312文献标识码:A文章编号:1006-8937(2009)08-0112-02

鉴于目前由可编程控制器(PCL)和PC机所构成的监控系统在工业控制领域得以广泛的运用,文章将对PCL作下位机,完成现场设备的直接控制、数据收集等工作,PC机作上位机,完成数据的分析存储、状态显示等工作进行技术探讨,通过上位机对PLC的读写操作,从而完成现场数据的接收、传达与监控功能。文章以OMRON公司的CJ1G型PLC作下位机,以PC机为上位机,重点研究此分布式控制系统的通讯方式。

1硬件互联技术细节

1.1PLC与PC的硬件互联

经过对该品牌PLC的分析,可知PLC本身配有RS-232接口,大大方便了与PC机串口通信的硬件连接,文章直接采用自制电缆将PLC的RS-232口与PC机RS-232口相连,引脚对应关系图如图1:

1.2设定PLC通信方式,确定通信协议帧

CJ系列PLC单元支持以下5种串行通信功能:上位机链接通信、无协议通信、1:N或1:1链接通信、外设总线通信和串行PLC链接通信,其中上位机链接通信功能适用于上下位机并以会话的方式进行实时数据通信。

一般在控制系统中,采用单台PLC与PC机通信,上位机担当命令发起端,通过向PLC发送不同格式的命令帧,完成对PLC寄存器的读写操作。因此文章选择主机-->PLC的主链接命令通信方式。

该系统使用RS一232C端口进行通信。RS一232C端口的缺省设定是:上位机链接模式、1启动位、7数据位、偶校验、2停止位和9 600bps的波特率。用户可以通过编程工具或者SETUP(237)指令改变RS一232C端口的设定。我们首先用编程工具对PLC进行设置,其中PLC的操作模式设定为监控模式;然后断开电源,将主机与PLC的CPU单元连接,并将CPU单元DIP的引脚5设定为OFF;最后接通电源,从主机发布主链接命令,进行上下位机的通信。

由于整个通信系统采用上位机主动的通信方式。上位机与PLC的通信是通过使用命令帧(command)和响应帧(response)进行数据的发送和接收。帧的发送与接收图2所示:

命令的格式如图3所示,命令必须以@开始,机号No为2个十进制数,表示上位机识别所连接PLC的机号。识别码是2个字符的命令码,如RR表示读取CIO区域的内容。正文部分为设定命令的参数,对于不同的命令,正文的内容和长度可能有所不同。FCS是2个字符的帧检查序列。命令的最后2个字符是终端,表示命令的结束,由“*”和CR码组成。命令格式图3所示:

图3 命令格式

响应的格式与命令的格式相似,只是在识别码后面多了2个十六进制字符的结束码,用于返回命令的执行状态(有无错误及错误的原因)。一个帧最多由131个ACSⅡ字符组成,如果需要发送的字符超出131个,必须将数据分成若干个帧,第一帧和中间帧的结尾用分界符(CR)代替结束符(*CR)。

VC++6.0软件实现VC++6.0开发环境为串口通讯已经提供了ActiveX控件,名为MSComm控件。下面阐述对该控件属性的初始化设置以及相关实现代码。限于篇幅,此文只将重要的实现代码罗列如下:

{

My_Comm.SetCommPort(1);//选择 COM1口

My_Comm.SetSettings( 9600,E,7,1 );//设置通信参数

My_Comm.SetlnputMode(1);//设置二进制输入模式

My_Comm.SetInBufferSize(1024);//设置输入缓冲区大小

My_Comm.SetlnputLen(0);//使用Input将使MSComm控件读取接收缓冲区中的全部内容

My_Comm.SetOutBufferSize(1024);//设置输出缓冲区大小

My_Comm.SetRThreshold(1);//设置每接收一个字符触发一次OnComm事件

My_Comm.SetDTREnable(TRUE);//置DTR有效

int timeRes;

if(!My_Comm.GetPortOpen()) //如果没有开

My_Comm.SetPortOpen(TRUE);//手工打开串口

My_Comm.Getlnput();//清空输入缓冲区

timeRes=SetTimer(2,500,NULL);//安装定时器

if(timeRes==0)

{

MessageBox( “设置定时器出错” );

return ;

}

}

主要实现代码处于在WM_TIMER消息的处理函数上

void CPLCCommDlg::OnTimer(UINT nlDEvent)

{

int len;

long j;

VARIANT inputdatal:

COleSafeArray inputdata2;

BYTE datatempl,datatemp2;

BYTE commstr[17]={ ‘@’ ,’0’,‘0’,’R’,’D’,’0’, ’0’, ’0’, ’0’, ’0’, ’0’, ’0’,’2’,0x00,0x00,’*’,0x0d}

//初始化命令参数

My_Comm.SetRTSEnable(TRUE);//设置RTS线有效,请求允许发送数据

verifcation(commstr,17);//对发送的命令进行帧校验

CByteArray cbaArraylnsA;

cbaArraylnsA.RemoveAll();

for(int nlndex:0;nlndex<17;++nlndex)

{

cbaArraylnsA.Add(commstr[nIndex]);

}

My_Comm.SetOutput(COleVariant(cbaArraylnsA));//发送读取数据的命令

My_Comm.SetRTSEnable(FALSE);//设置RTS线无效,不允许发送数据

inputdatal= My_Comm.Getlnput();//读取接收缓冲区的数据

inputdata2=inputdatal;

len=inputdata2.GetOneDimSize();

for(j=0;j

{

inputdata2.GetElement(&j,inputdata+j);

}

datatempl=inputdata[15];

datatemp2=inputdata[16];

verfunction(inputdata,19);//计算接收数据的帧校验码

if(datatempl! = inputdata [15] || datatemp2 1=inputdata[16])

{

MessageBox(”Receive data invalid! );//判断接收数据是否有效

}

else

{

for(i=0;j<8;j++)

{

OutputData[j]=inputdata[j+7];//将数据存储到上位机的数据存储区中

}

}

incount=0;

CDialog::OnTimer(nlDEvent);

}

上述函数所调用的对帧进行校验的函数verifcation代码如下:

CPLCCommDlg::verfunction(BYTE vdata[],int K)

{

BYTE sum=0x00,vl=0x0f, v2=0xf0;

for(int i=0;i

{

sum^=vdata[i];

}

V1& =sum;

V2& =sum;

v2> > =4;

if(vl>=0&& vl<=9)

V1+ =0x30;

else

V1+ =0x37;

if(v2>=0&& v2<=9)

V2+ =0x30;

else

V2+=0x37;

vdata[K-3]=vl;//帧贞校验码低位字节

vdata[K-4]=v2;//帧校验码高位字节

}

2结语

上位机设计技术剖析 第6篇

近年来, 计算机技术得到高速发展, 计算机系统也得到了广泛的应用, 计算机网络间的通讯也显得越来越为重要。在单片机系统的实际应用过程中, 通常会遇到数据交换的情况, 特别是在进行通讯的过程中, 上位机直接进行数据交换时, 通常需从PC端接收控制信息, 或者直接将数据传递到PC, 该接口采用异步串行的传输方式, 而上位机一般具有COM异步串行通信端口, 采用RS-232标准设计。因此, 设计上位机时可以借助COM和UART两个端口进行通讯, 进而实现数据的传递。

1上位机系统介绍

上位机的主要功能就是为用户提供较好的人机交流界面, 对电表中的数据进行简单的处理, 生成测量曲线, 并且以报表的形式呈现, 这极大地方便了用户对数据的查看。同时, 上位机还能根据自身的配置管理功能实现电表的个性化配置和所有信息的设置, 这也方便了用户在PC机里设置个性化模式。上位机能够结合电表实现软件的校表功能, 这极大地减少了硬件校表的繁琐过程。开发上位机运行程序的常用工具有Java, C++和C#等, 上位机开发和运行程序的环境通常为个人计算机, 这为用户的安装使用方面提供了方便。利用MFC提供的函数库, 采用C++语言进行上位机程序开发, 可以实现上位机强大的绘图功能和文件处理能力。上位机主体结构较为简单, 数据通信、数据视图和校表数据三个内容能设计到不同的独立进程中, 而且互不干扰。

2上位机设计

2.1上位机电表的接口设计

上位机主要完成的功能包括下发配置的消息和各种命令, 上传备份数据等。电表和上位机之间使用USB接口, 并且串口数据使用UARK进行实际通讯, 两者有自己独特定义的通讯协议。电表和上位机通讯方式通常有“命令-响应”、“查询-应答-处理-命令”两种。“命令-响应”通讯方式是电表和上位机之间常用的通讯方式, 而“查询-应答-处理-命令”通讯方式则需要通过电表进行数据读取或者通过上位机在本地存取相关的信息, 适用于电表和上位机两者相互交换信息数据的情况。

2.2用户配置界面设计

良好的人机操作界面是上位机设计的关键, 人机操作界面的主要功能就是通过界面的配置来实现一定的定制业务。同现在的电脑系统类似, 当上位机上有相关接口 (如USB) 插入时, 上位机就会显示发现新的硬件, 并且自动安装预先定义好的USB驱动程序。新的驱动已经安装好的标志是会在上位机设备管理器中发现PORT_3符号。USB驱动安装好后, 电表就会收到上位机发出的状态请求信息, 这个信息被称为握手信息 (STATUS_FRAM) , 信息主要请求电表的序列号 (Device Id) 、备份文件版本 (Log Data Version) 、硬件版本号 (Firmware version) 、硬件ID、总空间 (Total size) 和已被使用的空间 (Flash space Used) 等, 并在消息体中将上位机所需的以上信息带回。

上位机用户界面设计中, 用户可以配置的信息一共可以分成四大类, 分别为参数设置 (Setting) 、电表操作的配置 (Operate) 、测量项的配置 (Measure) 和电表显示的配置 (Display) , 并且不同模式下具有不同的显示项内容, 例如在进行模拟设计时, 如果用户不关心Energy模式下的季度用电量, 在界面设计中就不用勾选这个选项, 而后将该信息发送到电表中。在进行用户界面设计时参数设计还有不同于其他业务配置的地方, 除了能够给用户提供Check Box控件外, 还可以提供更为方便的列表控制和输入文本框方面的设计, 这就给用户设计的相关参数带来很大的灵活性, 图1就是参数设计的相关界面。在进行用户配置界面设计的时候, Upload按键的主要功能是将获取的数据上传至上位机的系统中, 此外, 该按键还有Upload Log Data和Upload Confi gure两个下拉菜单, 其中Upload Log Data菜单的主要功能是上传备份的数据, Upload Log Data功能是取出配置的信息, 上报给上位机, 并将信息以pmcx文件格式上传到指定的目录。

2.3备份数据处理设计

上位机最重要的功能之一就是将备份数据以图表的形式反映给用户。在进行设计时, 用户可以通过调用图形设备接口, 进行函数和设备的调整, 并且通过调用不同的设备驱动程序, 来给出不同的设备制图指令, 这样就实现了设备的直接关联, 避免了用户对硬件进行直接的操作, 数据的处理和上位机的通讯接口实现了通讯功能上的相互独立, 并且可以实现设计独立的进程。通常情况下, 数据被处理成3种方式呈现给用户, 分别为测量参量曲线图、备份数据表和电费报表。在智能电表里面能够进行数据的直接读取, 这种数据是一种中间的数据, 并且为参数曲线图提供数据。电费报表数据主要参照电力公司提供给居民的电力清单进行设计, 数据的信息包括:用电器的名称、电表的序列号S/N、峰谷时间及费率、备份数据的起始和结束时间等。上位机能够通过这些数据自行对每天、每个月所产生的电能和消耗的费用进行估算, 并提供给用户整体的评估数据。在进行数据备份的时候, 智能电表对电压、电流参量的计算一般是1s执行一次, 因此用户进行数据备份的最小间隙为1s, 上位机备份数据最大提供30天的存储空间。用户可以将鼠标置于相应的位置, 来查看每个数据点的具体数值, 并且可以调整显示图表的长短和显示时间, 这极大地方便了用户对数据的分析。

3结语

本文概述了上位机的系统, 分别从电表结构设计、用户配置界面设计、备份数据的处理设计等几个方面, 介绍了上位机设计的相关内容。上位机和嵌入部分的相关接口设计是上位机设计的基础工作, 也是实现上位机相关功能的基础。其中备份数据处理模块和个性化配置模块能够开启不同的进程, 这大大方便了用户的操作体验, 提高了相关应用程序的设计性能。

摘要:上位机的主要功能就是为用户提供较好的人机界面, 将电表中的数据进行处理、生成测量曲线, 并且以报表的形式进行呈现。本文对上位机的基本原理进行了初步介绍。并分别从上位机功能实现的以下几个方面剖析了上位机设计的相关内容:电表结构设计、用户配置界面设计、备份数据的处理设计以及软件校表的设计。

关键词:上位机,设计技术,工作原理,电表结构

参考文献

[1]唐志平.供配电节能技术和措施[J].常州工学院学报, 2006, 4 (02) :1-4.

[2]谭绍琼.浅谈电能计量装置的发展[J].机械管理开发, 2007, 10 (05) :4-5.

[3]李剑.单相智能复费率电能表的设计与开发[D].南京:同济大学, 2008.

[4]李静, 杨以涵, 于文斌.电能计量系统发展综述[J].电力系统保护与控制, 2009, 37 (11) :130-134.

[5]张彩芬, 迟喜梅.电子式电能表与感应式电能表性能比较分析[J].内蒙古电力技术, 2006, 24 (S3) :133-135.

[6]李峰.电子式电能表的结构及误差分析[J].仪器仪表标准化与计量, 2006 (04) :29-30.

[7]杜琼.电子式电能表系列以及集中抄表系统的设计开发[D].无锡:江南大学, 2005.

[8]国家电网公司.国外智能电网发展综述[J].物联网技术, 2012, (01) :4-8.

[9]王欣异.多功能智能电表的设计与研究[D].武汉:武汉理工大学, 2011.

电梯群控系统的上位机软件设计 第7篇

随着社会的高速发展, 使得高层建筑物的不断增多。电梯作为高层建筑物的主要交通工具, 其电梯群调度问题已经引起广大学者的关注[1]。目前针对电梯群控系统的研究主要都是集中在对控制器算法上, 并没有对电梯上位机的监控进行设计。从电梯的运行角度和乘客的安全考虑来讲, 设计一个能对电梯实时进行监控且能够对电梯的运行数据进行收集的系统是十分必要的。

因此, 本文开发出了基于VB6.0的电梯群控监控软件, 从而很方便地监控电梯的运行状态, 并实时地记录电梯地运行情况。本文采用以太网TCP/IP协议与下位机PLC300进行通讯[2], 从而更加降低了成本, 为企业创造利益。

2、电梯群控系统的总体设计

电梯群控系统是指将三台或三台以上的电梯作为一个整体进行管理的控制系统, 其目的是有效地调度由尽可能少的电梯组成的电梯群。图1为电梯系统总体结构图。电梯群控系统总体结构是由控制层、接口层和设备层组成。群控系统通过接口层单独与设备层的各台电梯进行通讯, 完成各台电梯信号的采集和对电梯的调度。

整个群控系统采用分布式的控制方法, 由分布在每处的主机来实现各自部分的功能, 如通讯、信号采集等功能;用一台群控主机实现对整个电梯群控系统的控制。这样就可以简化系统的设计复杂性, 使整个系统更加便于实现。

对电梯的群控调度的实现, 主要就是要及时地采集到电梯信息;及时地将信息传送到电梯群控制器, 群控制器经过算法运算将控制指令发送给相应的电梯。电梯群控系统最重要的就是要保证整个系统既要在时间响应上要能满足要求, 能够实现在一定时间间隔内完成一次群控调度, 同时还要使整个系统要稳定可靠, 保证长时

图1电梯系统总体结构图间的稳定运行。

3、电梯群控系统的监控界面设计

3.1 电梯群控系统的监控界面

本文采用VB6.0软件开发环境进行设计, Visual Basic 6.0是Microsoft公司推出的基于Windows平台的软件快速开发工具, 是目前Windows环境下最受欢迎的应用程序设计工具之一[3]。

根据对电梯群控系统的要求, 设计了一个20层大楼的4部电梯群监控界面。具体见图2。在电梯群控系统的监控界面中, 每部电梯内部都有各楼层的轿厢内部呼叫, 以及关于对电梯的开、关门的操作。此外, 还对电梯内部报警进行了按钮设计, 方便乘客遇到紧急情况时进行内部求救。在每个楼层还设计了厅层外呼按钮, 支持电梯的外呼操作。在界面的下部, 还增设了电梯的运行参数设定和通信设置, 可以根据不同的高度的办公大楼和电梯的性能进行动态的参数改变。可以说, 电梯群控系统的监控界面基本满足了电梯的监控性能, 同时也方便了监控人员对电梯的实时跟踪。

3.2 监控界面的模块功能

3.2.1 轿厢模块

图2的1#电梯、2#电梯、3#电梯、4#电梯的frame框架内的控件。其中, 绿色的文本框代表电梯的轿厢, 当前四部电梯除了2#电梯外都处于一层, 也即门厅。标有“开门”和“关门”的按钮代表了电梯轿厢内的开门和关门操作。标有“报警”按钮代表电梯轿厢的乘客报警操作。shape图形控件表示电梯处于正常状态还是报警状态。

这个模块的作用主要就是来自于电梯内的呼叫响应。当乘客按下轿箱内响应的楼层时, 电梯轿厢就会向着目标层运动。当电梯到达目标层时轿厢开门, 此时轿厢的文本框会变成红色, 轿厢处于开门状态, 当乘客都出梯后, 电梯会在停隔一秒钟之后关闭轿厢门, 此时电梯轿厢的文本框会重新变成绿色, 继续执行下一个电梯内呼或外呼的操作。

电梯轿厢内的“开门”和“关门”按钮作用是对轿厢内的进行电梯门的开关操作。如果按下“开门”按钮, 电梯轿厢的文本框会变成红色。按下“关门”按钮后, 电梯轿厢的文本框会由红色变成绿色。除此之外电梯轿厢内的“报警”按钮作用是如果电梯出现故障后, 乘客可以按下紧急求救的按钮, 此时旁边的报警显示灯就会变成红色, 如图2中的2#电梯的报警shape图形控件显示, 说明2#电梯为报警状态。

3.2.2 厅外呼叫模块

见图2中, 2#电梯和3#电梯之间的模块。其上面的“XX▲”和“XX▼”按钮表示在XX楼层的外呼上行或外呼下行的呼叫指令。

它的作用就是产生电梯轿厢外的乘客在呼叫层的呼叫信号。如果乘客在某楼层按下向上或向下的按钮时, 电梯群控系统会根据电梯的当前运行状态, 经过群控制器的算法, 来判断出哪台电梯最适合来响应此层的外呼召唤。其判断标准就是乘客的最小候梯时间和梯内的最小乘梯时间的综合评价。

3.2.3 参数设定模块

如图2, 在这个模块中, 有楼层高度设定、电梯速度、电梯开门时间、电梯关门时间四个文本框。和标有“参数修改”和“参数保存”的按钮。

它的作用是设置电梯的基本参数。本设计在登陆到界面的时候, 四个文本框为锁定状态。只有点击了“参数修改”按钮后, 才可更改电梯相关参数。在修改完成后, 点击“参数保存”按钮进行对参数的数据保存, 模块继而转到锁定状态。注意, 当进行电梯参数设定的时候, 电梯系统处于初始状态, 所谓的电梯初始状态就是四台电梯位于高层建筑物的门厅 (即一层) , 所有的“报警”系统都没有启动, 而且每台电梯都没有内呼和外呼信号的响应。

3.2.4 通讯设定模块

此模块由IP输入文本框、shape图形控件和“IP地址更改”、“保存”、“通讯连接”、“断开”按钮组成。

此模块的作用是与下位机进行通信, 当登陆到监控界面是其IP输入文本框为不可用状态, 只有当点击“IP地址更改”按钮后, 才可以更新键入新的IP地址。本系统采用的是以太网TCP/IP的通信协议进行与下位机进行通讯。利用Winsock控件实现通讯功能。只有配置好Winsock参数和下位机PLC 300的参数后, 就可以很方便地实现数据的传递。

当配置好参数后, 点击“通讯连接”按钮就可以实现通信, 此时shape图形的颜色会由绿色变成红色。要是断开连接, 图形会由红色变成绿色。

此外, 在这个模拟监控界面的还有两个按钮, “电梯系统复位”按钮和“退出”按钮。

“电梯系统复位”按钮的作用是对整个四台电梯进行初始状态复位。“退出”按钮的作用就是推出监控界面。

4、电梯运行数据采集系统

针对电梯数据的保存, 本文设计出一套电梯的数据采集系统。它是由四个文本文件组成。记录了电梯的运行状态。具体见图3, 从图中可以看出, 每条记录都有产生信号的准确时间, 最小精确到了秒。以下为搜集数据的指标:

电梯的内呼信号产生。表示轿厢内如果有内呼信号就将产生一条记录。如图3的第二条记录表示1#电梯在2011年11月28日早上09:57:45时刻产生内呼一个到10层的信号。

电梯停靠信号。当电梯停靠在某一楼层时, 会记录一下电梯的停靠记录。如图3的第一条记录表示2011年11月28日上午09:27:44时刻1#电梯停靠在10层。

电梯报警信号。当在轿厢内有乘客按下“警报”按钮时, 就会记录下电梯的报警数据。如图3的第六条记录表示在2011年11月28日上午13:31:04时刻, 1#电梯有乘客按下“报警”按钮, 说明电梯出现故障。

以上简单地列举了三个数据信息的搜集, 还可以把电梯的外呼、电梯的复位、电梯的开关门、电梯的参数修改和保存等信号搜集到对应电梯的记事本文档里。这样可以更加详细地分析电梯的运行规律, 同时还可以对故障进行有效的预判, 给电梯的维护带来了极大的方便。而且也保障了乘客的乘梯安全系数, 使乘客得到最满意的乘梯服务。

5、结论与分析

通过对电梯群控系统的监控界面的设计, 基本完成了电梯的所有操作。而且还可以对进行模拟操作, 为电梯的实践带来了方便。作为上位机系统通过实际现场电梯的运行情况, 能够在此系统界面上很直观地体现。从而给电梯维护人员带来了便捷, 更为乘客的安全出行提供了保证。

摘要:电梯群控是一个多目标的优化问题。现在已经研发出来很多满足电梯的最佳调度的电梯群控制器。但是对于电梯上位机的开发却有些不足, 给电梯的操作和维护人员带来了很多不便。针对此本文基于VB6.0设计了一套电梯群控的上位机系统。系统上的各个模块实现了电梯的模拟运行, 并且利用以太网的TCP/IP协议进行与下位机通讯。通过界面的模拟运行它满足了电梯群的实际调度操作。从而提高了电梯的运行效率, 保证了乘客的服务质量。

关键词:电梯群控,上位机软件,监控界面

参考文献

[1]杨祯山, 邵诚.电梯群控技术的现状与发展方向[J].控制与决策, 2005, 20 (12) 1321-1331.

[2]廖常初.S7-300/400 PLC应用技术[M].北京:机械工业出版社, 2002:29-30.

上位机应用程序 第8篇

较早前使用的工控机控制系统,由于长期使用在恶劣的生产环境中,因此普遍面临设备老化、故障频繁发生、稳定性下降的压力。随着计算机技术的快速发展,计算机硬件产品更新换代速度越来越快。虽然部分重要部件保有备件,但更多的在市场上已难觅踪迹。例如早期CPU为奔腾3、奔腾4的工控机出现故障时,愈来愈难更换到合适的部件。因此,工控机系统的维护保障成为大多数生产企业的一大难题。

整体更换工控机主机是一种解决方案。更换一台新的工控主机,系统稳定性将大大提高,但需将原来的系统软件一并迁移才能正常使用,其中包括操作系统、应用程序和数据资料的迁移,这种迁移可以概括地称之为系统迁移。

系统迁移应保证迁移前后用户的系统平台、应用软件和所有数据,包括普通数据、用户账户信息、环境配置、链接等,都不发生改变,这样当迁移完成后就可以马上开始投入使用。

1 系统迁移的方法、难点及解决方案

系统迁移主要有以下几种方法:

(1)完全重新安装。该方法是最基本的解决方法,从理论上说,所有系统迁移都可以通过这个方法实现,但这需要花费大量时间,对技术人员要求高,有时可能还需要原来的安装程序或源代码,而配置系统环境更是涉及到如系统路径、网络地址、接口端口信息以及数据库的设置等,稍有不对都会影响整台设备的开机使用。如果生产设备数量较多,那么这些低效的维护保障工作将是一个繁重的任务。

(2)硬盘复制或分区复制。可以采用Symantec Ghost或ACRON公司的True Image,Diskgen等软件工具完成。对于硬件完全相同的主机,可以使用硬盘复制的方法生成镜像文件,然后将镜像文件恢复到新主机上实现系统迁移。但是如果新旧主机硬件不同,那么采用简单的镜像文件的恢复方法后,新主机系统一般会出现无法启动的情况,这种情况比较常见。这是因为设备在使用多年后,硬件发展很快,例如:CPU从单核到双核、四核,控制芯片组性能和集成度大幅度提高,传统的标准接口PS/2键盘鼠标被USB键盘鼠标代替等,即使是相同型号和规格的工控机,新旧设备硬件也差别巨大,使得原有操作系统无法在新工控机上正常使用,原有软件系统也无法正常运行。

(3) HP P2P等第3方迁移方法。HP公司的 HP Server Migration Pack(P2P)是惠普公司新发布的系统迁移工具,据称可以实现将任意服务器上的操作系统、应用、数据迁移到其Proliant的标准服务器上。其方法为在一台控制电脑上安装升级控制软件,在旧主机服务器上安装代理软件,新主机使用迁移光盘启动后与控制电脑通信,在控制电脑的配置下完成系统迁移工作。此外还有VMware Vcenter Converter,Virtual Machine Manager 2008,Xen Convert等类似迁移工具,这些方法共同的缺点是对被迁移系统的硬件或软件有一定依赖性[1],不适合本文要论述的情况。

(4)向供应商求助。实施系统迁移时也可以向设备供应商寻求帮助,从而得到完善的支持,但一般来说,设备供应商更倾向于提供包括硬件和软件的整体系统作为备件,这会导致价格非常昂贵。

系统迁移的主要难点是:

(1)操作系统。工控系统主要以Windows 2000为主,更换主机硬件后系统通常无法启动,出现蓝屏、系统崩溃、反复重启等现象。

(2)应用软件及配置环境。 配置环境复杂,重新安装操作系统和备份程序后,因无法完整备份配置环境或硬件改变,会导致应用程序无法使用。

(3)数据内容。数据库迁移或备份、配置等。

(4)系统或应用软件加密。有些应用软件涉及加密保护,更换硬件后无法使用,只能联系供应商解决。

如果能简单方便又灵活可靠地解决系统迁移问题,将在实际生产和设备保障中具有重大意义。作者巧妙地使用虚拟机作为中间优化调整平台,充分利用原有系统的备份数据,成功实现了多台工控主机的系统迁移。这种方法快速可靠,实施费用远远低于设备供应商报价,取得了很好的经济效益。

2 虚拟机技术

虚拟机技术,简单地说就是利用计算机软件,在一台物理机器上模拟出完整的、可以运行独立操作系统和程序的计算机系统。虚拟机为各种科学实验、仿真模拟、生产实践和学习教育等提供了极大的便利条件,虚拟机技术也随之快速发展。[2]

目前在PC机上流行的虚拟机软件有VMware,Virtual PC和Virtual Box,利用这些软件能在Windows系统上虚拟出一个或多个计算机系统。其中,Oracle Virtual Box 最初由德国Innotek公司开发,2008年后相继被美国Sun Microsystems公司、Oracle公司收购,最后更名为 Oracle VM Virtual Box(简称Virtual Box),目前最高版本为4.1.6,值得一提的是Virtual Box是开源软件,可以方便地从其官网上下载到二进位版本及开放源码版本的代码。

虚拟机具有对硬件的集中抽象能力,能够提供更加有效的底层硬件支持。这使得其在系统迁移、硬件设备升级等应用方面具有独特优势,作者提出了基于Virtual Box 4.0.2进行系统迁移的方法并在实际中得到了应用。针对系统迁移的难点, 作者采用硬盘复制的方法,较好地保持了原有应用软件系统,解决了难点(2)和(3);再结合虚拟机技术,对操作系统进行调试,解决了系统在新主机上的启动问题。

3 系统迁移实例

3.1 应用实例

2011年底,广西南南铝箔有限责任公司决定对其关键设备主操作台生产控制用工控主机进行系统迁移,该工控机的主要任务是进行人机界面操作、参数设置和生产信息统计分析。工控机通过Profibus总线与西门子 S7-400 PLC通信,通信接口卡为CP5611。 工控机操作系统为Windows 2000 SP3,使用VB编写应用界面,另通过Viswin中间模块实现与PLC的通信并进行相关控制和计算。工控机硬件配置为 Celeron 733 MHz CPU,256 MB SDRAM,40 GB硬盘,是典型的PC架构工控机,属于2000年左右的主流配置。

由于该系统比较简单,且无相关应用系统加密,因此我们考虑采用变更主机硬件、系统整体迁移的方案。新主机为Dell Optical 380,具体硬件配置为奔腾双核E3200 CPU,200 GB STAT硬盘,2 GB内存,集成显卡、网卡、声卡,为较典型的商务机型。开始时我们先用Ghost做出原系统镜像,因其只有一个分区,所有程序数据均放置于C盘中,故做镜像时可使用生成分区镜像的方式。然后,将该镜像直接恢复到新主机上,但开机后新主机出现蓝屏,显示000007B错误。

为此,我们将一台闲置电脑作为虚拟机,虚拟机按默认设置,内存分配512 MB,硬盘10 GB,虚拟机软件采用Virtual Box 4.02,利用虚拟机实现该系统迁移。具体步骤如下:(1)将原工控机镜像文件在虚拟机恢复后,虚拟机可以正常启动。(2)在虚拟机上将原系统硬件驱动改为标准的虚拟硬件驱动,为系统调整带来便利。(3)打开虚拟机设备管理器,将所有可删除的原虚拟机硬件全部删除,做中间镜像文件。(4)恢复镜像到新机器并测试。 按照上面步骤将镜像安装到新主机后,没有出现000007B蓝屏错误,新主机可以启动,但却在启动画面滚动条停止运行。这说明新硬件通过Windows 2000操作系统的检测,没有致命硬件错误,我们分析有可能是某硬件设备的底层驱动有问题因而导致启动过程停止[3]。

于是我们重新进入虚拟机系统,对当前硬件配置进行调整,经过多次试验,在设备管理器中卸载或使用微软命令行工具Devcon.exe更改以下条目:将标准电源改为ACPI Multiprocessor PC;将IDE ATA/ATAPI Controller选择为Standard Dual Channel PCI IDE Controller;删除所有网卡、声卡、VGA和USB驱动;更改 Virtual Box Device为Microsoft ACPI—Compliant System。

完成上述更改后再做中间镜像,恢复到新主机(重复上述步骤(1)~(4)),新系统顺利启动Windows 2000 并成功登录桌面。由于Windows 2000不支持GMA4500的集成显卡,无法配置驱动,因此我们屏蔽该集成显卡,外加一块普通显卡,启动后顺利识别和安装驱动。经检查各软件使用正常,环境配置正常,新系统各项测试正常,至此我们利用虚拟机成功完成了这次系统迁移。

3.2 问题及解决

此后,作者利用虚拟机进行了其他几次系统迁移,其中出现的典型问题及解决方法如下。

(1)镜像在虚拟机中无法启动。

在镜像恢复到虚拟机时,也曾出现过虚拟机系统无法启动的问题,这是存在特殊工控板卡造成的,通过在原系统暂时将其禁用或卸载可以解决。在某些极端情况下,也可以在虚拟机启动Win PE系统后,通过加载配置单元的方法,加载目标系统的注册表文件,逐条禁用该硬件信息来解决[4,5]。

(2)大容量硬盘正确分区。

Windows 2000对大容量硬盘比较支持,可以使用各种型号和容量的各类ATA和SATA硬盘,但需要注意的是有时使用PQmagic分区软件对新电脑的硬盘无法正确分区,出现无法识别分区或正常驱动的情况,这时可以使用FDISK等分区工具进行分区。

(3)系统不支持USB鼠标键盘。

由于Windows 2000系统推出时间较早,不能很好地支持USB设备,因此对于现今大量使用USB设备甚至把USB鼠标键盘当作标准的输入输出设备的时代,往往会出现一些意想不到的问题。例如当计算机识别到新的USB设备时,需要交互式安装驱动,但此时因为USB的键盘鼠标无法使用,因而陷入一个循环的怪圈中。解决方法是使用老式串口鼠标安装USB驱动,再重启系统就可以正常使用USB键盘鼠标了。

(4)新设备驱动的识别和安装。

也由于Windows 2000系统推出时间较早,因此操作系统不能很好地支持其后推出的硬件驱动,有的甚至没有提供。例如,新的主板芯片组G45就没有Windows 2000下的驱动程序,导致新增的功能无法使用,包括显卡、网卡的驱动也成为新问题。此问题可通过使用其他兼容的硬件设备替代来解决。

4 结束语

系统迁移是一项影响面较大的工作,时间短、要求高、易出差错留下隐患,系统迁移难度大的主要原因是没有一个可以将可行的想法进行实践和测试的合适平台。而虚拟机技术给我们提供了极大的方便,使我们可以在虚拟机上进行比较极端和冒险的尝试,作者基于虚拟机所做的系统迁移,也是在经过各种大量测试后实现的。

虚拟机作为通用平台,支持绝大多数硬件环境,提供各种可以使用的工具以方便查找故障,提供快速还原和系统快照的能力,大大提高了解决问题的效率。利用虚拟机作为系统迁移的平台,极大方便了各种意外的检查和排除。但是需要注意的是,本文介绍的采用虚拟机进行系统迁移的方法暂不适用于使用SCSI硬盘和磁盘阵列的系统。

微软公司在2010年7月正式宣布停止对Windows 2000 的支持,这意味着此后新的硬件支持将不包括Windows 2000系统。因此,对于早些年使用的计算机系统尤其是工控系统中大量使用Windows 2000系统的工控机,将同时面临来自硬件和操作系统软件的压力,如何维护和升级迁移系统将是各使用单位面临的难题,本文介绍的方法对这类改造有一定借鉴意义。

参考文献

[1]吕小虎,李沁.虚拟机磁盘迁移技术研究与实现[J].计算机科学,2009,36(7):256-264.LXiao-hu,LI Qin.Research and implementation onmigration of virtual machine including VM-disk[J].Com-puter Science,2009,36(7):256-264.

[2]褚福勇,肖侬,蔡志平,等.虚拟机备份机制研究[J].计算机工程与科学,2009,31(9):131-134.CHU Fu-yong,XIAO Nong,CAI Zhi-ping,et al.Re-search on the backup mechanism of virtual machines[J].Computer Engineering and Science,2009,31(9):131-134.

[3]柳青.操作系统原理与应用——Windows2000篇[M].北京:人民邮电出版社,2005.

[4]刘龙,祝跃飞,张长河.Windows启动过程安全机制分析[J].信息工程大学学报,2009,10(3):406-408.LIU Long,ZHU Yue-fei,ZHANG Chang-he.Analysis ofWindows start-up process[J].Journal of Information En-gineering University,2009,10(3):406-408.

恒压供水上位机监控系统设计 第9篇

在生活及生产供水中, 通常是通过建造水塔以维持水压。但是, 建造水塔费用高, 还会造成水的二次污染。因此, 通常采用的方法是:当用水量增大时, 增加水泵数量或提高水泵的运转速度以保持供水管网中的水压不变;用水量减小时, 做出相反的调节。这就是恒压供水的基本思路。

变频恒压供水系统集变频技术、电气技术、现代控制技术于一体, 采用该系统进行供水可以提高供水系统的稳定性和可靠性, 方便地实现供水系统的集中管理与监控;同时系统具有良好的节能性, 对于提高效率、降低能耗等具有重要的现实意义。

1恒压供水系统的基本构成及功能

恒压供水泵站一般需要设多台水泵及电机, 这比设单台水泵电机节能而且可靠。其主要目的是保持管网水压的恒定, 水泵电机的转速要跟随用水量的变化而变化, 因此需要用变频器为电机供电。用数台电机配一台变频器, 变频器与电机间可以切换。当供水运行时, 一台水泵变频运行, 其余的水泵工频运行, 以满足不同的水量需求。

本系统以PLC为控制核心, 通过显示面板或上位机可设定所需压力, 当压力设定好后, 根据变频恒压供水原理, 利用安装在出水管网上的压力变送器, 对管网水压进行数据采样, 并将压力信号转换为电信号送入PLC, 与设定的压力进行比较和运算, 并将结果转换为频率调节信号, 送给变频器, 变频器据此调节水泵电机的电源频率, 进而调整水泵的转速, 使供水管网中的压力保持在设定压力上, 这样就构成了以设定压力为基准的闭环控制系统。其系统组成见图1。

调节器是一种电子装置, 它具有设定给定值、接收实测值的功能, 并根据给定值与实测值, 按一定的规律发出系统信号, 用于驱动执行器工作。

用PLC作为恒压供水系统的主要控制器, 其主要任务就是代替调节器实现水压给定值与反馈值的综合与调节工作, 实现数字PID调节。除此之外, 它还可以控制水泵的运行与切换, 在多泵组恒压供水泵站中, 为使设备磨损均匀, 水泵及电机可轮换工作。如设定与变频器相连接的泵为主泵 (主泵也是轮流担任的) , 当主泵运行达到最高频时, 需增加一台工频泵投入运行。PLC不仅是泵组管理的执行设备, 还可驱动控制变频器。恒压供水泵站中变频器常常采用模拟量的控制方式, 即采用PLC的模拟量控制模块, 其输入端接收到传感器送来的模拟信号, 输出端送出经给定值与反馈值比较并经PID处理后得出的模拟量信号, 并依此信号的变化改变变频器的输出频率。另外, 泵站的其他控制逻辑也由PLC承担, 如手动与自动操作转换、泵站的工作状态指示、泵站的工作异常报警、系统的自检等等。

2组态过程

利用组态王5.1作为设计平台来设计简单的恒压供水上位机监控系统。

2.1 定义变量

首先建立工程, 在工程浏览器窗口中单击“新建”按钮。其次设置串口, 在工程浏览器窗口中单击“设置”菜单项中的“设置串口”, 双击“新I/O设备”图标, 出现设备配置对话框, 依次选择生产厂家、设备名称、通信描述。然后单击“下一步”按钮, 默认“新I/O设备”, 单击“下一步”, 直到出现设备安装信息确认按钮, 单击“完成”, 设备安装结束。最后是变量定义, 要在组态王中了解外部设备的状态以及能否输出控制信号, 需要建立相应的变量, 打开“工程浏览器”, 点击“成员数据词典”, 目录内容显示区将显示“新建数据变量”图标, 双击进入“变量定义”对话框, 依次定义深井泵2号、供水泵1号、供水泵2号及6个供水阀门V1~V6。

2.2 简单画面设计和编辑

在组态王工程浏览器中内嵌了画面制作系统, 进入组态王画面制作系统, 调出图库, 双击水泵字样, 然后在组态王制作系统中单击鼠标, 便可出现水泵图样。同时单击工具栏上的画立体管道图标, 可以画出立体管道。用鼠标在画面中拖出一条线, 然后双击鼠标左键便可画出立体管道。依照此方法还可以画出阀门、蓄水池等图素, 建立如图2所示画面, 通过组态王工具箱上面的文本输入图标, 可进行各种文本的输入。

2.3 定义动画连接

上述绘制的画面还不能真实地反映出系统运行时的情形, 而动画连接则建立了数据中的变量与图形画面中的图素之间的关系, 才能将数据中的变量信息反映到图形画面中来, 或者从图形画面控制这些变量, 使画面“动”起来。在组态王中, 把建立画面图素与数据库变量之间对应关系的过程称为“动画连接”。

2.4 组态王监控程序编写

组态王运行时需要根据现场设备的情况进行实时监控, 同时给下位机写入运行参数。单击主画面, 在命令语言程序中写入图3所示程序。

3结束语

恒压供水技术因采用变频器改变了电动机电源频率, 从而达到了调节水泵转速改变水泵出口压力的目的, 与调节阀门控制水泵出口压力的方式相比, 可降低管道阻力, 大大减少截流损失的效能。由于变频泵在变频工况下工作, 当其出口流量小于额定流量时, 泵转速降低, 减少了轴承的磨损和发热, 延长了泵和电动机的机械使用寿命;实现了恒压自动控制, 不需要操作人员频繁操作, 降低了人员的劳动强度, 节省了人力。水泵电动机采用软启动方式, 按设定的加速时间加速, 避免了电动机启动时的电流冲击和对电网电压造成波动的影响, 同时也避免了电动机突然加速造成泵系统的喘振。由于变频泵工作在变频工作状态, 在其运行过程中其转速是由外供水量决定的, 故系统在运行过程中可节约可观的电能, 其经济效益十分明显。

摘要:运用可编程控制器PLC结合变频器调速技术, 并利用组态王5.1作为设计平台来设计简单的恒压供水上位机监控系统。

关键词:恒压供水,监控系统,传感器

参考文献

上位机应用程序 第10篇

1 设计思路及系统简介

本上位机软件采用Microsoft Visual C++作为开发语言, MFC基于对话框, 底层数据库采用Mysql。C++在C语言的基础上, 增加了对面向对象编程、类属编程、数据抽象等技术的支持, 还对C语言进行了非面向对象的扩充。使用C++语言进行程序设计可以获得可重用性、可靠性、连续性、访问控制、继承性以及多态性等优势。使用socket通信中的UDP协议, 将接收的数据并写入缓冲区, 按照与控制器约定的通信协议解析数据。同时将在界面操作的设置的数据参数按照协议组帧, 发送给控制器, 实现智能控制机器。该上位机既要发送配置信息, 又要处理返回数据, 同时还要与数据库交互。使用单线程编程, 无法同时满足任务的实时性, 所以采用多线程设计。C++语言操作硬件更加容易, 而且软件易于维护。添加功能或者, 修改程序, 都无须改变原有的程序结构, 大大降低了软件维护的成本。

2 总体设计

该上位机软件主要是为了完成隧道和巷道施工过程钻孔的计算机辅助设计、钻孔轨迹的自动规划优化、钻孔过程数据存储、冲击破岩轨迹的自动规划优化、钻孔参数的设置、钻孔和冲击破岩时系统状态的实时监测等功能。如图1所示。

上位机的功能主要划分为几个方面:与下位机通信, 实现大量工况数据的接收与控制命令的发送;存储数据, 包括设置的系统参数、工作记录、故障信息、报警记录以及关键工况数据;根据上传的实时数据及设置的参数数据等判断故障并保存报警信息;在界面实时显示设备数据以及报警信息。通信模块采用以太网通信方式, 利用电脑自带的网络接口与控制器通信, 通过工业以太网接收来自下位机的数据, 包括设备参数、工况信息、按键信息、报警信息。如图2所示。

3 详细设计

用Microsoft Visual C++作为开发语言, 采用UDP方式与SYMC通信, 利用多线程方式通信, 包括几个函数和线程。

实现数据存储的数据库模块, 利用My SQL自带的C API建立与MYSQL数据库的连接, 实现数据库的操作, 将设置的参数、孔序、深度、报警等数据存储在上位机电脑里面。 (My SQL数据库优点) 其数据结构为

在VC++环境下编写上位机界面, 实现人机交互, 可实时显示设备工作信息, 设置设备参数, 提示报警和故障信息。通过该界面可以直接再现钻孔的顺序和钻臂的工作状态以及实现对设备的参数设定等人机交互。主体界面是用户接触最多的界面, 所以设计是应考虑测试结果要在主要地方用比较醒目的方式显示出来。操作命令按钮名称要易懂, 布局合理, 操作流程尽量简单。主要界面示例见图3。

本文介绍了基于Microsoft Visual C++的上位机软件, 利用Mysql实现数据的存储, 实现对下位机控制器的监控, 以及参数设置, 操作简单, 数据准确。

参考文献

[1]孙鑫, 余安萍.VC++深入详解[M].北京:电子工业出版社, 2006.

[2]刘锐宁, 梁水, 李伟明.Visual C++编程之道[M].北京:人民邮电出版社, 2011.

[3]侯俊杰.深入浅出MFC (第二版) [M].武汉:华中科技大学出版社, 2001.

上一篇:科研战略下一篇:不同碳氮比