通用单片机通讯协议(ASCII)

合集下载

基于ASCII的单片机与组态王通讯设计

基于ASCII的单片机与组态王通讯设计

命令格式可查阅组态王使用手册。
2 通 信 流 程 图 1 组态 王从 单 片机 读 数 据 过 程 如 图 1所 示 。 )
字 头 HE AD: 1字节 1个 AS I , 0 Cl码 4 H
设备 地 址 : 节 2个 A CI , ~ 5 ( 0 0 0f 1字 S l 0 2 5 即 ~ xf 码 H)
标志: 1字 节 2个 AS l , i bi bt 0:读 , i =1: Cl码 bt 0~ t i 7, 0= bt 0
写 。 i : : 打包 。 i b 2 0 , bt O 不 1 bt i = 0 数据 类 型 为字 节 。 i bt = 1 3 t bt i 0 , 3 2 数据 类 型为 字 。bt bt = X 数 据 类 型为 浮 点 数 。 i i 1, 3 2
单 片 机的 串行 通 信 , 建 监 控 系 统 。 文 完 成 了组 态 王 与 单 片 机 构 本
通 讯 正 常 时下 位 单 片 机 应 答 格 式 为
HA ED 设 备 地 址 # # 蚌或 CR l ( 式 5 格 )
的通 讯 设 汁 , 方 法 设 汁简 单 且 实 时 性 好 , 用 于一 般 用 户 。 该 适 1 组 态 王 与 单 片机 的通 信 协 议
HE AD 设备 地址 标 志 数据 地 址 数据 字 节数 数 据 异 或 CR
通 讯 不 正常 时下 位 单 片机 应 答 为
J A J设备地址 j { HE D 异或 c J( 6) R 格式
其 中
和 舟} 不 同 的数 值 , }为 具体 组 态 王 与 单 片机 通 讯 的
异 或 :异 或 从 设 备 地址 到异 或 字 节前 ,异 或 值 转 换 成 2个

常见硬件通信(SPI、I2C、CAN、USB、UART)协议介绍

常见硬件通信(SPI、I2C、CAN、USB、UART)协议介绍

常见硬件通信(SPI、I2C、CAN、USB、UART)协议介绍其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

这就使在同一条总线上连接多个SPI设备成为可能。

接下来就负责通讯的3根线了。

通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。

这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。

数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。

完成一位数据传输,输入也使用同样原理。

因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输。

SCLK信号线只由主设备控制,从设备不能控制信号线。

同样,在一个基于SPI的设备中,至少有一个主控设备。

这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。

也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。

通过逻辑分析仪采集 spi 总线数据,可以看到四个通道的波形变化,判断信号的时钟周期、时钟相位和极性,并能够解码获取实际传输的数据和指令。

SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。

不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

I2C协议I2C推荐文章:《IIC通信协议,搞懂这篇就够了》注:后台发送“IIC” 即可获取基于STM32上实现软件模拟IIC的完整代码。

Modbus通讯协议RTUASCIITCP详细介绍完整版

Modbus通讯协议RTUASCIITCP详细介绍完整版

M o d b u s通讯协议R T U A S C I I T C P详细介绍集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Modbus通讯协议RTU ASCII TCP详细介绍Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。

许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。

此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

标准的Modicon控制器使用RS232C实现串行的Modbus。

Modbus的ASCII、RTU 协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。

另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。

二进制,十进制,十六进制,ASCII,BCD码的转换,单片机

二进制,十进制,十六进制,ASCII,BCD码的转换,单片机

1.在片内RAM 30H单元有-个8位二进制数,将其转换成压缩BCD码,存于片内RAM 41H(高位)40H(低位)中。

