当前位置:文档之家› TCP自定义通讯协议

TCP自定义通讯协议

一.设计

1.详细设计:

2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块.

2.详细内容

(1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输

数据的大小, 6.文件名的大小,

1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息.

2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号.

3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件.

4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义.

(2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。

二.TCP报文分段传输的依据:

(1)MTU(最大传输单元)

是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。

一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小)

MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。

TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。

MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet 上标准的MTU(最小的MTU,链路层网络为x2.5时)为576; 如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。

TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。

对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS)决定,MSS就是TCP 数据包每次能够传输的最大数据分段。

为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值.这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP 数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值, 确定为这次连接的最大MSS值。

TCP自定义通讯协议

一.设计 1.详细设计: 2个字节的起始字头,1个字节的命令字,1个字节的数据包编号,4个字节的报文总大小, 4个字节的传输数据总大小, 2个字节的文件名大小, 1个字节的保留(备用)字,若干字节的数据块. 2.详细内容 (1)报头的内容: 1.标志位, 2.命令字, 3.数据包的编号, 4.该报文的总大小, 5.该段传输 数据的大小, 6.文件名的大小, 1)命令字: 1.普通图片, 2.普通文档, 3.普通消息, 4.加密图片, 5.加密文档, 6.加密消息. 2)数据包编号: 1.对大文件或长消息体, 以一定的大小进行分割. 一次编号. 3)文件名大小: 1.数据包的数据块中, 刚开头的部位, 进行写文件名, 用来保证每段新数据写入对应的文件. 4)标志位: 1.消息体中需要对与报头,校验字相同的内容进行转义. (2)消息体: 1.文件名或消息名; 2.文件或消息的具体内容. 定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装(TLV)。 二.TCP报文分段传输的依据: (1)MTU(最大传输单元) 是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。 一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。分片传输的IP数据报不一定按序到达,但IP首部中的信息能让这些数据报片按序组装。IP数据报的分片与重组是在网络层进完成的。

(2)MSS(最大分段大小) MSS是TCP里的一个概念(首部的选项字段中)。MSS是TCP数据包每次能够传输的最大数据分段,TCP报文段的长度大于MSS时,要进行分段传输。 TCP协议在建立连接的时候通常要协商双方的MSS值,每一方都有用于通告它期望接收的MSS选项(MSS选项只出现在SYN报文段中,即TCP三次握手的前两次)。 MSS的值一般为MTU值减去两个首部大小(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以如果用链路层以太网,MSS的值往往为1460。而Internet 上标准的MTU(最小的MTU,链路层网络为x2.5时)为576; 如果不设置,则MSS的默认值就为536个字节。很多时候,MSS的值最好取512的倍数。TCP报文段的分段与重组是在运输层完成的。 TCP分段的原因是MSS,IP分片的原因是MTU,由于一直有MSS<=MTU,很明显,分段后的每一段TCP报文段再加上IP首部后的长度不可能超过MTU,因此也就不需要在网络层进行IP分片了。因此TCP报文段很少会发生IP分片的情况。 对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS)决定,MSS就是TCP 数据包每次能够传输的最大数据分段。 为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值.这个值TCP协议在实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP 数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值, 确定为这次连接的最大MSS值。

自定义应用层通信协议

1.通信协议的概念及其要素 在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是为SDU增加对等实体间约定的控制信息(Protocol Control Information,PCI)的过程。为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。 网络协议的分层有利于将复杂的问题分解成多个简单的问题,从而分而治之。各层的协议由各层的实体实现,通信双方对等层中完成相同协议功能的实体称为对等实体。对等实体按协议进行通信,所以协议反映的是对等层的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。 通信协议精确地定义了双方通信控制信息和解释信息:发送方能将特定信息(文本、图片、音频、视频)按协议封装成指定格式的数据包,最终以串行化比特流在网络上传输;接收方接收到数据包后,根据协议将比特流解析为本地化数据,从而获取对方发送过来的原始信息。通信协议包括三个要素: (1)语法:规定了信息的结构和格式; (2)语义:表明信息要表达的内容; (3)同步:规则涉及双方的交互关系和事件顺序。 整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet互联网的核心协议。2.通信协议开发步骤 (1)协议的开发主要包括协议设计、协议形式描述、协议实现和协议一致性测试。协议的开发过程与步骤如图1所示。 图1 协议开发过程与步骤 (2)协议设计过程中的分组发送接收模型如图2所示。

stm32串口通信协议简单教程

STM32串口通信协议简单教程 一、修改串口UART1IT工程模版 用Keil MDK打开短学期资料中的工程示例→串口→UART1IT示例,查看main.c代码如图1所示: 图1 UART1IT串口示例代码 打开文件列表中的stm32f10x_it.c文件,找到UART1中断函数如图2所示代码: 图2 UART1串口中断函数

