您的位置 首页 观点

LonWorks-USB互联适配器的规划开发

LonWorks技术是美国Echelon公司于上世纪90年代初推出的一种现场总线技术。LON(LocalOperatingNe…

LonWorks技能是美国Echelon公司于上世纪90年代初推出的一种现场总线技能。LON(Local Operating Network)的意思为部分操作网络,它是用于开发监控网络体系的一个完好的技能渠道,LonWorks现场总线在网络通讯方面具有杰出的长处,作为现场总线中的佼佼者在国内各个范畴的测控体系中广泛盛行。

通用串行总线(Universal Serial Bus,即USB)是一种快速、灵敏的总线接口。与其它通讯接口比较,USB总线接口最大的特色是易于运用,这首要表现在成本低、适用于多种设备、支撑热插拔等方面,而且一切的装备进程都由体系主动完结,无需用户干涉。现在,市场上供给的USB操控器首要有两种:带USB接口的单片机(MCU)和朴实的USB接口芯片。本文选用Cypress公司推出的带智能USB接口的EZ-USB单片机。该单片机极大地降低了USB外设的开发难度,为PC机外设的制造商供给了一个功用优秀、价格较低的规划方案。选用USB接口规划开发的LON网互联适配器很好地处理了传统适配器由于RS-232与PC/Laptop互联而形成的速度上的瓶颈。

1 体系框图及作业原理

1.1体系框图

体系框图如图1所示。

互联适配器是LON网与PC/Laptop的接口,在通讯进程中起着要害的效果,它既完结了LON网与PC/Laptop的互联,又完结了数据的交流。互联适配器作为LON网的一个特别的网络节点——通讯处理器,能依照LonTalk协议与LonWorks总线上一切散布在现场的智能节点进行对等的数据通讯,起到上传下达的桥梁效果。当现场的测控设备有数据送到LonWorks网络上时,互联适配器担任把一切发送给它的信息接纳下来,将测控设备发送来的LonTalk显式报文从头打包装帧,向PC/Laptop发送。一起,它将从PC/Laptop接纳来的已解析的数据按LonWorks现场总线通讯协议结构LonTalk显式报文,发送给LonWorks网上的测控设备。

相对USB体系而言,PC/Laptop是USB主机,互联适配器只是USB外部设备。在整个USB体系中只要一个主操控器,即主机(PC/Laptop),主机是总线操控者,USB设备呼应主机恳求。体系软件规划部分也是针对主机和外部设备这两部分打开的。

1.2 作业原理

互联适配器中选用Neuron芯片预界说的并口I/O运用方式完结双CPU的通讯,并行口的速率可达3.3Mbps,完结了高数据速率。

并行I/O运用方式下运用Neuron芯片的11个I/O口进行通讯,其间,IO0~IO7为双向数据线,IO8~IO10为操控信号线,凭借令牌传递/握手协议,并行I/O口可用来外接处理器,完结Neuron芯片与外接各类微处理器之间的双向数据通讯,在这儿选用EZ-USB单片机与Neuron芯片互连。主机PC/Laptop操控USB外部设备,经过互联适配器与LON网各现场节点通讯,其实质便是互联适配器中EZ-USB单片机与Neuron芯片之间的通讯。

并行口的作业方法有三种,即主方式、从A方式、从B方式。不同的方式下,IO8~IO10这三根操控信号线的意义不同,这儿运用的是从A方式。在从A方式中,以为Neuron芯片为从CPU,EZ-USB单片机为主CPU,主CPU和从CPU之间的数据传输经过虚拟的写令牌传递协议(Virtual Write Token-Passing Protocol)得以完结。主CPU和从CPU替换地获得写令牌(Write Token),只要具有写令牌的一方能够写数据(不超越255个字节),或许不写任何数据传送一个空令牌。传送的数据要遵照必定的格局,即在要传送的数据前面加上指令码和传送的数据长度,指令码有CMD_XFER(写数据)、CMD_NULL(传递空令牌)、CMD_RESYNC(要求从机同步)、CMD_ACKSYNC(承认同步)四种,最终以EOM字节完毕。在从A方法中,整个握手/应对协议以及数据传送的完结进程是主动完结的。在通讯曾经,主CPU和从CPU之间先树立握手信号,即HS信号有用(这由3150的固件主动完结)。然后,主CPU再送一个CMD_RESYNC指令,要求从CPU同步,而从CPU接纳到这个信号今后,则发送CMD_ACKSYNC,表明现已同步、能够通讯了。同步今后,虚写令牌就在主CPU和从CPU之间无限地、替换地传递,具有虚写令牌的一方就能够向数据总线上写数据,即主CPU能够往从CPU写数据,从机也能够将数据传往主CPU。

需求特别阐明的是,Neuron芯片的握手及令牌传递的完结是主动的,可是关于非Neuron芯片的微处理器(EZ-USB),就要求编程人员经过编程使非Neuron芯片的微处理器能够履行Neuron芯片的握手/令牌传递算法,也便是仿制Neuron芯片的行为,然后完结两边的通讯。

图2 互联适配器硬件结构框图

硬件规划

互联适配器的结构框图如图2所示,首要由神经元芯片和EZ-USB单片机组成。

神经元芯片(Neuron Chip)是LonWorks技能的中心?熏 芯片中含有Lontalk协议的固态软件(简称固件),使其能可靠地通讯。神经元芯片首要包含TMPN3150和TMPN3120两大系列,由日本东芝公司出产。TMPN3150支撑外部存储器,合适更为杂乱的运用,而TMPN3120则不支撑外部存储器,它本身带ROM。所以,在互联适配器的规划中选用的是TMPN3150,该芯片内有三个微处理器,即MAC处理器、网络处理器和运用处理器。对神经元芯片进行外围电路的规划和扩展,使之成为LonWorks网上的一个特别的LON节点,这样它不仅能够与LonWorks网络上的LON节点进行通讯,还能够作为适配器的协通讯处理器。

TMPN3150片内存储器的地址规模是E800H~FFFFH,包含2KB的RAM、0.5KB的EEPROM、2.5KB保留空间和1KB的用于存储器映象I/O的空间。TMPN3150有16根地址线,可寻址64K空间,能够外接存储器,如RAM、ROM、EEPROM或FLASH等。由于开发Neuron芯片时选用Neuron C言语,内存占用大,别的其作为通讯协议处理器运用要求有很多的数据缓冲区进行数据交流,而只是运用3150内部的2KRAM空间是远远不够的,因而扩展了外部存储器FLASH和RAM。FLASH选用AT29C512,其地址规模是0000H~7FFFH;RAM选用IS61C256AH-15N,其地址规模是8000H~DFFFH。AT29C512和IS61C256AH-15N的地址规模由Neuron芯片的地址线和操控线E及相关的逻辑门电路来确认。神经元芯片的晶振为10MHz。Neuron芯片与LON的网络介质的接口选用上海工业主动化外表研究所出产的双绞线收发器。收发器按其传输速率能够分为TPT/XF-78(传输速率为78kbps)、TPT/XF-1250(传输速率为1.25Mkbps)两种类型,用于满意不同的通讯要求。这儿选用的是TPT/XF-1250。

EZ-USB单片机选用的是EZ-USB2100系列中具有44个引脚的AN2131S。AN2131S是互联适配器的主CPU,运用其I/O端口足以完结所需的功用。EZ-USB芯片中包含内部程序/数据RAM共8KB?熏不再需求ROM或其它非易失性存储器。主CPU与辅CPU的衔接很简略,即与辅CPU的11个I/O口进行衔接。单片机的PB口接上辅CPU的IO0~IO7,为两个CPU的并行通讯数据端口。单片机的PC0~PC2别离接神经元芯片IO8~IO10,完结操控功用。AN2131S再经过引脚USBD+和USBD-与主机PC/Laptop互联。

3 软件规划

适配器的软件程序规划分为两大块。一块为对主机PC/Laptop程序的软件规划,另一块为对外围USB设备——互联适配器程序的软件规划。

3.1 USB主机的软件规划

主机的软件规划首要包含两部分:一是根据USB的互联适配器的驱动程序。如图3所示,USB通讯运用分层驱动模型,每层处理一部分通讯进程,这样能够使不同设备在一些使命上运用相同的驱动。这儿运用Microsoft WDM DDK和Microsoft Visual C++6.0来完结。

二是USB通讯程序和用户服务程序。用户服务程序经过USB通讯程序与体系USBDI(USB Device Interface)通讯,由体系完结USB协议的处理与数据传输。从逻辑上讲,USB数据的传输是经过管道进行的。USB体系软件经过缺省管道(与端点0相对应)办理设备,设备驱动程序经过其它的管道来办理设备的功用接口。为了满意不同外设和用户的要求,USB供给了四种传输方法:操控传输、同步传输、中止传输和块传输。本体系运用的是块传输。EZ-USB供给了16个用于块传输的端点,包含7个IN端点(EP1_IN~EP7_IN)和7个OUT端点(EP1_ OUT~EP7_OUT)。每个端点都有一个64字节的缓冲区。块端点无方向操控,一个端点地址对应一个方向,所以端点IN1的地址不同于端点OUT1的地址,本适配器就选用这对端点传输数据。其间,端点0在USB体系中有特定意义,它是EZ-USB芯片中仅有的操控端点,用于传输操控信息。

开发能够拜访互联适配器的运用程序,可运用任何一个支撑win32函数CreateFile()和DeviceIoControl()的编译器。首要调用CreateFile()函数,来获得拜访设备驱动程序的句柄,CreateFile()运用设备的链接符作为函数参数。然后调用DeviceIoControl()函数来提交I/O操控码,而且为CreateFile()函数回来的设备句柄设置 I/O缓冲区。最终,还要调用CloseHandle()封闭设备。其间,最重要的函数是DeviceIoControl(),它的功用是完结运用程序与驱动程序之间数据的交流。DeviceIoControl()函数的详细格局为:

BOOL DeviceIoControl(

HANDLE hDevice, //外设句柄

DWORD dwIoControlCode, //I/O操作操控代码

LPVOID IpInBuffer, //输入缓冲区指针

DWORD nInBufferSize, //输入缓冲区巨细

LPVOID IpOutBuffer, //输出缓冲区指针

DWORD nOutBufferSize, //输出缓冲区巨细

LPDWORD IpBytesReturned, //实践回来的字节数

LPOVERLAPPED IpOverLapped //用于异步操作的结构指针

);

3.2 外围USB设备——互联适配器的软件规划

这一部分的软件编写也包含两部分。一部分为对主CPU(EZ-USB)的编写。USB内核功用强大,能够主动完结USB协议的转化,然后大大简化了8051的代码。选用C51言语,并运用EZ-USB的固件函数库和程序结构。结构完结了一个简略的使命循环,用户函数TD_Poll()能够完结USB外设的功用。由于从CPU(Neuron Chip)的并行方式是芯片内部界说的,遵照虚拟的写令牌传递协议,所以需求编写芯片EZ-USB的程序来模仿3150的I/O并行口的从A方式。所以TD_Poll()函数首要完结四项作业:与辅CPU同步、握手、令牌的传送以及并行口数据的读写。

另一部分为从CPU的软件程序的编写,用神经元的编程言语即Neuron C言语完结。从CPU首要完结将并口得到的报文解析,再运用Neuron C的音讯传送机制,将解析的音讯传送给适配器基层的运用节点;一起,还将从适配器基层的运用节点以音讯方式传送上来的数据或信息构形成EZ-USB可辨认的报文,经过并口传送给EZ-USB。由从机内部界说的与并行I/O目标有关的函数首要有:

io_in_ready():当并口上有数据传送到来时,此函数值为TRUE。此刻可调用io_in?穴?雪函数接纳数据。

io_out_request():此函数用来向并口总线宣布恳求以获取令牌。

io_out_ready():当并口总线处于可写状况即3150获取到令牌后,此函数值为TRUE,此刻可调用io_out()函数将数据发送到并口。在调用此函数之前应先调用io_out_request()。

io_in(): 将并口上的数据接纳到缓冲区。

io_out():将缓冲区的数据发送到并口总线上。

本文规划的互联适配器在结构上选用双CPU规划,具有结构简略、小型化的特色,十分合适用于测控体系。在软件规划中,杰出模块的灵敏性,而且USB内核能够主动完结USB协议的转化,大大简化了8051的代码。总归,本适配器具有组态灵敏、成本低、可靠性好、通讯能力强等长处,在工业操控、楼宇主动化等许多范畴有宽广的运用远景。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/235727.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部