方法:2^8=256,所以8位二进制A<=256,A/100商是百位数,存放到41h单元,余数再除以10,再得商是10位数,高低位互换,) ORG 0100HSTART:MOV A,30H ;取来8位二进制数MOV B,#100DIV AB ;除以100MOV 41H,A ;商是百位数,存放到41h单元MOV A,B ;取回余数MOV B,#10DIV AB ;再除以10SWAP A ;商是10位数,高低位互换ORL A,BMOV 40H,A ;将十位数与个位位数存入40hSJMP $END2.一个字节(8位)BCD码转换为二进制数(方法:先将高半字节乘以10,再加上低半字节)设待转换的BCD码存放于R2中DTOB:MOV A,R2ANL A,#0F0HSWAP AMOV B,#0AHMUL ABMOV R3,AMOV A,R2ANL A,#0FHADD A,R3RET3.二进制数转换为ASCII码设(30H)=4BH,将高4位的ASCII码放在31H单元,低4位的ASCII码放在32H单元,程序具有通用性,向入口参数30H存入任何数,都能将其变成相应的ISCII 码.ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60HMOV 30H,#4BHMOV R2,30HMOV A,R2ANL A,#0FHCJNE A,#0AH,NEQNEQ: JC LOOPADD A,#37HJMP LOOP3LOOP:ADD A,#30HLOOP3:MOV 31H,AMOV A,R2SWAP AANL A,#0FHCJNE A,#0AH,NE1NE1: JC LOOP1ADD A,#37HJMP LOOP4LOOP1:ADD A,#30HLOOP4:MOV 32H,AA1: SJMP A1END4.已知R0的低半个字节为一个四位的二进制数,要求将其转换为ASCAII码后送回R0中。

FATEK 通讯协定

FATEK 通讯协定

附 录 二 -2
● 下 表 为 永 宏 PLC 通 讯 错 误 码 及 其 说 明 :
错误码 0 2 4 5 6 7 9 A


通讯正常(没有错误情形发生)
不合 法 数值 ( 如 10 进 制格 式 中 有 16 进 制数 字)
不 合 法 的 命 令 格 式 ( 含 不 合 法 的 命 令 码 ), 或 通 讯 命 令 无 法 执 行
附 录 二 -1
注 : P L C 的 站 号 在 出 厂 时 都 设 为 1 ( 第 1 站 ), 站 号 的 更 改 设 定 必 须 通 过 F P - 0 7 C 或 WinProladder 来 执 行 。
e命 令 号 码
: 为 两 位 数 的 16 进 制 数 值 , 所 谓 命 令 号 码 是 由 主 系 统 要 求 仆 系 统 所 执 行 的动作类型,例如要求读取或写入单点状态、填入或读取缓存器数据、 强 制 设 定 、 运 转 、 停 止 …..等 , 和 站 号 一 样 , 在 响 应 信 息 时 , 仆 系 统 也 会将从主系统接收的命令号码原原本本地随同本文数据一块传回主系 统。

R00000~ R65535 DR00000~ DR65534

D00000~ D65535 DD00000~ DD65534

F00000~ F65535 DF00000~ DF65534
附 录 二 -3
● 单 点 状 态( X,Y,M,S)可 以 将2 位 缓 存 器 来 用 , 如 上 表 的 WX△ △ △ △ 或 DWX△ △ △ △ , 但 △ △ △ △ 必 须 为 8 的 倍 数 。

c
d
字段名称→ ASCII 字 符 →

组态王通用单片机协议(ASCII)说明

组态王通用单片机协议(ASCII)说明

组态王通用单片机协议(ASCII)说明概述通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程序就可实现与组态王的通讯.组态王设置1、定义组态王设备定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口组态王的设备地址定义格式:##.#前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关.2、组态王通讯通讯方式:RS-232,RS-485,RS-422均可。

波特率:由单片机决定(2400,4800,9600and19200bps)。

注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致3.组态王数据词典--变量定义在组态王中定义的寄存器数据格式(类型):由单片机决定。

斜体字dd代表数据地址,此地址与单片机的数据地址相对应.注意:在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。

为提高通讯速度建议用户使用连续的数据区。

例如,1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量的寄存器为X0、X1、X2、X3、X4。

,数据类型为BYTE,每个变量占一个字节2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变量的寄存器为X100、X102、X104、X106、X108。

数据类型USHORT,每个变量占两个字节3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变量的寄存器为X200、X204、X208、X212。

