本科毕业论文—基于MODBUS协议的医用臭氧治疗系统设计与实现_第1页
本科毕业论文—基于MODBUS协议的医用臭氧治疗系统设计与实现_第2页
本科毕业论文—基于MODBUS协议的医用臭氧治疗系统设计与实现_第3页
本科毕业论文—基于MODBUS协议的医用臭氧治疗系统设计与实现_第4页
本科毕业论文—基于MODBUS协议的医用臭氧治疗系统设计与实现_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、题h专业班级学号学生姓名 指导教师 完成日期宁波大学成人教育学院本科毕业设计(2008届)基于modbus协议的医用臭 氧治疗仪设计与实现 计算机科学与技术 函授2008专升本计算机 科学技术本部班陈华辉2012年5月25日基于modbus协议的医用臭氧治疗仪的设计与实现【摘要】提出了一套基于modbus协议的单片机与触摸屏串行通信控制系统,分析了 modbus协议的特点,介绍了modbus协议的内容及通信过程,给出了医用臭氧治疗 仪的硬件和软件实现方法,包括系统流程图及部分程序代码。【关键词】modbus,串行通信,医用臭氧治疗仪,rtudesign and implementation o

2、f medical ozone therapy instrumentbased on modbus.abstractput forward a serial communication control system between scm based on modbus and touch screen. analysis the characteristics of modbus and introduce modbus and communication procedure. provide the implementation method of hardware and softwar

3、e of medical ozone therapy instrument, including flow chart of system and procedure code.key wordsmodbus, serial communication medical ozone tharepy instrument, rtll目录第一章 医用臭氧治疗仪的应用11.1医用臭氧治疗仪的背景11.2医用臭氧治疗仪需要解决的问题11.3医用臭氧治疗仪的解决方案1第二章医用臭氧治疗仪系统结构32系统基本结构32.2物理实现3第三章modbus协议53.1协议内容53.2通信过程6第四章硬件实现74选型

4、74.1.1上位机选型74.1.2下位机及相关部件选型74.2上位机硬件实现84.3下位机硬件实现84.3.1 a/d取样电路实现84.3.2 d/a输出电路实现94.3.3 i/o输出/输入电路实现104.3.4断电报警电路实现104.3.5停泵报警电路实现114.3.6臭氧浓度调节电路实现11第五章软件实现135.1单片机与触摸屏地址对应关系135.2功能码定义135.3校验码生成155.4上位机软件实现185.4.1上位机的程序应用185.4.2上位机初始化195.4.3预充处理程序205.4.4臭氧血液混合处理程序205.4.5臭氧浓度处理程序245.4.6报警处理程序265.5下位机

5、软件实现285.5.1下位机的程序应用285.5.2下位机初始化295.5.3数据接收、发送处理程序305.5.4数据包处理程序345.5.5 a/d取样处理程序405.5.6 d/a输出处理程序425.5.7血泵流量纠正程序42第六章总结45参考文献46第一章医用臭氧治疗仪的应用1.1医用臭氧治疗仪的背景利用臭氧对病毒性肝炎治疗在临床上的应用己越来越广泛,并已取得很好的 治疗效果。医用臭氧治疗仪将为病毒性肝炎患者提供一套与免疫激活气血混合器 配套使用的臭氧免疫调节系统,该系统口j以根据肝病治疗的需要,将医用级氧气 精确而稳定的制成治疗所需臭氧浓度,经过免疫激活气血混合器的将血液和臭氧 充分混

6、合激活、活化后的血液冋输到人体,起到病毒杀灭、提高人体干扰素、免 疫调节、激活红细胞代谢、激活免疫活性细胞、激活人体抗氧化酶系统的作用。 1.2医用臭氧治疗仪需要解决的问题医用臭氧治疗仪(以下简称治疗仪)是将一定量的人体血液引到体外,与一 定比例的医用臭氧气休混合后,冋输到人体的口动治疗过程。在治疗过程中要分 别对医用臭氧气体的浓度、人体的血压、血液循环管路中的气泡进行监测。一旦 参数偏离设定值,治疗仪将发出声光报警信号,提醒医务人员进行处理。另外治 疗仪的相关参数和功能要符合医疗器械的电气安全标准。例gb9706. 1医用电气 设备通用安全要求及gb9706. 2医用电气设备 血液透析、血液

