测控网络课程设计报告书

上传人:痛*** 文档编号:89036136 上传时间:2022-05-12 格式:DOCX 页数:25 大小:497.38KB
收藏 版权申诉 举报 下载
测控网络课程设计报告书_第1页
第1页 / 共25页
测控网络课程设计报告书_第2页
第2页 / 共25页
测控网络课程设计报告书_第3页
第3页 / 共25页
资源描述:

《测控网络课程设计报告书》由会员分享,可在线阅读,更多相关《测控网络课程设计报告书(25页珍藏版)》请在装配图网上搜索。

1、-测控网络课程设计*:班级:*:同组者:第一局部实验要求1.要求本次实践以开发计算机测控系统为最终目的,要求掌握计算机测控系统的工作原理,学习组态王工控组态软件的使用方法,根据要求完成工程组态;掌握MODBUS通信协议的原理,开发具有MODBUS通讯功能的智能仪表,最终完成和组态工程之间的通讯。2.设计内容与时间方案(1) 熟悉组态王软件安装,根本开发环境,采用构建简单的工程采用仿真数据和设备,工程应包含PID功能,方案时间1天;(2) 根据罐区工艺的要求,完成相应的组态工程,实现对原油储罐的监控,方案时间2天;(3) 掌握MODBUS通讯协议的工作原理,在MSP430F5438单片机上编程实

2、现MODBUS客户端效劳程序,要求通过串行口将现场的温度、泵状态、流量等参数上传到上位机上,方案时间3天。(4) 在单片机上编程实现流量、温度上下限及仪表地址和波特率等参数设置功能,同时能从上位机对仪表参数进展设置,方案时间2天。(5) 优化设计,要求当出现通讯错误时在上位机和单片机上都要做出相应的反响,方案时间0.5天。(6) 上位机采用高级语言编程,实现对现场智能仪表的控制。第6项为有能力者完成,方案时间1.5天。3.详细设计要求3.1 组态王工程局部:见附录13.2 智能仪表局部:1仪表支持MODBUS ASCII和MODBUS RTU通讯协议。2仪表具有现场参数修改功能变送器参数、泵参

3、数和通讯参数可以自由设置,且单位可以更改,参数最好掉电不丧失。3仪表具有参数上传功能,可以通过上位机实现对仪表参数的设置。4当上位机发送的命令有问题时,仪表应进展错误处理;当仪表返回的数据有错误时,上位机也应作出反响。3.3 MODBUS上位机软件:能够正确读写仪表数据。第二局部实验内容组态王局部1、罐区工艺流程图2- 储油罐进口电动阀;3- 储油罐排污电动阀;4- 储油罐出口电动阀;5- 泵图1:罐区工艺流程图2、监控要求1监测各罐的液位0-20m/ (0-1m)/温度(0-100度)现场仪表4-20mA输出。2根据各罐液位控制各罐出口电动阀H16m, 关进口阀,选择最低液位的罐进油;H15

4、.5m高报警, H17m高高报警;液位H2m低报警, H1m高报警, 界位1.5m高高报警; 界位0.5m低报警, H0)if(液位1=液位2 & 液位1=液位3 & 液位1=液位4 & 液位116)进口阀1=1;进口阀2=0;进口阀3=0;进口阀4=0;液位1=液位1+泵输入总流量*系数1; else if(液位2液位1 & 液位2=液位3 & 液位2=液位4 & 液位216)进口阀1=0;进口阀2=1;进口阀3=0;进口阀4=0;液位2=液位2+系数2*泵输入总流量;elseif(液位3液位1 & 液位3液位2 & 液位3=液位4 & 液位316)进口阀1=0;进口阀2=0;进口阀3=1;

