放射源监测二次仪表软件设计.docx
- 文档编号:4719261
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:18
- 大小:288.31KB
放射源监测二次仪表软件设计.docx
《放射源监测二次仪表软件设计.docx》由会员分享,可在线阅读,更多相关《放射源监测二次仪表软件设计.docx(18页珍藏版)》请在冰豆网上搜索。
放射源监测二次仪表软件设计
本科毕业论文(设计)
题目:
放射源监测二次仪表软件设计
学院:
物理与电子科学学院
班级:
姓名:
指导教师王振义职称:
副教授
完成日期:
2014年5月25日
放射源监测二次仪表软件设计
摘要:
该文章详细论述了基于STM32F407ZET6的MCU与RS485接口及ZigBee模块的通信程序,以及串行智能LCD显示和界面设计,还有相关数据处理程序的软件设计。
具体就是将探头测量得到的数据通过RS485或者ZigBee传送到MCU进行处理,然后将处理结果显示到LCD上。
可以对出现的故障进行报警和做出相应的程序调整。
整个过程利用OPCserver管理。
本文分别论述了各模块的定义及应用,主要介绍了二次仪表的软件设计以及在实际应用时出现的结果。
关键词:
放射源;RS485;ZigBee;OPCserver
目录
一、背景1
二、放射源监控系统涉及到的模块简介1
2.1放射源检测探头1
2.2RS485接口1
2.3ZigBee2
2.4LCD2
2.5OPCserver软件模块或放射源监控管理系统件2
三、系统的通信过程3
3.1探头与MCU的通信过程3
3.2ZigBee的通信过程3
3.3LCD的通信过程4
3.4二次仪表和PC的通信过程4
3.5报警的通信过程4
四、各模块实现其功能的部分程序4
4.1LCD的部分程序4
4.2与ZigBee和RS485通信的程序5
五、系统使用时显示屏出现的画面以及其原因8
5.1开机8
5.2测量8
5.3通讯故障显示及实现的程序9
5.4数据网关显示12
5.5故障处理部分程序13
参考文献16
致谢17
一、背景:
如今在工农业生产方面,放射源应用已经非常广泛,例如,过程的控制,工业探伤,测井,医疗,辐射加工以及科学研究等诸多部门。
与此有个显明的对照——长期以来,放射源的监控工作一直处于由人工监管的落后状况,全国各地近来老是出现放射源物质泄露和放射源遗失的新闻报道[1]。
因为放射源的遗失或使用不当容易造成极大的社会恐慌和环境危害。
因此,使用放射性源的过程不仅需要必要的安全措施,有合格的防护装备,而且最重要的是有效的和严格的监督和放射源的控制,以确保人身安全和环境安全。
国家相关部门专门针对放射源的管理颁布了诸多法律法规和规章制度[2],这些法律法规都严格规范了放射源的使用和管理的所有过程,对放射源的买卖,储存,运输,使用等都有严格的要求,并且明确了监管机构和责任部门。
建立放射源监控系统,要依靠那些放射源使用企业现有的生产监管平台,建设一个信息管理系统,这个系统具有的功能要包括监控、传输和报警等功能。
其中监控功能应该包括位置、剂量、和状态监控。
传输则要求对监控数据进行实时传输。
出现事故会报警。
这样就可以对使用企业的放射源进行实时在线监管,做到对放射源管理自动化,信息化[3],使对放射源的监管更有实效性和科学性。
二、放射源监控系统涉及到的模块简介
本文主要涉及通讯和显示单元的二次仪表软件设计。
具体包括二次仪表与探头、RS485接口及Zigbee模块的通信程序,以及串行智能LCD显示和界面设计,还有相关数据处理程序。
下面将分别介绍
2.1放射源检测探头
放射源检测探头用来采集放射源射线强度,由GM/SiPIN辐射探测器,数据处理模块,高压模块,电源和通信模块等构成。
主要功能是:
将工作场所放射源的辐射剂量实时转化成数字信号传送给后续设备,作为监测,报警和综合管理的基础数据。
2.2RS485接口
RS485使用差分信号负逻辑,+2~+6说“0”,6V~-2V说“1”。
RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。
在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。
很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。
2.3ZigBee
ZigBee是一种低速短距离传输的无线网络协定,底层是采用IEEE802.15.4标准规范的媒体存取层与实体层。
主要特色有低速、低耗电、低成本、支援大量网络节点、支援多种网络拓扑、低复杂度、快速、可靠、安全。
2.4LCD
LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。
比CRT要好的多,但是价钱较其贵。
2.5OPCserver软件模块或放射源监控管理系统件
放射源监控管理系统软件运行在一台专用工控机上,对各放射源监测探头传回的监测数据进行相应的数据库管理(包括仪器历史数据日志记录与显示等),还可以通过计算机实时查询任意放射源的工作情况,自动显示异常报警信息并启动报警。
主要功能:
(1)建立用源单位基本信息。
(2)单个放射源在线信息的实时接收、显示并保存放射源监测仪上传数据。
(3)报警功能:
实时处理上传信息,若出现异常,则发出连续报警信号。
(4)查询上传功能:
按要求将测量信息上传工厂生产管理系统软件。
系统软件根据功能分为三个子系统:
基础信息管理子系统、放射源在线监管子系统及数据接口子系统。
基本信息管理子系统对有关放射源信息进行统一管理与维护。
OPCserver[6]软件模块为放射源监测系统与工厂生产管理系统软件之间的信息转换接口,可以将放射源监测系统的实时监测数据按照工厂生产管理系统软件规定的通讯协议进行转换和传输,将监测数据以设备无关方式融入工厂生产管理系统,用本厂生产管理系统的无缝集成。
三、系统的通信过程
主要涉及到辐射剂量,计数器计数和高低阈值,
3.1探头与MCU的通信过程
串口处于接收中断状态时,将串口接收到的数据发送到LPU接收缓存区。
此时应该判断收到的第一个字母或缓存区的第一个字母是否为定义好的格式,如“$”,如果是的话就开始接收数据,直到缓存区满了为止。
接收到的数据中前四个字母需要和帧头对比,看是否一样。
然后四个字母后面跟着的是数据的长度,需要判断此长度是否满足之前定义好的值,不够的话返回。
整个数据利用CRC进行校验。
即计算发送时的CRC值是否等于接收到的CRC值。
上述步骤都满足后,开始看接收到的数据。
因为一个二次仪表可以连接多个探头,那么需要将相同的探头发送回来的数据放到相同的位置。
这个过程通过探头的号码来区分,如果接收到的探头号码不存在的话,则将此数据舍弃。
与此同时有个超时时间的计数值,每次收到数据后会清零。
正常情况下这个数据不会太大,若数据太大,说明很长时间没有收到数据了,说明探头坏了,就会报警。
接收到的数据包括计数值,剂量值,工作高压,工作电压。
3.2ZigBee的通信过程
二次仪表将数据处理完之后需要将这些信息送给PC机。
那么这个传送的手段即使用ZigBee。
二次仪表将准备好的数据送入ZigBee的发送缓存区,直到缓存区满为止。
这个数据以“%”开头,包括帧长度,LPU号,此时的时间,包括年、月、日、时、分、秒。
如果剂量率超过阈值了,那么发送当前值,如果没有超过阈值,那么发送平均值。
都准备好之后就要开始发送了,此时要判断ZigBee是否有RS485连接,没有的话,串口给PC发中断请求,中断开启后,发送“%”,得到PC确认之后,开始发送。
一次性都发送完。
3.3LCD的通信过程
LCD要求能显示指针,颜色,和汉字。
具体来说接收到的剂量值<100时,数值表示为“%5.2fuGy/h”;剂量值<1000时,数值表示为“%5.1fuGy/h”;剂量值<10000数值表示为“%5.3fmGy/h”;剂量值<100000时,数值表示为“%5.2fmGy/h”;剂量值<1000000时,数值表示为“%5.1fmGy/h”。
剂量值大于高阈值时,指针指向红色区域;剂量值小于低阈值时,指针指向白色区域;剂量值正常时,指针指向黄色区域。
超时时间大于设定的时间时,LCD显示“等待数据”,否则显示“探头正常”;服务器超时时,LCD显示“联络主机”,否则显示“通信正常”。
3.4二次仪表和PC的通信过程
正常情况下,二次仪表通过ZigBee定时给PC机发送数据,包括剂量值,计数值,此时的时间。
如果发现剂量值超标了,那么就会立即发送给PC机。
PC机会定时的发给二次仪表时间,包括年、月、日、时、分、秒。
二次仪表将每次PC机发来的时间和自己的时间进行对比,如果误差只有几秒时,则忽略。
如果相差较大时则会调整自己的时间。
3.5报警的通信过程
通常情况下,二次仪表定时给PC机传送数据。
如果发现收到的值超过之前设定的高阈值,那么立即向PC机发送此值,并且将此时的时间也发送过去。
然后控制蜂鸣器工作。
四、各模块实现其功能的部分程序
4.1LCD的部分程序
voidLCD_DosageRate(floatfDosageRate,uint16_tu16DRcolor,uint8_tu8ProbeState,uint8_tu8ServerState){
uint8_tu8Buff[30],u8LCD_Buff[100],u8LCD_Len;
uint16_tu16Angl;
if(fDosageRate<100)sprintf((char*)u8Buff,"%5.2fuGy/h",fDosageRate);
elseif(fDosageRate<1000)sprintf((char*)u8Buff,"%5.1fuGy/h",fDosageRate);
elseif(fDosageRate<10000)sprintf((char*)u8Buff,"%5.3fmGy/h",fDosageRate/1000);
elseif(fDosageRate<100000)sprintf((char*)u8Buff,"%5.2fmGy/h",fDosageRate/1000);
elseif(fDosageRate<1000000)sprintf((char*)u8Buff,"%5.1fmGy/h",fDosageRate/1000);
elsesprintf((char*)u8Buff,"%5.3fGy/h",fDosageRate/1000000);
u8LCD_Len=0;
u8LCD_Buff[u8LCD_Len++]=0x98;
u8LCD_Buff[u8LCD_Len++]=0x00;
u8LCD_Buff[u8LCD_Len++]=0xAA;
u8LCD_Buff[u8LCD_Len++]=0x01;
u8LCD_Buff[u8LCD_Len++]=0x2C;
u8LCD_Buff[u8LCD_Len++]=0x25;
u8LCD_Buff[u8LCD_Len++]=0xC0;
u8LCD_Buff[u8LCD_Len++]=0x03;
4.2与ZigBee和RS485通信的程序
if((stDev.au8DateTimeW[0]!
=stDev.au8DateTime[0])|(stDev.au8DateTimeW[1]!
=stDev.au8DateTime[1])|(stDev.au8DateTimeW[2]!
=stDev.au8DateTime[2])|(u32TimeErr>30)){
RTC_DateStructure.RTC_Year=stDev.au8DateTimeW[0];
RTC_DateStructure.RTC_Month=stDev.au8DateTimeW[1];RTC_DateStructure.RTC_Date=stDev.au8DateTimeW[2];RTC_DateStructure.RTC_WeekDay=0;
RTC_SetDate(RTC_Format_BCD,&RTC_DateStructure);
RTC_TimeStructure.RTC_H12=0;
RTC_TimeStructure.RTC_Hours=stDev.au8DateTimeW[3];
RTC_TimeStructure.RTC_Minutes=stDev.au8DateTimeW[4];
RTC_TimeStructure.RTC_Seconds=stDev.au8DateTimeW[5];
RTC_SetTime(RTC_Format_BCD,&RTC_TimeStructure);
}
stDev.u16ServerTimeout=0;//reseterrorcount
break;
case'W':
uint16_tu16Index=FRAME_HEAD_NUM+4;//clibrationdata7+7per4bytes
if(stParameter.uiProductNo==((uint16_t)stZigbeeRcvBuffer.ucBuffer[FRAME_HEAD_NUM+1]*256+stZigbeeRcvBuffer.ucBuffer[FRAME_HEAD_NUM+2])){
u16Index++;
u16Index++;
stParameter.u16ThresholdLow=(uint16_t)stZigbeeRcvBuffer.ucBuffer[u16Index++]>>8;
stParameter.u16ThresholdLow+=(uint16_t)stZigbeeRcvBuffer.ucBuffer[u16Index++];u16Index++;
u16Index++;
stParameter.u16ThresholdHigh=(uint32_t)stZigbeeRcvBuffer.ucBuffer[u16Index++]>>8;
stParameter.u16ThresholdHigh+=(uint32_t)stZigbeeRcvBuffer.ucBuffer[u16Index++];stParameter.u16DataSndIntervalLmt=(uint16_t)stZigbeeRcvBuffer.ucBuffer[u16Index++]>>8;
stParameter.u16DataSndIntervalLmt+=(uint16_t)stZigbeeRcvBuffer.ucBuffer[u16Index++];
//AccessFLASH(cSaveParam);
stParameter.lLongitude=0xffff;//flagforupdatestParametertoFLASH
//AccessFLASH(cSaveParam);
}
break;
default:
stZigbeeRcvBuffer.ucBuffer[0]=0xa4;
stZigbeeRcvBuffer.ucPoint=0;
//SendACK(channelLPU,ACK_ERR);
};
stZigbeeRcvBuffer.ucBuffer[0]=0xa0;
stZigbeeRcvBuffer.ucPoint=0;
//SendACK(channelPC,ACK_OK);
}
}
}
if(USART_GetITStatus(USART6,USART_IT_TXE)!
=RESET)
{
if(stZigbeeSndBuffer.ucPoint>=stZigbeeSndBuffer.ucLen)
{
/*DisabletheUSART3Receiveinterrupt*/
USART_ITConfig(USART6,USART_IT_TXE,DISABLE);
if(stParameter.bZigbeeIs485)RS485_DE6_PB=0;//RS485receive
}
/*Writeonebytefromthereceivedataregister*/
//USART_SendData(USART6,stZigbeeSndBuffer.ucBuffer[stZigbeeSndBuffer.ucPoint++]);
/*TransmitData*/
USART6->DR=stZigbeeSndBuffer.ucBuffer[stZigbeeSndBuffer.ucPoint++];
}
}
五、系统使用时显示屏出现的画面以及其原因
5.1开机
将显示单元与探头按照装配图连接好。
插入电源线启动显示设备,LCD显示屏上首先显示欢迎画面,如图1所示。
5.2测量
地址信息显示完毕后,显示单元进入工作界面,当放射源监测探头所处环境中无放射源存在时,显示单元工作在本底区。
如图3所示
将放射源监测探头置于放射源设备有效区域内,显示单元将从本底区进入到工作区,如图4所示:
当放射源外泄或是破损的情况下,显示单元将进入超标报警工作区,如图5所示,
一旦进入到超标区同时启动声光报警装置,提醒工作人员,保障工作人员的安全。
图1欢迎界面
之后,显示单元显示当前的地址编号,如图2所示,显示单元为01区01号。
图2当前状态显示界面
5.3通讯故障显示及实现的程序
当显示单元与放射源监测探头未连接或者出现其它通讯故障导致数据未能正确传输时,而与数据网关联络正常时,显示界面会出现“等待数据,通信正常”提示信息,如图6所示。
if(stLPUdev.stLPUs[0].u16ErrTimes>stParameter.u16ErrTimesLmt){
LCD_Str(180,380,(uint8_t*)"等待数据",CLIB32,LCD_C_YELLOW,LCD_C_BLACK);
LED_GRN_PB=0;
}
Else
LCD_Str(180,380,(uint8_t*)"探头正常",CLIB32,LCD_C_GREEN,LCD_C_BLACK);
图3本底区界面
图4工作区界面
图5超标区界面
图6探头通讯失败界面
当显示单元与放射源监测探头连接正常,而与数据网关的Zigbee无线传输出现故障,未能正确传输数据时,显示界面会出现“探头正常,联络主机”提示信息,如图7所示。
如果长时间不能与数据网关联络,显示单元自动重启,试图解决偶发故障。
if(stDev.u16ServerTimeout>stParameter.u16ServerTimeoutLmt){
LCD_Str(180,380,(uint8_t*)"探头正常",CLIB32,LCD_C_GREEN,LCD_C_BLACK);
}
else
LCD_Str(340,380,(uint8_t*)"联络主机",CLIB32,LCD_C_YELLOW,LCD_C_BLACK);
LED_GRN_PB=0;
图7主机通讯失败界面
当显示单元与放射源监测探头连和数据网关都未能正确传输数据时,显示界面会出现“等待数据,联络主机”提示信息,如图8所示。
LCD_Str(180,380,(uint8_t*)"等待数据",CLIB32,LCD_C_YELLOW,LCD_C_BLACK);
LED_GRN_PB=0;
LCD_Str(340,380,(uint8_t*)"联络主机",CLIB32,LCD_C_YELLOW,LCD_C_BLACK);
LED_GRN_PB=0;
5.4数据网关显示
数据网关负责将多个测量设备得到的放射源附近的剂量数据,通过Zigbee网络集中,并通过Modbus[7]协议转发的PCS系统[8]。
为了方便用户了解Zigbee网络工作状态和测量结果,数据网关采用如下图显示界面。
画面中的每个圆圈对应一个测量设备,每个圆圈分三行,分别显示的是显示单元的编号、测量的剂量值和对应单位,黄色背景指示测量值位于本底区,即周围辐射剂量较
图8主机探头通讯失败界面
低的情况;绿色背景指示测量值位于工作区,即周围辐射剂量在设置的放射源正常工作的范围;红色背景指示测量值位于超标区,即周围辐射剂量超过设置的放射源正常工作的范围,需要引起注意,并处理这种异常情况。
图9数据网关显示界面
5.5故障处理部分程序
*@paramNone
*@retvalNone
*/
voidHardFault_Handler(void)
{
while
(1)
{
}
}
/*
*@paramNone
*/
voidMemManage_Handler(void)
{
while
(1)
{
}
}
/**
*@paramNone
*@retvalNone
*/
voidBusFault_Handler(void)
{
while
(1)
}
/**
*@briefThi
*@paramNone
*@retvalNone
*/
voidUsageFault_Handler(void)
while
(1)
{
}
}
/**
*@briefThisfunctionhandlesSVCallexception.
*@paramNone
*@retvalNone
*/
voidSVC_Handler(void)
{
}
参考文献:
[1]张振,王仁波.数字智能化放射源运输车[J].核电子学与探测技术.2011(4).
[2]范痴,李业强,凌静霞等.某市放射源安全管理有关问题初探[J].广州环境科学,2010
(1).
[3]陈忠宇,张勇,姜建其等.秦山核电厂放射源管理风险控制分析[C].中国核科学技术进展报告(第二卷)——中国核学会2011年学术年会论文集第5册(辐射防护分卷、核化工分卷),中国核学会,2011.
[4]邓志君,梁松峰.基于RS485接口Modbus协议的PLC与多机通讯[J].微计算机信息,2010(8).一、参考文献的类型>>详细国家标准
参考文献(即引文出处)的类型以单字母方式标识,具体如下:
M——专著C——论文集N——报纸文章J——期刊文章D——学位论文R——报告
对于不属于上述的文献类型,采用字母“Z”标识。
对于英文参考文献,还应注意以下两点:
①作者姓名采用“姓在前名在后”原则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 放射源 监测 二次 仪表 软件设计