7、透析滤过和血液 滤过设备的安全专用要求等提出血泵停泵报警、设备断电报警要求。1.3医用臭氧治疗仪的解决方案触摸屏与单片机通过modbus协议进行通信。触摸屏能够直观、生动地显示运 行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互 性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环 境,大大降低了产品的制造成本。如图1-1图11触摸屏与单片机通信示意图本文以at89s52单片机和人机电了有限公司的evicw mt5600t型触摸屏为例, 应用到医用臭氧治疗仪的通信程序的开发过程。首先介绍医用臭氧治疗仪的总体 结构,第三章modbus协议的通信原理及通信接

8、口的选择。第四章介绍了硬件的实 现,包括上位机的选型、下位机的选型、下位机的各单元电路的实现。第四章介 绍了医用臭氧治疗仪的软件实现,包括上下位机的地址对应、功能码的定义、校 验码的生成、上位机各软件实现、下位各软件实现。其中上位机重点介绍了初始 化、预充程序、臭氧血液混合程序、深度处理程序、报警处理,下位机重点介绍 了初始化、数据接收、发送程序、数据包处理程序、a/d取样程序、d/a输出程序、 血泵流量纠正程序等等。第二章医用臭氧治疗仪系统结构2.1系统基本结构实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的modbus通讯协议,以触摸屏作主站,单片机作从站o eview触

9、摸屏木身支持modbus通讯协议,如果单片机也支持modbus协议,就可以进行通信了。木系统可以利用触摸屏自带的串口与单片机进行通信。如图21所示:户*报酒(ait56oot)人体血压图21系统基本结构其中人机界面(hmi)负责与接受用户命令,控制程序的运行。显示与程序相对应的图形界面。mcu1:作为从站1通过como与hmi和连。负责系统的信号输出。包扌舌血泵电机的流量调节、各个电磁阀的打开和关闭、报警信号的动作、臭氧浓度电机的调节等。mcu2:作为从站2通过com1与iimi相连。负责系统的信号输入采集。包括人体血压、氧气压力、血液管路的气泡信号、臭氧浓度等。2.2物理实现目前,可以通过卜

10、列三种方式实现modbus通信。以太网上的tcp/ip;各种介 质上的串行链路上传输;modbusplus,一种高速令牌传递网络。选择何种实现方 式主要是依据他所连接的设务所处的地位。一般采用标准的232口、485接口、422 接口。由于“232的传输距离为30叫治疗仪的体积不大,不可能超过30m,因此可 以选用rs232通信方式来提供对modbus的硬件支持。将at89s52单片机吊口(rxd、txd)经过max232芯片将ttl电平转换为rs232电 平,再与eview触摸屏plcers-232接口相连,即完成了硬件连接。eview触摸屏 plcrs-232接口的管脚2为txd,管脚3为r

11、xd。图2-2为该系统串行接口的电路图。图22系统申行接口电路图第三章modbus协议modbus协议是0si模型第七层上的应用层文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。互联网组中己经保留tcp/ip系统端口502用以访问modbus, modbus协议已经成为一种流行的工业控制传输标准。3.1协议内容modbus协议定义了消息与格式和内容的公共格式,主要采用命令/应答方式, 每一种命令文都对应着一种应答文,命令文由主站发出,当从站收到后,就发岀 相应的应答文进行相应。modbus的信息帧包括站点、字节长度、功能码、操作地 址、操作数拯、crc校验值等。在mo

12、dbus系统中有两种有效的传递模式即ascii和 rtu模式。内容格式及字符长度如表3-1:表3-1两种冇效传递模式ascii模式传输格式rtu模式传输格式std启始字符start超过lomsz静止时段adr 1通讯地址:8bit地址包含了 2个 ascii 码adr通讯地址:8bit地址adr 2cmd 1指令码:8-bit地址包含了 2 个ascii码cmd指令码:8-bit指令cmdodata(n-l)资料内容:n*8-bit资料包含 了 2n 个 ascii 码,n<=25,最 多50个ascii码.data (n-l)资料内容:n*8-bit 资料n<=25dataoda

