第一篇:SDIO协议简介专题
SDIO卡
SDIO卡是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。
SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。
SDIO和SD卡的SPEC间的又一个重要区别是增加了低速标准。SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开支来支持低速I/O能力,低速卡支持类似MODEM,条形扫描仪和GPS接收器等应用。对组合卡来说,全速和4BIT操作对卡内存储器和SDIO部分都是强制要求的。
在非组合卡的SDIO设备里,其最高速度要只有达到25M,而组合卡的最高速度同SD卡的最高速度一样,要高于25M。
SDIO总线
SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST-DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令,就可以同HOST进行通信了。
SDIO的HOST可以连接多个DEVICE,如下图所示:
这个是同SD的总线一样的,其中有如下的几种信号
1.CLK信号:HOST给DEVICE的时钟信号.2.CMD信号:双向的信号,用于传送命令和反应。
3.DAT0-DAT3 信号:四条用于传送的数据线。
4.VDD信号:电源信号。
5.VSS1,VSS2:电源地信号。
在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。
SDIO命令:
SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求。其中请求和回应中会数据信息。
1.Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的。
2.Response:回应是DEVICE返回的HOST的命令,作为Command的回应。也是通过 CMD线传送的。
3.Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。
SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要。
对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。
对于写命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。
SDIO的寄存器:
SDIO卡的设备驱动80%的任务就是操作SDIO卡上的有关寄存器。SDIO卡最多允许有7个功能(function),这个同其功能号是对应的(0~7),每个功能都对应一个128K字节大小的寄存器,这个见下面的图。功能号之所以取值范围是1~7,而没有包含0,是因为功能0并不代表真正的功能,而代表CIA寄存器,即Common I/O Area,这个纪录着SDIO卡的一些基本信息和特性,并且可以改写这些寄存器。其中地址0x1000~0x17fff是SDIO卡的CIS区域,就是基本信息区域,Common Information Structure。初始化的时候读取并配对SDIO设备。
这些寄存器的详细分区已经其对应的功能,在开发过程中都是需要仔细研读的,这些都在协议的SPEC中都有详细说明,这里就不在罗索了。
CMD52命令:
SDIO设备为了和SD内存卡兼容,SD卡所有Command和Response完全兼容,同时加入了一些新的Command和Response。例如,初始化SD内存卡使用ACMD41,而SDIO卡设备则用CMD5通知DEVICE进行初始化。
但二者最重要的区别是,SDIO卡比SD内存卡多了CMD52和CMD53命令,这两个命令可以方便的访问某个功能的某个地址寄存器。
CMD52命令是IO_RW_DIRECT命令的简称,其命令格式如下
首先第一位为0,表明是起始位,第二位为传输方向,这里为1,代表方向为HOST向DEVICE设备传送,其后6位为命令号,这里是110100b,用十进制表示为52,CMD52的名字也由此而来。紧接着是读写标志位。
然后是操作的功能号。也就是function number。如果为0则指示为CCCR寄存器组。紧接着是寄存器地址,用17指示,由于功能寄存器有128K地址,17位正好能寻址。
再下来8位Write data or Staff Bits的意思是说,如果当前为写操作,则为数据,否则8位为填充位。无意义。
最后7位为CRC校验码。最后一位为结束位0。
对于CMD52的Response是48位,命令格式如下:
总结下,CMD52是由HOST发往DEVICE的,它必须有DEVICE返回来的Response。CMD52不需要占用DAT线,读写的数据是通过CMD52或者Response来传送。每次CMD52只能读或者写一个byte.
CMD53命令:
CMD52每次只能读写一个字节,因为有了CMD53对读写进行了扩展,CMD53允许每次读写多个字节或者多个块(BLOCK)。CMD53的命令格式如下:
第一位是1,为开始位,然后是一位方向位,总是1,代表方向为HOST向DEVICE设备传送,其后6位为命令号,这里是110101b,用十进制表示为53,CMD53的名字也由此而来。
然后是1位的读写标志。接着是3位功能号,这个同CMD52都是相同的。Block Mode如果1代表是块传输模式,否则为字节传输模式。
OP Code为操作位,如果是0,代表数据往固定的位置读写,如果1代表是地质增量读写。例如,对地址0固定读写16个字节,相当于16次读写的地址0,而对地址0增量读写16个字节,相当于读写0~15地址的数据。
然后是17位的地址寄存器,可以寻址到128K字节的地址,然后是9位的读写的计数,对于字节读取,读写大小就是这个计数,而对于块读写,读写的大小是计数乘以块的大小。随后的7位为CRC校验码。最后一位为1。
当读写操作是块操作的时候,块的大小是可以通过设置FBR中的相关寄存器来设置。
同CMD52命令不同的是,CMD53没有返回的命令的,这里判断是否DEVICE设备读写完毕是需要驱动里面自己判断的,一般有2个方法,1.设置相应的读写完毕中断。如果DEVICE设备读写完毕,则对HOST设备发送中断。2.HOST设备主动查询DEVICE设备是否读写完毕,可以通过CMD命令是否有返回来判断是否DEVICE是否读写完毕。
转自:http://blog.csdn.net/tanxs001/archive/2010/12/22/6091320.aspx
第二篇:SDIO小结20141018
SDIO
SDIO(Input/Output)是一种IO接口规范。目前,其最主要用途是为带有SD卡槽的设备进行外设功能扩展。SDIO卡是一种IO外设,而不是Memory。SDIO卡外形与SD卡一致,可直接插入SD卡槽中。
一个完整的SDIO控制系统包括:SDIO/SD/MMC卡、主控制器硬件层,以及由主控制器驱动、功能卡相关驱动、顶层应用程序组成的软件部分等。SDIO主控制器介于片上系统总线和外设卡之间,实现了系统总线信号到SD总线信号的转化,CPU对接在SDIO主控制器上的外设的操作只要符合APB的时序要求,而底层的细节处理交给SDIO主控制器来完成。SDIO主控制器的主要功能包括:控制卡的读/写时序、命令生成与发送、响应接收与分析、数据发送与接收、硬件中断的处理、时钟域功耗的控制(主控制器必须提供频率可配置的时钟,因为外设卡的时钟由主控制器通过时钟线提供,需能匹配不同种类的外设卡;同时时钟与功耗有着直接关联)等。
目前市场上有多种SDIO接口的外设,比如SDIO蓝牙,SDIO GPS,SDIO无线网卡,SDIO移动电视卡等。这些卡底部带有和SD卡外形一致的插头,可直接插入SDIO卡槽(即为SD卡槽)的智能手机、PDA中,即可为这些手机、PDA带来丰富的扩展功能。用户可根据实际需要,灵活选择外设扩展的种类、品牌和性能等级。SDIO已为成为数码产品外设功能扩展的标准接口。
SDIO卡插入带有标准SD卡槽的设备后,如果该设备不支持SDIO,SDIO卡不会对SD卡的命令作出响应,处于非激活状态,不影响设备的正常工作;如果该设备支持SDIO卡,则按照规范的要求激活SDIO卡。
SDIO卡允许设备按IO的方式直接对寄存器进行访问,无须执行FAT文件结构或数据sector等复杂操作。此外,SDIO卡还能向设备发出中断,这是与SD memory卡的本质区别。
SDIO总线
SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST-DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解析HOST的命令,就可以同HOST进行通信了。
SD总线上的通信基于3种格式的比特流:命令包、响应包和数据包。控制器要按照SDIO协议的格式给命令添加起始位、标志位、CRC校验位、停止位等。命令在写入命令寄存器后,通过CMD线传给外设卡,卡收到命令后在CMD线上返回特定的响应到主控制器,主控制器把响应存放到响应寄存器,用来对卡状态进行分析判断。
SDIO的HOST可以连接多个DEVICE,这个是同SD的总线一样的,其中有如下的几种信号 1.CLK信号:HOST给DEVICE的时钟信号.2.CMD信号:双向的信号,用于传送命令和反应。
3.DAT0-DAT3 信号:四条用于传送的数据线,支持1位或4位两种数据宽度的传输。4.VDD信号:电源信号。5.VSS1,VSS2:电源地信号。在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。
SDIO命令:
SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求。其中请求和回应中会数据信息。
1.Command:用于开始传输的命令,是由HOST端发往DEVICE端的。其中命令是通过CMD信号线传送的。
2.Response:回应是DEVICE返回的HOST的命令,作为Command的回应。也是通过CMD线传送的。
3.Data:数据是双向的传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。
SDIO的每次操作都是由HOST在CMD线上发起一个CMD,对于有的CMD,DEVICE需要返回Response,有的则不需要。对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个读传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。对于写命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,会将数据放在4位的数据线上,在传送数据的同时会跟随着CRC校验码。当整个写传送完毕后,HOST会再次发送一个命令,通知DEVICE操作完毕,DEVICE同时会返回一个响应。
SDIO的寄存器:
SDIO卡的设备驱动80%的任务就是操作SDIO卡上的有关寄存器。SDIO卡最多允许有7个功能(function),这个同其功能号是对应的(1~7),每个功能都对应一个128K字节大小的寄存器,这个见下面的图。功能号之所以取值范围是1~7,而没有包含0,是因为功能0并不代表真正的功能,而代表CIA寄存器,即Common I/O Area,这个纪录着SDIO卡的一些基本信息和特性,并且可以改写这些寄存器。其中地址0x1000~0x17fff是SDIO卡的CIS区域,就是基本信息区域,Common Information Structure。初始化的时候读取并配对SDIO设备。
SDIO与SD接口的区别
SDIO协议是由SD卡的协议演化升级而来的,很多地方保留了SD卡的读写协议,同时SDIO协议又在SD卡协议之上添加了CMD52和CMD53命令。由于这个,SDIO和SD卡规范间的一个重要区别是增加了低速标准,低速卡的目标应用是以最小的硬件开始来支持低速I/O能力。低速卡支持类似调制解调器,条形码扫描仪和GPS接收器等应用。高速卡支持网卡,电视卡还有“组合”卡等,组合卡指的是存储器+SDIO。在非组合卡的SDIO设备里,其最高速度要只有达到25M,而组合卡的最高速度同SD卡的最高速度一样,要高于25M。
此外,SD卡和SDIO卡还在一些commands, R6 register, reset, bus width, card detect resistor, data transfer block sizes, data transfer abort, some fixed sd memory registers有差异,具体差异可查阅simplified sdio card spec.pdf第四章4.2~4.10.
第三篇:RS232-RS458-RS422通讯协议简介
原文地址:RS232、RS485、RS422通讯协议简介作者:黄花有主
一、什么是RS-232 接口?
(1)RS-232 的历史和作用
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C 接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。
(“RS-232-C”中的“-C”只不过表示RS-232 的版本,所以与“RS-232”简称是一样的)它是在1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC机将RS232 简化成了DB-9 连接器,从而成为事实标准。而工业控制的RS-232口一般只使用RXD、TXD、GND 三条线。
(2)RS-232 接口的电气特征
在RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3 到-15V;逻辑“0”为+3 到+15V。
RS-232-C 最常用的9 条引线的信号内容如下所示
DB-9123456789
DB-2583220764522
定义DCD RXD TXD DTR GND DSR RTD CTS RI
(3)RS-232 接口的物理结构
RS-232-C 接口连接器一般使用型号为DB-9 插头座,通常插头在DCE 端,插座在DTE端。PC 机的RS-232 口为9 芯针插座。一些设备与PC 机连接的RS-232 接口,因为不使用对方的传送控制信号,只需要三条接口线,即“发送数据TXD”、“接收数据RXD”和“信号地GND”。RS-232 传输线采用屏蔽双绞线。
(4)RS-232 传输电缆长度
由RS-232-C 标准规定在码元畸变小于4%的情况下,传输电缆长度应为50 英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10%-20%的范围工作的,所以实际使用中最大距离会远超过50 英尺,美国DEC 公司曾规定容许畸变为10%而得出下面实验结果。其中1 号电缆为屏蔽电缆,型号为DECP.NO.9107723 内有三对双绞线,每对有22#AWG 组成,其外覆以屏蔽线。2 号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04 是22#AWG 的四芯电缆。
DEC 公司的实验结果
波特率bps 1 号电缆传输距离(米)2 号电缆传输距离(米)
1500 900
300 1500 900
1200 900 900
2400 300 150
4800 300 7
59600 75 75
经过许多年来RS-232 器件以及通信技术的改进,RS-232 的通信距离已经大大增加。RS-232 增强器可以将普通的RS-232 口的通信距离延长到1000 米。
二、什么是RS-485 接口?
1、RS-485 的电气特性:发送端:逻辑“1”以两线间的电压差+(2 至6)V 表示;逻辑“0”以两线间的电压差-(2 至6)V 表示。接收端:A 比B 高200mV 以上即认为是逻辑“1”,A 比B 低200mV 以上即认为是逻辑“0”。
2、RS-485 的数据最高传输速率为10Mbps。但是由于RS-485 常常要与PC 机的RS-232 口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485 传输距离减小,所以往往为9600bps 左右或以下。
3、RS-485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。
4、RS-485 接口的最大传输距离标准为1200 米(9600bps 时),实际上可达3000米,RS-485 接口在总线上是容许连接多达128 个收发器、即
RS-485 具有多机通信功能,这样用户可以利用单一的RS-485 接口方便的建立起网络。因为RS-485 接口组成的半双工网络,一般只需二根信号线,所以RS-485 接口均采用双绞线传输。RS-485 的国际标准并没有规定RS-485 的接口连接器标准、所以采用接线端子或者DB-
9、DB-25 等连接器都可以。
5、采用RS-485 接口时,传输电缆的长度如何考虑?
在使用RS-485 接口时,对于特定的传输线经,从发生器到负载其数据信号传输所容许的最大电缆长度是数据信号速率的函数,这个长度数据主要是受信号失真及噪声等影响所限制。最大电缆长度与信号速率的关系曲线是使用24AWG 铜芯双绞电话电缆(线经为0.51mm),线间旁路电容为52.5PF/M,终端负载电阻为100 欧时所得出的。(引自GB11014-89 附录A)。当数据信号速率降低到90Kbit/S 以下时,假定最大容许的信号损失为6dBV 时,则电缆长度被限制在1200M。实际上,在实用时是完全可以取得比它大的电缆长度。当使用不同线经的电缆,则取得的最大电缆长度是不相同的。例如:当数据信号速率为600Kbit/S 时,采用24AWG 电缆,最大电缆长度是200m,若采用
19AWG电缆(线经为0.91mm)则电缆长度将可以大于200m;若采用28AWG 电缆(线经为0.32mm),则电缆长度只能小于200m。
RS-485 的远距离通信建议采用屏蔽电缆,并且将屏蔽层作为地线。
三、什么是RS-422 接口?
RS-422 的电气性能与RS-485 完全一样。主要的区别在于:
RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)。
RS-485 有两根数据线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能同时收和发(半双工)。
四、RS-485 比RS-232-C 接口相比有何特点?
答:由于RS-232 接口标准出现较早,难免有不足之处,主要有以下四点:
(1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL 电路连接。
(2)传输速率较低,在异步传输时,波特率为20Kbps。现在由于采用了新的UART芯片,波特率达到115.2Kbps。
(3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地
传输容易产生共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离标准值为50 米,实际上也只能用在15 米左右。
(5)RS-232 只容许一对一的通信,而RS-485 接口在总线上是容许连接多达128 个收发器。
第四篇:RS485通讯协议简介
RS485通讯协议简介.txt13母爱是迷惘时苦口婆心的规劝;母爱是远行时一声殷切的叮咛;母爱是孤苦无助时慈祥的微笑。本文由94liangmin94贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。VCD1000 系列矢量型变频器使用说明书
9.1 通讯概述
本公司系列变频器向用户提供工业控制中通用的 RS485 通讯接口。通讯协 议采用 MODBUS 标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采 用相同通讯协议的上位机(如 PLC 控制器、PC 机)通讯,实现对变频器的集中 监控,另外用户也可以使用一台变频器作为主机,通过 RS485 接口连接数台本 公司的变频器作为从机。以实现变频器的多机联动。通过该通讯口也可以接远 控键盘。实现用户对变频器的远程操作。本变频器的 MODBUS 通讯协议支持两种传送方式:RTU 方式和 ASCII 方式,用 户可以根据情况选择其中的一种方式通讯。下文是该变频器通讯协议的详细说 明。
9.2 通讯协议说明
9.2.1 通讯组网方式(1)变频器作为从机组网方式: 变频器作为从机组网方式:主机为 PC RS232 232-485 转 换模块 RS485 或 主机为 PLC 主机为 PC RS232 232-485 转换 模块 RS485 HD1000 HD1000
HD1000
HD1000
HD1000
单主机多从机
单主机单从机
图 9-1 从机组网方式示意图 -
(2)多机联动组网方式: 多机联动组网方式:
07-
VCD1000 系列矢量型变频器使用说明书
主机 HD1000 RS485
从机 HD1000
从机 HD1000
从机 HD1000
从机 HD1000
图 9-2 多机联动组网示意图 -
9.2.2 通信协议方式 该变频器在 RS485 网络中既可以作为主机使用,也可以作为从机使用,作 为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC 机或 PLC 可以作为主机控制变频器工作。具体通讯方式如下:(1)变频器为从机,主从式点对点通信。主机使用广播地址发送命令时,从机不应答。(2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。(3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。(4)从机在最近一次对主机轮询的应答帧中上报当前故障信息。9.2.3 通讯接口方式 通讯为 RS485 接口,异步串行,半双工传输。默认通讯协议方式采用 ASCII 方式。默认数据格式为:1 位起始位,7 位数据位,2 位停止位。默认速率为 9600bps,通讯参数设置参见 P3.09~P3.12 功能码。
9.3 ASCII 通讯协议 字符结构: 字符结构:位字符框(For ASCII)
(1-7-2 格式,无校验)
起 始 位 停 止 位 停 止 位
(1-7-1格式,奇校验)
08-
VCD1000 系列矢量型变频器使用说明书
起始 位
奇偶 位
停止 位
(1-7-1格式,偶校验)
起始 位
奇偶 位
停止 位
11位字符框(For RTU)
(1-8-2格式,无校验)
(1-8-1格式,奇校验)
(1-8-1格式,偶校验)
通讯资料结构: ASCII模式
桢头 Address Hi Address Lo Function Hi Function Lo DATA(n-1)„„„„„ DATA 0 LRC CHK Hi LRC CHK Lo END Hi END Lo 起始字符=“:(3AH)” 通讯地址: 8位地址由2个ASCII码组合 功能码: 8位地址由2个ASCII码组合 资料内容: n*8位资料内容由 2* n 个ASCII码组合,高位在前,低位在后,n<=4,最大8个ASCII码 LRC 校验码: 8位校验码由2个ASCII码组合。结束字符: END Hi = CR(0DH), END Lo = CR(0AH)-109-
VCD1000 系列矢量型变频器使用说明书 RTU模式: START Address Function DATA(n-
1)„„„„„ DATA 0 CRC CHK Low CRC CHK High END 通讯地址: 00H:所有变频器广播
(broadcast)01H:对01地址变频器通讯。0FH:对15地址变频器通讯。10H:对16地址变频器通讯。以此类推„„„.,最大可到254(FEH)。功能码(Function)与资料内容(DATA): 03H:读出寄存器内容。06H:写入一笔资料到寄存器。08H:回路侦测。功能码03H:读出一个寄存器内容: 例如:读出寄存器地址2104H内容(输出电流): ASCII模式: 询问信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H 功能码 回应信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H “0”30H CRC校验码 16-bit CRC校验码由2个8-bit 二进制组合 保持无出入信号大于等于10ms 保持无输入信号大于等于10ms 通讯地址:8-bit 二进制地址 功能码:8-bit 二进制地址 资料内容: N*8-bit 资料,N<=8,最大8个字节
VCD1000 系列矢量型变频器使用说明书
“3”33H 内容 “2”32H “1”31H “0”30H “4”34H 2104H地址内容 内容
“3”33H “2”32H “1”31H “0”30H “4”34H “0”30H “0”30H “0”30H “0”30H
LRC CHECK
“D” 44H “7” 37H
LRC CHECK
“D” 44H “7” 37H
END
CR 0DH LF 0AH
END
CR 0DH LF 0AH
RTU模式: 询问信息格式 地址 功能码 内容 01H 03H 21H 04H 回应信息格式 地址 功能码 内容 01H 03H 21H 04H 00H 00H CRC CHECK Low CRC CHECK High E8H 4BH CRC CHECK Low CRC CHECK High 0EH 37H
功能码06H:写入一笔资料到寄存器。例如:对变频器地址01H,写P0.02=50.00HZ功能码。ASCII模式: 询问信息字符串格式 回应信息字符串格式
VCD1000 系列矢量型变频器使用说明书
桢头 地址
“: ”3AH “0”30H “1”31H
桢头 地址
“: ”3AH “0”30H “1”31H
功能码
“0”30H “6”36H
功能码
“0”30H “6”36H
内容
“0”30H “0”30H “0”30H “2”32H “1”31H “3”33H “8”38H “8”38H内容
“0”30H “0”30H “0”30H “2”32H
2104H地址内容
“1”31H “3”33H “8”38H “8”38H
LRC CHECK
“5” 35H “C” 43H
LRC CHECK
“5” 35H “C” 43H
END
CR 0DH LF 0AH
END
CR 0DH LF 0AH
RTU模式: 询问信息格式 地址 功能码 内容 00H 06H 00H 02H 13H 88H CRC CHECK Low CRC CHECK High 25H 5CH CRC CHECK Low CRC CHECK High 回应信息格式 地址 功能码 内容 01H 06H 00H 02H 13H 88H 25H 5CH
VCD1000 系列矢量型变频器使用说明书
命令码:08H通讯回路测试 此命令用来测试主控设备与变频器之间通讯是否正常。变频器将收到的资料原封不动送给主控设备。
询问信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H “8”38H 内容 “0”30H “1”31H “0”30H “2”32H “0”30H “3”33H “0”30H “4”34H LRC CHECK “E” 45H “D” 44H END CR 0DH LF 0AH RTU模式: 询问信息格式 地址 功能码 内容 01H 08H 01H 02H
回应信息字符串格式 桢头 地址 “: ”3AH “0”30H “1”31H 功能码 “0”30H “8”38H 内容 “0”30H “1”31H “0”30H “2”32H 2104H地址内容 “0”30H “3”33H “0”30H “4”34H LRC CHECK “E” 45H “D” 44H END CR 0DH LF 0AH
回应信息格式 地址 功能码 内容 01H 08H 01H 02H
VCD1000 系列矢量型变频器使用说明书
03H 04H CRC CHECK Low CRC CHECK High 41H 04H CRC CHECK Low CRC CHECK High03H 04H 41H 04H
校验码: 校验码: ASCII 模式:双字节 ASCII 码。计算方法:对于消息发送端,LRC的计算方法是将要发送消息中“从机地址”到“运行数 据”没有转换成ASCII码的全部字节连续累加,结果丢弃进位,得到的8位字节按位取反,后 再加1(转换为补码),最后转换成ASCII码,放入校验区,高字节在前,低字节在后。对于 消息接收端,采取同样的LRC方法计算接收到消息的校验和,与实际接收到的校验和进行比较,如果相等,则接收消息正确。如果不相等,则接收消息错误。如果校验错误,则丢弃该消息 帧,并不作任何回应,继续接收下一帧数据。RTU 模式:双字节 16 进制数。CRC 域是两个字节,包含一 16 位的二进制值。它由发送端计算后加入到消息中;添加时 先是低字节,然后是高字节,故 CRC 的高位字节是发送消息的最后一个字节。接收设备重新计 算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同则接收消息有错误,丢 弃该消息帧,并不作任何回应,继续接收下一帧数据。CRC 校验计算方法具体参考 MODBUS 协议 说明。
通讯协议参数定义:
定义 内部设定参数 参数地址 GGnnH 功能说明 GG代表参数群,nn代表参数号码。对变频器命令(06H)
2000H
0001H:运行命令 0002H:正转运行命令 0003H:反转运行命令 0004H:点动运行命令 0005H:点动正转运行命令 0006H:点动反转运行命令 0007H:减速停机命令 0008H:紧急停车命令 0009H:点动停机命令 000AH:故障复位命令
2001H
串口设置频率命令
VCD1000 系列矢量型变频器使用说明书
监控变频器状态(03H)
2100H 2101H
读变频器故障码。读变频器状态 BIT0:运行停止标志,0:停止;1:运行 BIT1:欠压标志,1:欠压;0:正常。BIT2:正反转标志,1:反转;0:正转。BIT3:点动运行标志,1:点动;0:非点动。BIT4:闭环运行控制选择,1:闭环;0:非闭环。BIT5:摆频模式运行标志,1:摆频;0:非摆频。BIT6:PLC运行标志,1:PLC运行,0:非PLC运行。BIT7:端子多段速运行标志,1:多段速;0:非。BIT8:普通运行标志,1:普通运行;0:非。BIT9:主频率来源自通讯界面,1:是;0:否。BIT10:主频率来源自模拟量输入,1:是;0:否。BIT11:运行指令来源自通讯界面,1:是;0:否。BIT12:功能参数密码保护,1:是;0:否。2102H 2103H 2104H 2105H 2106H 2107H 2108H 2109H 210AH 210BH 读功能码数据(03H)GGnnH(GG:功能码组号。nn :功能码号)
读变频器设定频率。读变频器输出频率。读变频器输出电流。读变频器母线电压。读变频器输出电压。读电机转速。读模块温度。读VI模拟输入。读CI模拟输入。读变频器软件版本。变频器回应功能码数据。
VCD1000 系列矢量型变频器使用说明书
读功能码数据(06H)
GGnnH(GG:功能码组号。nn :功能码号。)
写入变频器的功能码数据。
错误码定义: 错误码定义: 错误码 01H 02H 03H 说明 功能码错误。变频器能够辩识功能码:03H,06H,08H。资料地址错误。资料地址变频器无法辩识。资料内容错误。资料内容超限。
第五篇:MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介
2008-10-10 17:27
1.1 Modbus协议简述
ACRXXXE系列仪表使用的是Modbus-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。
Modbus协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。
1.2 查询—回应周期
1.2.1 查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。
1.2.2 回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。
1.3 传输方式
传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与Modbus 协议– RTU方式相兼容的传输方式。
每个字节的位:
·1个起始位
·8个数据位,最小的有效位先发送
·无奇偶校验位
·1个停止位
错误检测(Error checking):CRC(循环冗余校验)
1.4 协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功的响应,或者返回一个错误指示帧。
1.4.1 数据帧格式
AddressFunctionDataCheck
8-Bits8-BitsN x 8-Bits16-Bits
1.4.2 地址(Address)域
地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。
1.4.3 功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。下表列出了该系列仪表用到的功能码,以及它们的意义和功能。
代码意义行为
03读数据寄存器获得一个或多个寄存器的当前二进制值
16预置多寄存器设定二进制值到一系列多寄存器中(不对 ACRXXXE开放)
1.4.4 数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。
1.4.5 错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16位循环冗余的方法(CRC16)。
1.5 错误检测的方法
错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。
上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。
生成一个CRC的流程为:
1预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
2把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
3将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
4如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
5重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。
6重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。7最终CRC寄存器的值就是CRC的值。