1、SCHOOLofELECTRICALandELECTRONICENG.l学习内容和目标从信息交互角度的建立通讯的概念总览各种通讯方法,及其注意事项建立帧、包、报文等基本概念,以及其使用方法建立通讯中需要注意的问题l注意:思维一定要开阔一些,多问为什么为什么。允许不用举手,并随时打断,随时打断,向我提提任何和课程相关的问问题题。2024/4/24 周三1本节学习目标SCHOOLofELECTRICALandELECTRONICENG.1.1 引言l信息交互:发出和接收信息的过程。l通常由6个部分组成:信息源、信息、信息传递的通道或网络、接收者、反馈、噪音。l事实上,信息交互不仅仅存在于通讯系统中
2、。至少目前的定义,通讯就是信息交互的过程。那么请从信息流的角度看待通讯问题l即使对于某个测控系统,当中传递的也是信息(信号只是信息的载体)。2024/4/24 周三21信息交互与通讯SCHOOLofELECTRICALandELECTRONICENG.l继续考虑上述的封闭测控系统,可以在任何一个环节与环节之间采用模拟的或数字的通讯方式,传递信息。2024/4/24 周三31.1引言(续1)l需要考虑的是如何有效的传递信息:l采用何种载体l如何保证信息在传递过程中的正确率l请务必注意:必须依据信源特性确定载体类型、特征等问题。SCHOOLofELECTRICALandELECTRONICENG.
3、l当前来说,信号是目前在工业中传递信息最常用的载体。当前,工业中常用的标准信号规格可以分为:模拟信号:05V的电压信号、420mA的电流信号数字信号:这是目前用的最多的,并且有着多种形式可供选择。l不论传递何种信号,必然需要考虑两个内容:确定发射机与接收机之间的物理连接方法;确定发射机和接收机之间对话模式。l物理链接、对话模式、信号特征三者往往是统一的,必须综合考虑。另外,在实现中往往加入其他因素进行综合考虑,例如:环境状况、成本问题、工艺问题、保密性问题、l对以下2个实例进行分析:为什么使用这种方式?能否使用其他的通讯方式?实现这些通讯方式的过程中需要注意哪些内容?电缆式测井中采用7000m
4、电缆将仪器和HOSTPC连接起来。但是在仪器与遥传短节之间采用CANBus连接;在一些数控机床中,PLC的CPU模块与其他模块采用RS232通讯。2024/4/24 周三41.2信号、信号传输与通讯SCHOOLofELECTRICALandELECTRONICENG.l对以下2个实例进行分析:为什么使用这种方式?能否使用其他的通讯方式?实现这些通讯方式的过程中需要注意哪些内容?电缆式测井中采用7000m电缆将仪器和HOSTPC连接起来。但是在仪器与遥传短节之间采用CANBus连接;在一些数控机床中,PLC的CPU模块与其他模块采用RS232通讯。2024/4/24 周三51.2信号、信号传输与
5、通讯(续1)SCHOOLofELECTRICALandELECTRONICENG.l接口:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。l对于目前的信息科学领域,接口可以分为两大类:软件接口:例如,用户界面、JAVA接口、动态链接库接口、硬件接口:RS232、Ethernet、I2C、l简单的说接口就是一个契约或者规范。l正如,信号可以分为两类一样,接口也可以分为两类:l模拟接口:l数字化接口:l不论是模拟或数字接口,都必须在数字化控制中考虑以下问题:速度:资源占用:CPU时间、中断、DMA传输距
6、离:差错控制:供电:其他:2024/4/24 周三61.3通讯接口引论SCHOOLofELECTRICALandELECTRONICENG.2.1 引言l考虑:在MCU内部,所谓总线是否可以归纳到接口的范畴。l在这里,若非特别指明,接口均指代系统间的通讯连接。2024/4/24 周三72数字化通讯接口SCHOOLofELECTRICALandELECTRONICENG.l大部分的数字化通讯接口以下图为基础进行修改,实现通讯。2024/4/24 周三82.2数字化接口电路的构成SCHOOLofELECTRICALandELECTRONICENG.l接口的基本功能:数据传送:CPU执行输入/输出指
7、令与外部设备交换数据。(串行、并行)数据缓冲:用于输入输出过程中的暂存,对方不能及时接收数据时,将数据暂存在接口电路中。根据接口的需要可以是1个或2个字节,或是FIFO存储器,也可以是数据存储区。信号变换:完成数字信号与I/O设备信号(如模拟信号、开关信号、计数脉冲等)的相互转换。中断:大多数接口电路有中断功能,以提高接口程序的效率。l接口的高级功能差错控制:实现检错或纠错。高层通信协议:实现呼叫、数据包、流量控制等。即插即用、电源管理、动态配置等。2024/4/24 周三92.3通讯接口运行概述SCHOOLofELECTRICALandELECTRONICENG.l接口的操作:程序对接口的访
8、问(读/写)方式。不同的接口电路支持不同的操作方式。查询控制方式:在程序的主动控制下,通过读取状态寄存器了解接口的情况,完成相应的程序操作。为了及时了解接口的状态,需要时间密集的查询操作。CPU效率低。中断控制方式:当接口出现需要程序干预的事件,通过中断通知CPU,CPU再读取状态寄存器,确定事件的种类,以便执行不同的代码处理。CPU效率高而且及时。DMA控制方式:CPU与接口的数据传送采用DMA传送,即传送的具体过程由硬件(DMA控制器)完成,传送速度比通过CPU快,尤其是在批量传送时效率很高。2024/4/24 周三102.3通讯接口运行概述(续1)SCHOOLofELECTRICALan
9、dELECTRONICENG.l通信协议是指通信双方对数据传送控制的一种约定,包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定。通信双方必须共同遵守,它也叫做链路控制规程。l由于这些规格(语言)的规定都是事先在会议上讲好的,一般我们称之为“协议”(英文称为protocol)。l协议主要由以下三个要素组成:语法:“如何讲”,数据的格式、编码和信号等级(电平的高低)语义:“讲什么”,数据内容、含义以及控制信息。定时规则(时序):明确通信的顺序、速率匹配和排序。l讨论接口则必须讨论协议,硬件接口相同,不代表协议相同;协议类型相同,不代表编码方式相同;。正是由
10、于多种不同,使得目前存在各种各样的通讯方式。l例如,同样是TCP协议,但是并非一定使用RJ45接头;同样电平标准也可以设定的不同。同样,对于RS232的串口标准,即使按照以前规定的7位字符位,但是若组成方式不同也会有不同。2024/4/24 周三112.4数字通讯协议SCHOOLofELECTRICALandELECTRONICENG.l可以参考ISO/OSI的7层网络架构。l实现信息交互/通讯,的最终目标是考虑如何让接收方能够“理解”发送方的意图。2024/4/24 周三122.5完整的数字化通讯模型SCHOOLofELECTRICALandELECTRONICENG.l多种多样、千变万化的
11、通讯接口。lPC机常用内部总线和接口:ISA、PCI、PCI-E、Compact-PCI、PC104、PXI、PC104Plus、DDR3、STAT、STAT2、SCSI、lPC机常用对外总线和接口:RS232、PS2、VGA、HDMI、USB2.0、USB3.0、SCSI、PCMCIA、l常用无线接口:BlueTooth、WIFI、CDMA、WCDMA、LTE、l芯片之间常用接口:高速串口:SPI、HDMI、PCI-E并口:低速串口:I2Cl工业常用接口:早期串行接口:RS232、RS422、RS485、工业网络总线:工业以太等现场总线:目前比较热门的接口其他:2024/4/24 周三132
12、.6常见通讯接口举例SCHOOLofELECTRICALandELECTRONICENG.3.1 数据传输中的报文l报文(message)是通讯中交换与传输的数据单元,即站点一次性要发送的数据块。l报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。l显然报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输。封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。比如里面有报文类型,报文版本,报文长度,报文实体等等信息。l注意:报文帧;报文是一个完整的内容,当然可以将一个很长的、很大的报文拆分成几个小的报文报文不是由硬件完成的,而是由通讯双发约定的(
13、协议)由于为通讯使用,所以报文还必须考虑到便于传输、校验、信息说明等内容2024/4/24 周三143报文、包和帧的概念SCHOOLofELECTRICALandELECTRONICENG.l一般在ISO的网络层,往往将报文拆分后,根据各自的通讯协议进行封装,并下发到下一层。l打包的工作可以分为两类,一类是需要用户实现的,一类则可以依靠硬件驱动和硬件实现的。l譬如,某网页的内容非常多,不可能仅靠一个报文就够的。因此可以对报文进行拆分。拆分后,依据网络层进行打包传递。但是将较大的报文进行拆分,将面对多的问题(略)。有些工作目前已经被整合到驱动中,有些则需要用户自己实现。l在有些接口协议中,帧数据
14、就是包数据。但是请不要将包和帧等同起来。l对于包的理解,在TCP/IP中应用的非常多。推荐书籍:TCP/IP详解(3卷),W.RichardStevens著,机械工业出版社2024/4/24 周三153.2数据传输中的数据包(packet)SCHOOLofELECTRICALandELECTRONICENG.l通讯传输中,帧是由不同的“位”组成的最小数据段。数据包往往也会被拆分,按照帧的单位进行传输。l帧由几部分组成,不同的部分执行不同的功能。例如CANBus协议,将帧同报文一样,分成帧头、数据、帧尾三个部分。帧头和帧尾往往由协议自动指定。l帧的大小由通讯设备来确定,对于有些通讯接口而言,帧的
15、大小是固定的,例如RS232、CANBus等;但是有些通讯接口的帧大小是在一定范围内浮动的,例如以太网。l不仅在通讯接口中,帧的概念在其他很多地方都有使用。例如,目前的有些高清摄像机,实际保存的是图片,只不过拍摄这些图片的时间间隔非常短,连续起来就像视频(事实上视频也是按照帧进行划分的)。这些图片往往被称为帧。l帧的结构是由相对应的通讯接口进行确定的。l在很多通讯协议中(例如RS232、CANBus、SPI等),报文被拆分成包或帧。因此对于接收方来说,获取接收信息,必须按照规则将帧进行整合,从而得到报文。2024/4/24 周三163.3帧(Frame)SCHOOLofELECTRICALan
16、dELECTRONICENG.l虽然协议,或者接口,均带有编码和解码的概念,但是并不是我们说采用何种通讯接口,就可以实现通讯。在当前的很多工业通讯中,接口并未定义应用层和表示层的协议。换句话说,这些接口只能够告诉你报文的0、1组成方式,而不能告诉你报文所代表的具体含义。l编码往往具有两种范畴:将对象数据采用约定的协议(往往自定义),切分成由0、1组成的数据段;在通信理论中,编码是对原始信息符号按一定的数学规则所进行的变换。编码的目的是要使信息能够在保证一定质量的条件下尽可能迅速地传输至信宿。l事实上,在应用中这两种范畴都使用到了。l解码则是编码的逆过程。2024/4/24 周三174编码(Co
17、de)和解码(Decode)SCHOOLofELECTRICALandELECTRONICENG.l某设备中,采用以太网传输采样数据、控制命令、状态信息等内容。2024/4/24 周三185报文编码和解码示例1l考虑:如何来保证接收方能够接收到来自发送方的数据和指令?必须保证不能丢数据;必须保证能够正确的理解数据背后的含义;SCHOOLofELECTRICALandELECTRONICENG.l显然需要分析对象特征从而确定以下内容分析应用环境,以保证可靠性分析数据流量和传输特征,来确定传输速率、带宽分析交互方法,从而确定通讯协议分析数据类型,划分报文分析传递的信息内容,确定报文编码、解码方式其
18、他;l以上内容并非各自独立,确定使用何种通讯协议必须综合考虑所有因素,有时因素之间存在矛盾的问题,因此需要根据对象特性进行平衡。l如果经过综合分析和论证,选定了通讯协议和接口,那么报文的编码和解码方式则可以开始。2024/4/24 周三195报文编码和解码示例1(续1)SCHOOLofELECTRICALandELECTRONICENG.l在这里,我们将所有的报文分为三个部分:报文头、报文正文、报文尾。报文结构报文头结构报文尾结构2024/4/24 周三205报文编码和解码示例1(续2)b0b7b15报文起始标识符:0 x55aa报文总长度(报文头报文正文填充字段)发送方标识报文类型标识时戳(
19、内容不定)b0b7b15报文校验和报文结束标志符:0 xff00SCHOOLofELECTRICALandELECTRONICENG.l在报文头中:报文起始标志:0 x55AA是常用的标志由于存在多种报文,每种报文长度并不确定,为了方便将帧数据组装成报文,则需要给出报文长度发送方标识:由于具有多个设备,每个设备均可以做发送方,并且每个发送方数据的含义不同,因此为了方便解码必须指定发送方,从而使用对应的编码方式。(当然还有其他原因,略)报文类型:有时候一个个发送方会发送多种报文,为了区别这种来自单个设备的多个报文。(问:如果这样为啥还用发送方标识)时戳:当前报文发送和接收到的时间。l报文尾的主要
20、目的在于:如何确定报文结束;如何确定报文接收的正确性;如何保证帧组装和解码时,不会出错。2024/4/24 周三215报文编码和解码示例1(续3)SCHOOLofELECTRICALandELECTRONICENG.l在报文头中的“发送方标识”和“报文类型”已经具有编码的概念了,例如用0 x0801表示“动力系统集中监控台”,用0 x0001表示该报文类型。但是在报文正文中,各个数据的定义则涉及到较多的内容,并非像报文头那样简单指定。l报文正文涉及到以下内容:数据内容:例如发送哪些数据;数据类型:这些数据时开关量、数值量(浮点、定点、正负)数据长度:有些数据位32bit,有些为8bit;数据的
21、取值范围:数据的单位:数值量往往有其物理含义,例如表征压力、电流等发送数据的先后顺序:哪个数据先发送,哪个后发送;编码和解码方式:如何使用数字量表示这些浮点、定点、正负数值,并且接收方如何针对数据进行解码。l对于其中的一些报文请参见文档:2024/4/24 周三225报文编码和解码示例1(续4)SCHOOLofELECTRICALandELECTRONICENG.l由于报文是一个组装起来的数据段,因此可以使用封装包的方法来进行编程。l目前多种语言提供了这种封装方法,例如C/C+的结构体、C+的类、Delphi的类、JAVA的类。l事实上封装的方法很多,例如:方法1:采用结构体嵌套的方式,能够较
22、清楚的反映报文大致结构。每个被嵌套的结构体采用各自的字段进行编写。方法2:使用完整的结构体表示一个报文的具体结构。2024/4/24 周三236报文编码和解码的编程/C示例:方法示例:方法1struct _tagMsg_XXX /名名称称 struct 报文文头结构构体体;struct 报文正文文正文结构构体体;struct 报文尾文尾 结构构体体;其他字段其他字段;typedef struct _tagMsg_XXX SSMSG_XXX,*PSSMSG_XXX;SCHOOLofELECTRICALandELECTRONICENG.l方法1和方法2的本质是一样的,但是在报文正文中存在多种定义字
23、段的方式。例如,按帧流的方式定义、或者按照数据内容的方式定义字段。2024/4/24 周三246报文编码和解码的编程(续1)/方法方法1:报文文头的定的定义(C示例)示例)typedef struct _tagMsgBody_XXX /名名称称 UINT16 msg_tag;/报文起始文起始标志符志符 UINT16 msg_len;/报文文长度度 UINT16 msg_id;/发送方送方标识 UINT16 msg_type;/报文文类型型标识 UINT32 msg_time;/时戳戳 MSG_HEADERINFO,*LP_MSG_HEADERINFO;/方法方法1:采用:采用数数据据内内容定容
24、定义报文正文文正文typedef struct _tagMsgBody_XXX /名名称称 数数据据类型型 数数据名据名称称;/第第1个个字段字段 数数据据类型型 数数据名据名称称;/第第2个个字段字段 数数据据类型型 数数据名据名称称;/第第n个个字段字段 SSMSGBODY _XXX,*PSSMSGBODY_XXX;/采用采用帧流的方式定流的方式定义报文正文文正文/假定低位在前,且假定低位在前,且帧长为8bittypedef struct _tagMsgBody_XXX /名名称称 char c名名称称_L;/第第1个数个数据的低据的低8位位 char c名名称称_H;/第第1个数个数据的
25、高据的高8位位 char c名名称称_01;/第第2个数个数据的第据的第1个个8位位 char c名名称称_02;/第第2个数个数据的第据的第2个个8位位 char c名名称称_03;/第第2个数个数据的第据的第3个个8位位 char c名名称称_04;/第第2个数个数据的第据的第4个个8位位 char c名名称称;/第第3个数个数据只有据只有8位位 数数据据类型型 数数据名据名称称;/第第n个个字段字段 SSMSGBODY _XXX,*PSSMSGBODY_XXX;SCHOOLofELECTRICALandELECTRONICENG.l在C+中为了更好的进行封装,往往针对不同的报文定义类,在
26、该类中引用了结构体说明报文结构。然后在类中,添加各种函数(方法)来实现报文的编码、解码、校验等多个工作。l虽然通过结构体的方式封装了报文,但是在具体发送的过程则由具体的协议完成。2024/4/24 周三256报文编码和解码的编程(续2)SCHOOLofELECTRICALandELECTRONICENG.7课后作业和预习l作业,复习和思考:分组提交以STM32F103x系列为MCU的电路,实现以下内容:外接5V电源输入;按照上述架构给出一个电路连接(接口不算)Altium、PADS、Cadence等绘图软件绘制原理图;将原理图采用截图的方式放置在word中。说明为什么使用这种芯片、你的设计理由。人员数目自由确定:不超过15人。签名给出班级、学号、姓名l预习:2024/4/24 周三26Huazhong University of Science and Technology本本 节节 结结 束!束!2024/4/24 周三27