13、taolrcchk 1校验值:8-bit地址包含了 2个ascii码crc chrlow16bit校验值由2个8bit字符组成lrc chk 0crc chkhighend 1结束符:end1 二 cr()dh),end0=lf(oah)end超过10ms之静止吋段end 0由于rtu模式传输位数少,使用方便,本治疗仪采用rtu模式进行传输。3.2通信过程modbus通信协议是一种串行的主从通信协议,网络里仅冇一台设置可作为 主机(称master),其它设备作为从机(称slaver),主机不需编号,从机必须编 号。协议定义了主机查询及从机应答的信息帧格式。通信时,主机首先向从机发 出请求信息,

14、符合相应地址码的从机接收通讯命令,并除去地址码,读取信息, 如果没有出错,则执行相应的任务,然后把执行结果返给主机。若从机接收到的 校验码与本机计算的不同,则说明数据在通信过程屮出现错误,从机把这次请求 视为无效,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了 描述此错误信息的代码。当主机收到这一信息时,会重新发送请求信息。校验方 式分为lcr (传送数据为acsii时)校验或crc (传送数据为二进制吋)校验,这 里采用crc校验方式。信息传输为异步方式,并以字节为单位。主从站之间通讯的字格式如表32所o表32通讯的字格式字格式(串行数据)10位二进制起始位1位数据位8位奇偶校

15、验位无第四章硬件实现4.1选型 4.1.1上位机选型作为上位机必须要有良好的人机交互环境,并且上位机必须要支持modbus 通讯协议,而且要提供相应的串行通信接口 (rs232)。eview的mt5620t触摸屏 本身支持modbus通讯协议,并口提供2个串行通信接口。具体参数如图所示:图41 mt5620触摸屏参数4.1.2下位机及相关部件选型作为下位机必须要支持modbus通讯协议,而且要提供相应的串行通信接口 (rs232) o另外能够釆集相关的a/d、d/a、i/o信号。at89s51单片机内含一个串 行口,能够支持modbus通讯协议,通过相应的a/d、d/a芯片能够完成模拟信号、

16、数字信号的采集和输出。a/d转换芯片的选择:医用臭氧治疗仪在治疗过程屮需要采集的数字信号有臭 氧深度信号(0100ug/ml),氧气压力信号(0500kpa),静脉压信号(-100 kpa+100 kpa),所以10位的a/d转换芯片完全能够满足精度要求。选择 tlc1543a/d转换芯片。d/a转换芯片的选择:医用臭氧治疗仪在治疗过程中需要对血泵电机进行控 制,血泵电机的转速范围在(2.0转4&0转),其中每一转中耍分成10档,故 d/a转换的芯片要选择10位。选择tlc5615转换芯片能够满足要求。4.2上位机硬件实现rtl tev i ew的mt5620t触摸屏是厂家集成在一起的

17、触摸式显示屏,并提供相应的编程软件。如下图4-2所示图42 mt5620t触摸屏4.3下位机硬件实现4.3.1 a/d取样电路实现tlc1543芯片一共有11路(a0a10) 10位a/d信号输入,在这里只用是三 路分另i是ao、al、a2o其中a3a5作为备用。芯片-的clock、din、dout、 cs分别与单片机相连。芯片的基准电压采用高精度的可调三端稳压器lm336-5乙 基准电压的好坏直接影响取样的精度和稳定性。具体线路如图43所示。其屮臭氧 浓度信号、氧气压力信号、静脉压信号的最大值都在4.7v,故将基准电压调在4.7v 即可。7u2b_ad23b_ad34561iogzddo12

18、345678naaaadaaaaiglvcc eoc clock!ejin dout cs ref* ref-a1o a9120t2isic15436d17b din154312tlc154316 b dout 154315e us154314dgnd图43 a/d取样电路4.3.2 d/a输出电路实现tlc5615芯片有一路10位d/a信号输出,通过软件设置能够输出两倍的基准 电压。芯片的din、sclk、cs与单片机的引脚相连。芯片的基准电压采用高精度 的可调三端稳压器lm336-5乙基准电压的好坏直接影响取样的精度和稳定性。d/a 输出线路如图44所示。由于血泵电机的驱动信号在ov2.2

