当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]Windows 2K平台下多机通信卡

摘要:在工业现场,监控系统经常采用RS-485/423/422通信标准。然而,在Windows2K平台下,复杂的多机通信和大数据量的传输会加重计算机的负担。作者采用自制的多机通信卡解决了这一问题。本文介绍了Windows2K平台下多机通信的基本原理,论述了多机通信卡的设计方法,进一步阐述了驱动程序设计的一般原则。

关键词:RS-485,单片机,多机通信,WDM

1引言

在电力监控系统中,为保证数据通信的可靠性,从机经常采用RS-485标准接口同主机进行通信。通常,主机是一台安装有Windows9X、WinNT或Windows2K等操作系统的计算机。从机为8051单片机系统,8051串行口的输入输出为TTL电平,抗干扰性较差,只能在几米的范围之内传输数据。

为了增强抗干扰性,提高串地通信的可靠性,增加传输距离,必须采用标准串行总线接口。若将串行口的输入输出电平转换成目前流行的RS-485标准串行总线接口,那么主机也必须完成相应的RS-485转换接口。普遍采用的做法是给计算机外接一个RS-485/232转换接口卡,利用现有的RS-232接口完成主机同从机之间的通信。

在单机通信的情况下,这种做法是可以的。但是在多机通信中,实现起来非常麻烦,而且会大量占用计算机CPU的时间。下面介绍Windows平台实现通信的几种基本方式,以及开发多机通信卡的方法和技巧。

2Windows平台下多机通信方式

利用计算机的串行通信适配器,其核心为可编程异步收发器UART8250芯片,8250由10个可寻址寄存器供CPU读/写,实现与外界的数据通信,制动通信协议和提供通信状态信息。这样,可以满足单机通信的要求。

8051单片机的串行通道是一个全双工的串行通信口,既可以实现双机通信,也可以实现多机通信。当串行口工作在方式2或方式3时,若特殊功能寄存器SCON的SM2由软件置为“1”,则为多机方式;若SM2置为“0”,则为9位异步通信方式。

在多机通信时,8051的帧格式是11位,其中第9位是SCON中的TB8,它是多机通信时发送地址(TB8=1)或发送数据(TB8=0)的标志。

计算机的串行通信接口芯片8250并不具有多机通信的功能,也不能产生类似8051的TB8。为了完成多机通信的功能,一般的实现方式是:

计算机给每台8051单片机系统发送9位数据,查询是否有要发送的数据,并等待应答。若有,则接收数据;没有,则继续查询下一台。由此可以看出,这种通信方式速度是很慢的(如果有一台8051长时间没有响应,则耗时更长),而且也并不可靠,从机的台数越多则计算机的资源浪费就会越严重。这种实现方式效率不高,不能满足我们的通信要求。

因此,直接利用计算机串口的方式进行通信是行不通的。为了尽可能减轻CPU的负担,采用自行设计的智能通信卡,利用中断方式的通信(这里指的是从机与通信卡之间的通信方式),来解决这个问题。

3通信卡与多个8051通信的原理

为完成异步串行通信,首先就需要实现异步收发器的功能,其次还要实现多机通信时发送的帧格式。考虑到8051除了实现异步收发的功能外,还可以编制控制程序,使用起来更加灵活、方便,因此,用8051来实现异步收发器。为了提高通信速度,从机与通信卡之间采用中断通信方式。

具体的实现方案如图1所示。

图示的这种硬件结构,使从机解放出来,平时不必处于监听状态。当计算机要求通信时,可以利用多机通信卡的处理器向从机发出中断信号,即通信卡通过3487(TTL电平转换为RS-485电平),从机通过3486(RS-485电平转换为TTL电平)进行从机中断信号联系。从机进入中断服务程序后,则关闭外部中断,保护现场,监听主机发送的地址信号,并对其进行识别,如果与本机地址相符,取消监听,进入通信状态。

通信卡与计算机进行通信是通过数据接口和译码电路实现的。该接口卡利用中断方式与计算机通信,即通信卡向计算机发出中断请求,计算机接收到相应中断请求后,执行数据收发的任务。其中,计算机对通信卡的访问是利用内存映射方式实现的。

4通信卡设计

该通信卡基于ISA总线工业标准。它的设计主要分为三个部分:地址译码电路、数据接口电路和控制逻辑电路。

(1)地址译码电路

由于采用的是端口统一编址的方式(也就是给每一个I/O端口分配一个存储器地址),I/O端口的寻址信号由地址总线通过译码得到。CPU用存储器读写指令对I/O接口进行读写,此时,I/O端口的读写操作控制信号采用存储器读(MEMR)和存储器写(MEMW)信号。而在通信卡上为实现内存映射就必须完成相应的译码转换,也就是将对应的双口RAM地址与分配的地址空间对应起来,实现地址的转换。

实现时,采用动态配置内存映射设备,改变内存映射端口的地址也相对方便,比老式的ISA[1]接口用跳线配置要优越些。该双口RAM为8K,但计算机能够访问的只有4K。其中CTRL线是8KRAM的控制线,通过该线可以实现“乒乓”结构[1]的数据传输。