《单片机应用技术》填空题题库x

《单片机应用技术》填空题题库x

《单片机应用技术》填空题题库x《单片机应用技术》习题库答案一、填空题第一、二章1.计算机中最常用的字符信息编码是(ASCII码)。

2.MCS-51系列单片机为( 8 )位单片机。

3.计算机三总线分别为:(数据)总线;(地址)总线;(控制)总线。

4.单片机与普通计算机的不同之处在于其将CPU 、存储器和I/O 三部分集成于一块芯片上。

5.能在紫外线照射下擦除和重写的存储器是(EPROM )型存储器,能够直接在线路中快速写入和读出的存储器是(EEPROM)型存储器。

6.8031、8051的主要区别是8051有 4 k内部ROM。

7.MCS-51单片机片内共有128 字节单元的RAM。

8.8031内部有RAM( 128 )字节、8751内部有ROM( 4K )。

9.MCS-51系列单片机8031、8051、89S52在内部存储器的设置上主要区别是:8031内部(无)程序存储器,8051内部( 4K )程序存储器,89C52内部( 8K )程序存储器。

10.8031构成的单片机应用系统必须扩展程序存储器。

11.M CS-51单片机片内RAM区中有128 个可寻址位。

12.8051单片机片内RAM区80H-0FFH属于特殊功能寄存器(SFR)区。

13.M CS-51单片机存储器结构的主要特点是程序存储器与数据存储器的寻址空间是分开的。

14.M CS-51单片机的存储器配置在物理结构上有4 个存储空间。

15.M CS-51单片机的存储器在逻辑上分为 3 个存储器地址空间16.当MCS-51单片机的EA引脚保持低电平时,CPU只访问片外的程序存贮器17.当EA接地时,MCS-51单片机将从外部程序存储器的地址0000H开始执行程序。

18.在只使用外部程序存储器时,51系列单片机的EA 管脚必须接地。

第1页共9页19.在只使用内部程序存储器时,51系列单片机的EA 管脚必须接高电平。

20.当使用8031单片机时,需要扩展外部程序存储器,此时/EA 应接低电平。

ASCII码对照表以及各个字符的解释(精华版)

ASCII码对照表以及各个字符的解释(精华版)

ASCII码对照表以及各个字符的解释(精华版)ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是⼀套基于拉丁字母的字符编码,共收录了 128 个字符,⽤⼀个字节就可以存储,它等同于国际标准 ISO/IEC 646。

ASCII 规范于 1967 年第⼀次发布,最后⼀次更新是在 1986 年,它包含了 33 个控制字符(具有某些特殊功能但是⽆法显⽰的字符)和 95 个可显⽰字符。