19、v范围内变化,血泵 电机驱动线路如图45所示。利用芯片的倍压功能,故将基准电压调在1.2v即可。图44 d/a输出电路图45血泵电机驱动电路4.3.3 i/o信号输入瀚出实现由于输出电路中有继电器的存在,必须做好隔离。单片机的输出信号经反相 器后通过三极管驱动后,作用二继电器动作。具体电路如图46所示。由于输入信号 屮不存在强的干扰信号,可以与单片的引脚直接相连。图46 i/o信号输入/输出电路4.3.4断电报警电路实现医用臭氧治疗仪在治疗过程中是将血液引出体外与臭氧相混合,在治疗过程 屮一当断电必须发出声咅报警,提醒医务人员及吋将血液输出体内。报警声音必 须持续lmin o断电报警电路独立与

20、其它电路单独工作,如图47所示。接口j2与总 电源开关的输入端相连,有电源输入时,断电器吸合,电路对电容c2进行充电。 当外界电源断电吋,继电器断开,电容c2通过蜂鸣器进行放电。调节电容c2的大 小可以调节报警时间。图47断电报警电路4.3.5停泵报警电路实现图48停电报警电路4.3.6臭氧浓度调节电路实现臭氧浓度调节原理如图49所示。臭氧浓度的高低是通过改变输入到高压发生 器的电压高低來调节。输入电压的调节是通过调压器來实现。转动安装在调压器 上方的直流电机,就可以改变调压器的大小。当臭氧检测仪检测的浓度高于设定 的浓度,cpu发出反转信号,使调压电机反转,调压器输岀电压降低,高压发生 器输

21、出电压减少。从而使臭氧的浓度降低,与设定值和等。线路图如图410所示。水冷系统哥气压力传感器臭氧发生器(来自cpu)检测仪复位信号臭氧在线检测仪/高压发生器ac220v/调压器白三】宀 k±3t r-t臭氧侬度信行至 cpu)浓度调节原理:1.当检測仪检测的沐度髙于険定的浓度 cpu发反統佶号.使网压电机反趺. 使网压器的输出电压隆低.髙压发生 券的髙压隆低.从而使臭賀的杭度隆 低矽陵与设定怕相筹.调压电机正转信号2、当检測妆栓测的械度低千设定的械憊 cpu发正趺佶号.使网压电机正趺. 便调压券的输劇电压升髙.菽压发生 券的髙压升髙.从而使見負的廉度升 髙.慢梭与设定值相等.fmn来

22、自cpu)来自cpu)图49臭氧浓度调节原理图410臭氧深度调节线路第五章软件实现软件实现包括:初始化关键字,包括波特率设置,数据位数、停止数、奇偶 校验模式等,总线上所有的master及slave的以上设置应完全一致。modbus编程主 要需要处理好校验码的生成及数据包的处理。5.1单片面与触摸屏地址的对应关系eview触摸屏只支持bit和word地址类型,而实际的单片机或其它控制器还有 byte、double word等表示方法,因此在进行通信时,需要把单片机和触摸屏的 数据进行变换。触摸屏画面元件读取地址的设备类型有lw、ox、1x、3x、4x、r wk rw等选项。其中,lw表示该元件

23、读取的是触摸屏内部的地址,如其它元件 的地址;ox表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x 和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;rwi、rw 都是触摸屏的内部地址,起辅助作用。使用这些读取地址的设备类型,触摸屏即 可显示或设定控制器寄存器或i/o口的数值。以“数值输入”元件为例,通过“小键盘” 输入数据即可设置单片机寄存器或i/o口的数值。如果启动了“触发地址”,那么当 被触控时,输入的数据就被存放到了指定的单片机地址屮。5.2功能码定义数据处理及发送模块执行modbus协议功能码对应的运用。eview触摸屏与单片 机以modbus协议

24、通信,用到的modbus功能码如表所示。表51通信程序用到的功能码功能码eview地址名称含义作用01ox读开关量输出读取一路或多路开关量输出状态034x读保持寄存器读取一个或多个保持寄存器的数据05ox、1x写开关量输出强置一路继屯器的“分/合”输岀163x、4x预置多寄存器把具体的数据装入一组连贯的保持寄存器以modbus功能码03为例来说明触摸屏及单片机的实际通信数据格式。如单片机地址编号为01h,触摸屏需要查看单片机中地址为0031h的寄存器的值,发送命 令格式如表52所示。表52触摸屏发送数据结构数据段名称数据值地址01功能码03读取地址高位00读取地址低位31读取数据个数高位00读

