基于串口通信的实时压力控制系统设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0102H
0304H 58EBH
表 2 从机报文格式
从机地址
功能码
起始地址
CRC 码
03H
10H
0004H
0006H
在本系统中,采用 RS-232 接口,上位机为微机,从机为单片机系统。通信方式采用上 位机提出命令请求,从机响应接收数据后作数据分析,如果数据满足通信规约,从机作出数
据响应。主机和从机间的通信数据包括从机地址码、功能代码、数据信息码、校验码等十六 进制数信息。
m_pSet = &GetDocument()->m_readCompassSet; ResizeParentToFit(); …… } void CDraw::OnDraw(CDC* pDC) { CDocument* pDoc = GetDocument(); …… this->GetClientRect(&rc); pDC->SetMapMode(MM_ANISOTROPIC); pDC->SetWindowOrg(0, 0); pDC->SetViewportOrg(10, rc.bottom-10); pDC->SetWindowExt(cxGraph, cyGraph);
通过 MSCOMM 控件的 OUTPUT 属性来完成,压力数据的接收在 MSCOMM 控件的 OnComm 事件过程中完成。
(2) 单片机控制部分:压力系统的单片机控制部分主要完成对压力的采样以及控制,报 警系统的单片机主要完成超、低压情况下的自动报警功能。上位机的实时监控系统一方面要 收集下位机采样到的实时压力数据信息,利用 PC 机的资源实现分析以及报表生成处理,另 一方面在设备调试阶段可以辅助寻找系统的最佳控制参数,通过上位机向单片机控制器发送 参数,并借助上位 PC 机监控系统生成的实时压力曲线效果对参数进行调整,来获取最优的 控制参数。
(3) 压力数据库选用 Access:利用 VC 自带的可视化数据管理器来建立,将 Access 数据 库与 ODBC 建立连接后,就可以方便地实现对数据库的输入,查询,显示,打印等各种操 作。系统中压力值、采样时刻等数据保存在后台数据库中,数据的显示通过 DataGrid 控件 与 ODBC 数据绑定来实现。串口接收数据事件驱动函数 OnComm()中将串口接收数据送到 数据库中保存。
协议除了定义通信功能码外,同时还定义了出错码,这有助于通信主站发现通信的错误内容
及其原因,从而保证了通信的可靠进行。Modbus 协议中,主机发送的报文格式如表 1,从
机发送的报文如表 2。
从机 地址
功能码
起始地址
表 1 主机报文格式
数据字 数据字
长度
字节长 保存数据 1
保存数据 2
CRC 码
03H 10H 0004H 0002H 04H
终端 1
终端 2 …...
终端 n
图 1 串口通信网络通信图 2.监控系统的主程序结构
上位机实时监控系统软件采用 Visual C++开发,主要用于采集各控制点的压力参数进行 动态显示,压力数据的采集,各种数据信息的修改,打印以及历史数据的查询等等。系统程 序的主要流程如图 2 所示。
启动系统 发送接收数据命令
operators can set parameters to achieve the best effect of technology.
Keywords: Serial Port Communication,VC++6.0, Real-time Pressure Control System
1.引言
串行通信是计算机与其他终端设备进行数据交换时经常使用的方法之一,它具有简单,
使用灵活方便,数据传输可靠等优点,因而在工业监控,数据采集和实时监控系统中得到广
泛应用。在实际的应用中,为了实现实时控制,一般采用一台 PC 机通过计算机串口或扩展
的多串口与一台或多台终端相连,进行串口通信,其网络通信图如图 1。本文针对超塑成型
(4) 数据的实时采集:Windows 系统下的多媒体定时器函数 timeSetEvent 和 timeKillEvent 可以较好的满足实时性的要求。该多媒体定时器在自己的线程内,且它的线程优先级设定为 THREAD_PRIORITY_TIME_CRITICAL,这比绝大部分的线程优先权数值都高。
关键字:串口通信,VC++6.0,实时压力监控
中图分类号:TP273+.5
文献标码:B
The Design and Implementation of a Real-time Pressure Control
System Based on Serial Port Communication
Ye ke-jiang
pDC->SetViewportExt(rc.right-20, -(rc.bottom-20)); …… }
按照上面的函数方法,在 Visual C++下开发的压力系统完全可以满足实时控制的要求, 图 3 为压力的实时控制曲线。
图 3 压力实时控制曲线 4.结束语
本问介绍了一种工业控制软件的设计和实现过程,该方案利用 VC 强大的数据库功能和 API 函数很好的实现了数据库的实时操作和实时数据曲线的生成。本系统已投入使用,系统 运行可靠稳定,提高了数据的可靠性,正确性和计算准确性,减少了由于人为计算不准确和 误差造成的损失。且极大的节约了人员数量,减轻了实际操作人员的计算负担。 参考文献 [1]张宏林. Visual C++串口通信技术与工程实践[M].人民邮电出版社, 2006. [2]王俊国, 周建中. Visual C++6.0 环境下的过程控制系统软件设计与实现[J].工业仪表与自 动化装置,2005,6:45-47. [3] 杜 磊 , 成 曙 , 陈 科 吉 . 用 于 控 制 系 统 实 时 监 控 的 专 家 系 统 设 计 [J]. 微 计 算 机 信 息,2008,2-1:84-85. [4] 文小玲,易先军,钟晓霞. 基于 Modbus 协议的实时温度监控系统开发[J]. 微计算机信 息,2008,4-2:104-105. 本文作者创新点:在 VC++平台下,通过对串口循环采集数据,记录到数据库中,实时对数 据进行显示,并对系统实现的几个关键技术进行了说明。 作者简介:叶克江(1966-),男,河南息县人,博士,广东外语艺术职业学院,计算机副教 授,主要从事计算机应用以及自动控制方面的研究。 Biography:YE ke-jiang(1966-), male, XIXIAN,HENAN Province,Doctor Degree, Guangdong Teachers College of Foreign Language and Arts, computer assistant professor,direction of research: Computer Applies,Automatic Control,etc.
工业生产过程中对各种零件加工气压需求不同的测量与Байду номын сангаас制系统,在 Visual C++环境下设计
了一个计算机实时监控软件。该系统主要由一台微机和单片机控制系统组成,单片机系统将
采集的气压数据信号发送给上位机,上位机分析具体加工零件所需的最佳实时压力并将数据
发出控制命令,来保证产品的合格率。
后台软件
多串口卡
(5)多线程编程技术:在本系统里引入“R-W”模型,在此模型中有多个 R 和 W,以 内存数据库为临界资源进行同步访问。其中通信线程,历史数据库线程为 W 线程,显示压 力曲线线程为 R 线程。“R-W”模型的读写权限限制为:W-W 互斥:不能有两个 W 同时进 行写操作;W-R 互斥:不能同时有一个线程在写,另一个线程在读;R-R 容许:可以有一 个或者多个 R 线程同时进行。这样,整个系统通过各个线程之间的协调,较好的解决了各 线程访问内存数据库的同步问题。 3.3 压力曲线的动态显示
串口初始化
接收气体压力数据
参数输入
保存数据,在系统中 显示实时数据
YES 需要调整参数
NO 结束
图 2 系统程序的主要流程图
3.系统设计与实现
3.1 利用 Modbus 通信协议实现主从机通信
Modbus 协议可以采用 RS-232,RS-485 等异步串行标准,适用于一台远程微机对多终
端的系统编程、数据采集和现场监控,可设置地址、波特率、数据格式等通信参数。Modbus
本系统中,主机和单片机之间的通讯主要有:主机将比例、微分、积分参数以及采样时间间 隔传送给单片机,用功能号 10H;主机接收单片机传送过来的压力值大小,用功能 03H。
3.2 系统实现的关键技术 (1) 在 Visual C++ 下,采用 MSCOMM 控件来实现 Modbus 通信协议,PID 参数的发送
(Information Tech. Department ,Guangdong Teachers College of Foreign Language and Arts ,
Guangdong Guangzhou 510640)
Abstract: This paper presents a real-time pressure control system based on serial communication
利用 Visual C++编程时,首先将从机地址码、功能代码、数据信息码装入数组,数组按 规定的方式进行移位和 XOR 计算,得到 2 字节的 CRC 码,然后把包含 CRC 校验码的数据 帧作为连续的数据流进行传输。Modbus 编程中主要需处理好 CRC 校验码的生成以及数据包 开始标志的测试。功能代码主要作用是告知被选中的从机系统中的设备要执行那种功能。在
基于串口通信的实时压力控制系统设计与实现
叶克江
(广东外语艺术职业学院信息技术系,广东 广州 510640)
摘 要 本文介绍了一种在 VC++平台下,基于串口通信的实时压力控制系统。该系统通
过对串口循环采集数据,记录到数据库中,并实时的对数据进行显示。人机界面提供历史数
据查询,且操作人员可以设置参数达到最好的工艺效果。
实时监控系统中很重要的一项功能就是能将采集的参数以曲线形式显示出来,通过调用 Windows API 函数 Cdraw 类来实现曲线从右到左的动态移动,曲线的绘制部分代码如下: void CDraw::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { ……
in the VC + + platform. The system collects the cycle of serial port’s data , records them to the
database and show the real-time datas in system . HMI provides historical data for inquirying, and
相关文档
最新文档