为方便起见,将整个USART1_IRQHandler函数剪切到main.c文件末尾如图3所示。并删除stm32f10x_it.c文件中的sp变量定义,如图4所示。 图3 移动串口中断函数 图4 去除stm32f10x_it.c中的sp变量声明 重新编译一次工程,看看修改是否出现错误,编译失败出现错误则需仔细检查刚才的修改是否正确。编译成功,下载工程到实验板,关闭下载程序。将实验板BOOT跳线至正常运行模式并重新上电。打开串口调试助手,选择实验板USB虚拟串口并打开,如图5所示。可以看到图中窗口不停的接收到“Hello world!”这样的字符串数据。在发送区域输入字符1,点击发送按钮,可以观察到实验板的流水灯速度变快了很多。

在main函数之前,添加按键扫描代码如图6所示,然后在main函数中,添加sendstr 数组,key和oldkey两个整数变量,如图7所示。

图6 添加按键扫描函数 图7 添加相关变量 接下来,在main函数的while主循环中,添加发送按键状态代码如图8所示。同时,将main函数中的Hello world字符串发送行注释掉,如图9所示。为使按键响应灵敏,可以将main.c文件开头的sp变量初始值由100改为10。 注意,资料包里面的串口调试助手UartAssit软件容易造成虚拟串口占用,甚至使系统崩溃。考虑到使用方便,推荐使用sscom42软件。这里给大家一个下载地址http://biz.doczj.com/doc/0e1127267.html,/soft/53912.html

通信电源规约CSU03B通信协议-通信局电源、空调及环境集中监控管理系统前端智能设备通信协议

CSU03B通信协议更改记录 2006-06-13:V1.0;其中历史告警记录有重大调整,其他与CSU03A兼容。

CSU03B通信协议 本协议以电信总局《通信局(站)电源、空调及环境集中监控管理系统前端智能设备通信协议》(一九九九年三月)为基础制定;与CSU03A通信协议兼容(历史数据和历史告警除外)。 一.物理接口 1.串行通信口采用RS232/RS485,数据传输速率2400bps; 2.信息传输方式为异步方式,起始位1位,数据位8位,停止位1位,无校验。 3.局站监控系统(SU)与设备监控单元(SM)的通信为主从方式。SU呼叫SM并下发命令,SM收到命令后返回响应信息。SU500ms内收不到SM响应或接收响应信息错误,则认为本次通信过程失败。 二.信息类型及协议的基本格式 1.信息分两种类型: (1) 由SU发出到SM的命令信息(简称命令信息); (2) 由SM返回到SU的响应信息(简称响应信息)。 基本格式的注解见表2.2、表2.3。 表2.2 协议的基本格式 说明: COMMAND INFO由以下控制命令码(其中一部分)组成: COMMAND GROUP(1字节):表示同一类型设备的不同组号; COMMAND ID(1字节):表示同一类型设备相同组内的不同监控点; COMMAND TYPE(1字节):表示不同的遥控命令或历史数据传输中的不同控制命令; COMMAND TIME(1字节):表示时间字段。 DA TA INFO由以下应答码(其中一部分)组成: DATAI:含有整型数的应答信息;

RUNSTATE:设备的运行状态; WARNSTA TE:设备的告警状态; DATAFLAG:标示字节;本协议中该字节无效,固定为00H; DATATIME:时间字段。 表2.3返回码RTN 3.数据格式 3.1 基本数据格式 在表2.1基本格式中各项除SOI和EOI是以十六进制解释(SOI=7EH,EOI=0DH),十六进制传输外,其它各项都是十六进制解释,十六进制—ASCII码的方式传输,每个字节用两个ASCII码表示,即高四位一个ASCII码表示,低四位用一个ASCII码表示。 例:CID2=4BH,传送时顺序发送34H和42H两个字节。 3.2 LENGTH数据格式 LENGTH共两个字节,由LENID和LCHKSUM组成,LENID表示INFO项的ASCII 码字节数,当LENID=0时,INFO为空,即无该项。LENGTH传输中先传高字节,再传低字节,分四个ASCII码传送。 校检码的计算:D11D10D9D8+D7DD6D5D4+D3D2D1D0,求和后模16余数取反加1。例:I NFO项的ASCII码字节数为18,即LENID=0000 0001 0010B。 D11D10D9D8+D7D6D5D4+D3D2D1D0=0000B+0001B+0010B=0011B,模16余数为0011B,0011B取反加1就是1101B,即LCHKSUM为1101B。 可得: LENGTH为1101 0000 0001 0010B,即D012H。 3.3 CHKSUM数据格式 CHKSUM的计算是除SOI、EOI和CHKSUM外,其他字符按ASCII码值累加求和,所得结果模65536余数取反加1。 例:收到或发送的字符序列是:“~1203400456ABCDFEFC72C C R R”(“~”为SOI,“C C R R”为EOI),则最后五个字符“FC72C C R R”中的FC72是CHKSUM,计算方法是: ‘1’+‘2’+‘0’+…+‘A’+‘B’+…+‘F’+‘E’ = 31H + 32H + 30H + …+ 41H + 42H + …+ 46H + 45H = 038EH 其中‘1’表示1的ASCII码值,‘E’表示E的ASCII码值。038EH模65536余数是