5、进口阀4=0;液位3=液位3+系数3*泵输入总流量;elseif(液位4液位1 & 液位4液位2 & 液位4液位3 & 液位40)if(液位1=液位2 & 液位1=液位3 & 液位1=液位4 & 液位12)出口阀1=1;出口阀2=0;出口阀3=0;出口阀4=0;液位1=液位1-系数1*泵输出总流量;elseif(液位2=液位1 & 液位2=液位3 & 液位2=液位4 & 液位22)出口阀1=0;出口阀2=1;出口阀3=0;出口阀4=0;液位2=液位2-系数2*泵输出总流量;elseif(液位3=液位1 & 液位3=液位2 & 液位3=液位4 & 液位32)出口阀1=0;出口阀2=0;出口阀3=

6、1;出口阀4=0;液位3=液位3-系数3*泵输出总流量;elseif(液位4=液位1 & 液位4=液位2 & 液位4=液位3 & 液位42)出口阀1=0;出口阀2=0;出口阀3=0;出口阀4=1;液位4=液位4-系数4*泵输出总流量;if(排污阀1=1 | 排污阀2=1 | 排污阀3=1 | 排污阀4=1)液位1=液位1-排污阀1*0.1;液位2=液位2-排污阀2*0.1;液位3=液位3-排污阀3*0.1;液位4=液位4-排污阀4*0.1;if(液位1=16)进口阀1=0;if(液位2=16)进口阀2=0;if(液位3=16)进口阀3=0;if(液位4=16)进口阀4=0;if(液位1=2)出

7、口阀1=0;if(液位2=2)出口阀2=0;if(液位3=2)出口阀3=0;if(液位4=2)出口阀4=0;if(泵输入总流量=0)进口阀1=0;进口阀2=0;进口阀3=0;进口阀4=0;if(泵输出总流量=0)出口阀1=0;出口阀2=0;出口阀3=0;出口阀4=0;智能仪表局部Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络例如以太网和其它设备之间可以通信。此协议定义了一个控制器能认识使用的消息构造,而不管它们是经过何种网络进展通信的。它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和

8、内容的公共格式。1、 变量定义及函数声明unsigned char R*32; /单片机承受数据数组unsigned char T*32; /03功能时单片机发送数据数组unsigned char T*632; /06功能时单片机发送数据数组unsigned char Buf10; /存储数据的数组unsigned int flag; / 上位机发送数据标志位unsigned int flag1; /单片机应答数据标志位unsigned int flow; / 流量值unsigned int temperature; /温度值unsigned char LRC; /上位机发送数据校验码unsi

9、gned char LRCt; /单片机应答数据校验码void TT*();void In_LRC();void Out_LRC(); unsigned char shitohe*(unsigned int shi) ;unsigned char asciitohe*(unsigned char ascii) ;void selflow(unsigned char selflow) ; void seltemp(unsigned char seltemp) ;unsigned char MODBUS_LRC(unsigned char *auchMsg, unsigned short usDa

10、taLen);unsigned char he*toascii(unsigned char he*);void RS232_init();void RS232_open();void RS232_close();2、 串口初始化void RS232_init()/ RS232 串口初始化 9600,N,8,1 UART2P9DIR = 0*FF;P9SEL = 0*30; / P9.4,5 = USCI_A2T*D/R*DUCA2CTL1 |= UCSWRST; / *Put state machinein reset*UCA2CTL1 |= UCSSEL_2; / CLK = SMCLKUC

11、A2BR0 = 78; / 9600 (see UsersGuide)UCA2BR1 = 0*00; /UCA2MCTL |= UCBRS_0+UCBRF_2+ UCOS16; / Modulation UCBRS*=6, UCBRF*=0UCA2CTL1 &= UCSWRST; / *Initialize USCI state machine*/ RS232 串口翻开 UART2void RS232_open()UCA2IE |= UCR*IE; / Enable USCI_A2 R* interrupt/ RS232 串口关闭 UART2void RS232_close()UCA2IE &

12、= UCR*IE; / Disable USCI_A2 R* interrupt3、 上位机利用UART中断给单片机发送指令#pragma vector=USCI_A2_VECTOR_interrupt void USCI_A2_ISR(void) while (!(UCA2IFG & UCT*IFG); / 判断是否发送完毕 if(UCA2R*BUF = :) /:为起始标志,如果开场,标志位flag置位 flag = 1; tempnumb-; if(flag=1) /当标志位flag置位说明发送命令开场,开场承受命令数据 R*0 = :; if(UCA2R*BUF != 0*0D & U

