现场总线(第4讲)IO对象及其智能节点设计.ppt

上传人:牧羊曲112 文档编号:5015079 上传时间:2023-05-29 格式:PPT 页数:40 大小:3.10MB
返回 下载 相关 举报
现场总线(第4讲)IO对象及其智能节点设计.ppt_第1页
第1页 / 共40页
现场总线(第4讲)IO对象及其智能节点设计.ppt_第2页
第2页 / 共40页
现场总线(第4讲)IO对象及其智能节点设计.ppt_第3页
第3页 / 共40页
现场总线(第4讲)IO对象及其智能节点设计.ppt_第4页
第4页 / 共40页
现场总线(第4讲)IO对象及其智能节点设计.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《现场总线(第4讲)IO对象及其智能节点设计.ppt》由会员分享,可在线阅读,更多相关《现场总线(第4讲)IO对象及其智能节点设计.ppt(40页珍藏版)》请在三一办公上搜索。

1、现场总线控制系统,信息学院自动化系 凌志浩,第4讲I/O对象及其智能节点设计,内容提要,1.Neuron芯片的I/O对象2.现场智能节点设计举例3.通信节点设计举例,1.Neuron 芯片应用I/O对象,1.1 Neuron芯片I/O对象类型 I/O对象简单的讲就是一个定义的输入或输出波形,也可看成是存放在ROM 中供用户程序访问的已编写好的固件例程,如同Windows编程中的各种控件,可直接使用。用户可通过io_out()和io_in()系统调用来访问这些I/O对象,并在程序执行期间完成输入/输出操作。,同步串行I/O对象(Neurowire),Neurowire可实现与外部器件的同步全双工

2、串行数据格式的传送,它可作为主控收发器(提供同步时钟)或被控收发器(接收同步时钟)。只要遵循SPI或National Semiconductors Microwire TM的接口器件,都可以作为Neurowire的外接器件。例如A/D、D/A以及显示驱动器等。,1)引脚配置如下:,主控方式 被控方式,语法:,IO_8 neurowire masterslaveselect(pin)timeout(pin)kbaud(const-expr)clockedge(+/-)io-name;(1)IO_8:必须指定IO_8,片选IO0-IO7。(2)master:由IO8提供时钟;slave:IO8为输

3、入管脚,最大输入时钟为18kbps,占空比为50/50,此时Neuron输入时钟为10MHz。速度与输入时钟成正比。(3)select:为 master指定片选管脚(IO0IO7)。数据输出前,片选为低电平,数据输出后为高电平。(4)timeout:为 slave 指定一个超时管脚(IO0IO7)每当Neuron芯片等待时钟的上升沿或下降沿时,将检查该管脚的逻辑电平。如果检测到逻辑电平1,则传输被终止。这样就允许使用外部超时信号或内部生成的超时信号来限制传输的持续时间。(5)kbaud为master指定比特率,const-expr的结果可以为1,10,或20。对于10Mhz的Neuron芯片输

4、入时钟缺省为20kbps。不能用于 Slave。(6)clockedge(+/-):时钟信号的极性,缺省为上升沿。,2.1 节点组成方式和节点类型,宿主节点(仅靠Neuron芯片)基于HOST的节点(外加处理器)节点类型,2.现场智能节点设计,2.2 节点设计的异同点分析,控制模块相同通信方式相同I/O调理电路各异应用程序描述和I/O对象定义各异,Neuron控制模块,对MC143150芯片进行存储器扩展,利用芯片保留空间和用户可用存储器空间扩展20K的RAM空间和32K的EEPROM程序存储空间,用于存放和运行用户编制的应用程序。,2.3 Neurowire对象,Neurowire可实现与外