各种通信协议

分层及通信协议 协议软件是计算机通信网中各部分之间所必须遵守的规则的集合,它定义了通信各部分交换信息时的顺序、格式和词汇。协议软件是计算机通信网软件中最重要的部分。网络的体系结构往往都是和协议对应的,而且,网络管理软件、交换与路由软件以及应用软件等都要通过协议软件才能发生作用。 一、通信协议 1、什么是通信协议 通信协议(简称协议Protoco l),是指相互通信的双方(或多方)对如何进行信息交换所一致同意的一整套规则。一个网络有一系列的协议,每一个协议都规定了一个特定任务的完成。协议的作用是完成计算机之间有序的信息交换。 通信网络是由处在不同位置上的各节点用通信链路连接而组成的一个群体。通信网必须在节点之间以及不同节点上的用户之间提供有效的通信,即提供有效的接入通路。在计算机通信网中,将这种接入通路称为连接(connection)。建立一次连接必需要遵守的一些规则,这些规则也就是通信网设计时所要考虑的主要问题。 (l)为了能在两个硬件设备之间建立起连接,应保证在源、宿点之间存在物理的传输媒介,在该通路的各条链路上要执行某种协议。 如果传输线路使用电话线,则要通过调制解调器将信号从数字转换成模拟的,并在接收端进行反变换。 如果用的是数字传输线路,则在数据处理设备和通信设备之间,必须有一个数字适配器,以便将数字信号的格式转换成两种设备各自所期望的形式。 为了在两个端设备之间互换数据,需要协调和同步,调制解调器和数字适配器必须执行它们自己的协议。 无论是模拟的还是数字的通信设备,调制解调器和数字适配器的状态必须由接到节点上的设备来控制,这里必定有一个物理的或电气的接口来执行这种功能,执行某种适当的协议来达到这一控制目的。 (2)在计算机通信网中,许多信息源都是突发性的(bursty),问题是要利用信息的这种突发性质来降低消耗在线路上的费用,由此开发了许多共享通信资源的技术。所谓共享,是指允许多个用户使用同一通信资源,这就产生了多用户的接入问题。多路接入

串口通讯—通信协议