25、取数据个数低位01crc校验码高位d5crc校验码低位c5假设单片机中地址为0031h的寄存器中断为05h,则单片机的冋复命令如表53 所示。表53单片机应答数据结构数据值数据段名称5.3校验码生成根拯传输模式的不同,系统需要产生不同的校验码,ascii模式采用lrc校验, 而rtu采用crc校验。实现这两种方法的函数均可以在相关资料屮找到。下而是 用c语言设计的crc校验,而产生的返回值crc16即为回传之校验码。/* table of crc values for high-order byte */uchar code auchcrchi = 0x00, oxcl, 0x81, 0x40

26、, 0x01, oxco, 0x80, 0x41, 0x01, oxco, 0x80, 0x41, 0x00, 0xcl,0x81,0x40, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0x81,0x40, 0x00, oxcl, 0x81, 0x40, 0x01, oxco,0x80, 0x41, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0x81,0x40, 0x00, oxcl, 0x81, 0x40, 0x01,oxco, 0x80, 0x41, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80

27、, 0x41, 0x01, oxco, 0x80, 0x41,0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41,0x00, oxcl, 0x81, 0x40, 0x00, 0xcl,0x81,0x40, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41, 0x01, oxco,0x80, 0x41, 0x00, 0xcl,0x81, 0x40, 0x00, oxcl, 0x81,0x40, 0x01, oxco, 0x80,0x41,0x01,oxco, 0x

28、80, 0x41,0x00, oxcl, 0x81,0x40, 0x01, oxco, 0x80, 0x41,0x00, oxcl,0x81,0x40,0x00, oxcl, 0x81,0x40, 0x01, oxco, 0x80, 0x41, 0x01, oxco, 0x80, 0x41, 0x00, 0xcl,0x81,0x40, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0x81, 0x40,0x01, oxco,0x80, 0x41, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0

29、x81, 0x40, 0x00, oxcl, 0x81,0x40, 0x01,oxco, 0x80, 0x41,0x01, oxco, 0x80, 0x41,0x00, oxcl, 0x81,0x40, 0x01, oxco, 0x80, 0x41,0x00, oxcl, 0x81,0x40, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41, 0x00, 0xcl,0x81,0x40, 0x01, oxco, 0x80, 0x41, 0x01, oxco, 0x80, 0x41, 0x00, oxcl, 0x81, 0x40, 0x01, oxco

30、,0x80, 0x41, 0x00, oxcl, 0x81, 0x40, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41,0x01,oxco, 0x80, 0x41, 0x00, oxcl, 0x81, 0x40, 0x00, oxcl, 0x81, 0x40, 0x01, oxco, 0x80, 0x41,0x00, oxcl, 0x81,0x40, 0x01, oxco, 0x80, 0x41,0x01, oxco, 0x80, 0x41,0x00, 0xcl,0x81,0x40;/* table of crc values for low-o

31、rder byte */uchar code auchcrclo = 0x00, oxco, oxcl, 0x01, 0xc3, 0x03, 0x02, 0xc2, 0xc6, 0x06, 0x07, 0xc7,0x05, 0xc5, 0xc4,0x04, oxcc, oxoc, oxod, oxcd, oxof, oxcf, oxce, oxoe, oxoa, oxca, oxcb,oxob, 0xc9, 0x09,0x08, 0xc8, oxd& 0x18, ox 19, 0xd9, ox ib, oxdb, oxda, 0x1 a, ox ie, oxde,oxdf, oxlf,

32、 oxdd,oxld, oxlc, oxdc, 0x14, 0xd4, 0xd5, 0x15, 0xd7, 0x17, 0x16, 0xd6, 0xd2, 0x12, 0x13, 0xd3,oxll, oxdl, oxdo, 0x10, oxfo, 0x30, 0x31, oxfl, 0x33, oxf3, 0xf2, 0x32, 0x36, 0xf6, 0xf7,0x37, oxf5, 0x35, 0x34, 0xf4, ox3c, oxfc, oxfd, 0x3d, oxff, ox3f, ox3e, oxfe, oxfa, 0x3a,ox3b, oxfb, 0x39, oxf9, oxf