(2)数据接口电路

数据接口电路实现数据线的驱动功能。尽管很多计算机主板的数据总线都经过驱动,但为了确保可靠性,数据总线不应直接与双口RAM相连接,而是通过数据驱动器件与数据线相连。

(3)控制逻辑电路

控制逻辑电路是与计算机通信的核心部分,该部分主要是实现“乒乓”结构的硬件控制部分。当存储器中的RAM达到HALFREADY(半满状态)时发出中断申请实现数据的传输,同时,将CTRL状态取反,使得计算机访问的是其中的一半,即实现了数据传输的“乒乓”结构。此外,数据的读写控制也通过控制逻辑实现。

89C52实现与从机多机通信,同时将得到的数据存入双口RAM中,控制逻辑协调RAM的数据读写工作。

5设备驱动程序的设计

在Windows9x下的VxD(虚拟设备驱动程序)相比,Windows2K下的WDM(Windows设备驱动模型)驱动程序要复杂一些。

WDM驱动程序是分层的,不同层上的驱动程序有着不同的优先级[2]。此外,WDM还引入了FDO(功能设备对象)与PDO(物理设备对象)两个新类来描述硬件。[!--empirenews.page--]

在开发驱动程序过程中,使用了DriverStudio中的DriverWorks工具用来创建WDM框架。

DriverWorks提供用于访问内存映射地址的类KmemoryRange和KmemoryRegister。实现步骤如下:

(3)在初始化成功后,可以调用类KmemoryRange的成员函数实现对内存映射地址寄存器[2]的访问。

在驱动程序的开发中还涉及到硬件中断的处理。具体地说,首先安装一个中断服务例程(ISR),当相应的中断发生时,内核调用它的中断服务例程。中断服务例程的第一个工作是判断该中断是否由自己的设备产生。如果不是,则返回FALSE,交给其他的中断服务例程;如果是,则处理该中断,并返回TRUE。

同样,DriverWorks提供Kinterrpt和KdefrredCall类处理中断。具体编程如下:

6结束语

由于在接口卡中采用了89C52芯片完成数据收发工作,同时协助主机进行信号的处理,这在很大程度上减轻了主机的负担,加速了I/O操作。在驱动程序的编制上,采用了WDM驱动模型,这样可以很方便地将程序移植到任何支持WDM模型的操作系统中去。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

将您的树莓派Pico变成带有触摸屏界面的USB-HID设备!在这个项目中,我们将在Arduino IDE中设置编程环境,为3.5”Pico Touch LCD屏蔽配置库,测试基本功能,创建简单的按钮(用于复制和粘贴),显...

关键字: 树莓派 触摸屏 LCD Windows

本文将演示一种加速嵌入式系统设计原型阶段的方法,说明如何将与硬件无关的驱动程序和传感器结合使用,简化整个嵌入式系统的器件选择。同时还将介绍嵌入式系统的器件、典型软件结构以及驱动程序的实现。后续文章“利用与硬件无关的方法简...

关键字: 嵌入式系统 驱动程序 传感器

这是一个演示,展示了我正在开发的自定义gpt,并在r/arduino上发布了一系列关于它的内容。它可以很容易地与您的任何项目在您的标准工作。/ Arduino文件夹。它是多平台的,所以无论你运行的是Windows、mac...

关键字: Windows macOS Linux Arduino项目管理器

在这里,我们在相当旧的Latte Panda V1单板计算机上启动了Batocera,该计算机于2015年发布,拥有英特尔Atom x5-Z8350四核处理器和4GB DDR3L RAM。这个处理器在当时对于SBC来说是...

关键字: 单板计算机 Windows x86处理器

通信接口的远程称重数据采集方法,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。

关键字: 通信 RS-485

随着科技的飞速发展,嵌入式系统已经成为现代生活不可或缺的一部分,它们被广泛应用于从智能家居到自动驾驶汽车的各个领域。而在这些系统中,C语言由于其高效性、可移植性和对硬件的直接控制能力,成为了嵌入式系统开发的首选语言。

关键字: C语言 驱动程序

Amazon Q Developer是首个基于生成式AI的助手,旨在加速Windows.NET、VMware和大型机工作负载的迁移和现代化,缩短转型时间并降低成本 北京2024年12月23日 /美通社/ -- ...

关键字: DEVELOPER 亚马逊 NET Windows

在现代工业自动化领域,Modbus和RS-485是两种广泛应用的通信协议和技术。它们各自具有独特的特点和优势,结合起来更是为工业设备之间的通信和控制提供了强大的支持。本文将详细介绍Modbus协议和RS-485通信接口,...

关键字: Modbus RS-485

RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响...

关键字: 差分信号 RS-485 通信

Linux上的大多数软件都是开源的,开发者在全球范围内对其进行了维护,并为之作出了贡献。这就意味着,用户可以在更大程度上,获得更大的自由度,更多的选择。而且,在 Windows中,很多先进的特性和专门的软件都是需要许可的...

关键字: Linux Windows
关闭