13、CA2R*BUF != 0*0A ) /只要不是回车换行符,就依次将数据存入承受数组R*中,同时计数变量tempnumb加1 tempnumb+; R*tempnumb = UCA2R*BUF ; if(UCA2R*BUF = 0*0D) /假设是回车 tempnumb+; R*tempnumb = D ; if(UCA2R*BUF = 0*0A) /假设是换行 tempnumb+; R*tempnumb = A ; flag=0; /承受标志位清零 flag1=1; /发送标志位置1 TT*(); /调用发送数据函数 4、 单片机通过UART中断向上位机发送应答指令void TT*() in

14、t i; int j; unsigned int b; unsigned int c; unsigned int d; unsigned char temp; In_LRC(); /计数上位机发送命令校验码 if(R*8=1) /如果地址为存放器0001,发送流量数据 shitohe*(flow); if(R*8=2) /如果地址位存放器0002,发送温度数据 shitohe*(temperature); if(R*3=0 & R*4=3) /如果是03号功能 if(LRCHi = R*tempnumb-3) &(LRCLo = R*tempnumb-2) /如果上位机发送校验码正确 for(

15、b=0;b4)&0*0F); T*6 = he*toascii(temp*2)&0*0F); for(i=0;itemp*4;i+=2) T*7+i = he*toascii(Bufi); /要发送的数据 T*8+i = he*toascii(Bufi+1); tempnumt = 7+i; /统计数据长度,用于计算校验码 Out_LRC(); /计算单片机发送数据校验码 T*7+i = LRCHi; T*8+i = LRCLo; T*9+i = 0*0D; T*10+i = 0*0A; for(j=0;j=(10+i);j+) /单片机发送数据 while (!(UCA2IFG & UCT*

16、IFG); / 判断是否发送完毕 UCA2T*BUF=T*j; else /如果校验码不正确,返回错误代码 Input LRC ERROR!只能通过串口调试看到 ERR19=8; ERR20=T*4; for(d=0;d=20;d+) while (!(UCA2IFG & UCT*IFG); / 判断是否发送完毕 UCA2T*BUF=ERRd ; else if(R*3=0 & R*4=6) /如果是06号功能 for(c=0;c=tempnumb;c+) T*6c = R*c; while (!(UCA2IFG & UCT*IFG); / 判断是否发送完毕 UCA2T*BUF=T*6c; s

17、elflow(T*610); /设置流量值 seltemp(T*611); /设置温度值 flag1=0; /单片机发送标志位清零 tempnumb=0; /上位机发送数据计算值清零5、 LRC校验模块unsigned char MODBUS_LRC(unsigned char *auchMsg, unsigned short usDataLen) unsigned char uchLRC = 0 ; / LRC 初始化while (usDataLen-) / 完成整个报文缓冲区uchLRC += *auchMsg+ ; /缓冲区字节相加,无进位return (unsigned char)(-

18、(char)uchLRC) ; / 返回二进制补码 2发送和应答校验码计数程序void In_LRC() unsigned int a; for(a=1;a(tempnumb-3);a+=2) tempR*(a-1)/2=(asciitohe*(R*a)4)&0*0F); LRCLo = he*toascii(LRC&0*0F); void Out_LRC() unsigned int c; for(c=1;ctempnumt;c+=2) tempT*(c-1)/2 = (asciitohe*(T*c)4); tempT*(c-1)/2 = (asciitohe*(T*c)4)&0*0F);

19、LRCtLo = he*toascii(LRCt&0*0F); 6、 进制转换/十六进制数转换为ASCII码unsigned char he*toascii(unsigned char he*) if(he*=0*09) return he*+0*30; else return he*+0*37; /ASCII码转换为十六进制的数unsigned char asciitohe*(unsigned char ascii) if(ascii=0*39) return ascii-0*30; else return ascii-0*37; /十进制转十六进制,由于组态王通信时会自动将十六进制数转换位

20、十进制数,因此需要在单片机内将十进制数转换位十六进制数,这样组态王读到的就是十进制的数据。unsigned char shitohe*(unsigned int shi) int i,b,d,c; int a=0; d=4;char shiliu10; while (shi) /shi代表相应的十进制数 c=shi%16; /每次除以16取余求得相应的十六进制数shi=shi/16; shiliua = c; a+; for(i=a;i=4;i+) /得到的数据首位倒置,才是要求的十六进制数 shiliui=0; for(b=0;b4;b+) d-; Bufb=shiliud; return

21、0; 7、 波特率、流量、温度的设置void selflow(unsigned char selflow) /选定流量 switch(selflow) case 0:flow=100; break; case 1:flow=1799; break; case 2:flow=5000; break; default:flow=1799; break; void seltemp(unsigned char seltemp) /选定温度 switch(seltemp) case 0:temperature=1;break; case 1:temperature=20; break; case 2:t

22、emperature=100; break; default:temperature=20; break; void selbps(unsigned char selbps) /设定波特率 switch(selbps) case 0: UCA1CTL1 |= UCSSEL_1; / 时钟源选择 UCA1BR0 = 0*1B; /1200 UCA1BR1 = 0*00; UCA1MCTL = 04; break; case 1: UCA1CTL1 |= UCSSEL_1; / 时钟源选择 UCA1BR0 = 0*0D; /2400 UCA1BR1 = 0; UCA1MCTL = 0*0A; br

23、eak; case 2: UCA1CTL1 |= UCSSEL_1; / 时钟源选择 UCA1BR0 = 6; /4800 UCA1BR1 = 0; UCA1MCTL = 0*0C; UCA1CTL1 &= UCSWRST; / 使能串口功能 UCA1IE |= UCR*IE; / 使能接收中断 _BIS_SR(GIE); break; case 3: UCA1CTL1 |= UCSSEL_1; / 时钟源选择 UCA1BR0 = 3; /9600 UCA1BR1 = 0; UCA1MCTL = 06; UCA1CTL1 &= UCSWRST; / 使能串口功能 UCA1IE |= UCR*I

24、E; / 使能接收中断 _BIS_SR(GIE); break; default:UCA1CTL1 |= UCSSEL_1; / 时钟源选择 UCA1BR0 = 3; / 32768hz/3=9600 UCA1BR1 = 0; UCA1MCTL = 06; break; 8、 主函数void main(void) WDTCTL = WDTPW+WDTHOLD; /关闭看门狗 clock_init(); /时钟初始化 lcm_init(); /LCM初始化 RS232_init(); RS232_open(); _EINT(); /翻开总中断 while(1) 总结本次课程实习,主要对组态王的学

25、习有了更深的认识,能够更好的使用组态王软件,与理解他的工作原理。通过不断的学习与使用,也加强了我学习知识,查阅资料的能力。本次课程中有很多以前没有遇到过的问题,例如画面命令的编写,之前是通过PLC,而这次是直接用组态王模拟,需要定义时与命令中的变量名称一样。编程思路与方法与plc相似。通过学习,收益良多,而且这次接触了新的内容,通讯协议。这局部内容较难理解,我们也认真努力的去学习了解它,虽然最后没能将通信局部弄出来,但其中的收获是无价的,再次感谢教师的教导。遇到的问题:组态局部整体设计,管道参数的设计,画面命令等一些细节方面的问题。解决方法:通过与同学交流探讨,设计整体画面。查阅资料,与教师交流,设置管道参数等等。例如设置管道参数,需要考虑管道何时流水,与泵的关系,拿出进水泵为例,如果三个入水泵都开才有水需用与命令,假设三个进水泵有一个开有水,则用或命令。遇到问题:通信协议接触较少,内容比较抽象,入手难。解决方法:与队友商量,查阅大量资料,分工协作,从皮毛到深入,通过不断地尝试,一步一步解决问题,虽不能实现功能要求,最重要的是学到了知识,之后遇到这样的问题将更有信心解决。. z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!