




已阅读5页,还剩53页未读, 继续免费阅读
(机械电子工程专业论文)暖体假人上位机子系统控制软件的研究与开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
尘塑型塑鳖型曼堡主型苎童苎竺塑垒主l 堕堡堡占堡! ! 王墨堕丝型鉴竺塑旦塑兰堑塞 暖体假人上位机子系统控制软件的研究与开发 摘要 本文主要介绍了暖体假人系统中上位机软件的设计。包括以下几个方 面: 暖体假人系统的介绍,主要介绍了暖体假人系统中的各子系统以及各 子系统的主要任务;暖体假人系统中串口通信程序的设计,主要介绍了 采用多线程串口通信类和m o d b u s 协议实现上、下位机之间通信的方法; 暖体假人系统中上位机控制程序的设计主要介绍了上位机控制程序中 各命令的作用、结构和监控程序的流程;暖体假人系统的调试,主要介 绍了暖体假人系统的调试方法、出现的主要问题以及解决办法。 在本项目中实现了服装隔热值( 克罗值,c l o ) 的计算。 关键词:暖体假人,上位机监控程序,串口通信,多线程,m o d b u s 协议, 服装隔热值 北京服装学院硕十研究生学位论文 暖体性人匕位机r 系统控制软件的副f 究与开投 s t u d ya n dd e v e l o p m e n to f c o n t r o ls o f t w a r ef o rt h e r m a l m a n i k l n sm o n i t o rs u b s y s t e m a b s t r a c t at h e r m a lm a n i k i ns y s t e mi si n t r o d u c e ds u m m a r i l ya n dt h ed e v e l o p m e n t o f m o n i t o r s u b s y s t e mi si n t r o d u c e d i nd e t a i li nt h i st r e a t i s e i nt h em o n i t o r s u b s y s t e m ,s e r i a l c o m m u n i c a t i o nb e t w e e np ca n d a d g c 8 12m i c r o c o n t r o l l e r si so n eo fk e yf u n c t i o n sa n di sa c c o m p l i s h e db y e m p l o y i n g t h em u l t i t h r e a ds e r i a lc o m m u n i c a t i o nc l a s s p r o g r a m m e db y r e m o ns p e k r e i j s ea n dm o d b u sa s c i ip r o t o c 0 1 t e m p e r a t u r ec o n t r o le r r o ri n t h e r m a lm a n i k i ns y s t e mi sl e s st h a n0 2 。c b e c a u s et e m p e r a t u r ec a l i b r a t i o ni s a d o p t e d e n e r g ym e t e r i n gi c a d 7 7 5 5i s a d o p t e di nt h e t h e r m a lm a n i k i n s y s t e m i no r d e rt om e t e re n e r g yc o n s u m p t i o n c a l c u l a t i o n o f c l o t h i n g i n s u l a t i n gv a l u ei sa n o t h e r m a i nf u n c t i o ni nm o n i t o rs u b s y s t e m t h em e a s u r e a n dc a l c u l a t i o nm e t h o do fc l o t h i n gi n s u l a t i n gv a l u ei se x p l a i n e di nd e t a i li n t h et r e a t i s e c a l c u l a t i o no f c l o t h i n gi n s u l a t i n gv a l u e i sa c h i e v e di nt h i sp r o j e c t k e yw o r d s :t h e r m a lm a n i k i n ,m o n i t o rs u b s y s t e m ,s e r i a lc o m m u n i c a t i o n , m u l t i t h r e a d ,m o d b u s a s c i i p r o t o c o l ,c l o t h i n g i n s u l a t i n g v a l u e ( c l o ) 声明 北京服装学院学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究 成果。据我所知,除了文中特别加以标注和致谢的地方外,论文不包含其他人已经发 表或撰写过的研究成果,也不包含为获得北京服装学院或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确地说明并表示谢意。 学位论文作者签名:讧义平签字日期:印西车3 月7 同 关于论文使用授权的说明 本人完全了解北京服装学院有关保留、使用学位论文的规定,有权保留并向国家 有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权北京服 装学院可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印或扫描等复制手段保存、汇编学位论文。 本人签名:、王过早签字日期:k 箩年3 月,日 签字日期:如f 年5 月9 日 i 字j 欠 j 尊 名签师导 北京服装学院碗十刊f 究生学位论文 暖体假人上位机了系统控制软件的酬究与开技 刖西 服装是人类最基本的需求之一,对人的生存和生活具有重要意义。随着人类的发 展进步,人们对服装舒适性的要求越来越高。防寒保暖是服装的主要功能,服装的隔 热值是定量评价服装隔热性能的重要指标。科学准确地测定服装的隔热值对设计、制 作和穿着服装,保证人体正常的生理机能和舒适的温度感觉具有积极意义。 暖体假人作为服装工效学研究必不可少的先进设备,已经用于服装整体或局部的 热传导性能研究。根据人体生理特点,假人本体被划分为若干个区段,通过对各区段 分别进行温度控制,使各区段温度与真人对应区段的体温大体相同,从而使暖体假人 系统模仿人、服装和环境的热交换过程。 特定搭配的服装隔热值的测量是相当困难的。其试验方法主要分为人体试验和假 人试验。人体试验的缺点较多,所费人力、物力较大;又因各人生理和心理的个体差 异,试验误差较大,且无法在极端环境中试验,所以人体试验一般不再采用。暖体假 人是进行服装的隔热值试验研究的理想测试设备,它可以经受任何试验条件,可按需 要进行不f h j 断的连续试验和多次重复试验。并无生理、心理因素的影响,试验结果稳 定,误差较小;可以进行精确合理的测量。1 7 1 前国内外广泛地应用暖体假人对服装进 行隔热值测量,从而简化了试验程序,提高了试验准确性;并为服装结构工艺、整体 配套提供基础设计数据,促进了服装舒适性科学的发展。 本项目研究在服装隔热值测量和暖体假人控制方面作了一些初步的尝试。 北京月挺装学院硕+ 研究生学位论文暖体假人位机r 系统拄制软件的研究与开发 第一章暖体假人系统介绍 1 1 暖体假人系统的组成 暖体假人系统由三部分组成:人工气候室、暖体假人本体和暖体假人控制子系统。 1 1 ,1 人工气候室 人工气候室用于模拟服装隔热值的测定环境。包括温度和风速。温度范围设计为: 3 0 5 0 。 1 1 2 假人本体 假人本体的作用在于模拟人体、服装与环境的热交换过程,它是一个在形态、区 段划分、体表温度分布等都符合人体解剖生理特点的假人。 假人本体用玻璃钢制作,在假人体表分区段缠绕加热丝,并在加热丝内放入温度 测量元件( 片状铂电阻p t l 0 0 ) ,通过控制各区段加热丝的通电或断电来达到控制体 表温度的效果。 假人本体的尺寸根据中国成年人人体尺寸的国标来选定。尺寸数据选定了男性 1 8 到6 0 岁尺寸正态分布数据中分布概率为5 0 的一组尺寸。表1 给出假人主要尺寸, 表2 给出了假人水平主要尺寸。 表1 假人主要尺寸( 单位:m m ) 身高上臂长前臂长大腿长 小腿长 l1 6 7 83 1 3 2 3 74 6 54 6 9 表2 假人水平主要尺寸( 单位:m m ) 胸宽肩宽胸围 腰围臀围 l 2 8 03 7 5 8 6 77 3 5 8 7 5 根据人穿着服装的习惯和体表温度分布,假人共分了17 个区段,分别为:头部、 2 型望塑墅篓墅坠生燮竺兰竺堡苎 哩堡堡圭垡塑王墨竺鳖型塾生塑! 苎窒兰堑茎 前胸、后背、左上臂、右上臂、左下臂、右下臂、左手、右手、腹部、臀部、左大腿、 有大腿、左小腿、右小腿、左脚、右脚。 1 1 3 暖体假人控制子系统 暖体假人控制子系统是暖体假人系统的核心,包括两个部分:硬件和软件。硬件 主要由台上位机和三台下位机组成;软件又分为:下位机软件和上位机软件。 在暖体假人的控制子系统中,p c 机作为上位机,三台f 位机是以单片机a d 肛c 8 1 2 为核心的嵌入式暖体假人测控装置。暖体假人的计算机控制系统总体结构如图1 所 示。上位机负责监控下位机,其任务包括:向下位机发送控制命令,采集、保存及显 示数据,计算服装的隔热值等。下位机负责假人本体的温度控制、环境温度测量、加 热电压、加热所耗功的测量。其中l 号f 位机负责假人体表十七个区段温度的测控, 其系统结构框图如图2 所示;2 号下位机负责测量环境温度和加热电压,其系统结构 框图如图3 所示;3 号下位机负责测量加热所耗的功,其系统结构框图如图4 所示。 上位机和下位机之间采用异步串行通信,为了提高系统的抗干扰能力,串行总线采用 r s 一4 8 5 标准。上位机通过c o m 口和串行总线r s 一4 8 5 与三台下位机通信。由于r s 一4 8 5 是半双工,所以上位机和下位机之间组成了主从式通信网络。在通信过程中上位机处 入主机的地位,三台下位机处于从机的地位。 图l 系统结构框图 图2l 号下位机结构框图 北京服装学院硕士研究生学位论文 暖体假人卜位机子系统控制软件的研究与开发 图32 号下位机结构框图 图43 号下位机结构框图 暖体假人系统运行时所需的各种参数经e 位机通过可视化人机界面由用户输入, 并发送到下位机。在系统运行期间,下位机向上位机发送似人各区段温度、环境温度、 加热电压以及加热所耗的功,上位机显示保存这些数掘,并通过人体皮肤温度与环境 温度差以及人体体表单位面积的散热率等物理参数,计算服装的隔热值。 根据实际人体的体表温度分布,上位机将假人各区段体表温度设定值和p i d 参数 发送给1 号下位机,由l 号下位机实现假人体表温度的控制。在测量的过程中,1 号 下位机将假人体表温度数据、2 号下位机将环境温度和加热电压数据、3 号下位机将 加热脉冲个数实时上传给上位机。上位机将接收到的数据进行处理并显示。最后由上 位机根据这些数据计算出服装的隔热值。 1 2 假人本体加热总功率的确定 1 2 1 服装隔热值( 克罗) 的定义 服装隔热值的单位为克罗( c l o ) 。克罗值的定义是:在室温为2 1 1 ,相对湿 度5 0 以下,气流为l o c m s ( 无风) ,受试者安静坐姿,感觉舒适并维持平均体表温 度3 3 3 。c 时,其基础代谢为5 8 1 w m 2 的基准定义条件下,受试者所穿服装的隔热值 为1 克罗。在这种条件下,其基础代谢的2 5 通过呼吸系统和皮肽表面蒸发水分带走, 其余7 5 ( 约4 3 5 w m 2 ) 通过服装散失到周围的环境中。 4 北京服姨学院硕f :研究生学位论支 暖体假人i 位机于系统控制软件的研究与开发 克罗的量纲为:1c l o = 0 1 5 5m 2 。c w 。 1 2 2 暖体假人本体加热总功率的计算 本课题中假人本体是处于静止状态,按照克罗值的定义,加热总功率在体表温度 进入稳态时只要达到4 3 5 s ( s 为人体表面积) 瓦就可以了,人体总面积的范围为 1 5 2 m ! ,因此,假人体表温度进入稳态后加热总功率应不大丁二8 7 瓦。但考虑到极 端应用条件以及在预加热时温度上升速度问题,即如果加热总功率过小,那么假人温 度在开始试验的预加热阶段上升会很慢,这样即浪费能源又耽误时间,因此应对加热 功率留一定的余量。在本课题中,加热总功率设计为1 5 0 0 瓦。 1 3 暖体假人控制子系统的硬件介绍 1 3 11 号下位机系统的构成和工作原理 假人本体的温度控制系统采用多回路闭环控制,在个控制周期内对1 7 路温度 依次进行f u z z y p i 控制。假人的单回路温度控制系统结构示意图如图5 所示,系统 涉及温度测量和变送、f u z z y p i 控制算法、控制量的输出等环节。1 7 路之间通过多 路开关切换。 d c 6 0 v 一4 0 a 图51 号机单回路温度控制系统结构示意 北京服装学院颂t 研究生学位论文 暖体假人l :位机了系统控制软件的研究与开发 1 3 22 号下位机系统的构成和工作原理 和l 号机相比,2 号机的环境温度测量比较简单,只是对温度进行测量。3 路之 间的切换也是通过多路丌关进行切换的。与1 号机不同的足,2 号机需要对加热电压 进行测量以便于监视加热电压。本课题采用了压频转换芯片a d 6 5 4 。由于测量的电压 是大功率加热电源的电压,为了不干扰a d 旺8 1 2 的正常工作,在测量时要求把压频转 换模块与a d p c s l 2 系统进行光电隔离。v f c 电路见图6 。 c l 图6 a d 6 5 4j f 电压输入v f c 电路 1 3 33 号下位机系统的构成和工作原理 除了串行通信以外,3 号下位机只有一个任务,那就是对加热所耗功的测量。对 功的测量是用电能计量芯片a d 7 7 5 5 来实现的。a d 7 7 5 5 与a d c 8 1 2 接口最简单的方法 是使用c f 高频输出,如图7 所示,频率c f 端连接到a d 心8 1 2 的t 0 计数器上,对c f 输出的脉冲计数。当加热电压在一定的范围内时,脉冲个数和所消耗的能量为线形关 系。3 号下位机上传给上位机的数据是加热脉冲个数。 第一通道 ( 加热电流采桐 第二通道 ( 加热电压采栉 器 盟a o 下g 觎8 1 2 董b 图7a d 7 7 5 5 与3 号下位机接口 北京服装学院碗上研究生学位论文 暖体假人i 位机于系统控制软件的币j f 究与开发 1 3 4 上位机和下位机之间的接口电路 p c 机的串行口采用的是r s 一2 3 2 标准,而本系统采用r s4 8 5 标准,因此必须进 行电平转换,本设计使用r s 2 3 2 一r s 4 8 5 转换器完成从r s 一2 3 2 到r s 一4 8 5 的电平转换。 由于下位机串口发出的数据为t t l 电平,同时也只能接收t t l 电平,在使用r s4 8 5 接口时,也必须进行电平转换,本设计中使用s n 7 5 l b c l 8 4 。系统硬件接口电路连线 如图8 所示。 图8 上下位机之间硬件接口电路图 1 4 服装隔热值的计算 1 4 1 服装隔热值的定义” l # 服装的保暖性通过服装隔热值进行计量。服装隔热值分为总隔热值( i 。) 、有效 隔热值( i + ) 和基础隔热值( i 。i ) 。总隔热值是指从人体皮肤到环境的的总传热隔热 值。有效隔热值是指从人体皮肤表面到服装外表面的隔热值。基础隔热值是在考虑服 装面积因素的影响时,从人体皮肤表面到服装外表面的隔热值。它们的计算公式如下: i 。= ( t 。一t 。) o 1 5 5 h式( 卜1 ) 式中:i 。为总隔热值( c l o ) ,0 ,1 5 5 为隔热值常数,t ;为假人体面的平均温度( ) , 7 北京服装学院碗上研究生学位论文 暖休假人j 位机于系统控制软件的研究与开发 l 为环境温度( ) ,h 为单位表面积非蒸发散热率( w m 2 ) 。 i m = i 一i 。式( 卜2 ) 式中:i “为有效隔热值( c l o ) ,i 。为总隔热值( c l o ) ,l ,为表面空气隔热值( c l o ) 。 i 。,= i 一i ;。f 。,式( 1 3 ) 式中:l 。,为基础隔热值( c l o ) ,t 。为总隔热值( c 】0 ) ,i 。为表面空气隔热值( c l o ) , f 。r 为服装面积因素,即人体穿衣外表面积与裸体外表面积的比值。 当暖体假人在定温度下,不着装进行裸体实验时,所得结果为暖体假人表面空 气隔热值( i 。) 。 服装的隔热值主要是通过总隔热值来衡量。 1 4 2 计算隔热值所需要的数据 由式( 1 1 ) 可知,为计算服装总隔热值,需要得到三组数据:假人体表平均温 度、环境平均温度和单位表面积散热率。 假人体表平均温度可以用各区段温度加权算得。环境平均温度可以在测量过程中 对环境温度进行累加,然后取平均值。单位表面积散热率可以先通过测量得到加热的 功,然后除以加热时间和假人各区段表面积之和,得到单位表面积散热率。 北京服装学院硕十刊f 宄生学位论义 暖1 4 :假人l :位机了系统控制软件的研究与开发 第二章上位机软件通信程序设计 2 1w in 3 2a p i 串口通信编程概述”5 w i n d o w s 环境下的串口编程与d o s 环境下的串口编程有很大不同,w i n d o w s 环境 下的编程的最大特征是设备无关性,它通过设备驱动程序将w i n d o w s 应用程序与不同 的外部设备隔离。w i n d o w s 封装了w i n d o w s 的通信机制,这种方式称为通信a p i 。 w i n d o w s 程序员可以利用这些通信a pt 函数对硬件进行编程,而不需要对硬件直接进 行操作。这种体系称为w i n d o w s 丌放服务体系( w o s a ,w i n d o w so p e ns e r v i c e s a r c h i t e c l u r e s ) ,如图9 所示。 医而l 二二j 二1 l 竺一 主 i 驱动程序i j 一,j 图9w i n d o w s 丌放服务体系 w i n d o w s9 x n t 2 0 0 0 的a p i 一般都支持3 2 位的操作,因此又称为w i n 3 2a p i 。 w i n 3 2 通信a p i 把串口操作和文件操作统一起来了,串口是作为文件处理的,串口的 打开、关闭、读取和写入所用的函数与操作文件的函数完全一致。对于串行通信,w i n 3 2 提供了相应的文件i o 函数与通信函数,通过了解这些函数的使用,可以编制出 符合不同需要的通信程序。与通信设备相关的结构有c o m m c o n f i g ,c o m m p r o p , c o m m t i m e o u t s ,c o m s t a t ,d c b ,m o d e m d e v c a p s ,m o d e m s e t t i n g s 共7 个,与通信有关 的w i n d o w sa p i 函数共有2 6 个。 9 北京服装学院硕士研究生学位论文 暖体假人卜位机了系统控制软件的研究与开发 2 2 串口通信函数和结构体 要使用w i n 3 2a p i 编写w i n d o w s 串口通信程序,就要首先了解w i n 3 2a p i 串u 通 信函数。用于串口通信的函数和结构在w i n b a s e h 头文件中定义,本节将介绍一些常 用的函数和结构。 一、打开串u h a n d l emh c o m m = c r e a t e f i l e ( “c o m l ”, 端口号 g e n e r i c r e a dfg e n e r i c w r i t e ,访问模式 0 ,共享模式,串口设备必须为零 n u l l ,安全属性,通常 o p e n e x i s t i n g ,文件创建方式,通信资源必须存在 f i l e f l a g o v e r l a p p e d ,异步( 支持w o 重叠操作) 0 ) ;串口资源必须为零 二、关闭串口 b o o lc l o s e h a n d l e ( mh c o m m ) ;关闭串口 三、配置串口 串口通信编程的最重要阶段是用d c b 结构配置串口。错误地初始化d c b 结构是一 种常见的问题,如果串口通信函数没有产生期望的结果,则d c b 结构可能发生了错误。 d c b m _ d c b ; d c b 是一个很重要的结构,它有众多的结构成员,包含了串口配置的各种参数, 其中有几个常用的参数说明如下: m _ d c b b a u d r a t e :指定当前串口的通信波特率。 md c b p a r i t y ;指定当前串v 1 使用的数据位数,必须是4 8 。 md c b b y t e s i z e ;指定当前串口的奇偶校验方法。它的取值可以 是e v e n p a r i t y 、n o p a r i t y 、o d d p a r i t y ,分别表 示偶校验、无校验、奇校验。 i l l d c b s t o p b i t s ;指定当前串口的停止位位数。它的取值可以是 o n e s t o p b i t 、o n e s t o p b i t s 和t w o s t o p b i t s ,分 别表示l 位停止位、1 5 位停止位和2 位停止位。 m d c b e v t c h a r ;指定用来标志个事件的字符值。 c r e a t f i l e 0 函数以默认设置或上次打开串口的设置来打开串口。通常情况下, 应用程序需要改变默认设置。调用g e t c o m m s t a t e0 函数可以获得串口的当前配置, 调用s e t c o m m s t a t e0 函数可以重新配置串口的各个参数。 获取串口配置的函数 g e t c o m m s t a t e ( 硼h c o m m ,& md c b ) ; 设置串口的配置 望生业型塑型型堕生! ! i 堡兰堡堡塞 墼堡堡垒! :竺垫! 墨竺丝剑堑堡塑塑壅兰堑丝 s e t c o m m s t a t e ( m h c o m m ,g md c b ) ; 四、配置超时 串口配置还包括c o m m t i n m e o u t s 结构设置读写操作的超时值。超时结构直接影 响读写的操作行为。当读写操作发生超时时,如果r e a d f i i e 0 和w r i t e f i l e 0 等读 写操作尚未结束,那么超时设置将无条件结束读写操作,而不管是否读出或已写入 指定数量的数据。在读写操作期间发生的超时将不按错误处理。r e a d f i l e ( ) 和 w r i t e f i l e 0 函数并不返回错误值。对于异步操作,则由o v e r l a p p e d 结构来获取, o v e r l a p p e d 结构在串口读写操作中详细说明。 如果要设置或改变原来的超时参数,可以调用s e t c o m m t i m e o u t s 函数: s e t c o m m t i m e o u t 8 ( mh c o n l 】i j ,【l c o m m t i m e o u t s ) 。 血、缓冲区操作 当串b i 打开后,可以调用s e t u p c o m m 函数给它配置接收缓冲区和发送缓冲区。 接收缓冲区1 0 2 4 个字节,发送缓冲区5 1 2 个字节。 s e t u p c o l m n ( mh c o m m ,1 0 2 4 ,5 1 2 ) ; 如果程序要中途终止读写操作并丢弃接收或发送缓冲区中的所有字符,可以调用 p u r g e c o m m 函数。p u r g e c o m m 函数中参数的含义见表3 。 p u r g e c o m m ( m _ h c o m m ,p u r g e r x c l e a r | p u r g e t x c l e a rp u r g er x a b o r tip u r g e _ t x a b o r t ) : 表3p u r g e c o m m 的执行操作 值含义 p u r g 芝7 x a b o r t终止所有写操作,并立即返回,即使写操作未 完成 p u r g e r x a b o r t终止所有读操作,并立即返回,即使读操作未 完成 p u r g e 3 x c l e a r清除发送缓冲区 p u r g e _ r x c l e a r清除接收缓冲区 六、读写操作 利用w i n 3 2 通信a p i 读写串口时,既可以同步执行,也可以重叠( 异步) 执行。 在同步执行时,函数直到操作完成后才返回。这意味着在同步执行时线程会阻塞,从 i i 出墨堡鲨兰堕塑型塑! ! ! 丝笙壅 堕堡堡垒! :堡! ! 王墨堑丝型塾生塑型塞皇茎茎 而导致效率降低。在重叠执行时,即使操作还未完成,调用的函数也会立即返回。费 时的i 0 操作在后台进行,这样线程可以做其他工作。 1 读串口 应用程序通过调用r e a d f i 1 e ( ) 函数从串口中读取数据,它支持同步和异步读 操作。 b o o lr e a d f i l e ( mh c o m m , 串口号( c o m l 、c o m 2 ) & r x b u f f ,接收缓冲区指针 1 , 指定读取得字节数 & g y t e s r e a d ,实际读取得字节数 & mo v ) ; i o 重叠结构( 异步) 2 写串口 应用程序通过调用w r i t e f i l e ( ) 函数从串口中读取数据,它支持同步和异步读 操作。 b o o lw r i t e f i l e ( mh c o m m ,串口号( c o m l 、c o m 2 ) m _ s z w r it e b u f f e r ,发送缓冲区指针 b y t e s t o w r i t e ,指定发送的字节数 & b y t e s s e n t ,实际发送的字节数 & mo r ) :i o 重叠结构( 异步) 3 重叠i o 操作 重叠( 异步) i 0 操作是指应用程序可以在后台进行i o 读写操作,而在前台做 其他的工作。在w $ n d o w s 中使用重叠i o 操作,可以大大提高程序的运行效率。重叠 i o 操作中主要用到o v e r l a p p e d 结构。o v e r i a p p e d 结构的声明如下: t y p e d e fs t r u c t o v e r l a p p e d d w o r di n t e r n a l d w o r di n t e r n a l h i g h ; d w o r d o f f s e t ; d w o r do f f s e t h i g h ; h a n d l e h e v e n t ;标识操作完成的事件 o v e r l a p p e d 结构中最重要的成员是h e v e n t 。h e v e n t 是一个事件对象句柄,当操 作完成时,被设置为有信号状态。 在设置了重叠i o 操作后,当i o 操作函数返回时,操作的结果会有两种情况。 一种情况是:当函数返回时i o 操作已经完成,函数返回t r u e ,此时i o 操作好像 是以同步方式执行的,但实际上是重叠( 异步) 执行的结果。另一种情况是:当函数 返回时i o 操作还没完成,函数返回f a l s e ,并且g e t l a s t e r r o r ( ) 函数返回 e r r o r1 0p e n d i n g ,此时系统把o v e r l a p p e d 结构中的事件对象设为无信号状态,当 l2 苎室里燮塑主婴塞生堂壁堡苎 哩堡堡! 些塑! 至丝篓型竺笪堕塑壅! ! 茎丝 i o 操作完成时,系统把它设为有信号状态。重叠操作可以由g e t o v e r l 。a p p e d r e s u l t o 函数来获取结果。 下面的代码随明了如何使用g e t o v e r l a p p e d r e s u l t 0 函数处理重叠操作。 o v e r l a p p e d o v e r l a p p e d ;定义o v e r l a p p e d 结构对象。 初始化用于重叠读写的o v e r l a p p e d 结构。 m e m s e t ( & o v e r a p p e d ,0 ,s i z e o f ( o v e r l a p p e d ) ) ; 为重叠读创建事件对象,手工重置,初始化为无信号状态。 o v e r l a p p e d h e v e n t = c r e a t e e v e n t ( n u l l ,t r u e ,f a l s e ,n u t 。l ) ; 异步读串口 b o o lf r e a d s t a t = r e a d f i l e ( h p o r t ,r e a d b u f ,d w r e a d c o u n t , d w r e t u r n c o u n t ,& o v e r a p p e d ) : i f ( ! f r e a d s t a t ) i “g e t l a s t e r r o r 0 := e r r o r _ 1 0 一p e n d i n g ) w h i l e ( ! g e t o v e r l a p p e d r e s u l t ( h p o r t ,& o v e r l a p p e d ,& d w r e t u r n c o u n t ,t r u e ) ) f d w e r r o r = o e t h a s t e r r o r0 if ( d w e r r o r = = e r r o r i o i n c o m p l e t e ) c o n t i n u e ; ) 4 通信错误 如果在读写操作期间发生间断、奇偶校验错误等通信错误时,通信设备上的所 有i o 操作将被终止,此时程序必须调用c 1 e a r c o m m e r r o r 函数清理错误标志,通信 设备才可以做进一步操作。c i e a r c o m m e r r o r 函数不仅返回有关通信错误的信息,同 时还报告通信设备的当前状态。 c l e a r c o m m e r r o r ( mh c o m m ,串口号。 & d w e r r o r ,m i ? 通信错误类型。 & c o m s t a t ) ;c o m s t a t 结构体,表示设备状态信息。 1 北京服糖学院硕士刮f 究生学位论史 暖体假人1 位机了系统控制软件的研究与开发 七、监视通信事件 通信事件是当发生重要事件时系统向应用程序发送的通知。应用程序可以用 w a i t c o n l f n e v e n t 函数阻塞线程,直到特定事件发生。用s e t c o m m m a s k 函数可以指定继 续处理酊必须发生的事件。如果指定了多个事什,则任伺一个指定事件的发,e 都将导 致w a it c o m m e v e n t 函数返回。表4 中列出了可以指定的部分通信事件。 这种机制使得应用程序不检查端口状态就可以知道某些事件是否发生,这是非常 有用的。通过使用事件,应用程序不需要连续检查串口状态就知道数据何时到达串口, 从而节省c p u 时间。 表4 列出w a i t c o m m e v e n t 函数可以使用的部分通信事件 通信事件事件描述 e vr c x c h a r 接收到任何字符并放进接收缓冲区。 e vr x f l a g收到事件字符并放进接收缓冲区。事件字符由 串口设备的d c b 结构中的e v t c h a r 成员指定, 它通过使用s e t c o m m s t a t e 函数应用于串口。 e v t x e m p t y发送出发送缓冲区中的最后一个字符。 2 3 串口通信的方案 用v c + 4 - 实现串行通信主要有三种方法: 方法一:使用v c + + 提供的串行通信控件m s c o m m ,只需要关心控件提供的对 w i n d o w s 通讯驱动程序的a p i 函数的接口。换句话说,只需要设置和监视m s c o m m 控件的属性和事件。 方法二:在单线程中实现自定义的串口通信类。 方法三:在多线程下实现串行通信。 以v c + + 6 0 为工具,实现串行通信的三种方法各有利弊,表5 列出各种方法的 优缺点: 4 北京服装学院硕士研究生学位论艾 暖体假人! 一位机子系统控制软件的研究与开发 表5三种通信方法的优缺点 实现方式m s c o m m 控件单线程多线程 优点简洁易用较灵活灵活,准确,c p u 利用 率高,适用于要求较高 的实时监控系统。 缺点只在对话框不够灵活只线程同步较难 中使用,单适用较简单 线程的系统 控件简单易用,但出于必须在对话框巾使用,在一些需要在线程中实现通信的应 用场合,控件的使用显得捉襟见肘。此时,若能够按不同需要定制灵活的串口通信类 就能弥补控件的不足,如在单线程中建立自定义的通信类。方法一、二适用于单线程 通信。在很多工业控制系统中,常通过扩展串口连接多个外设,各外设发送数据的重 复频率不同,要求后台实时无差错捕捉,采集,处理,记录各端口数据,这就需要在 自定义的串行通信类中创建多线程一串口监视线程,以便在指定的事件发生时向相关 的窗口发送通知消息。 w i n d o w s 内部的抢先调度程序在活动的线程之间分配c p u 时间,w i n 3 2 区分两种 不同类型的线程,一种是用户界面线程u i ( u s e r i n t e r f a c et h r e a d ) ,它包含消息 循环或消息泵,用于处理接收到的消息:另一种是工作线程( w o r kt h r e a d ) ,它没有 消息循环,用于执行后台任务。用于监视串口事件的线程即为工作线程。 在w i n 3 2 操作系统中,采用的是抢先式多任务,这意味着程序对c p u 的占用时间 是由系统决定的。系统为每个程序分配一定的时间,当程序的运行超过规定时间后, 系统就会中断该程序并把控制权转交给别的程序。术语多任务其实就是指系统可以同 时运行多个进程。进程是应用程序的运行实例,每个进程都有自己私有的虚拟地址空 削:每个进程也可以同时执行多个线程。每个进程都有一个主线程,但可以建立另外 的子线程。进程中的线程是并行执行的,每个线程占用的时间由系统来划分。可以把 线程看成是操作系统分配时间的基本实体,系统不停地在各个线程之间切换。由于系 统为每个线程划分的时间片很小( 2 0 毫秒左右) ,所以看上去好像是多个线程在同时 运行。 进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程 北京服装学院硕士研究生学位论立 暖体假人卜位机子系统挖制软件的研究0 开发 的全局变量和资源。这一方面为编程带来了方便,但另一方面也容易造成冲突。 虽然在进程中进行费h , 1 + 的工作不会导致系统的挂起,但这会导致进程本身的挂 起。所以,如果进程既要进行长期的工作,又要响应用户的输入,那么它可以启动一 个子线程来专门负责费时的工作,而主线程仍然可以与用户进行交可- 。多线程的实现 可以使得各端口独立、准确地实现串行通信,使串口通信具有更广泛的灵活性与严格 性,且充分利用了c p u 时间。但在具体的实时监控系统中如何协调多个线程,线程之 间以何种方式实现同步都是多线程串行通信程序实现的难点。考虑到本课题的特点, 本文采用第三种方法,即多线程串口通信。 本设计选择在v c + + 6 0 开发环境中设计串行通信程序。在v c + 十环境下,利用第 三方提供或自己编写的多线程通信类。这种方法使用面向对象技术封装w i n 3 2a p i 函数,提供一个用于串行通信的类,只要理解这种类的几个成员函数,就既能像使用 控件m s c o m m 样方便,又能像使用a p i 函数一样灵活,但编写能普遍应用的这种类 比较困难。本设计采用r e m o ns p e k r e i j s e 编写的通信类,该类通信方式为半双工, 采用了多线程技术。该通信类负责监控一个串口,创建了一个工作者线程,负责串口 的读写操作,支持异步读写操作。其优点是不会阻塞主线程,提高了c p u 利用率,适 用于实时监控系统。关于该通信类的详细代码,见参考文献 1 4 。 2 4 通信协议的设计 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送 速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须 共同遵守。 考虑到将来联网的可能,在暖体假人系统中使用了m o d b u s 协议。l o d b u s 协议分 为m o d b u sr 1 、u 、m o d b u sa s c i i 和m o d b u sp l u s 方式,其中m o d b u sr t u 方式和m o d b u s a s c i i 方式可运行在r s 一4 8 5 总线上。m o d b u sr t u 方式传输的数据为二进制数,通信 效率高,但对系统的实时性要求比较高,一帧数据内两个字节之问的间隔不得大于 1 5 个字符时间。n o d b u sa s c i i 方式传输的数据为a s c i i 码,通信效率只有m o d b u sr t u 方式的一半,但对系统的实时性要求不很高,一帧数据内两个字节之间的间隔不大于 1 秒即可。综合考虑这两种方式的优缺点和暖体假人系统数据量不太大,实时性比较 高的特点,在暖体假人系统中选择了m o d b u sa s c ii 方式。a s c i i 码和r t u 码优缺点 1 6 型生型垫! ! 堡堡主塑茎竺堂垡堡苎 堡堡堡! :! ! ! ! 王墨堑堡型墼壁堕塑壅皇墅丝 比较如下: a s c i i 码 ( 1 ) 刺系统的实时性要求不很高; ( 2 ) 通信效率比较低; ( 3 ) 通常采用l r c ( l o n g i t u d i n a l r t u 码( 二进制码) ( i ) 对系统的实时性要求比较高。 个字符时间; r e d u n d a n c yc h e c k ) 校验。 一帧数据内两个字节之删的间隔不得大于1 5 ( 2 ) 通信效率比较高。大约是a c i i 码的两倍; ( 3 ) 通常采用c r c ( c y c l i c a lr e d u n d a n c yc h e c k ) 校验。 m o d b u sa s c ii 消息帧格式如表6 所示 表6a s c l l 消息帧 i 帧起始标志站地址功能代码数据i ,r c 校验帧结束标志 l 字节( 3 a u )2 字节2 字节2 n 个字节2 字节2 字节( o a h ,o d h ) j 帧起始标志: 帧起始标志字符为冒号( :) ,a s c it 码为:3 a n 。 站地址: 系统中设定假人体表温度测控机为“1 号”下位机,站地址为:3 0 h 、3 1 h ( 0 1 ) 。 环境温度和加热电压测量机为“2 号”下位机,站地址为:3 0 h 、3 2 h ( 0 2 ) 。 加热电源所消耗功的测量机为“3 号”、f 位机,站地址为:3 0 h ,3 3 h ( 0 3 ) 。 功能代码: 上位机功能代码见表7 所示;下位机功能代码见表8 所示。 表7 上位机机功能代码( 主机向从机发送) 功能号名称作用 0 1 初始化参数传递上位机机向l 号下位机发送各区段p i d 参数、温度 设定值和加热开关。2 、3 号机无此功能号。 0 3 第二次索要数据上位机告知f 位机数据在上二传时发生错,第二次上 传采样数据( 发送第二级缓冲区中的数据) 。 北京服装学院硕七酬究生学位论义暖体假人立机了系统控制软件的刊f 究与开发 0 5启动加热上位机通知下位机开始测控。 0 7第一次索要数据 上位机向下位机索要采样数据( 发送第一级缓冲区 【 中的数据) 。 0 9停止加热上位机通知下位机停止测控。 1 1p i d 自整定向l 号下位机发送白整定命令。( 予雨留功能号) 1 3p i d 自整定参数向1 号下位机索要自整定参数。( 预留功能号) 1 5 温度补偿向1 、2 号下位机发送温度补偿参数。 表8 下位机机功能代码( 从机向主机发送) 功能号名称作用 0 2应答对下位机向上位机回答接收难确。 0 4应答错下位机向上位机回答接收错误。 l 0 6上传采样数据下位机向上位机应答数据,l 号机格式为各区段的温 度和脉冲个数。2 号机格式加热电压、加热电流( 预留) 环境温度1 、2 、3 、4 、5 、6 。环境温度4 、5 、6 为预 留。3 号机格式脉冲个数低四位、脉冲个数高四位。 0 8p i d 自整定参1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班组操作安全培训内容课件
- 非洲旅游攻略课件
- 2025年泌尿外科学考试模拟试卷答案及解析
- 快递技术员考试题及答案
- 2025年3D打印的知识产权问题
- 2025年3D打印的定制化医疗植入物
- 工商银行2025嘉峪关市秋招英文面试题库及高分回答
- 农业银行2025临沂市小语种岗笔试题及答案
- 农业银行2025武汉市秋招半结构化面试题库及参考答案
- 工商银行2025天津市秋招英文面试题库及高分回答
- GB/T 46150.2-2025锅炉和压力容器第2部分:GB/T 46150.1的符合性检查程序要求
- UPS安全培训课件
- 田径大单元教学课件
- 2025年乡镇残联招聘残疾人专职工作者试题集及参考答案解析
- 2025年甘肃省高考历史真题卷含答案解析
- 第13课 美丽中国我的家(教学课件)小学二年级上册 统编版《道德与法治》新教材
- 2025年铜陵枞阳国有资本投资控股集团有限公司公开招聘工作人员8名备考练习试题及答案解析
- 2025年生物结业考试卷及答案
- 第1课 假期有收获 第1课时(课件)2025-2026学年道德与法治二年级上册统编版
- 《人为因素与航空法规》课件(共九章)
- (正式版)HGT 20593-2024 钢制化工设备焊接与检验工程技术规范
评论
0/150
提交评论