串口通讯—通信协议 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。 目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数三种。其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。 一、物理接口标准 1.串行通信接口的基本任务 (1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串行接口电路的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。 (4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。 (6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。 2、串行通信接口电路的组成

常用几种通讯协议

常用几种通讯协议 Modbus Modbus技术已成为一种工业标准。它是由Modicon公司制定并开发的。其通讯主要采用RS232,RS485等其他通讯媒介。它为用户提供了一种开放、灵活和标准的通讯技术,降低了开发和维护成本。 Modbus通讯协议由主设备先建立消息格式,格式包括设备地址、功能代码、数据地址和出错校验。从设备必需用Modbus协议建立答复消息,其格式包含确认的功能代码,返回数据和出错校验。如果接收到的数据出错,或者从设备不能执行所要求的命令,从设备将返回出错信息。 Modbus通讯协议拥有自己的消息结构。不管采用何种网络进行通讯,该消息结构均可以被系统采用和识别。利用此通信协议,既可以询问网络上的其他设备,也能答复其他设备的询问,又可以检测并报告出错信息。 在Modbus网络上通讯期间,通讯协议能识别出设备地址,消息,命令,以及包含在消息中的数据和其他信息,如果协议要求从设备予以答复,那么从设备将组建一个消息,并利用Modbus发送出去。 BACnet BACnet是楼宇自动控制系统的数据通讯协议,它由一系列与软件及硬件相关的通讯协议组成,规定了计算机控制器之间所有对话方式。协议包括:(1)所选通讯介质使用的电子信号特性,如何识别计算机网址,判断计算机何时使用网络及如何使用。(2)误码检验,数据压缩和编码以及各计算机专门的信息格式。显然,由于有多种方法可以解决上述问题,但两种不同的通讯模式选择同一种协议的可能性极少,因此,就需要一种标准。即由ISO(国际标准化协会〉于80年代着手解决,制定了《开放式系统互联(OSI〉基本参考模式(Open System Interconnection/Basic Reference Model简称OSI/RM)IS0- 7498》。 OSI/RM是ISO/OSI标准中最重要的一个,它为其它0SI标准的相容性提供了共同的参考,为研究、设计、实现和改造信息处理系统提供了功能上和概念上的框架。它是一个具有总体性的指导性标准,也是理解其它0SI标准的基础和前提。 0SI/RM按分层原则分为七层,即物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 BACnet既然是一种开放性的计算机网络,就必须参考OSIAM。但BACnet没有从网络的最低层重新定义自己的层次,而是选用已成熟的局域网技术,简化0SI/RM,形成包容许多局 域网的简单而实用的四级体系结构。 四级结构包括物理层、数据链路层、网络层和应用层。

串口通信协议

串口通信协议 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 什么是RS-232 RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。 DB-9针连接头 9针串口连接口顺序图 从计算机连出的线的截面。 RS-232针脚的功能: 数据: TXD(pin 3):串口数据输出(Transmit Data) RXD(pin 2):串口数据输入(Receive Data) 握手: RTS(pin 7):发送数据请求(Request to Send) CTS(pin 8):清除发送(Clear to Send) DSR(pin 6):数据发送就绪(Data Send Ready) DCD(pin 1):数据载波检测(Data Carrier Detect) DTR(pin 4):数据终端就绪(Data Terminal Ready) 地线: GND(pin 5):地线 其他 RI(pin 9):铃声指示 什么是RS-422 RS-422(EIA RS-422-AStandard)是Apple的Macintosh计算机的串口连接标准。RS-422使用差分信号,RS-232使用非平衡参考地的信号。差分传输使用两根线

(参考)应用层网络协议分析

HTTP网页访问的协议分析 在协议模型中,应用层是用户与计算机进行实际通信的地方,只有当马上就要访问网络时,才会实际上用到这一层。例如,我们可以从系统中卸载掉任何联网组件,如TCP/IP、网卡(NIC)等,仍可以使用IE来浏览本地的HTML文档。可如果我们试图浏览必须使用HTTP 的文档,或者用FTP下载一个文件,事情就没那么容易了。此时,IE将尝试访问应用层来响应这一类请求。因此,应用层也可被看作是实际应用程序和下一层(OSI模型中为表示层,TCP/IP模型中为传输层)之间的接口,它通过某种方式把应用程序的有关信息送到协议栈的下面各层。 应用层协议则是实现用户和系统之间接口的工具,用户可通过这些协议方便地访问网络资源,实现信息共享,HTTP则是其中一种。 HTTP(超文本传输协议)是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。 HTTP是基于请求/响应方式的。它的运作方式很简单:一个客户机与服务器建立连接后,发送一个请求给服务器,服务器接到请求后,给予相应的响应报文。其中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。因此,当网络中的任一台拥有可被访问的页面的计算机被其它计算机访问时,它便是服务器,而当它访问其它浏览非本地的HTTP文档时,它便是客户端。因此,我们可以在局域网中搭建简单的环境来观察分析访问HTTP的工作流程。 最简单的情况可能是在用户和服务器之间通过一个单独的连接来完成,如图1-1: 图1-1 根据图连接好以及配好相应IP后,测试网络互通。而后,在server上建立HTTP服务器。首先在控制面板\添加删除程序\添加删除Windows组件中查看Internet信息服务(IIS)是否装上,若没有则安装,若安装好,则可以进入管理工具\Internet服务管理器,在默认WEB站点下建立自己的站点及目录。而后,在client浏览器地址栏中键入http://31.0.0.1便可浏览位于server端默认站点目录下网页。 在此过程中,我们通过Ethereal所抓的数据包如下: 1、数据链路层:

基于串口自定义协议的数据通信方式设计

基于串口自定义协议的数据通信方式设计 ?引言 计算机与计算机之间的数据交换不仅可以采用常用的通信协议进行联网方式交换,还可以采用串行通信方式或并行通信方式通过非常规的通信协议方式交换。不同安全等级的计算机之间需要进行数据传输(出于安全考虑,多数是从安全等级高的计算机向安全等级低的计算机单向传输数据) ,而不同安全等级的计算机是不允许进行直接网络连接的,由此设计了自定义通信协议下通过串行通信端口RS2232 实现处于不同安全等级的计算机之间进行数据传输。 1.RS232 串行端口 一组比特数据在多条线上同时被传送的传输方式被称为并行传输。在传输过程中各数据位可并行传送,传送速度快、效率高,多用于要求实时、快速的场合。但是有多少数据位就需要多少根数据线,传送成本高。而串行端口通信是数据通过一根传输线逐位传送,数据传送按位顺序进行,至少只需要一根传输线即可完成,节省传输线。由于串行通信方式使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用. 1.1 RS 2232 端口简介 RS232 串行通信端口属于PC 机(个人计算机)及电信应用领域中最为成功的串行数据标准。它被定义为一种在低速率串行通信中增加通信距离的单端标准,是目前PC 机与通信工业中应用最广泛的一种串行通信接口。现在的PC机一般有1 到2 个串行通信端口COM1 及COM2 ,这些串行通信端口均为9 个引脚,即异步通信的9 个信号。在通信速率低于20 kbit / s时,与其直接连接的电缆最大物理距离为15 m(即直接传输距离) 。RS232 标准规定,若不使用Modem ,在码元畸变小于4 %的情况下,数据终端设备(DTE)和数据通信设备(DCE)之间最大传输距离为15 m。一般应用中当通信距离小于12 m 时,可以用电缆线直接连接标准RS232 端口。若距离较远, 须附加调制解调器(Modem) 。本方案中传输数据的2 台计算机距离很近,采用最基本的接法,将RS232 端口的关键引脚直接用电缆线相连。 RS2232 端口引脚说明见表1。

串口通信协议程序

主机程序: /* 主机主要处理: 主—>从 1.给从机发送命令 2.给从机发送数据 3.命令从机向主机发送数据 从—>主由中断程序处理根据从机发送过来的请求类型 0.请求主机发送命令(包括主到从的1,2命令) 1.请求主机接收数据 2,3保留 */ #include #include #define uchar unsigned char #define uint unsigned int #define slav1_addr 0x01 #define slav2_addr 0x02 #define COMEND 0 #define REC_DATE 1 //主机向从机发送多数据命令高四位为1111,所以其他命令高四位不能为1111 #define cmd_X 0x12 #define cmd_rec_data 0x11 sbit signal=P3^2; uchar temp_addr,num,rec,style,re_addr; uchar buf[20]; uchar rec_data[10]; void delay(unsigned int i) { while(i--); } void init_uart(void) { TMOD=0x20; //定时器方式2--8位reload模式 TH1=0xfd; TL1=0xfd; PCON=0; //波特率不加倍 SCON=0xf0; //方式三 TB8=1; //发送地址时第九位为1 SM2=1; //接收到第九位为1时才能接收数据

TR1=1; //要在设置scon后开定时 ES=1; //开中断 EA=1; } //发送命令 void uart_send_cmd(uchar addr,uchar cmd)//uchar *date) { while(signal==0); //检查总线是否被占 signal=0; //占用总线 EA=0;//关中断 do { do { SBUF=addr; //发送从机地址 while(TI!=1); TI=0; } while(RI!=1); //一直等待从机响应 //while循环里可加入出错处理temp_addr=SBUF; RI=0; } while(temp_addr!=addr); //一直等到从机回应的地址相同 //while循环里可加入出错处理 TB8=0; //发送数据第9位为0 // SM2=0; // 接收到第九位为1时才置位RI //每次一个数据 SBUF=cmd; while(TI!=1); TI=0; TB8=1; // SM2=1; RI=0; TI=0; //不处理期间发生的中断 EA=1; signal=1; //释放总线 }

串口通信协议

标签:RS232RS485串口协议比较 串口通信协议比较 串口通信协议主要有RS232、RS422 、RS485。下面将从其发展历史、各自特点来介绍各种协议,RS232和RS485的区别和接法。 首先是发展历史。最开始出现的串口通信协议是RS232,1962年发布的。由于其传输速度、单向传递、传输距离短等多方面的制约,因此使用受到限制。于是人们在RS232的基础上做了相应的改进,提高了相应的传输速度、传输距离,于是出现了RS422的雏形,并在工业上得到了相应的应用。但由于任然是单向传输的,使构成的网络只能是单向的。既只能是主机给从机发送指令或数据,从机只能接受并处理相应的消息,不能反映相应的结果。于是人们又做了相应的调整。最后于1983年发布了RS485通信协议。 正如前面所说的。RS232协议是一种简单的串口通信协议,也是最基本的。一般用在实验室等短距离、对传输速度等要求不高的场合,并且与TTL电平不兼容。 RS422有了相应的提高。是一种单机发送,多机接收的平衡通信协议接口,传输速度最高可以达到10Mbps,传输距离最远可达到4000英尺,并且在这条平衡总线上能最多带10个从机,但是任然是单向的传输。 RS485是一种多点,双向通信的平衡通信协议接口。再RS422的基础上增加了网络中接点(多机)的数量和双向通信能力,同时还增加了驱动器的传输能力和冲突保护特性,扩展了总线共模范围。传输速度最高可以达到10Mbps,标准距离可以达到4000英尺,实际能达到3000米,并且在这条线上最多可以带128个收发器。 RS232和RS485的区别: 1.传输速度不同。RS485可以达到10Mbps,高于RS232的速度。 2.电气特性不同。RS485采用的是平衡驱动器和差分接收器的组合。RS485 是输出的是差分信号,抗共模干扰能力强。逻辑“1”是两输出信号的+(2~6)V,“0”是-(2~6)V表示。电气信号低于RS232的电气信号,不容易损坏接口芯片,并且与TTL电平兼容。 3.传输距离不同。RS485标准距离为4000英尺,实际可以达到3000米。远远大于RS232的距离。 4.接收器数量不同。RS485接收器最多可以达到128个,即多站能力。而RS232只能是一个,即单站接点。

三菱FX系列通信协议

FX系列PLC专用协议通信指令一览 以下将详细列出PLC专用协议通信的指令: 指令注释 BR 以1点为单位,读出位元件的状态 WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值 BW 以1点为单位,写入位元件的状态 WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件 BT 以1点为单位,SET/RESET 位元件 WT 以16点为单位,SET/RESET 位元件,或写入值到字元件 RR 控制PLC运行RUN RS 控制PLC停止STOP PC 读出PLC设备类型 TT 连接测试 注:位元件包括X,Y,M,S以及T,C的线圈等; 字元件包括D,T,C,KnX,KnY,KnM等。 三菱FX系列PLC编程口通信协议总览 该协议实际上适用于PLC编程端口以及FX-232AW 模块的通信。通讯格式: 命令命令码目标设备 DEVICE READ CMD "0" X,Y,M,S,T,C,D DEVICE WRITE CMD "1" X,Y,M,S,T,C,D FORCE ON CMD " 7" X,Y,M,S,T,C FORCE OFF CMD "8" X,Y,M,S,T,C 传输格式: RS232C 波特率: 9600bps 奇偶: even 校验: 累加方式(和校验) 字符: ASCII 16进制代码: ENQ 05H 请求 ACK 06H PLC正确响应 NAK 15H PLC错误响应 STX 02H 报文开始 ETX 03H 报文结束 帧格式: STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 例子: STX ,CMD ,ADDRESS, BYTES, ETX, SUM 02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H SUM=CMD+......+ETX; 30h+31h+30h+46h+36h+30h+34h+03h=74h;

设备通讯协议

设备通信协议

目录 1.适用范围 (3) 2.协议框架 (3) 3.协议内容 (3) 3.1设备内部组网协议(或者MCU透传模式协议) (3) 3.1.1 通讯命令格式 (3) 3.1.2 配对机制 (3) 3.1.3 连接机制 (4) 3.1.4 心跳机制 (5) 3.2 设备与云端通讯协议 (5) 3.2.1 通讯命令格式 (5) 3.2.2 连接流程 (5) 3.3 数据包格式定义 (6) 3.3.1 设备间通讯数据格式 (6) 3.3.2 设备与云、APP通讯数据格式 (11) 4. ..............................................................................................................................................公共命令定义 11 5. ........................................................................................................................................................... 编码表 18 5.1节点类型编码表 (18) 5.2命令回应编码表 (18)

1.适用范围 本协议定义WiFi模块与MCU控制单元,WiFi模块与云APP间,以及主从模块之间的通讯协议框架。 2.协议框架 协议基于二进制协议框架,完成命令发送接收、命令上报、内部组网等功能。 3.协议内容 3.1设备内部组网协议(或者MCU透传模式协议) 备内部组网协议包括设备配对、连接、心跳机制等,目的是将一个子设备加入到设备组中,并保持连接。3.1.1 通讯命令格式 采用二进制的通讯协议格式,包格式如下表: 详细的包格式在后续章节介绍 3.1.2 配对机制 配对机制仅适用于设备内组网模式,MCU透传模式不需要组网协议。 进入配对模式由主从设备分别触发,只有在进入配对模式后,才处理相关的配对命令。 从设备进入配对模式后定时发送配对请求,直到收到请求回应。 主设备收到请求后分配一个设备ID给从设备,标识此ID被占用,并等待采集器的上线通知,一定时间内收到通知之后确认存入设备列表,如果没有上线通知,则认为设备没有配对成功,从子设备中删除。 从设备收到配对回应后存储设备ID,并且发送上线通知,收到上线通知后完成配对。 配对的过程如下图所示:

CAN应用层通信协议v1.0

文件号:WN1013-SS-023 页码号:第 1 页共 6 页 版本号:V1.0 起始日:2011/05/27 CAN2.0B应用层通信协议 编制:日期: 审核:日期: 日期: 批准:日期: 持有者编号:

更改记录 更改类型:A-增加 M-修改 D-删除

引用文件本文件编制引用了下列文件的全部或部分内容: 术语 下列术语仅用于本文件:

目录 更改记录 (2) 引用文件 (3) 术语 (3) 1 目的 (5) 2 适用范围 (5) 3 阅读对象 (5) 4 协议内容 (5) 4.1 帧格式 (5) 4.2 数据帧类型 (5) 4.3 数据帧 (6) 4.3.1 主站数据请求帧: (6) 4.3.2 从站数据回复帧: (6) 4.4 通信模式: (6) 4.5 要求: (6)

1目的 定义CAN应用层协议,实现HMI与数据采集模块通信。 2适用范围 本文件仅适用《地面ATP与位置检测子系统》项目。 3阅读对象 软件工程师软件测试工程师项目管理员及相关审核批准人员。4协议内容 4.1帧格式 预留位全为1。 1)主/从站标示位(1位): 主站发送数据时该位为0 从站发送数据时该位为1 2)地址位(6位): 主站发送数据时该位段为相应的从站ID 从站发送数据时该位段为自身的设备ID 3)类型码(3位):用于区分设备类型。 主站发送数据时该位段为000 从站发送数据时该位段为自身的设备类型码 4.2数据帧类型 1)主站数据请求帧

主站获取从站数据内容的数据帧。 2)从站数据回复帧 从站回复主站数据请求帧的数据帧。 4.3数据帧 4.3.1主站数据请求帧: 从站数据回复帧: 4.3.2 4.4通信模式: HMI为主站,数据采集模块为从站。 主站在上电延时一段时间后发以轮询的方式依次向各个从站请求数据。 从站在收到主站发送的数据请求帧后向主站发送数据回复帧。 4.5要求: 波特率可设定。 从站ID可设定。 从主站上电至开始轮询数据请求包的时间间隔在组态软件里可设定。 轮询数据请求包时从站的轮询时间间隔在组态软件里可设定。 CAN数据包数据段能以2个32位无符号整型变量的方式读出。 主站可以依据不同的接收变量名区分从站设备的ID与类型。

