CN113824596A - 一种通信分层架构 - Google Patents
一种通信分层架构 Download PDFInfo
- Publication number
- CN113824596A CN113824596A CN202111171895.1A CN202111171895A CN113824596A CN 113824596 A CN113824596 A CN 113824596A CN 202111171895 A CN202111171895 A CN 202111171895A CN 113824596 A CN113824596 A CN 113824596A
- Authority
- CN
- China
- Prior art keywords
- data
- layer
- communication
- physical layer
- vdt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/323—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the physical layer [OSI layer 1]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本发明涉及一种通信分层架构。该构架包括真实物理层、标准物理层、通信协议层、通信应用层和目标应用层;所述真实物理层通过所述标准物理层与所述通信协议层连接;所述通信协议层通过所述通信应用层与所述目标应用层连接;所述真实物理层用于实现数据传输的介质和控制器,实现通信协议的传输;所述标准物理层用于提供所述真实物理层的接口;所述通信协议层用于实现数据格式的校验、解包、打包以及通信的握手,并提供所述通信应用层与所述标准物理层的接口;所述通信应用层用于实现数据功能的解析和打包,提供所述通信协议层与所述目标应用层的接口;所述目标应用层用于实现的目标应用。本发明实现对不同真实物理层的支持,提高处理效率。
Description
技术领域
本发明涉及通信领域,特别是涉及一种通信分层架构。
背景技术
OSI模型,即开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互联为网络的标准框架。OSI模型分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在一般的嵌入式系统的应用中,如果要实现对不同真实物理层的支持,就必须修改其它分层的函数;要实现对不同目标应用的支持,也必须修改其它分层的处理函数。此过程繁琐且效率低下。
因此,基于上述问题,亟需提供一种新的分层架构,实现对不同真实物理层的支持,提高处理效率。
发明内容
本发明的目的是提供一种通信分层架构,实现对不同真实物理层的支持,提高处理效率。
为实现上述目的,本发明提供了如下方案:
一种通信分层架构,包括:真实物理层、标准物理层、通信协议层、通信应用层和目标应用层;
所述真实物理层通过所述标准物理层与所述通信协议层连接;
所述通信协议层通过所述通信应用层与所述目标应用层连接;
所述真实物理层用于实现数据传输的介质和控制器,实现通信协议的传输;
所述标准物理层用于提供所述真实物理层的接口;
所述通信协议层用于实现数据格式的校验、解包、打包以及通信的握手,并提供所述通信应用层与所述标准物理层的接口;
所述通信应用层用于实现数据功能的解析和打包,提供所述通信协议层与所述目标应用层的接口;
所述目标应用层用于实现的目标应用。
可选地,所述真实物理层和所述通信协议层之间主要操作包括:打开设备、发送、接收和关闭设备。
可选地,所述标准物理层发送数据的过程为:
所述通信协议层准备好数据,将数据写入一个连续的缓冲区;
设置数据包序号、数据长度和数据的起始地址之后,发送使能信号置位,并用启动发送信号启动所述真实物理层进行数据发送;
当数据发送完成后,真实物理层设置发送完成信号。
可选地,所述标准物理层接收数据的过程为:
所述标准物理层将接收使能信号置位,以允许所述真实物理层接收数据;
所述真实物理层接收到一个完整的数据包后,将数据写入一个连续的缓冲区,并设置数据包序号、数据长度和数据的起始地址,然后将数据准备好RxRdy置位。当标准物理层检测到RxRdy有效后,开始处理数据,数据处理完成后,设置读取结束标志RxRdEnd。
可选地,所述通信应用层的操作包括:配置、写、读、停止和错误处理。
可选地,所述目标应用层为一个多输入和多输出系统。
可选地,所述目标应用层中各个数据结构之间是并列的关系。
可选地,所述目标应用层的数据以配置文件或只读配置表的方式与所述通信应用层进行关联。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明所提供的一种通信分层架构,根据标准物理层与真实物理层、通信协议层之间的关系,标准物理层只是与真实物理层的接口,为了对真实物理层进行标准化,以实现通信的物理层无关性。只需要通过修改标准物理层相关处理函数,就实现不同真实物理层的支持。此过程中,通信应用层和目标应用层无需任何修改,能够有效简化通信的编程。根据通信协议层与通信应用层、目标应用层之间的关系,只需要通过通信应用层相关处理函数,就能实现不同目标应用的支持。此过程中,通信协议层和标准物理层都无需任何修改。同样,能够有效简化编程,提高工作效率;标准物理层为一个标准的虚拟物理层,使得产品的开发能够脱离真实的物理层。同时便于在没有真实物理层的条件下进行通信的仿真和调试,能够大大减少调试时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的一种通信分层架构结构示意图;
图2为标准物理层与真实物理层、通信协议层之间的关系示意图;
图3为通信应用层与通信协议层、目标应用层之间的关系示意图;
图4为目标应用层示意图;
图5为读操作过程和写操作过程示意图;
图6为本发明所提供的一种通信分层架构的通信数据解包/打包基本原理示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种通信分层架构,实现对不同真实物理层的支持,提高处理效率。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明所提供的一种通信分层架构结构示意图,如图1所示,本发明所提供的一种通信分层架构,包括:真实物理层、标准物理层、通信协议层、通信应用层和目标应用层;
所述真实物理层通过所述标准物理层与所述通信协议层连接;
所述通信协议层通过所述通信应用层与所述目标应用层连接;
所述真实物理层用于实现数据传输的介质和控制器,实现通信协议的传输;通信协议包括:以太网、USB、PCI、PCI-E、1394、RS232、RS485、CAN、Printer、GPIB等;对于没有包概念的协议,如Printer、RS232、RS485等需要加入包的定义;此外,对于某些标准应用,如基于以太网的TCP/IP,则将TCP/IP部分归结到真实物理层。再如基于USB HID的扩展应用,则将USB HID协议以及定义的报表也归结为真实物理层。
所述标准物理层用于提供所述真实物理层的接口;即所述标准物理层为了对真实物理层进行标准化,以实现通信的物理层无关性,同时便于在没有真实物理层的条件下进行通信的仿真和调试。标准物理层可接受的真实物理层有以太网、USB、PCI、PCI-E、1394、RS232、RS485、CAN、Printer、GPIB等。标准物理层也称之为虚拟物理层,在真实物理层不具备的条件下,可以建立虚拟的物理层,用于仿真相应的真实物理层设备,从而使通信系统的设计和真实硬件部分的设计可以分开,并且并行进行开发。
所述通信协议层用于实现数据格式的校验、解包、打包以及通信的握手,并提供所述通信应用层与所述标准物理层的接口;对来自通信应用层的功能数据进行打包,添加基本包头、包尾,并重组成标准物理层支持的数据结构。对来自标准物理层的数据包进行校验、解析,进行错误处理,并去除基本包头、包尾,重组为通信应用层可以识别的包。定义基本的通信数据包,以进行命令、应答、数据的交换。只对基本通信包和相关的校验、握手等进行解析和处理,不对具体数据、命令、应答等进行任何解释。基本的通信寻址、握手等功能。
所述通信应用层用于实现数据功能的解析和打包,提供所述通信协议层与所述目标应用层的接口;即对来自目标应用层的命令和数据进行解析,组成基本的功能数据包,并传递给通信协议层。对来自通信协议层的功能数据进行解析,分解成目标应用层实际使用的命令和数据,并传递给目标应用层。通信应用层定义的标准为不同的设备及不同的应用之间的互联奠定基础。
所述目标应用层用于实现的目标应用。
如图2所示,所述真实物理层和所述通信协议层之间主要操作包括:打开设备、发送、接收和关闭设备。通信协议层首先将基于PC或控制器的设备打开,在设备运行时进行发送和接收指令操作,在结束时关闭设备;
标准物理层发送部分的接口分为两部分:控制部分和数据部分。
数据部分包括:数据包序号(PacketNum)、数据长度(DataLen)、数据起始地址(DataStartA)、数据(Data)。
控制部分包括:发送使能(TxEn)、启动发送(TxStart)和发送完成(TxEnd)。
所述标准物理层发送数据的过程为:
所述通信协议层准备好数据,将数据写入一个连续的缓冲区;
设置数据包序号、数据长度和数据的起始地址之后,发送使能信号置位,并用启动发送信号启动所述真实物理层进行数据发送;
当数据发送完成后,真实物理层设置发送完成信号。
标准物理层接收部分接口也分为两部分:控制部分和数据部分。
数据部分包括:数据包序号(PacketNum)、数据长度(DataLen)、数据起始地址(DataStartA)、数据(Data)。
控制部分包括:接收使能(RxEn)、数据准备好(RxRdy)、数据读取结束(RxRdEnd)。
所述标准物理层接收数据的过程为:
所述标准物理层将接收使能信号置位,以允许所述真实物理层接收数据;
所述真实物理层接收到一个完整的数据包后,将数据写入一个连续的缓冲区,并设置数据包序号、数据长度和数据的起始地址,然后将数据准备好RxRdy置位。当标准物理层检测到RxRdy有效后,开始处理数据,数据处理完成后,设置读取结束标志RxRdEnd。
在发送和接收中,数据包序号PacketNum的宽度为PacketNumWidth,该域为可选项,最小可以为0位宽,最多可以为32位宽,由实际所需的应用来定义。
数据长度DataLen的宽度为DataLenWidth,该域为必须选项,如果采用固定长度的数据,则该项可以隐式传递。数据长度的宽度最小为1位,最大为32位。数据长度的单位(DLenUnit)可以为字节(Byte,8-bit)、字(Word,16-bit)、双字(Dword,32-bit)或者长字(DD,64-bit),具体由实际应用定义。数据长度可以采用方式0(DlenMode0)或者方式1(DlenMode1)来表示数据的长度,有实际所需的应用来定义。数据长度方式0是指用0表示单位数据,用1表示2单位数据,以此类推。数据长度方式1是指用0表示没有数据,用1表示1单位数据,用2表示2单位数据,以此类推。
数据起始地址DataStart的宽度为DataWith,该域为必须选项,如果采用固定起始地址,则该项可以隐式传递。数据起始地址的最小宽度为1位,最大宽度为32位,具体由实际所需的应用进行定义。
发送使能TxEn为1位宽度,为必须选项。当该位为1时,允许真实物理层进行数据发送;为0时禁止真实物理层进行数据发送。当需要发送数据时,应该一直保持该域为1。真实物理层一旦检测到该域为0,则停止发送数据。
启动发送TxStart为1位宽度,该域为单稳态触发域,为必须选项。当该位为1时,真实物理层启动一次数据发送,一旦开始数据发送,将不再检测其状态。建议该域保持为1的时间不要太长,以免误触发。
发送完成TxEnd为1位宽度,为必须选项。当真实物理层处于空闲状态时,该域保持为1;在发送数据的过程中,该域保持为0。
在真实物理层进行数据发送的过程中,不能对数据Data部分进行更改,以免造成错误。
数据域的长度必须不小于最大数据长度,以免缓冲区造成溢出。
所述通信应用层的操作包括:配置、写、读、停止和错误处理。
配置用于初始化该通信,将与通信底层协议及硬件设备相关的信息进行合理配置,从而使底层系统可以按照一定的规则自动运行。
写操作用于应用程序的输出操作,该操作并不需要直接操作硬件,而是将需要写入硬件设备的数据写入到缓冲区中,底层自动进行数据的分发,而无须应用程序关心细节。应用程序可以通过错误处理程序获取写操作的运行状态,并通过异常处理程序进行异常处理。
读操作用于应用程序的输入操作,该操作并不需要直接操作硬件,而是从缓冲区中读取最新的通信数据(或实时数据)。通信硬件底层自动运行,保证所读取的数据与读取时刻的延时在可以接受的范围内。应用程序可以通过错误处理程序获取多操作的运行状态,并通过异常处理程序进行异常处理。
异常处理用于获取通信底层的运行状态(正确、错误、异常、超时等),并对异常状态进行处理(清除错误、重新操作等)。在读操作和写操作中,分别对错误码进行了定义,在读或写的操作中,获取到的数据属于异常处理状态时,会及时做出判断并进行处理。
通信应用层与通信协议层、目标应用层之间的关系如图3所示。
如图4所示,所述目标应用层为一个多输入和多输出系统。
所述目标应用层中各个数据结构之间是并列的关系。
所述目标应用层的数据以配置文件或只读配置表的方式与所述通信应用层进行关联。
目标应用层读写数据,并不是直接从硬件设备中读取或直接写入硬件设备,而是直接和一个缓冲区进行数据交换,通信应用层服务自动将所需要读取的数据放到输入缓冲区中,并根据输出数据缓冲区中数据和状态进行数据分发。目标应用层表现为一个多输入、多输出系统。通信应用层的内部数据通信应用层并不关心。应用层数据输入和输出必须分开放置在各自独立的结构体中,并且输入只能有一个结构体,输出也只能有一个结构体。
应用层的数据定义可直接根据应用程序的需要,直接根据物理信号进行定义,无须关心实际数据通过什么设备得到、如何通过设备得到、实际数据格式、实际数据物理含义、怎样发送到需要的设备、发送到哪个设备等各种参数,这些都由通信应用层来自动实现变换或数据分发。
图5(a)所示,读操作用于从输入缓冲区中读取数据,并且将这些数据进行解析,根据应用的实际情况将这些数据进行类型分析、刻度变换、极值限制、位置变换,最终转换成通信应用层所需要的数据;
1)函数接口
函数原型:int VirReadA(uint8*pRxBuf,uint Start,uint Len,VIRPHYBUF*pBuf);
pRxBuf:用于存储读取到的数据结构起始地址
Start:第一个需要读取的数据的序号
Len:需要读取的数据的个数
pBuf:数据缓冲区及数据格式定义的结构体指针
返回值:错误代码,0表示没有错误,1~8表示有错误
2)错误码定义
1.“无有效缓冲区用于写入数据或无法读取到有效数据”
2.“超出可使用的配置参数范围”,Start与Num引用超出了可用配置表范围
3.“源缓存溢出”,读取源数据超界
4.“数据类型配置错误”,当MapType==Equal时,InType!=OutType(excludedir)
5.“目标缓存溢出”,写入目标数据超界
6.“超出可使用的映射表范围”,超出了IO映射表范围
7.“超出可使用的拟合表范围”,超出了拟合表范围
8.“无法配置操作系统!”
3)说明
所有需要读取的数据需要放在一个结构体中,如:
在调用函数时,只需要将该数据DataIn的首地址作为其中一个参数,并且认为是一个无符号字符串指针。DataIn的具体结构并不在传递参数时体现,而是在配置参数中体现。
Start是第一个需要读取的数据在整个结构体中排列的序号,第一个数据序号为0。如果从T1开始读取,则Start为0;如果从T4开始读取,Start为2。
Len是需要读取的数据的个数,如果从需要读取T1~T4,则有三个数据需要读取,Len为3。数据采用连续读取的方式,这里的连续不是指在结构体中是否连续,而是在配置表中是否,具体参见配置部分。
配置部分结构体指针可以作为一个参数,具体参数见配置部分。
4)简化的函数接口
1.配置部分作为固定参数,因为在同一个应用中,通常配置参数不需要修改。
VIRPHYBUF VirPhyBuf
#define VirRead(pRxBuf,Start,Len)VirReadA(pRxBuf,Start,Len,&VirPhyBuf);
2.数据起始序号及读取的数据个数可作为固定参数,因为在同一个应用中,通常所有的参数都是需要读取的,不需要读取的参数可以不在配置表中配置。
VIRPHYBUF VirPhyBuf;
#define VirPhyReadDataLen x
#define VirReadS(pRxBuf)VirReadA(pRxBuf,0,VirPhyReadDataLen,&VirPhyBuf;
如图5(b)所示,写操作用于将应用层的输出数据,根据应用的实际情况进行类型分析、刻度变换、极值限制、位置变换,最终转换为通信应用层所需要的应用数据,并写入输出缓冲区中等待通信服务程序进行分发。
1)函数接口
函数原型:int VirWriteA(uint8*pTxBuf,uint Start,uint Len,VIRPHYBUF*pBuf);
pTxBuf:需要写入设备的数据结构起始地址
Start:第一个需要写入的数据的序号
Len:需要写入的数据的个数
pBuf:数据缓冲区及数据格式定义的结构体指针
返回值:错误代码,0表示没有错误,1~8表示有错误
2)错误码定义
1.“无有效缓冲区用于写入数据或无法读取到有效数据”
2.“超出可使用的配置参数范围”,Start与Num引用超出了可用配置表范围
3.“源缓存溢出”,读取源数据超界
4.“数据类型配置错误”,当MapType==Equal时,InType!=OutType(excludedir)
5.“目标缓存溢出”,写入目标数据超界
6.“超出可使用的映射表范围”,超出了IO映射表范围
7.“超出可使用的拟合表范围”,超出了拟合表范围
8.“无法配置操作系统!”
3)说明
所有需要读取的数据需要放在一个结构体中,如:
struct{
float Wf;
float Wfaf;
float A8;
uint Dout;
float a1;
float a2;
}DataOut;
在调用函数时,只需要将该数据DataOut的首地址作为其中一个参数,并且认为是一个无符号字符串指针。DataOut的具体结构并不在传递参数时体现,而是在配置参数中提现。
Start是第一个需要写入设备的数据在整个结构体中排列的序号,第一个数据序号为0,。如果从Wf开始写入,则Start为0;如果从A8开始写入,Start为2。
Len是需要写入设备的数据的个数,如果需要写入A8~a2,则有三个数据需要读取,Len为4。数据采用连续写入的方式,这里的连续不是指在结构体中是否连续,而是在配置表中是否连续,具体参见配置部分。
配置部分结构体指针可以作为一个参数,具体参见配置部分。
4)简化的函数接口
1.配置部分作为固定参数,因为在同一个应用中,通常配置参数不需要修改。
VIRPHYBUF VirPhyBuf
#define VirWrite(pTxBuf,Start,Len)VirWriteA(pTxBuf,Len,&VirPhyBuf);
2.数据起始序号及写入的数据个数可作为固定参数,因为在同一个应用中,通常所有的参数都是需要写入到设备的,不需要写入的参数可以不在配置表中配置。
VIRPHYBUF VirPhyBuf;
#define VirPhyWriteDataLen y
#define VirWriteS(pTxBuf)VirWriteA(pTxBuf,0,VirPhyWriteDataLen,&VirPhyBuf);
注:在C++中,可以采用默认参数的方式进行函数原型声明。
3.4配置操作
用于对通信进行配置,并启动通信。
配置操作接口:Vir Config(TCHAR*pRxFileName,unsigned int RxLen,TCHAR*pTxFileName,unsigned int TxLen);
无论是读数据或者写输入,都可以归结为数据位置、格式、刻度、极值限制这一系列操作(图5和图6可以看出),而这些操作就是由配置中来定义。
这一系列变换实际上是两个数组的变化,因此需要知道每个数据在数组(或缓冲区)中的存储方式(包括数据类型、起始地址、所占存储单元个数、存储方向等),同时需要知道对应两组数据的变换关系。
(1)数据格式:包括符号、存储方向、类型、长度、是否有效和显示方式,其中无效类型和显示方式只用于调试。数据格式占用至少2字节,采用无符号数据。
Bit3~Bit10:长度size,1,2,4,8,其他值无效
Bit4:暂未使用,保持0
Bit5:类型Type,0表示整数(Int),1表示浮点数(Float)
Bit6:存储方向Dir,0表示低端模式(Little End,LE),1表示高端模式(Big End,BE)
Bit7:符号Sign,0表示无符号(Unsign),1表示有符号(Signed)
Bit10~Bit8:显示方式DispType,0表示默认(Default),1表示十六进制(Hex),2表示八进制(Oct),3表示2进制(Bin),4表示字符(Char)。该部分仅用于调试,在实际配置文件中可以不存在,并且在实际读写数据过程中不使用该域
Bit11:未使用,保持为0
Bit12:是否有效Valid,0表示有效,1表示无效。当该位是1时,第12位如果为0表示是无效配置,在配置表调试时表示上一项为配置项的最后一项;如果第12位不为0,表示上一个有效项与下一个有效项之间没有使用的字节数。在正式配置文件中该位始终保持0。
typedefenum:unsigned int{
VDT_Sign=0x80,VDT_Unsign=0x00,VDT_SignMask=0x80,
VDT_LE=0x00,VDT_BE=0x40,VDT_DirMask=0x40,
VDT_Int=0x00,VDT_Float=0x20,VDT_TypeMask=0x20,
VDT_Default=0x00,VDT_Hex=0x100,VDT_Oct=0x200,VDT_Bin=0x300,
VDT_Char=0x400,VDT_DispMask=0x700
VDT_ByteMask=0x0F,
VDT_U8=VDT_Unsign|VDT_LE|VDT_Int|1
VDT_S8=VDT_Sign|VDT_LE|VDT_Int|1,
VDT_U16L=VDT_Unsign|VDT_LE|VDT_Int|2
VDT_U16M=VDT_Unsign|VDT_BE|VDT_Int|2
VDT_S16L=VDT_Sign|VDT_LE|VDT_Int|2
VDT_S16M=VDT_Sign|VDT_BE|VDT_Int|2
VDT_U32L=VDT_Unsign|VDT_LE|VDT_Int|4
VDT_U32M=VDT_Unsign|VDT_BE|VDT_Int|4
VDT_S32L=VDT_Sign|VDT_LE|VDT_Int|4
VDT_S32M=VDT_Sign|VDT_BE|VDT_Int|4
VDT_U64L=VDT_Unsign|VDT_LE|VDT_Int|8
VDT_U64M=VDT_Unsign|VDT_BE|VDT_Int|8
VDT_S64L=VDT_Sign|VDT_LE|VDT_Int|8
VDT_S64M=VDT_Sign|VDT_BE|VDT_Int|8
VDT_F32L=VDT_Sign|VDT_LE|VDT_Float|4
VDT_F32M=VDT_Sign|VDT_BE|VDT_Int|4
VDT_F64L=VDT_Sign|VDT_LE|VDT_Float|8
VDT_F64M=VDT_Sign|VDT_BE|VDT_Int|8
VDT_Invalid=0x1000,VDT_Valid=0x00,VDT_ValidMask=0x1000
VDT_InvByteMask=0x0FFF
VDT_Invalid1=0x1001,VDT_Invalid2,VDT_Invalid3,VDT_Invalid4,VDT_Invalid5
VDT_Invalid6,VDT_Invalid7,VDT_Invalid8,VDT_Invalid9,VDT_Invalid10
VDT_Invalid11,VDT_Invalid12,VDT_Invalid13,VDT_Invalid14,VDT_Invalid15
VDT_Invalid16,VDT_Invalid17,VDT_Invalid18,VDT_Invalid19,VDT_Invalid20
VDT_Invalid21,VDT_Invalid22,VDT_Invalid23,VDT_Invalid24,VDT_Invalid25
VDT_Invalid26,VDT_Invalid27,VDT_Invalid28,VDT_Invalid29,VDT_Invalid30
VDT_Invalid31,VDT_Invalid32,VDT_Invalid33,VDT_Invalid34,VDT_Invalid35
VDT_Invalid36,VDT_Invalid37,VDT_Invalid38,VDT_Invalid39,VDT_Invalid40
VDT_Invalid41,VDT_Invalid42,VDT_Invalid43,VDT_Invalid44,VDT_Invalid45
VDT_Invalid46,VDT_Invalid47,VDT_Invalid48,VDT_Invalid49,VDT_Invalid50
VDT_Invalid51,VDT_Invalid52,VDT_Invalid53,VDT_Invalid54,VDT_Invalid55
VDT_Invalid56,VDT_Invalid57,VDT_Invalid58,VDT_Invalid59,VDT_Invalid60
VDT_Invalid61,VDT_Invalid62,VDT_Invalid63,VDT_Invalid64,VDT_Invalid65
VDT_Invalid66,VDT_Invalid67,VDT_Invalid68,VDT_Invalid69,VDT_Invalid70
VDT_Invalid71,VDT_Invalid72,VDT_Invalid73,VDT_Invalid74,VDT_Invalid75
VDT_Invalid76,VDT_Invalid77,VDT_Invalid78,VDT_Invalid79,VDT_Invalid80
}VIRPHYDATATYPE,STDPHYDATATYPE;
主要使用的数据格式与C/C++中变量定义关系(以VC为编译环境,表1中[]内为可选内容):
表1
(2)数据位置:数据首地址在整个缓冲区中的相对位移,以字节为单位
(3)数据映射关系:是两组数据之间的变换关系,这两组数据分别定义为输入和输出。映射关系主要有7种:
其中VMT_Invalid仅用于调试,表示该项及其以后的各项为无效项。
VMT_Equal:表示输出/输入值相等,仅仅存储方向有可能不等。
VMT_Linear:表示输出/输入之间是线性映射关系,out=in×k+b,其中k和b为映射参数。
VMT_Linear2:表示输出/输入之间是线性映射关系,同时输出做最大值和最小值限制,out=(in-xmin)*(y1-y0)/(xmax-xmin)+y0,其中xmin、xmax、y0和y1为映射参数。该类型和VMT_Linear的区别仅仅是在in不在[xmin,xmax]范围内时对输出进行限制。
VMT_Divide:表示输出/输入是除的关系,out=k/(in+b)+c,其中k,b,c是映射参数。
VMT_Mapping:表示输出/输入是IO映射的关系,用于将输入数据中的某一位映射到输出数据的某一位。该类型的映射参数为输出数据映射表(地址Pos,位Bit),其中Pos为该位所在的字节的相对地址,Bit表示该位在该字节中的位置(0~7)。输入数据按照从Bit0~Bit63的方式排列。对于不使用的位可以映射到某个不使用的字节中。
VMT_Table1:表示输出/输入是分段线性化的关系,参数为映射表(in,out),最多可以有64项(输入被分为63段)。要求输入数据必须严格按照递增顺序排列。根据相邻两点计算落入该区间的数据。
VMT_Table2:表示输出/输入是分段2次多项式拟合的关系,参数为映射表(in,out),最多可以有64项(输入被分为63段)。要求输入数据必须严格按照递增顺序排列。根据线邻三点计算落入该区间的数据,采用距离最近原则取线邻点。
(4)配置文件格式:配置文件主要包括3部分:注释、配置表总体参数、配置单项参数。所有配置文件每行最多只能有一项有效内容。当然也可以是空行,或者完全是注释行。配置文件以ASCⅡ码的形式存储,有效信息中不允许出现非ASCⅡ码的字符。以’\n’(或0x0A)表示一行的结束。
所有以“//”开始到该行结束的部分为注释部分,在“#CONFIG”和“#ENDCONFIG”之间的部分为配置表总体参数,在“#DATATYPE”和“#ENDDATATYPE”之间的部分为配置单项参数。
配置表总体参数共有6项,分三行存储,行与行之间可以有空行或注释,不允许有其他无效行。
第一行:输入缓冲区长度和输出缓冲区长度,格式“InBufLen=Len1,OutBufLen=Len2”
第二行:配置单项个数,格式“DataType=Num”
第三行:实际使用的项参数,格式“ParaFile=1或0,Start=S,Num=N”,其中第一项如果是1,则表示后面两个参数有效,在实际调用函数时屏蔽函数的对应输入参数,由该两项代替。如果是0,则后续两项无效。该行为可选行,如果该行不存在,则默认ParaFile为0。
配置表单项参数6~134项,分3~67行存储,其中前6项是必须项,后128项为可选项,具体与前六项有关。
第一行:输入数据格式,格式为“InType=Type,InPos=Pos”,其实Type可以使VIRPHYDATATYPE中定义的有效数据格式去掉“VDT_”部分,即U8、S8、U16L、U16M、S16L、S16M、U32L、U32M、S32L、S32M、U64L、U64M、S64L、S64M、F32L、F32M、F64L和F64M。Pos为相对于输出缓冲区起始地址的位置。
第二行:输出数据格式,格式为“OutType=Type,OutPos=Pos”,其中Type定义与该域第一行相同。Pos为相对于输出缓冲区起始地址的位置。
第三行:映射类型,格式为“MapType=Type,TblLen=Len”,其中Type为VIRPHYMAPTYPE定义的有效项去掉“VMT_”部分,即:Equal、Linear、Linear2、Divide、Mapping、Table1和Table2。Len为映射表的长度。其中Type为Equal时Len为0,Type为Linear时Len为1,Type为Linear2和Divide时Len为2,其它三种类型视需要而定,可以为1(Mapping)/2(Table1)/3(Table2)~64。
后续行是映射表。
类型为Equal时没有映射表。
类型为Linear时,只有1行映射表,格式为“k=K,b=B”,其中K和B为32位浮点数,不允许超出范围。
类型为Linear2时,只有1行映射表,格式为“xmin=Xmin,y0=Y0,xmax=Xmax,y1=Y1”,其中Xmax必须大于Xmin。
类型为Mapping时,可以有1~64行参数,各行参数格式相同,均为“Pos=pos,Bit=b”,其中b范围是0~7。
类型为Table1和Table2时,各行参数格式相同,均为“X=x,Y=y”,其中x为输入值,y为输出值。
以下为一个配置文件样例:
该配置文件表示的含义是将输入结构体
映射到输出结构体
其中Dat0为将各位位置反转,Dat1为编位10倍,Dat2为取倒数后的6000倍,Dat3为相等,Dat4为取绝对值后的2倍,Dat5为从409~3686线性映射到0~1。
为了编程的方便,所有的通信分层以数据的方式进行处理,其实现方式如图6所示,其中:
(1)所有的通信分层以数据的方式进行处理,目标应用层各个数据结构之间是并列的关系,同一个通信应用层数据包中可以包含0个目标应用层数据结构,可以包含1个目标应用层数据结构,也可以包含多个目标应用层结构,具体情况与目标应用层及通信应用层的定义有关。
(2)通信协议层中的CpTail可以为0字节。
(3)只给出了基本的数据流程,并没有给出需要握手的情况。如果需要握手,通常在通信协议层中进行(这里的握手不包括真实物理层之间的基本的、必需的握手)。
(4)目标应用层的数据以配置文件或只读配置表的方式与通信应用层进行关联,从而实现通信协议的实现与应用无关。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种通信分层架构,其特征在于,包括:真实物理层、标准物理层、通信协议层、通信应用层和目标应用层;
所述真实物理层通过所述标准物理层与所述通信协议层连接;
所述通信协议层通过所述通信应用层与所述目标应用层连接;
所述真实物理层用于实现数据传输的介质和控制器,实现通信协议的传输;
所述标准物理层用于提供所述真实物理层的接口;
所述通信协议层用于实现数据格式的校验、解包、打包以及通信的握手,并提供所述通信应用层与所述标准物理层的接口;
所述通信应用层用于实现数据功能的解析和打包,提供所述通信协议层与所述目标应用层的接口;
所述目标应用层用于实现的目标应用。
2.根据权利要求1所述的一种通信分层架构,其特征在于,所述真实物理层和所述通信协议层之间主要操作包括:打开设备、发送、接收和关闭设备。
3.根据权利要求1所述的一种通信分层架构,其特征在于,所述标准物理层发送数据的过程为:
所述通信协议层准备好数据,将数据写入一个连续的缓冲区;
设置数据包序号、数据长度和数据的起始地址之后,发送使能信号置位,并用启动发送信号启动所述真实物理层进行数据发送;
当数据发送完成后,真实物理层设置发送完成信号。
4.根据权利要求3所述的一种通信分层架构,其特征在于,所述标准物理层接收数据的过程为:
所述标准物理层将接收使能信号置位,以允许所述真实物理层接收数据;
所述真实物理层接收到一个完整的数据包后,将数据写入一个连续的缓冲区,并设置数据包序号、数据长度和数据的起始地址,然后将数据准备好RxRdy置位。当标准物理层检测到RxRdy有效后,开始处理数据,数据处理完成后,设置读取结束标志RxRdEnd。
5.根据权利要求1所述的一种通信分层架构,其特征在于,所述通信应用层的操作包括:配置、写、读、停止和错误处理。
6.根据权利要求1所述的一种通信分层架构,其特征在于,所述目标应用层为一个多输入和多输出系统。
7.根据权利要求1所述的一种通信分层架构,其特征在于,所述目标应用层中各个数据结构之间是并列的关系。
8.根据权利要求1所述的一种通信分层架构,其特征在于,所述目标应用层的数据以配置文件或只读配置表的方式与所述通信应用层进行关联。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111171895.1A CN113824596B (zh) | 2021-10-08 | 2021-10-08 | 一种通信分层架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111171895.1A CN113824596B (zh) | 2021-10-08 | 2021-10-08 | 一种通信分层架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113824596A true CN113824596A (zh) | 2021-12-21 |
CN113824596B CN113824596B (zh) | 2023-05-30 |
Family
ID=78916161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111171895.1A Active CN113824596B (zh) | 2021-10-08 | 2021-10-08 | 一种通信分层架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113824596B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020078249A1 (en) * | 1999-12-17 | 2002-06-20 | Xiaolin Lu | Programmable multi-standard MAC architecture |
US6775305B1 (en) * | 1999-10-21 | 2004-08-10 | Globespanvirata, Inc. | System and method for combining multiple physical layer transport links |
CN1728717A (zh) * | 2004-07-27 | 2006-02-01 | 邓里文 | 一种以太网与准同步数字体系融合的适配方法 |
WO2006091040A1 (en) * | 2005-02-24 | 2006-08-31 | Lg Electronics Inc. | Layer structure of network control protocol and interface method |
CN102739788A (zh) * | 2012-06-25 | 2012-10-17 | 广州复旦奥特科技股份有限公司 | 一种基于eib协议的现场设备通信方法 |
CN109661658A (zh) * | 2016-10-01 | 2019-04-19 | 英特尔公司 | 链路物理层接口适配器 |
CN111193768A (zh) * | 2019-11-25 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 网络数据处理方法、装置、计算机设备和存储介质 |
CN112363479A (zh) * | 2020-12-09 | 2021-02-12 | 南昌航空大学 | 一种现场设备间的数字通信传输方法及系统 |
-
2021
- 2021-10-08 CN CN202111171895.1A patent/CN113824596B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775305B1 (en) * | 1999-10-21 | 2004-08-10 | Globespanvirata, Inc. | System and method for combining multiple physical layer transport links |
US20020078249A1 (en) * | 1999-12-17 | 2002-06-20 | Xiaolin Lu | Programmable multi-standard MAC architecture |
CN1728717A (zh) * | 2004-07-27 | 2006-02-01 | 邓里文 | 一种以太网与准同步数字体系融合的适配方法 |
WO2006091040A1 (en) * | 2005-02-24 | 2006-08-31 | Lg Electronics Inc. | Layer structure of network control protocol and interface method |
CN102739788A (zh) * | 2012-06-25 | 2012-10-17 | 广州复旦奥特科技股份有限公司 | 一种基于eib协议的现场设备通信方法 |
CN109661658A (zh) * | 2016-10-01 | 2019-04-19 | 英特尔公司 | 链路物理层接口适配器 |
CN111193768A (zh) * | 2019-11-25 | 2020-05-22 | 腾讯科技(深圳)有限公司 | 网络数据处理方法、装置、计算机设备和存储介质 |
CN112363479A (zh) * | 2020-12-09 | 2021-02-12 | 南昌航空大学 | 一种现场设备间的数字通信传输方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113824596B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112799992B (zh) | 现场总线芯片架构 | |
US5596331A (en) | Real-time control sequencer with state matrix logic | |
CN108650136B (zh) | 一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法 | |
CN106444657B (zh) | 一种Modbus主站指令处理方法及主站控制器 | |
CN108768981B (zh) | 一种实现Powerlink工业实时以太网通讯的IP核 | |
WO1995029454A1 (en) | Method and systems for use with an industrial controller | |
CN108062230A (zh) | 一种因特网范围内串口透传和程序更新系统及其方法 | |
CN107870855A (zh) | 基于天熠嵌入式操作系统的调试系统 | |
CN104965808B (zh) | 用于实现串口复用的装置以及串口复用的方法 | |
CN104714904A (zh) | 采用窗口映射机制的RapidIO控制器及其控制方法 | |
CN105172081A (zh) | 基于vb与三菱fx型plc编程口通信实现联合控制真空注型设备的方法 | |
CN108833241B (zh) | 一种实现Powerlink工业实时以太网通讯的主/从站卡的设计方法 | |
CN113824596B (zh) | 一种通信分层架构 | |
CN117056249B (zh) | 一种mdio到ahb的转换方法、系统、设备及介质 | |
CN102253875A (zh) | 基于PicoBlaze嵌入式软核处理器的FPGA逻辑模块调试与数据采集方法 | |
CN112235316A (zh) | 一种仪器集成的数据通信方法 | |
CN115002087B (zh) | 一种音视频数据传输方法、系统、装置及存储介质 | |
CN115903569A (zh) | 一种全数字综合模块化航电系统 | |
CN107783926A (zh) | 基于PowerPC与网口的FPGA与PC的通信方法 | |
KR100306596B1 (ko) | 프로세서와 재설정가능 칩을 사용한 집적회로 에뮬레이터 | |
JP3670932B2 (ja) | 回路基板検査システム及び回路基板 | |
CN114757134B (zh) | 一种用于fpga原型验证系统的文件导出方法及系统 | |
Liang et al. | PCIe/NIC | |
CN103995475A (zh) | 一种柔性嵌入式被测设备模拟器 | |
CN111538688B (zh) | 数据处理方法、装置、模组及芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |