(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf_第1页
(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf_第2页
(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf_第3页
(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf_第4页
(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf_第5页
已阅读5页,还剩73页未读 继续免费阅读

(电路与系统专业论文)基于MODBUS的UPS远程监控系统设计与实现[电路与系统专业优秀论文].pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

硕士学位论文 摘要 远程监控是不问断电源u p s 监控技术的发展方向和研究热点,本文为了解决 工业现场u p s 的监控问题,建立了适合机电设备的基于m o d b u s 的远程监控和 故障诊断平台,实现了对r s 4 8 5 总线中各设备节点的远程监控管理。 首先通过对国内外远程监控技术进行深入研究,对各种远程监控系统组成方 式及其所存在问题和解决方法进行讨论,以不间断电源u p s 的远程监控和故障诊 断为例,本文重点研究了在r s - 4 8 5 总线基础上实现m o d u b s 协议的方法,研究 了基于w i n d o w s 操作系统的串口通信技术、多线程技术、a u t o m a t i o n 技术以及数 据库技术。其二,通过对u p s 远程监控和故障诊断平台的需求进行分析,给出了 远程监控系统的解决方案,并构建了系统模型。其三,给出了基于m o d b u s 协 议的远程监控系统各构成模块的设计原理及实现方法;并论述了嵌入式通信卡的 硬件组成及相应软件模块的实现原理;阐述了远程监控及故障诊断平台的设计与 实现,给出了该监控软件的整个程序流程、代码以及运行结果。最后,完成了监 控系统的联调和测试等工作,调试与测试结果表明:本监控平台实现了实时监控 通过r s 一4 8 5 总线和嵌入式通信卡传输的u p s 设备的各种状态信息,成果已通过 验收并投入使用,达到了预期的设计要求。 本课题研究并实现了基于m o d b u s 的u p s 远程监控和故障诊断平台,有效 地支持了制造商对客户的设备维修服务,满足了客户需求,对其它机电设备的远 程监控及诊断都具有现实意义。 关键词:m o i ) b u s ;远程监控系统;嵌入式通信卡;设计与实现 董兰竺呈呈! 些! 墼:罂垂堡些堡垂堑堡兰皇童垩 a b s t r a c t r e m o t em o n i t o r i n ga n dc o n t r o l l i n gt e c h n i q u ef o ru p s ( u n i n t e r r u p t e dp o w e r s u p p l y ) i sd e v e l o p m e n tt r e n da n dr e s e a r c hh o t s p o t t o s o l v et h e p r o b l e m o f m o n i t o r i n ga n dc o n t r o l l i n gf o ru p si nt h ei n d u s t r yf i e l d ,t h i st h e s i sd e s c r i b e sh o w t o e s t a b l i s ham o d b u s b a s e dp l a t f o r mo fr e m o t e m o n i t o r i n ga n dc o n t r o l l i n gf o r m e c h a n i c a la n de l e c t r o n i ce q u i p m e n t s ,a n dr e a l i z e sr e m o t em a n a g e m e n tf o rd e v i c e s o nt h er s 一4 8 5b u s f i r s t l y , b a s e do nd o m e s t i ca n di n t e r n a t i o n a ls t u d yf o rr e m o t em o n i t o r i n ga n d c o n t r o l l i n gs y s t e m sa n da n a l y s i so fv a r i o u sc o n s t r u c t i o nm o d e so ft h e m ,t h i st h e s i s t a k e su p sa sa ne x a m p l e ,a n df o c u s e so nr e a l i z i n gm o d b u sp r o t o c o lo nr s 一4 8 5b u s a n dr e s e a r c h i n go ns 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 ,a u t o m a t i o na n dd a t a b a s e a c c e s s i n gb a s e do nw i n d o w so s s e c o n d l y , a f t e ra n a l y z i n gt h er e q u i r e m e n t so ft h e r e m o t em o n i t o r i n ga n dc o n t r o l l i n gs y s t e mf o ru p s ,t h i st h e s i sp u t sf o r w a r das o l u t i o n b a s e do nm o d b u sp r o t o c 0 1 a n dt h es y s t e mm o d e li sc o n s t r u c t e d t h i r d l y , t h i st h e s i s s h o w sd e s i g ns c h e m ea n dr e a l i z a t i o nm e t h o do ft h er e m o t em o n i t o r i n ga n dc o n t r o l l i n g s y s t e mf o ru p sb a s e do nm o d b u sp r o t o c 0 1 h a r d w a r ec o m p o n e n ta n dr e a l i z a t i o no f s o f t w a r e p a r t o fe m b e d d e dc o m m u n i c a t i o nc a r di sd i s c u s s e d a n di t e x p l a i n s d e t a i l e d l yt h ed e s i g na n dr e a l i z a t i o no fr e m o t em o n i t o r i n ga n dc o n t r o l l i n gp l a t f o r m a n ds h o w st h es o f t w a r ef l o w c h a r t s ,c o d ea n dd e b u g g i n gr e s u l t f i n a l l yt h et e s to ft h i s m o n i t o r i n ga n dc o n t r o l l i n gs y s t e mi sf i n i s h e d t h et e s tr e s u l t si n d i c a t et h a ta l lt h e i n f o r m a t i o no fu p sc o u l db es h o w no nt h em o n i t o r i n ga n dc o n t r o l l i n gp l a t f o r mb y r s 一4 8 5b u sa n de m b e d d e dc o m m u n i c a t i o nc a r d t h ep r o d u c t i o nh a sb e e nc h e c k e da n d a c c e p t e d ,a n dt h ep r o s p e c t i v ed e s i g nr e q u i r e m e n ti so b t a i n e d t h e p l a t f o r m f o rr e m o t e m o n i t o r i n ga n dc o n t r o l l i n ge q u i p m e n t s s u s t a i n s e f f e c t i v e l y t h e s e r v i c eo fm a n u f a c t u r e st o c l i e n t s ,p r e s e n t s au n i v e r s a lw a yo f a d m i n i s t e r i n gm e c h a n i c a la n de l e c t r o n i ce q u i p m e n t sr e m o t e l y k e y w o r d s :m o d b u s ;r e m o t em o n i t o r i n ga n dc o n t r o l l i n gs y s t e m ; e m b e d d e dc o m m u n i c a t i o nb o a r d ;d e s i g na n dr e a l i z a t i o n 湖南大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果 由本人承担。 作者签名:凌饯 日期:砸年j - 月1 fe t 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查 阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位 论文。 本学位论文属于 1 、保密口,在年解密后适用本授权书。 2 、不保密团。 ( 请在以上相应方框内打“4 ”) 作者签名: 导师签名: 壁磁 日期:孤力r 年r 月心e t 日期:埘年f 月目 硕士学位论文 1 1引言 第1 章绪论 1 1 1u p s 远程监控技术的国内外研究状况 作为大型机电设备之一的不问断电源u p s 卜2 1 ( u n i n t e r r u p t e dp o w e rs u p p l y ) , 是为了解决供电系统存在的问题应运而生的,它主要用来改善对负载的供电质量, 并在市电故障时,保证负载设备的正常运行。它从产生至今已经历了4 0 多年,在 这个漫长的过程中,u p s 设备的技术水平和功能在不断的变化着,当今的u p s 设 备无论是在输出容量上,还是在基本性能、智能化管理上,都得到了长足的发展 和进步。然而,从2 0 世纪9 0 年代中期开始,随着信息技术的高速发展和网络时 代的到来,对以u p s 为核心的整个供电系统的可用性、可维护性、可管理性和可 扩展性提出了越来越高的要求,用户关心的重点开始从仅仅强调u p s 本身由设计 和制造决定的可用性,转移到由整个供电系统和服务决定的可靠性上来,原有的 对u p s 的传统要求已经不能满足当今信息时代对u p s 所提出的要求,对当今的 u p s ( 尤其是中大功率u p s ) 来说它不仅仅能具有不间断电源的作用,而且应具备 完善的管理功能,尤其是应具有非常安全可靠的远程监视及控制功能。 因此,对u p s 的监控系统提出了下列要求: 提高电源供电质量,使供电系统有更高的可靠性和经济性 使管理趋于方便 提高电源的维护管理水平和效益 于是u p s 系统的远程监控技术越来越收到人们的重视,它已经成为当今和未 来u p s 系统中不可缺少的重要组成部分。u p s 监控技术 3 。5 】可分为以下几类: ( 1 ) 基于串行通信方式的监控技术 串行通信是传统的u p s 软件附件通信方式,多用于中小功率u p s 解决方案 中,其优点是安全、可靠、安装简单,但这种通信方式的局限性是通信距离短, 主要用于局域网中u p s 的监控及其所连接计算机的安全保护。 ( 2 ) 基于m o d e m 电话寻呼网络方式的监控技术 拨号上网,使用i n t e m e t 浏览器实现u p s 的远程监控,以各种方式显示u p s 的工作状态,定时开关机、自检,在故障情况下通过多种方式报警,恢复后,取 消关机动作,并发出相应的信息。 ( 3 ) 基于s n m p 的监控技术 基于s n m p 的软件附件监控技术与网管产品的发展有紧密的联系,主要用于 u p s 数量多、分布广的企业级网络中。给u p s 配个网卡或直接将s n m p 适配器 基于m o d b u $ 的u p s 远程监控系统设计与实现 集成到u p s 里,把u p s 作为网络中的独立节点进行控制和诊断,通过网络访问 自己的计算机和网站或通过串口与网络访问监控系统对电源系统进行远程监控或 网络关机,实时提供u p s 的电流、电压、电池后备时间和负载量的状态分析,出 现故障时及时通知用户,以便系统管理员可以迅速简便地判断出电源故障发生处, 并迅速得以解决,使对网络性能的影响减至晟小,并能定时开关u p s 和系统实现 u p s 的自检等。目前的s n m p 适配器支持远程登录( t e l n e t ) 及w e b 浏览器,即使 用户没有s n m p 网管环境,也可以在字符界面下或w e b 浏览器r 如n e t s c a p e 、i e ) 中通过计算机网络对u p s 实行远程监控。 ( 4 ) 基于w e b 的监控技术 基于w e b 的软件附件监控技术是随着i n t e r n e t 的发展而诞生的,附件主要 是w e b s n m p m a n a g e r m e n t c a r d 。在数据中心或大型计算机网络中,u p s 通常要 保护多台计算机。通过t c p i p 与计算机及u p s 通信,同时系统管理员通过w e b 浏览器对分布在w a n 范围内的u p s 进行监控,定期产生u p s 的状态报告r 包括 u p s 状态和电池状态) 并转换成一定的格式文件等,以便于u p s 的管理、诊断、 事件处理,保证电力或u p s 故障时计算槐系统的安全关闭,使u p s 处于健康的 运行状态,提高电力故障时计算机网络的可用性。w e b s n m pm a n a g e r m e n tc a r d 使系统管理员可通过t e t n e t 、h t t p 、s n m p 等标准工具对u p s 做远程监控与管理, 它还可以与网管系统( 例如h p o p e n v i e w ) 集成。w e b s n m pm a n a g e r m e n t c a r d 可有 效地增加系统的易用性、可服务性、可管理性和可用性。目前,监控技术已经发 展到客户甚至可以使用手机监控u p s ,还可以使用e m a i l 报警功能。 1 1 2u p s 远程监控的常用实现方案 下面给出几种当耱常用的u p s 远程监控的方案1 5 l : ( 1 ) m o d e m 监控方案 阐一条一 图1 】m o d e m 监控方案 图1 1 是较容易实现的u p s 报警及监控方案,当u p s 在运行中出现异常状况 时( 如市电中断、电池快耗尽等) ,自动拨号给设定的管理员的传呼号码或手机, 通知u p s 故障。此方案不能全面了解u p s 状态,同时无法控制u p s ,只能作为 报警使用。 硕士学位论文 ( 2 ) 远程监控面板 磊菰勰y 芦 图1 2 远程监控面板方案 图1 2 通过选配远程监控面板( 显示信息与u p s 上的l c d 相同) ,可在远端 ( 最长3 0 0 米) 监控u p s 状态信息,对u p s 信息能全面了解。 ( 3 ) 工业组网远程监控方案 u p s 3 2 图1 3 工业组网远程监控方案 通过j b u s 网络把3 2 台u p s 与p c 相连,p c 上安装监控软件来监控u p s 状 态,同时可发送命令控制u p s ( 如关机、电池测试等) ,最长监控距离为1 0 0 0 米。 见图1 3 。 ( 4 ) i n t e r n e t 远程监控方案 基十m o d b u s 的u p s 远程监控系统设计与实现 p c 图1 4i n t e r n e t 远程监控方案 p c 上安装远程监控软件,同时配置2 个m o d e m ,一个连接远端u p s 拨入 的电话号码,另一个做为u p s 报警时发送信息通知管理人员( 通过电话、传真、 短信、e m a i l 等) 。该方案主要为u p s 维护中心远程诊断u p s 服务,监测距离 不受限制。见图1 4 。 从以上的四种远程监控方案可以看出,第四种方案最大的优点是监测的距离 不受限制,但是i n t e m e t 安全问题会显得比较突出,而且成本较高,另外不是特 别适合在比较恶劣的工业环境下工作的设备。而前两种方案只能进行监视,且监 测的距离比较短。第三种方案是目前用的比较普遍的工业组网远程监控方案,成 本较低,而且不存在所谓的信息安全问题,监控的范围可以达到1 0 0 0 m ,特别适 应于企业的实际需要和对老设备进行技术改造。 本文根据创统公司提出的要求,以第三种方案为基本模型,并对其进行相应 的改进,以满足公司的实际需要。 1 2 课题研究目的和意义 本课题基于m o d b u s 的u p s 远程监控系统是由湖南大学与青岛创统科技有 限公司合作开发的,该监控系统是为青岛创统科技有限公司的主导产品之一海王 系列u p s 提供远程监控功能。青岛创统科技有限公司将其列为2 0 0 4 年度重点科 研项目之一。结合本课题深入研究了嵌入式m o d b u s 的通信卡的实现技术、 w i n d o w s 编程技术、串口通信技术以及a d o 数据库访问技术,并成功设计和实 现了远程监控及故障诊断平台。 硕士学位论文 1 3 本文主要研究内容 本文的主要研究内容: 第一章绪论。叙述基于m o d b u s 的远程监控技术的研究具有的现实意义, 分析u p s 进行远程监控的必要性,对国内外远程监控技术发展历程及现状进行详 细的描述,指出每种远程监控方式的特点及其存在的问题。主要是对基于 m o d b u s 的远程监控系统的成功实现作进一步的理论与技术探索。 第二章基于m o d b u s 的u p s 远程监控系统总体设计。说明设计的基本要 求并讨论r s 4 8 5 总线技术、m o d b u s 协议、w i n d o w s 串口遥信技术、多线程技 术、a d o 数据库访问技术以及a u t o m a t i o n 自动化技术,阐明每种技术的特点及 实现方法。提出监控系统设计的总体解决方案,描述系统构成及工作原理,分析 通信卡和远端监控平台等模块的设计。最后,对系统所使用的通信协议进行说明。 第三章嵌入式通信卡的设计及实现。从硬件组成及软件设计上对嵌入式通信 卡的实现做介绍,给出其各功能模块硬件电路,并对嵌入式通信卡的通信实现原 理做具体分析。 第四章远端监控平台的设计与实现。对远端盔控平台的四大构成模块通信模 块、人机界面模块、数据库模块以及故障历史处理模块进行详细叙述,分析每一 模块的设计原理及其工作流程,给出代码实现及相应的程序运行结果。 第五章监控系统联调与测试。根据课题的实际需要,进行了分步调试,联机 调试和现场系统测试的方法。 最后进行总结与展望。 基十m o d b u s 的u p s 远程监控系统设计与宴1 | j i _ 第2 章u p s 监控系统总体设计 2 1 监控系统的设计要求及技术基础 2 1 1 总体设计的基本要求 1 u p s 接口要求 本龄控系统计对青岛创统科技有限公司现有各系列u p s 产品做功能扩充 实现其状态监测和控制化。监控系统各原始信号量取自u p s 显示控制板,监控系 统实现对u p s 的控制,通过发信号到显示板由显示板中转信号给u p s 主控板。 创统公司提供的接口信号情况见表21 : 表2 1 三相u p s 的接口信号 信号名称信号线编号 说明 市电输入电压一a la 相输入电压o 5 v 对应o 2 5 5 v i h 电输入电压一b 2b 相输入电压o 5 v 对应o 2 5 5 v 市电输入电压一c 3c 相输入电压0 5 v 对麻0 2 5 5 v 逆变输m 电压一a 4a 相输出电压0 5 v 对心o 2 5 5 v 逆变输出电压b 5b 相输出电压o 5 v 对应0 2 5 5 v 逆变输出电压c 6c 相输出电压o 5 v 对应0 2 5 5 v 负载量a 7a 相负载电压o 5 v 对应o 2 5 5 v 负载量一b 8b 帽负载电压0 5 v 对应0 2 5 5 v 负载量一c 9c 相负载电压0 5 v 对应0 2 5 5 v 电池电压u p s 电池电压0 5 v 对应0 6 0 0 v l o 4 8 0 v 为标称值,4 4 0 v 为告警电压 模拟量 1 1 ,1 2 保留 逆变输出频率 1 3 方波,占空比0 5 ,幅值5 v 旁路标志 1 4 0 对心逆变状态,1 对应旁路状态 故障标志 1 5 0 对心正常状态,1 对应故障状态 数字量 1 6 保留 v c c+ 1 2 v 1 7 ,1 8 a n d1 9 ,2 0地线 说明:由于u p s 显示板电路的原因,交流输入电压,逆变输出电压,负载电 说明:小于u p s 显示板电路的原因,交流输入电压,逆变输出电压,负载电 基于m o d b u s 的u p s 远程监控系统设计与实现 第2 章u p s 监控系统总体设计 2 1 监控系统的设计要求及技术基础 2 1 1 总体设计的基本要求 1 u p s 接口要求 本监控系统针对青岛创统科技有限公司现有各系列u p s 产品做功能扩充 实现其状态监测和控制化。监控系统各原始信号量取自u p s 显示控制板,监控系 统实现对u p s 的控制,通过发信号到显示板由显示板中转信号给u p s 主控板。 创统公司提供的接口信号情况见表2 1 : 表2 1 三相u p s 的接口信号 信号名称信号线编号说明 市电输入电压一a 1a 相输入电压o 5 v 对应0 2 5 5 v 市电输入电压一b 2b 相输入电压o 5 v 对应0 2 5 5 v 市电输入电压一c 3c 相输入电压o 5 v 对应0 2 5 5 v 逆变输出电压一a 4a 相输出电压0 5 v 对应0 2 5 5 v 逆变输出电压一b 5b 相输出电压0 5 v 对应0 2 5 5 v 逆变输出电压一c 6c 相输出电压0 5 v 对应0 2 5 5 v 负载量一a 7a 相负载电压0 5 v 对应0 2 5 5 v 负载量一b 8b 相负载电压0 5 v 对应0 2 5 5 v 负载量一c 9c 相负载电压0 5 v 对应0 2 5 5 v 电池电压u p s 电池电压0 5 v 对应o 6 0 0 v 1 0 4 8 0 v 为标称值,4 4 0 v 为告警电压 模拟量1 1 ,1 2保留 逆变输出频率1 3方波,占空比o 5 ,幅值5 v 旁路标志 1 4 0 对应逆变状态,1 对应旁路状态 故障标志 1 50 对应正常状态,1 对应故障状态 数字量1 6保留 v c c+ 1 2 v1 7 ,1 8 g n d1 9 ,2 0地线 说明:由于u p s 显示板电路的原因,交流输入电压,逆变输出电压,负载电 6 硕上学位论文 压均为o 一5 v 对应o 一2 5 5 ,而u p s 电池电压实际值可能比2 5 5 大,因而采集值 与实际值之间有一个比例系数,在远程监控软件端提供修改系数的方法,通信板 不参与采集值与实际值的转换,它只将采集到的值送给监控软件,由监控软件在 需要的时候( 如报警门限设置,显示等) 进行转换。 2 监控系统要求 ( 1 1 完成各信号量的采集,最终转换成数字量。 ( 2 ) 完成转换后的数字量进行数据打包,数据格式必须符合m o d b u sr t u 相 关协议标准。 ( 3 ) 实现u p s 远程监视控制,并提供相应的控制接口电路。 ( 4 ) 实时显示u p s 运行状态,在故障情况下有语音,图象等报警。 ( 5 ) 提供u p s 历史故障事件,历史数据查询。 ( 6 ) 确保监控系统实时性,准确性,可靠性和稳定性。 f 7 ) 监控系统做到相对通用性,能对现有u p s 进行实时监控。 3 通信卡i ,o 口要求 表2 2 通信卡输入输出接口 接口名称数量功能说明 2 0 针双排插座1 个用于信号量、电源及地线的接入 8 位拨码盘1 个用于设定被监控设备的地址 2 位拨码盘1 个用于设定相应的四种波特率 r s 4 8 5 接线口1 个用于r s 4 8 5 总线连接 2 1 2 远程监控系统的技术基础 2 1 2 1w i n d o w s 串口通信技术 串行通信【7 】的关键是串行通信设备的初始化、数据的发送和接收及其实现方 式。在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 系统负责 在后台进行发送。因此,在w i n d o w s 下接收和发送数据的关键就是如何从接收队 列取数据和如何向发送数据队列发数据。w i n d o w s 提供了相应的a p i 函数来实现 这些功能。 串行口在w i n 3 2 中是作为文件来进行处理的,而不是直接对端口进行操作。 基于m o d b u s 的u p s 远程监控系统设计与实现 在w i n 3 2 环境下,可以把串口看作由文件系统访问的设备。使用标准的c r e a t e f i l e o 函数打开端口,再使用r e a d f i l e o 和w r i t e f i l e o 函数读写数据,就如同端口只是一 个文件对象一样。对于串行通信,w i n3 2 提供了相应的文件i o 函数与通信函数, 使用这些函数,可以编制出符合不同需要的通信程序。 1 实现步骤 ( 1 ) 按协议的设置初始化并打开串行口,这样做就是通知w i n d o w s 本应用 程需要这个串口,并封锁其他应用程序使它们不能使用此串口。 ( 2 ) 配置这个串行口。 ( 3 ) 在串口上往返地传输数据,并在传输过程中进行校验。 ( 4 ) 不需要此串口时,关闭串口,即释放串口以供其它应用程序使用,流 程如图2 1 所示。 图2 1 串口通信流程 2 实现方法 ( 1 ) 采用a c t i v e x 控件编程 m s c o m m 控件是m i c r o s o f t 公司提供的简化w i n d o w s 下串行通信编程的 a c t i v e x 控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体地 说,它提供了两种处理通信问题的方法:事件驱动( e v e n t - - d r i v e n ) 方法和查询 法。 ( 2 )联合采用m f c 类以及w i n 3 2a p i 函数进行串口通信编程 w i n 3 2 系统把文件的概念进行了扩展,无论是文件、通信设备、命名管道、 邮件槽、磁盘还是控制台都被看作是文件。因此,可以用m f c 中的c f i l e 类来实 现对串口的操作,并且w i n 3 2 中的文件i o 函数支持重叠式输入输出,这使得线 程从费时的i o 操作中解放出来。w i n 3 2a p i 包含了一系列访问通信资源的通信 函数。 利用w i n 3 2 a p i 函数编写的串口通信类实现串口通信有两种方式: 在单线程中实现自定义的串口通信类 在多线程中实现自定义的串口通信类 ( 3 ) 利用v c + + 运行时库的标准通信函数实现串口编程 利用c 语言进行异步通信编程,其实是对u a r t 内部寄存器的读出或写入操 一8 一 餮 硕上学位论文 作。v c 可利用v c + + 类库中提供的标准通信函数一i n p o - - o u t p 0j 函数对其进行 编程。 ( 4 ) 三种方法优缺点的比较 采用m f c 串口通信编程是最灵活、最常用并且功能强大的方法,适用于与 各种不同的外设进行串行通信,但需要程序员对硬件工作原理有较深入的了解; a c t i v e x 控件编程容易实现,不需要处理烦琐的细节,但是灵活性较差;利用v c 运行时库的标准通信函数实现串口编程原理简单,不足之处是实用性和灵活性较 差。 本文用m f c 类以及w i n 3 2a p i 函数进行串口通信编程,在多线程中实现自定 义的串口通信类。 2 1 2 2w i n d o w s 多线程技术 1 、线程及分类 进程和线程【8 。9 】是两个相对的概念,进程是应用程序的执行实例,每个进程是 由私有的虚拟地址空间、代码、数据和其它系统资源组成。进程在运行时创建的 资源随着进程的终止而死亡。线程的基本思想很简单,它是一个独立的执行流, 是进程内部的一个独立的执行单元,相当于一个子程序,它对应v i s u a lc + + 中的 c w i n t h r e a d 类的对象。单独一个执行程序运行时,缺省的运行包含的一个主线程, 主线程以函数地址的形式提供程序的启动点,当主线程终止时,进程也随之终止, 但根据需要,应用程序又可以分解成许多独立执行的线程,每个线程并行的运行 在同一进程中。 一个进程中的所有线程都在该进程的虚拟地址空问中,使用该进程的全局变 量和系统资源。操作系统给每个线程分配不同的c p u 时间片,在某一个时刻, c p u 只执行一个时间片内的线程,多个时间片中的相应线程在c p u 内轮流执行, 由于每个时间片的时间很短,所以对用户来说,仿佛各个线程在计算机中是并行 处理的。操作系统是根据线程的优先级来安排c p u 的时间,优先级高的线程优先 运行,优先级低的线程则继续等待。 线程被分为两种:用户界面线程( g u it h r e a d ) 和工作线程( w o r k e rt h r e a d ) 。 用户界面线程通常用来处理用户的输入并响应各种事件和消息:工作线 程用来执行程序的后台处理任务,比如计算、调度、对串口的读写操作等。工作 线程和用户界面线程启动时要调用同一个函数的不同版本:一个进程中的所有线 程共享进程中的公共变量,但同时每个线程可以拥有自己的变量。 2 、线程的管理和操作 ( 1 ) 线程的启动 创建一个用户界面线程,首先要从类c w i n t h r e a d 产生一个派生类,同时必 基于m o d b u s 的u p s 远程监控系统设计与实现 须使用d e c l a r ed y n c r e a t e 和i m p l e m e n td y n c ! a t e 来声明和实现这 个c w i n t h r e a d 派生类;第二步是根据需要重载该派生类的一些成员函数如: e x i t i n s t a n e e 0 、i n i t i n s t a n c e o 、p r e t r a n s l a t e m e s s a g e 0 等函数;最后启动该用户界面 线程,调用a f x b e g i n t h r e a d 0 函数的一个版本: c w i n t h r e a d + a f x b e g i n t h r e a d ( c r u n t i m e c l a s s + p t h r e a d c l a s s i n tn p r i o r i t y 2 t h r e a d _ p r i o r i t y _ n o r m a l ,u i n tn s t a c k s i z e = 0 ,d w o r dd w c r e a t e f l a g s2 0 ,l p s e c u r i t y a t t r i b u t e sl p s e c u r i t y a t t r s = n u l l ) ; 对于工作线程来说,启动一个线程,首先需要编写一个希望与应用程序的其 余部分并行运行的函数如f u n l 0 ,接着定义一个指向c w i n t h r e a d 对象的指针变 量4 p t h r e a d ,调用a f x b e g i n t h r e a d ( f u n l ,p a r a m ,p r i o r i t y ) i 函数,返回值赋给p t h r e a d 变量的同时一并启动该线程来执行f u n l ( ) 函数,其中f u n l 既是线程要运行的函 数的名字,也是上面所说的控制函数的名字,p a r a m 是准备传送给线程函数f u n l 的任意3 2 位值,p r i o r i t y 则定义该线程的优先级别,它是预定义的常数。 ( 2 ) 线程的优先级 优先级是相对于该线程所处的优先权层次而言的,处于同一优先权层次的线 程,优先级高的线程先运行:处于不同优先权层次上的线程,谁的优先权层次高, 谁先运行。至于优先级设置所需的常数,可以参考m s d n ,需注意的是要想设置 线程的优先级,这个线程在创建时必须具有t h r e a ds e ti n f o r m a t l 0 n 访问 权限。对于线程的优先权层次的设置,c w i n t l l r e a d 类没有提供相应的函数,但可 以通过w i n 3 2s d k 函数g e t p r i o r i t y c l a s s ( ) 和s e t p r i o r i t y c l a s s ( ) 来实现。 ( 3 ) 线程的悬挂、恢复 c w i n t h r e a d 类中包含了应用程序悬挂和恢复它所创建的线程的函数,其中 s u s p e n d t h r e a d 0 用来悬挂线程,暂停线程的执行;r e s u m e t h r e a d 0 用来恢复线程 的执行。若对一个线程连续若干次执行s u s p e n d t h r e a d ( ) ,则需要连续执行相应次 的r e s u m e t h r e a d 0 来恢复线程的运行。 线程从创建到终止,它一定处于某个状态。当一个线程刚被创建时,它处在 u n s t a r t e d 状态,然后线程类的s t a r t ( ) 方法将使线程状态变为r u n n i n g 状态,如果 不调用相应的方法使线程挂起、阻塞、销毁或终止,则线程将一直保持这样的状 态。挂起的线程处于s u s p e n d e d 状态,直到调用r e s u m e ( ) 方法使其重新执行,这 时候线程才重新变为r u n n i n g 状态。一旦线程被销毁或者终止,则线程处于 s t o p p e d 状态,处于这个状态的线程将不复存在。线程还有一个b a c k g r o u n d 状态, 它表明线程运行在前台还是后台。而在一个确定的时间,线程可能处于多个状态, 见图2 2 。 硕士学位论文 图2 2 线程状态转换 ( 4 ) 结束线程 终止线程有三种途径,可以在线程内部调用a f x e n d t h r e a d o 来终止自身的运 行;可以在线程的外部调用b o o lt e r m i n a t e t h r e a d ( h a n d l eh t h r e a d ,d w o r d d w e x i t c o d e ) 来强行终止一个线程的运行,然后调用c l o s e h a n d l e 0 函数释放线程所 占用的堆栈;还可以改变全局变量,使线程的执行函数返回,则该线程终止。 3 、线程之间的通信 通常情况下,子线程要为父线程完成某种特定类型的任务,这就表示在父线 程和子线程之间需建立一个通信的通道。一般可用以下的几种方法实现这种通信 任务:使用全局变量、使用消息、使用事件对象。本文主要介绍后两种方法。 ( 1 ) 利用用户定义的消息通信 在w i n d o w s 程序设计中,应用程序的每个线程都拥有自己的消息队列,甚至 工作线程也不例外,这样使得线程之间利用消息来传递信息就变得非常简单。 若是工作线程向用户界面线程发送消息,对于工作线程,如果它的设计模式 也是消息驱动的,那么调用者可以向它发送初始化、退出、执行某种特定的处理 等消息,让它在后台完成。在控制函数中可以直接使用:g e t m e s s a g e 0 这个s d k 函数进行消息分检和处理,自己实现一个消息循环。g e t m e s s a g e 0 函数在判断该 线程的消息队列为空时,线程将系统分配给它的时间片让给其它线程,不会无效 的占用c p u 的时间,如果消息队列不为空,就获取这个消息,判断这个消息的内 容并进行相应的处理。 ( 2 ) 用事件对象实现通信 在线程之间传递信号进行通信比较复杂的方法是使用事件对象,用m f c 的 c e v e n t 类的对象来表示。事件对象处于两种状态之一:有信号和无信号,线程可 以监视处于有信号状态的事件,以便在适当的时候执行对事件的操作。 4 、线程之间的同步 各个线程可以访问进程中的公共变量,所以使用多线程的过程中需要注意的 问题是如何防止两个或两个以上的线程同时访问同一个数据,以免破坏数据的完 整性。保证各个线程可以在一起适当的协调工作称为线程之间的同步。前面介绍 的事件对象实际上就是一种同步形式。v i s u a lc + + 中使用同步类来解决操作系统 的并行性而引起的数据不安全的问题,m f c 支持的七个多线程的同步类可以分成 基于m o d b u s 的u p s 远程监控系统设计与实现 两大类:同步对象( c s y n c o b i e c t 、c s e m a p h o r e 、c m u t e x 、c c r i t i c a l s e c t i o n 和c e v e n t ) 和同步访问对象( c m u l t i l o c k 和c s i n g l e l o c k ) 。这些同步对象使各个线程协调工 作,程序运行起来更安全。 2 1 2 3r s 4 8 5 总线技术 r s 2 3 2 作为通信标准得到了广泛的应用,但存在以下问题:一、如果连接 的另一头需要并行数据,需要将这个串行数据转换为并行数据。二、串口在p c 系统中应用十分广泛,以至于目前想寻找一个未用的串口都困难。p c 机可以有多 个串口,但是系统可能无法为每个串口分配一个唯一的终端请求号,并且大多数 微控制器只有一个硬件串口。三、r s 一2 3 2 制定的最大数据传输速率是每秒2 0 k b i t 。 然而,很多接口芯片都超越这个值,尤其在短程连接上。在一个连接中不能有超 过两台以上的设备,并且很长的连接需要一个不同的接口。为了满足通信发展对 更快的速度、更长的连接和多节点连接的需求,r s 4 8 5 、r s 4 2 2 标准应运而生。 电子工业协会e i a ( e l e e t r o n i ci n d u s t r i e sa s s o c i a t i o n ) 制定的r s 4 8 5 标准f 协1 2 】 作为一种多点差分数据传输的电气规范,已成为业界应用最为广泛的标准通信接 口之一。这种通信接口允许在简单的一对双绞线上进行多点、双向通信。平衡发 送、平衡接收,具有传输距离远、通信速率高,抗干扰能力强,软硬件支持丰富, 与现场仪表接口简单,易于实现和扩展等特点。接口总线上可连接3 2 个设备,加 中继器后最多可达2 5 5 个设备。因此,许多领域都采用r s 4 8 5 作为数据传输链 路,例如汽车电子、电信设备、局域网、蜂窝基站、工业控制仪器仪表等。需要 说明的是:r s 2 3 2 c 、r s 4 2 2 和r s 4 8 5 标准只对接口的电气特性作出规定,而 不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。 r s 4 2 2 与r s 4 8 5 接口标准: ( 1 ) 平衡传输( 差分传输) r s 一4 2 2 、r s 一4 8 5 与r s - 2 3 2 不一样,数据信号采用差分传输方式,也称为平 衡传输,其使用一对双绞线,将其中一线定义为a ,另一线定义为b ,见图2 3 。 射1 1 s 4 8 5 必须 a b c f _ = 1 一 一l 一 毒一卜0 il j 一1 - + b v 一- l + 2 v t - 一2 v l b y 图2 3r s 4 2 2 4 8 5 连线定义 通常情况下,发送驱动器a 、b 之间的正电平在+ 2 + 6 v ,是一个逻辑状态, 负电平在一2 ,6 v ,是另一个逻辑状态。另有一个信号地c ,在r s 一4 8 5 中还有一 个使能端,而在r s - - 4 2 2 中是可用可不用的。使能端是用于控制发送驱动器与传 顿十学位论文 输线的切断与连接。当使能端起作用时,发送驱动器处于高阻状态。 收、发端通过平衡双绞线将a a 与b b 对应相连,当在收端a b 之间有大于 + 2 0 0 m v 的电平时,输出正逻辑电平:小

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论