STMZET6与S7-1200自定义通信协议实现串行通信

摘要:针对现有潜水器模拟装置数据采集和处理方法单一、故障率高、通讯系统复杂的不足。介绍了STM32单片机与西门子S7-1200系列PLC 实现远距离自定义通信协议的串行通信的硬件连接和软件实现方法;重点阐述了自定义通信协议的实现。该方案已实际应用于潜水器模拟控制平台项目中;实现了系统交互式通信。 关键词:PLC ,单片机,通信协议,串行通信 Abstract 押This paper introduces the hardware connection and software realization method of serial communication between STM32MCU and SIEMENS S7-1200series PLC.Focuses on the implementation of the custom communication protocol.This scheme has been applied to the submarine simulation control platform project.It realizes the system interactive communication. Keywords 押PLC熏MCU熏communication protocol熏serial communication 传统的潜水器模拟装置控制系统存在以下两个不足:一是数据采集和处理方式单一,故障率高;二是通讯系统逻辑层次凌乱,没有统一标准。能够解决上述问题意义重大。因此本文采用单片机和PLC 的相互配合,扩展控制功能,实现对系统的综合控制。下面以西门子PLC S7-1200系列与STM32单片机的通信为例,阐述自定义通信协议的实现方法。1硬件设计 1.1STM32单片机 ST 公司的STM32单片机的优异性体现在以下几个方面:价格低廉、外设较多、开发成本极低以及杰出的功耗控制等。STM32的串口资源相当丰富,功能也相当强大。本文所使用的STM32F103ZET6型号开发板最多可提供5路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯等。采用串口2来实现串行通信所需的两条引脚是PA2和PA3,通过STM32的PG9控制MAX485E 的收发以及三极管的基极。当PG9=0时,为接收模式;当PG9=1时,为发送模式。1.2S7-1200系列PLC 西门子公司S7-1200系列PLC 通过增添通信模块CM1241(RS422/485)实现串行通信,本文采用RS-485接口标准,接收差模信号,可以组成半双工串行通信网络。S7-1200采用自由端口模式协议,协议通过在软件中配置消息接收的格式和编程实现。通过单片机与PLC 的配合实现自定义协议通信,在传送大量数据时是很方便的。1.3MAX485E 芯片 MAX485E 采用半双工通讯方式,它实现TTL 电平转换为RS-485电平的功能。MAX485E 芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO 和DI 端分别为接收器的输出和驱动器的输入端,与STM32的串口2的PA2和PA3相连即可;接收和发送的使能端分别为/RE 和DE 端,当/RE 为逻辑0时,MAX485E 处于接收状态;当DE 为逻辑1时,MAX485E 处于发送状态。因为MAX485工作在半双工状态,所以只需用STM32的PG9控制这两个引脚即可。同时需在A 和B 端之间加匹配电阻,一般可选120赘的电阻。1.4S9013三极管 S9013是一种NPN 型小功率三极管。S9013NPN 三极管主要用途:音频放大、推挽输出以及开关等。本文中采用单片机 来控制PLC ,但是单片机的管脚最大输出电压只有3.3V ,不足以控制PLC 的IO 口。采用图1的接法(共发射极)能够放大电压起到开关的作用从而控制PLC 的IO 口。 图1信号转换电路 2通信系统设计 为了提高通讯的实时性及可靠性,除了改变传输的波特率以外,还应尽量减小每个通信周期传送的数据量。制定用户通信协议的核心是合理安排数据结构,使频率变化高的数据在每个通信周期内都能及时传输,而频率变化低的数据只有在变化稳定后方可进行传输[1-3]。2.1通信协议设计 单片机使用串口2进行异步发送和接收,协议用C 语言编程实现。一次发送的一组数据作帧,每帧数据最多可由30个字符组成,考虑到传输数据量较大,本文一次传送16个字符,且采用多次传送方式。单片机发送的命令的具体格式如下:1)起始符占一个字符,设置为6A (可任意配置);2)标识符占一个字符,用于区分多组数据;3)数据占12个字符,存储需要发送的数据; 4)校验符占一个字符,校验发送的数据是否正确;5)结束符占一个字符,设置为1C (可任意配置)。 PLC 采用自由口通信模式,可以实现用户自定义通信协议。本文中PLC 接收消息开始字符设置成6A ,接收数据的长度为16个字符,消息结束字符为1C ,配置如图2、图3所示。这样配置刚好与单片机所发送的数据相对应。 STMZET6与S7-1200自定义通信协议实现串行通信 张 堃1牟少芳1刘晓杰2丁新平1张民1 (1青岛理工大学自动化工程学院,山东青岛266520;2中石油华北油田华港燃气集团有限公司,河北任丘062552) STMZET6and S7-1200Custom Communication Protocol to Achieve Serial Communication STMZET6与S7-1200自定义通信协议实现串行通信 104