5、部器件的同步全双工串行数据格式的传送,它可作为主控收发器(提供同步时钟)或被控收发器(接收同步时钟)。只要遵循SPI或National Semiconductors Microwire TM的接口器件,都可以作为Neurowire的外接器件。例如A/D、D/A以及显示驱动器等。,2.3.1 主控方式,IO8引脚输出同步时钟,IO9 串行数据输出,IO10串行数据输入。引脚IO9的串行数据输出和引脚IO10的串行数据输入是在同一时间完成的。默认是在同步时钟的上升沿串行数据输入和输出,可通过程序可改为下降沿有效。IO0-IO7中的一个或多个管脚可被用作片选信号,允许将多个Neurowire设备连接

6、到Neuron芯片的3总线上。在10Mhz输入时钟的Neuron芯片上,IO8输出的同步时钟速率可指定为1、10、20kbps。这些值与输入时钟成正比。,2.3.2 被控方式(从模式),IO8:接收同步时钟IO9:数据输出 IO10:串行数据输入输入输出在同一时间完成,默认上升沿完成。IO0-IO7:超时引脚,管脚上的逻辑1电平使Neruon从属I/O操作在被传输完指定的位数之前终止。这样就防止了Neuron芯片看门狗定时器由于外部时钟传输的位数比要求的位数少而复位芯片。无论在主控还是被控方式,一次可以传送255位的数据,处理时Neuron I/O挂起应用程序处理,直到操作完成。,2.4 增强

7、型节点的结构,单片机,现场应用:单片机与网络通信:Neuron芯片单片机与Neuron芯片间的数据交换用Neurowire对象,时钟,片选,单片机对Neurowire对象的模拟,单片机模拟从方式:单片机在同步时钟的上升沿从引脚P1.3读取1位数据,同时从P1.4输出1位数据。查询时钟输入信号的高低,实为查询时钟输入信号的上升沿或下降沿。,2.5 现场智能节点设计,2.5.1 节点的功能需求,8路模拟量输入通信功能,2.5.2 节点的基本组成,MAX186的数据采集操作 要启动MAX186进行一次数据采集(即A/D变换),首先需要把图8.7所示的一个控制字与时钟同步送入DIN。当为低电平时,SC

8、LK的每一个上升沿把一个位从DIN送入MAX186的内部移位寄存器。在变低后第一个到达的逻辑“1”定义控制字节的最高有效位,在此之前与时钟同步送入DIN的任意个逻辑“0”位均无效。一个8位控制字的格式及意义如图所示。,数据采集程序,用软件方式控制一次数据采集(即A/D变换)的操作步骤可归纳为:设置图8.7所示的控制字TB1;使MAX186的变低;发送TB1,并接收一个需忽略的字节RB1;发送全零字节,同时接收RB2;发送全零字节,同时接收RB3;将MAX186的拉高。上述过程得到的字节RB2、RB3是A/D变换的结果。在单极性输入方式下,得到的是标准二进制数;对于双极性输入方式下得到的是模2补

9、码。两者所表示的数据均以最高有效位在前的格式输出。由于RB2、RB3两个字节所表示的二进制数据格式中,包含有1个前导零和3个结尾零,因此实际变换结果为:ADV=RB2 32+RB3 8,IO_0 output bit ADC_CS=1;/定义IO_0为位输出对象,作片选信号 IO_8 neurowire master select(IO_0)ADC_IO;/定义神经元I/O对象,用作双向串行接口unsigned short C8=0,4,1,5,2,6,3,7;/顺序定义ADC的通道选择地址mtimer tmAD=500;/定义毫秒定时器,以500ms为数据采集的间隔msg_tag mess_