33、8, 0x38, 0x28, 0xe8, 0xe9, 0x29, oxeb, ox2b, 0x2a, oxea, oxee,ox2e, ox2f, oxef, 0x2d, oxed, oxec, 0x2c, 0xe4, 0x24, 0x25, oxe5, 0x27, 0xe7, 0xe6, 0x26,0x22, 0xe2, oxe3, 0x23, oxel, 0x21, 0x20, oxeo, oxao, 0x60, 0x61, oxal,0x63, 0xa3, 0xa2,0x62, 0x66, 0xa6, 0xa7, 0x67, 0xa5, 0x65, 0x64, 0xa4, 0x6c, o

34、xac, oxad, 0x6d, oxaf, 0x6f,0x6e, oxae, oxaa, 0x6a, 0x6b, oxab, 0x69, 0xa9, oxa& 0x68, 0x78, oxb8,0xb9, 0x79, oxbb,0x7b, 0x7a, oxba, oxbe, 0x7e, 0x7f, oxbf, 0x7d, oxbd, oxbc, 0x7c, 0xb4, 0x74, 0x75, oxb5,0x77, oxb7, 0xb6, 0x76, 0x72, 0xb2, oxb3, 0x73, oxbl, 0x71, 0x70, oxbo, 0x50, 0x90, 0x91,0x5

35、1, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9c, ox5c,0x5d, 0x9d, 0x5f, 0x9f, 0x9e, ox5e, 0x5a, 0x9a, 0x9b, ox5b, 0x99, 0x59, 0x58, 0x98, 0x88,0x48, 0x49, 0x89, 0x4b, ox8b, ox8a, 0x4a, 0x4e, ox8e, ox8f, 0x4f, 0x8d, 0x4d, 0x4c, 0x8c,0x44, 0x84, 0x85, 0x45, 0x87, 0x47,

36、0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41,0x81, 0x80,0x40uint crc 16(uchar *puchmsg,uchar usdatalen) / puchmsg message to calculate crc upon/ usdatalen quantity of bytesin messageuchar uchcrchi = oxff ; / high byte of crc initializeduchar uchcrclo = oxff ; / low byte of crc initializeduint ulndex ;/

37、will index into crc lookup tablewhile (usdatalen)/ pass through message bufferulndex = uchcrchi a *puchmsg+ ; / calculate the crcuchcrchi = uchcrclo a auchcrchifulndex;uchcrclo = auchcrclouindex;return (uint)(uchcrclo) « 8) i uchcrchi);5.4上位机软件实现5.4.1上位机的程序应用上位机作为主机要及时将信息送到下位机,将下位送来的信息进行处理,将处理结

38、果送冋给下位机。流程图如51所示:542上位机初始化图51上位机程序流程图上位机初始化如图5-2所示:图52上位机初始化5.4.3预充处理程序为了防止血液在管路中凝固,在治疗前必须对治疗管路进行预充。画面如图53所示:图53预充也面5.4.4臭氧血液混合处理程序将血液引出后在反应器中与一定比例的臭氧进行混合。画面如图54所示:oml" in加液阀 关闭(zw治疗循环画面开通关闭i开通臭氧浓度 0 wn氧t任力-21 kpo圭内压 -1 60 *%现正在进行臭氧混合菜单任务栏医用臭氧治疗仪臭氧输出闹关f施出阀 幵通回收阀91邊 ggti耳01淚&旬: 0s05-4臭氧血液混合画

39、面程序代码如下:#include nmacrotypedef.hn #include hmath.hn该程序是治疗循环画面的宏指令int macroentryoif(hsqpjc_flag=o) w_page=15;/检测气泡if(lxyin_flag=o)ll(rxyin_flag=o) w_page= 16;/ 检测限位开关if(pain>=patop)ll(pain<=pabottom) w_page=32;/ 检测壶内压力if(lw210_r=0)/是否达到治疗顶血时间lw211_w+;if(lw211 _r>=r_zldxtime-1) 1 w210_w= 1 ;l

40、w2 ll_w=();/增加部分不保压的程序if(lw210_r= 1)达到顶血时间lw21 l_w+;if(lw211_r=0)/ w_page=10;/设置本1间而的号码jyfe_flag= 1 ;yxfe_flag= 1;进行输液syfe_flag=o;hsfe_flag=o;ybdg_flag=l;/电逆时针运行/ o3exit_flag=l ;o3exitin_flag=0;/臭氧排放阀关闭if(lw211_r=2)/ 延时 2s/ o2fe_flag=0;/< 气阀关闭/ o3fe_flag=0;bout0_flag=0;/臭氧阀关闭,制气阀关闭。xhfe_flag=o;/循

41、环阀打开/ ybdg_flag= 1;/电逆时针运行if(lw211_r=4)/ 延时 2srun_flag= 1 ;1 w210_w=2;l w211 _w=0;/ 泵运行if(lw210_r=2)/是否到达治疗循环时间if(pausekey_flag= 1) bo3power_flag=0;如是暂停将臭氧电源关闭 else bo3power_flag= 1;if(door_flag= 1 )ll(pausekey_flag= 1) run_flag=0; / 盖有没有打开,打开则停泵elserun_flag=l;lw211_w+;iw22()_w=lw21 l_r;/ 循环时间计数if(l

42、w211 _r>=r_zlxhtime-1) lw210_w=3;lw21 l_w=0;if(lw210_r=3)/治疗循环时间到lw211_w+;if(lw211_r=0)run_flag=0;/ 停泵o3out_flag= 1 ;o3outin_flag=0;o3exit_flag=0;o3exitin_flag= 1;臭氧排放阀打开if(lw211_r=2)/ 延时 2so3out_flag=l;o3outin_flag=0;/臭氧输出阀关闭,进行保压。/增加 o3fe_flag= 1 ;bout()_flag= 1;臭氧阀打开,制气阀打开.o3jc_flag=0;/臭氧检测关闭

43、bo3power_flag=0;sbdg_flag=0;/臭氧电源和冷却水泵关闭if(lw211_r=4)/ 延时 2so2fe_flag二0;/氧气阀关闭o3fe_flag=0;bout()_flag=0;/m氧阀关闭,制气阀关闭。/ xhfe_flag=o;/ 循环阀打开/ ybdg_flag=l;/电逆时针运行if(lw211 _r=6)/ 延时 4ssyfe_flag= 1 ;jyfe_flag=o;/输液阀动作,加液阀打开。lw210_w=6;lw21 l_w=0;if(lw210_r=6)/是否达到治疗循环倒转吋间lw211_w+;if(lw211 _r>=r_zlxhdzt

44、ime 1)xhfe_flag= 1 ;jyfe_flag= 1;循环阀动作,加液阀动作。/o3exit_flag= 1 ;o3exitin_flag=0;/ 臭氧排放阀关闭 lw210_w=7;lw21 l_w=0;if(lw210_r=7)tsmusic_flag=l;lw210_w=0;lw2 ll_w=0;/ 步进标志位清零w_page= 11;进入回血画面return 0;5.4.5臭氧浓度处理程序先对下位机送来的数字信号转换成臭氧浓度。后将实际的臭氧浓度与设定相 比较,当高于设定值向下位机送出反转信号。低于设定值向下位机送出正转信号。 相等向下位机送出停传信号,并发出捉示音。程序代

45、码如下:#include "macrotypedef.h"#include "math.h"臭氧浓度比较程序int macroentryo/w_o3bj value=o3daout;o3jcstop=0; lw211_w+;/ w_temp=o3 daou t;/ w_o3bjvalue=(unsigned short)(r_temp*200/l 024);if(lxyin_flag=o)ll(rxyin_flag=o)bnddgl_flag=o;bnddgr_flag=o; anddgl_flag=o;anddgr_flag=o;/tsmusic_fl

46、ag=l;/ equal_flag=l;goto uno3contl;if(r_o3bj value=o3 set)/取样值等于设定值bnddgl_flag=o;bnddgr_flag=o; anddgl_flag=o;anddgr_flag=o;/tsmusic_flag=l;equal_flag=l;goto uno3contl;if(r_o3bjvalue>o3set)/取样值大于设定值if(r_o3bjvalue=o3set+l)ll(r_o3bjvalue=o3set+2)/*tsmusic_flag=l;*/ equal_flag= 1 ;goto uno3contl;bnd

47、dgl_flag=o;bnddgr_flag=l ;/10anddgl_flag=o;anddgr_flag= 1;tsmusic_flag=o;goto uno3cont;/o3jcstop= 1; if(r_o3bjvalue<o3set)/取样值小于设定值if(o3set=r_o3bjvalue+ l)ll(o3set=r_o3bjvalue+2)/:ctsmusic_flag= 1 ;*/equal_flag= 1 ;goto uno3contl;bnddgl_flag=l ;bnddgr_flag=0;/01anddgl_flag=l ;anddgr_flag=o;tsmusi