(MODBUS版)串口LED控制板通信协议 V1.00

(MODBUS版)串口LED控制板通信协议 V1.00 通信参数:波特率:9600(可设定),校验位:N,数据位:8,停止位:1 读取或写寄存器时,寄存器地址范围均不得越界!请工程师注意!若不方便使用或要兼容老产品请与我们联系。

协议详解: 一、读寄存器(功能码0x03) 1、命令格式:地址(0x01-0xFE,1字节)、功能码(0x03,1字节)、寄存器起始地址(意义见寄存器列表,2字节)、寄存器数量(详见寄存器列表,2字节)、校验位(2字节,低位先行) 2、回复格式:地址(0x01-0xFE,1字节)、功能码(0x03,1字节)、字节数(意义见寄存器列表,1字节)、寄存器值(0x0000-0xFFFF,2字节)、校验位(2字节,低位先行) 3、应用举例:读取模块的通信波特率示例如下: 二、写寄存器(功能码0x06) 1、命令格式:地址(0x01-0xFE,1字节)、功能码(0x06,1字节)、寄存器起始地址(意义见寄存器列表,2字节)、寄存器值(0x0000-0xFFFF,2字节)、校验位(2字节,低位先行) 2、回复格式:地址(0x01-0xFE,1字节)、功能码(0x06,1字节)、寄存器起始地址(意义见寄存器列表,2字节)、寄存器值(0x0000-0xFFFF,2字节)、校验位(2字节,低位先行) 3、应用举例:修改模块的地址(1改为2)示例如下: 发送:0x01 0x06 0x00 0x30 0x00 0x02 0x08 0x04 三、写多个寄存器(功能码0x10) 1、命令格式:地址(0x01-0xFE,1字节)、功能码(0x10,1字节)、寄存器起始地址(意义见寄存器列表,2字节)、寄存器个数(0x0000-0xFFFF,2字节)、字节个数(0x00-0xFF,1字节)、寄存器值(0x0000-0xFFFF,N字节)、校验位(2字节,低位先行) 2、回复格式:地址(0x01-0xFE,1字节)、功能码(0x06,1字节)、寄存器起始地址(意义见寄存器列表,2字节)、寄存器个数(0x0000-0xFFFF,2字节)、校验位(2字节,低位先行) 3、应用举例:10进制显示123.4示例如下:

相关主题