10、out;/定义报文标签when(timer_expires(tmAD)/当定时间隔500ms到时,驱动该事件处理程序int i,temp;unsigned int adc_info;unsigned long ADH;unsigned long ADL;unsigned long ADV8;for(i=0;i 8;i+)/依次对8个通道进行数据采集/数据采集部分 adc_info=(Ci+8)*16+14;/设置A/C变换控制字TB1 io_out(ADC_IO,/设置500ms间隔,该程序将8个通道的采集数据组成一个如下格式的显式报文,并通过网络发送给网络适配器。msg_out.code 远

11、程智能采集装置的编号msg_out.data0 发送的数据类型(88为采样数据)msg_out.data1 发送的节点类型(2为远程智能数据采集装置)msg_out.data2 0通道采样数据的低8位msg_out.data3 0通道采样数据的高8位:msg_out.data2i+2 i通道采样数据的低8位msg_out.data2i+3 i通道采样数据的高8位:msg_out.data16 7通道采样数据的低8位msg_out.data17 7通道采样数据的高8位,报文处理和发送 msg_out.code=IO_Value;/设置远程装置的编号 msg_out.DATA0=88;/发送的数据

12、类型,88为实时采样值 msg_out.DATA1=NODE_TYPE2;/发送的节点类型 msg_out.service=UNACKD_RPT;/设置报文的服务方式 msg_out.tag=mess_out;/设置报文标签 msg_out.dest_addr.no_address=BROADCAST;/设置目的寻址方式 msg_send();/发送报文tmAD=1000;,3.通信节点设计 及相关软件开发,3.1 控制网络的基本结构,3.2 通信节点的功能,通信节点是控制网络与监控用PC机相互连接的适配接口,是实现分布系统信息收集、数据处理、现场智能节点动作控制等功能的枢纽,在通信过程中起着

13、关键作用。当然,要实现这些功能,智能网络适配器的设计需要以Neuron神经元多处理器芯片为核心,用来加强和改善通信管理,节省占用PC机的时间;利用采用曼彻斯特编译码方式的收发器,实现与网上各智能节点之间的双向数据通信;用双口RAM充当通信过程中现场信息的接收、发送缓冲区,完成最近发送到达的交换数据的存储转发功能,实现网络与PC机之间的数据传输,缓解和避免系统缓存的紧张和瓶颈的产生,保证数据的实时畅通;用非易失性存储器EEPROM存放LonTalk网络协议固件、多任务调度程序、网络适配器通信管理程序以及网络配置信息等。,3.3 通信节点(LonWorks-PC接口、网络适配器)的基本组成器件Ne

14、uron芯片LonWorks总线收发器程序存储器、数据存储器双口RAM,基于ISA总线的通信节点结构,LonWorks总线,在这类应用系统中,实际上仅把Neuron芯片作为通信处理器用,由其按照LonTalk协议与LonWorks网络上的所有智能节点进行通信;而让数据处理、高级监控等复杂应用程序放在PC机上运行。因此,智能网络适配器的通信管理程序严格来说应包括两大部分:其一是由运行在Neuron芯片上的网络接口软件实现15层LonTalk协议,其二是由PC机应用系统的网络驱动程序和应用程序实现67层LonTalk协议。这样,PC机应用系统可依赖网络驱动程序来实现与网络接口协议有关的功能,而网络

15、驱动程序则采用PC机的接口硬件(即智能网络适配器上的双口RAM)与网络接口(即智能网络适配器上的Neuron芯片)进行通信。,应用模式,网络适配器软件负责监控计算机与现场节点之间数据的“上传下达”,当节点数据到达时,适配器接收节点数据并按预定软件协议写入双口RAM数据区中,提供给监控计算机用于计算、分析、显示、打印;同时当监控计算机须对节点进行运行参数设置时,监控软件通过PCI总线控制器把运行参数写入双口RAM参数区,Neuron通过标志位判断是否有参数设置,如果有,把参数数据组成参数报文发送给现场智能节点。,双口RAM访问控制,当数据从现场监控单元以显式报文的形式发送到监控计算机网卡时,Ne

16、uron芯片通过总线收发器把数据读入,进行相应的格式转换和必要的运算后,按规定的软件协议写入双口RAM中。当然,在访问双口RAM时,需要知道其存储单元的有效地址,此时需对双口RAM存储区进行寻址,其中Neuron对双口RAM的寻址算法定义为:EAF(t,n,d);F即为地址换算函数,它与现场监控单元的类型、地址和通道等信息有关。其中EA代表有效地址,t为现场监控单元类型,n为现场监控单元地址,d为现场监控单元中所对应的通道号。,if(msg_in.data0=1)/判断报文类型p=(unsigned int*)DRAM2;/数据存储在双口RAM2中for(i=0;i4;i+)*(p+5*nod

17、eno+i)=msg_in.datai+1;/存储规则*(p+nodeno*5+4)=1;nowonlinenodeno=1;if(msg_in.data0=2)/判断报文类型p=(unsigned int*)DRAM1;/参数存储在双口RAM1中for(i=0;i16;i+)*(p+16*nodeno+i)=msg_in.datai+1;/存储规则,网络接口软件,网络接口软件需完成两个主要任务:其一,采用事件驱动方式,监视网络中各现场智能节点传送来的显式报文,负责将其转换成规范的数据表示格式,通过寻址算法的定位后再将其存入双口RAM中的对应单元,供网络驱动软件读取后,转发给PC机的应用程序;

18、其二,利用定时中断方式,查询PC机有无命令或参数需要下达的标志信息,及时从双口RAM的命令区读取PC机下达给现场智能节点的命令或参数,完成显式报文的打包处理后,以广播方式发送到网上,让相关的现场智能节点予以接收。,在网络接口软件中,极为重要的一个环节是对双口RAM单元的访问,在此主要运用Neuron C语言中的指针来实现。下列的程序段示意了Neuron芯片对双口RAM 的读写方法。#define BYTES 256/设置单元数unsigned int*pnc;/定义指针unsigned long NCBaddr=0 xD000;/基地址unsigned int i;/定义循环变量for(i=0

19、;iBYTES;i+)/读写存储器单元.pnc=(unsigned int*)(NCBaddr+i);/指针指向某一单元*pnc=NCWBuffer;/写存储器单元.NCRBuffer=*pnc;/读存储器单元.,网络驱动软件,网络驱动软件主要是通过对双口RAM的直接访问,实现PC机与网络接口之间的数据交换功能。对双口RAM单元的频繁访问过程采用时钟中断方式驱动。,通信节点软件流程,function ReadWMem(Segment:word;Offset:Word):Word;/Segment:段地址;Offset:偏移地址varAddress:LongWord;/定义局部变量 beginA

20、ddress:=Segment shl 4+Offset;/物理地址=段地址左移4位+偏移地址asm/asm与end间的为汇编语言PUSH EBX/入堆栈MOV EBX,Address/指向地址单元MOV AX,EBX/读地址单元内的数值MOV Result,AX/函数返回值POP EBX/出堆栈end;end;,读函数,ProcedureWriteWMem(Segment:word;Offset:Word;Value:Word);/Segment:段地址;Offset:偏移地址varAddress:LongWord;/定义局部变量beginAddress:=Segment shl 4+Off

21、set;/物理地址=段地址左移4位+偏移地址asm/asm与end间的为汇编语言PUSH EBX/入堆栈MOV EBX,Address/指向地址单元MOV AX,Value/把数值赋给寄存器MOV EBX,AX/把数值写到地址单元内POP EBX/出堆栈end;end;,写过程,网络适配器通信管理软件(数据区分配),在访问双口RAM实时数据库时,首先需要知道存储单元的有效地址,即进行存储单元寻址。PC机对双口RAM的寻址算法为:EA1=f1(SA,OA)OA=g(s,n,t,d)Neuron芯片对双口RAM的寻址算法为:EA2=f2(n,t,d)式中,EA1和EA2代表有效地址(Effective Address),SA代表段地址(Segment Address),OA代表偏移地址(Offset Address);s为子网号,n为节点编号,t为节点类型,d为寻址区域。,寻址算法,本讲结束!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号