您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 第5章典型网络化工控产品应用技术
第5章典型网络化工控产品应用技术本章主要内容5.1嵌入式控制器BL20005.2DynamicC语言5.3BL2000以太网接口技术应用实例5.4牛顿-7000工控模块介绍5.5牛顿-7000系统主要组网技术5.6基于牛顿模块的电加热炉温度控制实例5.1嵌入式控制器BL2000本节主要内容5.1.1BL2000概述5.1.2BL2000系统的特点5.1.3BL2000子系统5.1.4BL2000的性能指标5.1.1BL2000概述BL2000是Wildcat公司生产的一个功能强大的开放的实时嵌入式系统,其RabbitCoreRCM2000模块内含Rabbit2000微处理器、大容量Flash及SRAM、内置以太网接口,可直接通过网络实时监控;具备RS232/RS485接口,可是各种串行设备快速进行网络连接;内置A/D、D/A转换器,可快速有效的实现A/D、D/A转换。图5-1BL2000单板系统实物图5.1.2BL2000系统的特点BL2000系统的特点介绍如下:①具有RJ-45插口的10Base-T以太网接口②简便的连通性③快速的22.1MHz时钟④多达28个数字I/O通道⑤可方便实现A/D和D/A,具有4个串口⑥内含128KB的SRAM和256KB的Flash(可扩展的)⑦BL2000单板电路中具有在板继电器⑧带有后备电池的时间/日期时钟5.1.3BL2000子系统•BL2000的结构原理图图5-2BL2000结构示意图5.1.3BL2000子系统•BL2000的引脚结构图图5-3BL2000引脚结构图5.1.4BL2000的性能指标BL2000系列是一款低成本、高性能的集成一体化单板控制器,适合使用在设备控制,生产线过程监控等方面。具有极高的I/O密度,体积小巧,具有独立采集、测控能力、方便组网等功能。BL2000的性能指标见附录图表5.2DynamicC语言本节主要内容5.2.1DynamicC语言概述5.2.2DynamicC的设置5.2.3基于B/S的DynamicC程序设计基本步骤5.2.4嵌入式基本输入输出程序的编写方法5.2.5编写简单的TCP/IP程序5.2.6嵌入式系统多任务的处理5.2.7编写简单的CGI程序5.2.8DynamicC同网页之间的连接5.2.1DynamicC语言概述1DynamicC语言的特点①集编辑、编译、连接、下载、调试等功能为一体。②支持汇编语言。③具有很强的调试能力。④提供了C语言的扩展以支持实际的嵌入式系统开。发,支持协作式和抢先式的多任务进程。⑤提供了许多函数库源代码。⑥直接对存储器进行编译。⑦作为应用程序运行于PC机上,可以在无预安装程序的情况下冷启动基于Rabbit微处理器的目标系统。5.2.1DynamicC语言概述2DynamicC的几点创新①函数链(Functionchaining)。②协语句(Costatements)。③协函数(Cofunction)。④Slice语句。⑤Interrupt关键字。⑥DynamicC具有一系列的特性允许编程者最大限度的利用扩展存储器。5.2.1DynamicC语言概述3DynamicC设计规范①使用标准的编程电缆。②至少扩展32K静态RAM。③用允许列表内的闪存。④用32.768KHz频率的振荡器驱动备用电池时钟。⑤用614KHz或1.8432MHz的倍频的振荡器驱动主处理器时钟。5.2.2DynamicC的设置•DynamicC的开发环境图5-4Dynamic的开发环境脚结构图5.2.2DynamicC的设置①设置[Options]→[Compiler]选项:如图所示需要更改下面两个选项,使得程序保存在Flash中,以便在掉电后不丢失,默认的情况是保存在RAM中。图5-5Dynamic编译设置5.2.2DynamicC的设置②设置[Options]→[Communications]选项:通讯参数如图,需要注意要把处理其验证的选项取消掉,否则连接不上。图5-6Dynamic通讯设置5.2.2DynamicC的设置③设置[Options]→[Configure]选项:根据用户实际使用的主板选择相应的处理器,这里选了BL2000。图5-7Dynamic目标板的选择5.2.3基于B/S的DynamicC程序设计基本步骤对于一个初级用户来说需要学会以下五个步骤:第一步:完成输入输出,能够同外部的现场设备实现检测和控制。第二步:学会基本的网络编程。第三步:学会多任务处理过程。第四步:学会简单的CGI程序设计。第五步:将网页和用户编写的C程序连接起来。5.2.4嵌入式基本输入输出程序的编写方法使用Dynamic完成系统的输入和输出非常简单,按照C语言的基本编程方法,适当调用相应的函数既可以完成功能,常见的输入输出函数如下表表5-2常用输入输出函数5.2.5编写简单的TCP/IP程序•第一步:需要包含以下两个库(使用静态连接该库)。#usedcrtcp.lib#usehttp.lib•第二步:将需要的网页文件装入到下位机。#ximportF:\网络测控/bl2000/pages/IOTest.SHTMLindex_html•第三步:设置使用文件的类型。constHttpTypehttp_types[]={{.shtml,text/html,shtml_handler},//ssi{.html,text/html,NULL},//html{.cgi,,NULL},//cgi{.gif,image/gif,NULL},{.jpg,image/jpg,NULL}};•第四步:定义使用的IP地址以及使用的网关。#defineMY_GATEWAY172.168.0.1#defineMY_IP_ADDRESS172.168.0.180#defineMY_NETMASK255.255.192.0第五步:利用函数完成通讯功能。sock_init();//初始化sockethttp_init();//初始化HTTP服务器tcp_reserveport(80);//初始化监听的端口while(1){http_handler();//理用户连接,需要不断地重复调用}5.2.6嵌入式系统多任务的处理它的语法结构如下:While{costate{做第一件事情waitfor(DelayMs(lmixtime));做第三件事情}costate{做第二件事情}}系统启动第一件事情第二件事情第三件事情图5-9多任务执行过程示意图5.2.7编写简单的CGI程序最简单的CGI程序的编写方法:第一步:要使用CGI程序必须在对TCP/IP协议编程(5.2.5小节中介绍的方法)中的第三步中必须包含.cgi才能够使用。第二步:定义CGI程序同函数的映射关系。这样嵌入式的函数就同网页联系起来了。constHttpSpechttp_flashspec[]={*******************************************************{HTTPSPEC_FUNCTION,/led0tog.cgi,0,led0toggle,0,NULL,NULL},****************************************************};第三步:实现上面定义的映射成为CGI的程序。第四步:在网页中可以直接将CGI作为一个页面直接调用。例如:AHREF=/led0tog.cgi5.2.8DynamicC同网页之间的连接对于网页的设计,可以借助Fontpage或者Dreamwave等工具进行设计,但最简单的方法是利用现成的网页,改动网页的源代码,即可得到满意的网页。此外还可以添加一些动画,达到更好的效果。这里需要注意的是客户使用的变量是如何同服务器的变量进行交互的。下面的例子演示了交互过程。在DynamicC中定义内部变量input0,通过下面的语句同网页中的变量进行映射。constHttpSpechttp_flashspec[]={*************************************************{HTTPSPEC_VARIABLE,input0,0,inl0,PTR16,%s,NULL},***********************************************};5.3BL2000以太网接口技术应用实例本节主要内容5.3.1头定义(宏定义)5.3.2函数与公共变量的定义5.3.3CGI映射函数5.3.4配置装入Flash中的的文件和变量5.3.5主程序5.3.1头定义(宏定义)•#classauto//定义为动态变量•/******************************•*配置字节*•*-------------*•*更改网关以及IP地址适应自己的网络*•******************************/•#defineMY_GATEWAY10.103.0.1//定义默认网关•#defineMY_IP_ADDRESS10.103.1.225//定义BL2000的IP地址•#defineMY_NETMASK255.255.254.0//定义子网掩码•#defineTCP_BUF_SIZE2048//定义网络的缓存•/*WEB服务的配置字节*/•#defineHTTP_MAXSERVERS2//定义为最大服务两个用户•#defineMAX_TCP_SOCKET_BUFFERS2•#defineREDIRECTHOSTMY_IP_ADDRESS•#defineREDIRECTTOhttp:/iotest.htm//定义默认登陆网页•#memmapxmem•#usedcrtcp.lib//分别使用TCP基本库和HTTP库•#usehttp.lib•#ximportC:\试验设备\整理版\基本IO试验/pages/iotest.htmindex_html•。。。。。•#ximportC:\试验设备\整理版\基本IO试验/pages/oc.jpgoc_jpg•//定义倒入网页资源并且给该资源附一个唯一个名称•//格式#ximport“文件名称包含路径”唯一名称•/*定义可以使用的文件类型*/•constHttpTypehttp_types[]=•{•{.shtml,text/html,shtml_handler},//ssi(ServerSideIncludes)•{.html,text/html,NULL},//html•{.cgi,,NULL},//cgi•{.gif,image/gif,NULL},•{.jpg,image/jpg,NULL}•};5.3.2函数与公共变量的定义voidupdate_display();charled0[15];//开关量输入显示图片的文件名。。。。。floatfda1;//模拟量采集的数值5.3.3CGI映射函数根据当前的开关状态实现按钮功能的翻转,led0是一个字符串变量,保存的是当前显示按钮的图片的名称,当有按钮按下的时候翻转状态,同时输出。intled0toggle(HttpState*state){if(strcmp(led0,oo.jpg)==0)//如果是开状态则转为关状态outbuffer[0]=0;elseoutbuffer[0]=1;update_display();//更新输出显示cgi_redirectto(state,REDIRECTTO);//根据用户输入重新定向网页,完成自动刷新return0;}。。。。。。模拟量输出映射的CGI函数intsubmit(HttpState*state){autointi;。。。。。。return0;}5.3.4配置装入Flash中的的文件和变量•//需要注意led0tog.cgi并不是真正存在的文件,是指的上面定义的函数。•//这个同前面定义的函数声明并不矛盾,编译器是根据下面的列表定义的文件决定•//将什么资源文件写入FLASH。•constHttpSpec
本文标题:第5章典型网络化工控产品应用技术
链接地址:https://www.777doc.com/doc-273413 .html