ASCII 码对照表⼆进制⼗进制⼗六进制缩写/字符解释00000000000NUL (NULL)空字符00000001101SOH (Start Of Headling)标题开始00000010202STX (Start Of Text)正⽂开始00000011303ETX (End Of Text)正⽂结束00000100404EOT (End Of Transmission)传输结束00000101505ENQ (Enquiry)请求00000110606ACK (Acknowledge)回应/响应/收到通知00000111707BEL (Bell)响铃00001000808BS (Backspace)退格00001001909HT (Horizontal Tab)⽔平制表符00001010100A LF/NL(Line Feed/New Line)换⾏键00001011110B VT (Vertical Tab)垂直制表符00001100120C FF/NP (Form Feed/New Page)换页键00001101130D CR (Carriage Return)回车键00001110140E SO (Shift Out)不⽤切换00001111150F SI (Shift In)启⽤切换000100001610DLE (Data Link Escape)数据链路转义000100011711DC1/XON (Device Control 1/Transmission On)设备控制1/传输开始000100101812DC2 (Device Control 2)设备控制2000100111913DC3/XOFF (Device Control 3/Transmission Off)设备控制3/传输中断000101002014DC4 (Device Control 4)设备控制4000101012115NAK (Negative Acknowledge)⽆响应/⾮正常响应/拒绝接收000101102216SYN (Synchronous Idle)同步空闲000101112317ETB (End of Transmission Block)传输块结束/块传输终⽌000110002418CAN (Cancel)取消000110012519EM (End of Medium)已到介质末端/介质存储已满/介质中断00011010261A SUB (Substitute)替补/替换00011011271B ESC (Escape)逃离/取消00011100281C FS (File Separator)⽂件分割符00011101291D GS (Group Separator)组分隔符/分组符00011110301E RS (Record Separator)记录分离符00011111311F US (Unit Separator)单元分隔符001000003220(Space)空格001000013321!001000103422"001000113523#001001003624$001001013725%001001103826&001001113927'001010004028(001010014129)00101010422A*00101011432B+ 00101100442C, 00101101452D-00101110462E. 00101111472F/ 0011000048300 0011000149311 0011001050322 0011001151333 0011010052344 0011010153355 0011011054366 0011011155377 0011100056388 0011100157399 00111010583A: 00111011593B; 00111100603C< 00111101613D= 00111110623E> 00111111633F? 010*********@ 010*********A 010*********B 010*********C 010*********D 010*********E 010*********F 010*********G 010*********H 010*********I 010********A J 010********B K 010********C L 010********D M 010********E N 010********F O 010*********P 010*********Q 010*********R 010*********S 010*********T 010*********U 010*********V 010*********W 010*********X 010*********Y 010********A Z 010********B[ 010********C\ 010********D] 010********E^010********F_011000009660`011000019761a011000109862b011000119963c0110010010064d0110010110165e0110011010266f0110011110367g0110100010468h0110100110569i011010101066A j011010111076B k011011001086C l011011011096D m011011101106E n011011111116F o0111000011270p0111000111371q0111001011472r0111001111573s0111010011674t0111010111775u0111011011876v0111011111977w0111100012078x0111100112179y011110101227A z011110111237B{011111001247C|011111011257D}011111101267E~011111111277F DEL (Delete)删除对控制字符的解释ASCII 编码中第 0~31 个字符(开头的 32 个字符)以及第 127 个字符(最后⼀个字符)都是不可见的(⽆法显⽰),但是它们都具有⼀些特殊功能,所以称为控制字符( Control Character)或者功能码(Function Code)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如,
1、在单片机中定义从地址0开始的数据类型为BYTE型的变量:
则在组态王中定义相应的变量的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节
2、在单片机中定义从地址100开始的数据类型为UINT型的变量:
则在组态王中定义相应的变量的寄存器为X100、X102、X104、X106、X108。。。。。。。。,数据类型UINT,每个变量占两个字节
bit3bit2 =1x,数据类型为浮点数。
数据地址:2字节4个ASCII码,0x0000~0xffff
数据字节数:1字节2个ASCII码,1—100,实际读写的数据的字节数。
数据…:为实际的数据转换为ASCII码,个数为字节数乘2。
异或:异或从设备地址到异或字节前,异或值转换成2个ASCII码
CR:0x0d。
46
30
30
30
46
30
34
31
30
46
46
46
46
30
30
字头
设备地址15
标志
写操作
浮点型
打包
数据地址15
数据字节数4
数据65535
30
30
0d
异或
若正确:
40
30
46
23
23
37
36
0d
字头
设备地址15
##
异或
若不正确:
40
30
46
2a
2a
37
36
0d
字头
设备地址15
**
异或
5.浮点数格式:
4字节浮点数=第一字节高4位ASCII码+第一字节低4位ASCII码
3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量:
则在组态王中定义相应的变量的寄存器为X200、X204、X208、X212。。。。。。。,数据类型FLOAT,每个变量占四个字节
3.组态王与单片机通讯的命令格式:
读写格式(除字头、字尾外所有字节均为ASCII码)
字头
设备地址
标志
数据地址
设备地址
标志
数据地址
数据字节数
数据…
异或
CR
下位机应答:若正常:
字头
设备地址
##
异或
CR
若不正常:
字头
设备地址
**
异或
CR
例1:写15号仪表,数据地址为15。写数据255,数据类型为字,不打包。组态王所发数据为:
40
30
46
43
35
30
30
30
46
30
32
30
30
46
46
37
34
0d
字头
设备地址15
四字节浮点数格式:(1)第一字节(2)第二字节(3)第三字节(4)第四字节
注:数符=0——正,数符=1——负阶符=0——正,阶符=1——负
D7 D6 D5~D0
★浮点数可表示范围:-1×232~1×232
★数符:1位阶符:1位阶码:6位
例:流量积算控制仪表瞬时流量测量值数据=100.210
转换成浮点数:100.210=270.7828125=0716+C816+6616+6616
40
30
46
43
32
30
30
30
46
30
31
37
30
0d
字头
设备地址15
标志
读操作
字节型
打包
数据地址15
数据字节数1
异或
若正确:
40
30
46
30
31
36
34
37
35
0d
字头
设备地址15
数据字节数1
数据100
异或
若不正确:
40
30
46
2a
2a
37
36
0d
设备地址15
**
异或
3.2.上位机发送写命令
字头
组态王与单片机协议
1.通讯口设置:
通讯方式:RS-232,RS-485,RS-422均可。
波特率:由单片机决定(2400,4800,9600and19200bps)。
字节数据格式:由单片机决定。
起始位
数据位
校验位
停止位
注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致
通讯尝试恢复命令(COMERROR),请求地址为0的一个BYTE数据
3.1.上位机发送读命令
字头
设备地址
标志
数据地址
数据字节数
异或
CR
下位机应答:若正常:
字头
设备地址
数据字节数
数据…
异或
CR
若不正常:
字头
设备地址
**
异或
CR
例1:读15号仪表,数据地址为15的数据。其中数据为100,数据类型为字节,不打包。组态王所发数据为:
标志
写操作
字型
不打包
数据地址15
数据字节数2
数据255
Hale Waihona Puke 异或若正确:4030
46
23
23
37
36
0d
字头
设备地址15
##
异或
若不正确:
40
30
46
2a
2a
37
36
0d
字头
设备地址15
**
异或
例2:写15号仪表,数据地址为15。写数据65535,数据类型为浮点型,打包。组态王所发数据为:
40
30
46
43
寄存器名称
dd上限
dd下限
数据类型
Xdd
65535
0
FLOAT/BYTE/UINT
斜体字dd代表数据地址,此地址与单片机的数据地址相对应。
注意:在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,UINT,FLOAT)的不同分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。为提高通讯速度建议用户使用连续的数据区。
数据字节数
数据…
异或
CR
说明;
字头:1字节1个ASCII码,40H
设备地址:1字节2个ASCII码,0—255(即0---0x0ffH)
标志:1字节2个ASCII码,bit0~bit7,
bit0= 0:读,bit0= 1:写。
bit1= 0:不打包。
bit3bit2 = 00,数据类型为字节。
bit3bit2 = 01,数据类型为字。
+第二字节高4位ASCII码+第二字节低4位ASCII码
+第三字节高4位ASCII码+第三字节低4位ASCII码
+第四字节高4位ASCII码+第四字节低4位ASCII码
第1字节低4位第2字节低4位第3字节低4位第4字节低4位
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
第1字节高4位第2字节高4位第3字节高4位第4字节高4位
40
30
46
43
30
30
30
30
46
30
31
37
32
0d
字头
设备地址15
标志
读操作
字节型
不打包
数据地址15
数据字节数1
异或
若正确:
40
30
46
30
31
36
34
37
35
0d
字头
设备地址15
数据字节数1
数据100
异或
若不正确:
40
30
46
2a
2a
37
36
0d
字头
设备地址15
**
异或
例2:读15号仪表,数据地址为15的数据。其中数据为100,数据类型为字节,打包。组态王所发数据为:
2.在组态王中定义设备地址的格式
格式:##.#
前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;
后面的一个字符是用户设定是否打包,“0”为不打包、“1”为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作。
3.在组态王中定义的寄存器格式
相关文档
最新文档