48、c_flag=o;goto uno3cont;/o3jcstop=l;/else bnddgl_flag=o;bnddgr_flag=o;uno3cont: o3jcstop=l;uno3contl:;return 0;5.4.6报警处理程序在这里一共冇5种报警要进行处理,分别是回输气泡报警、静脉压力报警、限 位报警、血泵停转报警、断电报警。其中断电报警独立与其它报警。需要上位机 处理的只冇另外4种报警。冋输气泡报警:当血液冋路中有气泡产生时,治疗仪必须停泵、阻断冋输管路、产生声光报警。画面如图55所示:回输气泡扌艮替二jl、按2ll迁键可泊除拟苦声咅 a 丽百回输气泡报警,请抜提示进彳-a

49、返回3、按返叵1键返回2、按松夹键进行处理a松央图55气泡报警训而静脉压力报警:当静脉压超出设定的压力限值,将产生报警。治疗仪必须停 泵、产生声光报警。陆面如图56所示:*按提示进行操作。压力报警.请按提示进行操作。0v力报警,请按:提示进i 压力报警:1亠按逬査键对泊除报警声&ai消音ka -1602、设定压力下限a 240a返回i任务栏作操行进示提按警报力压.作操行进示提按ut 警报力压作操行进,图56压力报警画面限位报警:当调压器超出调节范围时,将产生报警,提醒用户进行处理。画面如图57所示:限位报警二1、按逍血键可泊除报螯声音2、按归位键进行处理3、按返【叫键返一回警报位限菜单

50、任务栏图57限位报警画而血泵停转报警:在治疗过程中当血泵意外停止时,系统自动进入停泵报警画 面。应面如图58所示:血泵停止运转报警:1、按消音键可消除报警声音»阳春3、按达键返冋提示:请检杳泵盖是否盖好。址行操作。停泵报警,请按提示进行操作。停泵报警.请按提示进行燥作。传菜单任务栏t)p a图58血泵停转报警画面5.5下位机软件实现5.5.1下位机的程序应用下位机做为从机,要识别来自主机的信号是不是给自己。将与como相连的 mcu作为0号从机,#define slaveld 0x00。与com1相连的mcu作为1号从机, #define slaveld 0x()k触摸屏与单片机的通

51、信程序采用单片机c语言编写。编译工 具选择keil编译器。程序共分三大模块,即初始化模块、数据接收发送模块以及 数据处理模块。主程序流程图如图5-9所示。图5-9单片机端的程序流程图5.5.2下位机初始化下位机的初始化包括对mcu的串口传输的设置、modbus变量。传输波特率为9600,8位数据位,1位停止位,无校验。程序代码如下:void initsfr(void)scon=0x50;/ uart mode is 01,start bit + 8 bit data +stop bit: peer topeer communicationtmod=ox 11;/* t/c1定义为方式1 */t

52、ll=()x3c;/*置初值*/thl=0xb0;pcon=oxoo;tr1=o;rcap2h=0xff;rcap2l=0xd9;rclk=1;tclk=1;tr2=1;/定吋器2作为波特率发生器,9600bpsps=1;/ uart intrrupt is hightestes=1;/ serially interrupt allowea=1;/ chief interrupt allowvoid initvar(void)uchar i;for (i=0;iv=250;i+)_nop_();t0=recieve;recfinishf=0;commindex=0;commindexend=oxff; / first enlarge recieve lenght for (i=o;i<maxreglen;i+)slaveoutputbufi=slaveadr;5.5.3数据接收、发送处理程序下位机与上位机传输处理程序在串行中断程序中进行。数据接收发送模块由一个 中断函数组成。该中断函数将触摸屏发來的modbus数据帧存储在一个口定义的数 组屮,当一帧数据接收完时,置接收结束标志位为1,转入数据处理及发送模块。基于modbus协议的医用臭氧治疗仪的设计与实现 第31页 串行通信接收器的核心是接收移位寄存器sbuf,接收完成后,接收中断标志位ri 被置

温馨提示

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

评论

0/150

提交评论