表5.4.1 温度曲线实际测量数据
温度(℃) 12 13 14 15 16 17 18
电压(V) 2.52 2.48 2.47 2.44 2.40 2.39 2.37
温度(℃) 19 20 21 22 23 24 25
电压(V) 2.32 2.28 2.22 2.15 2.09 1.83 1.73
温度(℃) 26 27 28 29 30 31 32
电压(V) 1.70 1.66 1.64 1.61 1.58 1.56 1.54
温度(℃) 33 34 35 36 37 38 39
电压(V) 1.53 1.50 1.48 1.46 1.45 1.43 1.41
温度(℃) 40 41 42 43 44 45 46
电压(V) 1.40 1.38 1.37 1.35 1.32 1.30 1.29
温度(℃) 47 48 49 50 51 52 53
电压(V) 1.27 1.26 1.25 1.24 1.22 1.20 1.19
温度(℃) 54 55 56 57 58 59 60
电压(V) 1.17 1.16 1.12 1.11 1.09 1.07 1.06 图5-1
图5.4.1 温度分段线限等效图
6 通信协议的设计
由于温度采集和实施控制是通过单片机控制系统实现,而微机完成温度监控,所以需要采用单片机和微机之间的通信协议。本设计应用条件为传输距离不超过15米的短距离数据传输,且传输数据量较小,所以采用在控制领域里应用较广泛RS232C串行通信方式。
针对近程小批量的数据通信,设计时采用3 线制(RXD ,TXD ,GND)软握手的零MODEM方式。即:将PC机和单片机的“发送数据线(TXD)”与“接收数据(RXD)”交叉连接,二者的地线(GND)直接相连而其它信号线如握手信号线均不用,而采用软件握手。这样即可以实现预定的任务,又可以简化电路设计节约了成本。
由于RS232C是早期为促进公用电话网络进行数据通信而制定的标准,其逻辑电平与TTL, MOS 逻辑电平不同。逻辑0 电平规定为+5~+15V之间,逻辑1是电平为-5 ~-15V 之间。因此在将PC机和单片机的RXD和TXD交叉连接时,必须进行电平转换。
下图即为通信时的硬件连接图,其中器件MAX232完成逻辑电平转换的任务。
图6.1 电平转换电路图
注:在PC机中9针RS232接口中:2线:RXD, 3线:TXD, 5线:GND
而在25针的RS232接口中:3线:RXD, 2线:TXD, 7线:GND
6.1 软件设计
在进行数据通信的软件设计时,必须解决好两个方面的问题:一是可靠性,二是速度。而这两方面的问题,可靠性是第一位的,速度只能是在可靠的基础上的速度。可靠快速转输的实现,需要PC-单片机软件以及通信协议等各个环节的可靠和其间的相互配合。
6.1.1 通信协议概述
在设计PC-单片机通信协议时,需说明一点:在本系统的实际通信中,PC机是主控者单片机只是被动接收者。采用这种通信协议较双方互为主控者时简单。
本通信协议的设计思想是基于帧传输方式。即在向RS232串口发送命令信号,应答信号及数据信号时,是一帧一帧地发送的。为了使数据快速可靠地传输,将每一帧数据唯一对应一命令帧。此时传输数据即执行命令具体如下:
(1) 在PC读数据时,遵循“读命令-等数据-报告”,即PC下达一命令,等待接收数据,根据所接收数据的正误向应用程序报告此命令的执行情况。
(2) 在PC写数据时,遵循“写命令-等回应-报告”,即PC下达一写命令(此时所要写的数据含于此命令中),等待单片机发来的“已正确接收”的回应信号,并向应用程序报告此命令执行完毕。
(3) 如果在转输过程中,其间PC或MCU所接收任何一帧信号出现错误时,均会向对方发送重发此帧信号的请求。如果连续三次转输失败,则退出通信并向应用程序报告。
6.2 通信协议说明
6.2.1信号帧分类
(1) 读命令帧:当PC读数据时,PC向PIC16F877A发送的命令信号。
(2) 写命令帧:当PC写数据时,PC向PIC16F877A发送的命令信号(内含所要写的数据)。
(3) 数据帧:当PC读数据时,PIC16F877A向PC发送的内含数据信息的信号。
(4) 正回应帧:当PC写数据时,PIC16F877A向PC报告数据已正确接收的信号。
(5) 重发命令帧:当PC读/写数据时,PIC16F877A所接收的信号帧(读/写命令帧)有误时向PC发出的请求重发信号。
(6) 放弃命令帧:当PC读/写数据时出现了使程序无法正常执行时PC或PIC16F877A向对方发出的退出通信的通知信号。
6.2.2信号帧格式
(1) 读命令帧格式
帧头标志 帧类型 器件地址 起始地址
长度 校验和 帧尾标志
帧头标志(1 Bit): 表示此数据包属于本串口通信协议,并为是否接收此包数据的标志。
帧类型(1 Bit): 所用信号帧的识别标志,即1.2.1 信号帧分类中的各类型信号的标志字节。
器件地址(1Byte): PC所要访问的外部器件的地址即是哪一个外部器件。
起始地址(2Byte): PC所要访问的器件的存贮器起始地址。
长度(1Byte): 一次命令所转输的数据长度。
校验和(1Byte): 此帧信号的校验字节,为异或校验。
帧尾标志(1Byte): 此帧信号的结束标志。
(2) 写命令帧
帧头标志 帧类型 器件地址 起始地址
长度 数据区 校验和 帧尾标志
数据区:所要写的数据信息。其它分析同上。
(3) 数据帧
帧头标志 帧类型 长度 数据区 校验字 帧尾标志
长度:所转输数据的长度。
数据区:所转输的数据信息。其它分析同上。
(4) 正响应帧
帧头标志 帧类型 空 校验字 帧尾标志
空无意义:为了PIC16F877A编程的方便而加入。其它分析同上。
(5) 重发帧
帧头标志 帧类型 空 校验字 帧尾标志
其它分析同上。
(6) 放弃帧
帧头标志 帧类型 错误码 校验字 帧尾标志
错误码:
00H 执行PC命令发放弃帧回应被动退出通讯。
01H PIC16F877A 单片机方写入芯片发生错误主动通知PC退出通讯。
6.2.3 通信协议处理流程
(1) 数据分帧与数据重组
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>