文档库 最新最全的文档下载
当前位置:文档库 › 上位机与下位机通过蓝牙通讯协议

上位机与下位机通过蓝牙通讯协议

文档名称:蓝牙通信协议编制审定:解晓飞

目录

1 前言 (2)

2帧定义 (2)

2同步字 (2)

3帧类型 (3)

4通讯流程 (3)

4.1设置采集信息 (3)

4.2采集测试命令 (3)

4.3开始采集、结束采集 (4)

5通信原则 (4)

PDA与下位机蓝牙通讯协议

1 前言

本协议用于定义PDA通过蓝牙与下位机进行数据通信的底层操作。数据传输以信息帧格式传输,且帧长度为非定长信息。

2帧定义

系统中共有三种帧格式,根据类型的不同帧的格式也不同具体定义如下:

3.1、命令帧

3.2 回复帧

3、2数据帧

其中命令帧是由PDA发给单片机的,回复帧和数据帧是由单片机发给PDA 的。

2同步字

为保证数据正确传输,帧格式中设有起始同步字和结束同步字,起始同步字包括两个字节,内容为0xaa、0xaa,结束同步字包括两个字节,内容为0x55、0x55。

3帧类型

类型字包括一个字节,表示发送的数据的类型,本系统中包括三个类型:命令、回复、数据三类。具体定义如下:

4通讯流程

操作过程中PDA均采用主动模式,单片机采用被动模式。

4.1设置采集信息

单片机启动后等待接收蓝牙命令首先进行参数设置,本部分由PDA控制。

PDA发送设置命令(帧类型0x30)并将信息发送到单片机,单片机接收到数据后检测数据个数是否正确,如果检测正确返回接收正确命令否则返回接收错误命令。

如果单片机返回的数据为接收错误,PDA重新发送命令。

从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值,自动重新发送命令并等待,重复上述操作。

发送三次都没有返回值时弹出警告对话框,提示蓝牙通讯故障。

如发送数据正常则提示设置成功信息对话框。

4.2采集测试命令

1、PDA发送采集命令

PDA发送采集设置命令(帧类型0x30),单片机接收到数据后检测数据是否正确,如果检测错误则返回接收错误命令。PDA接收到单片机返回接收错误回复,PDA重新发送命令。

从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值(采集数据或错误回复值),自动重新发送命令并等待,重复上述操作。

发送三次都没有返回值时弹出警告对话框,提示蓝牙通讯故障。

2、PDA接收数据:

单片机接收到采集测试命令并检验命令格式正确后,开始执行波形采集操作。采集完后然后发送采集数据。

4.3开始采集、结束采集

流程与“设置采集信息”流程相同,参见4.1。

5通信原则

通信操作要遵循以下原则:

(1)PDA为主控制模式,单片机为从模式,每次的通信操作都由PDA发起,由单片机回复,单片机不主动申请与PDA通信。回复信息根据

命令内容可以是回复字,也可以是检测或文件读取数据信息。

(2)PDA每次发送命令后都要等待单片机的返回值,只有返回正确信息值后才可继续执行下面的操作。

(3)PDA端要有超时处理提示。

上位机和下位机通信

目录 摘要 1 引言 (1) 2 结构设计与方案选择 (2) 2.1设计任务 (2) 2.1.1单片机的选择 (2) 2.1.2电平转换 (2) 2.1.1单片机的选择 (2) 2.1.3单片机与pc机通信原理 (2) 2.2软件方案选择 (2) 2.2.1 上位机编程方案选择 (3) 2.2.2 单片机编程方案选择 (3) 2.3 总体方案选择 (2) 3 硬件设计 (8) 3.1单片机主要特性 (5) 3.2 MAX232电平芯片介绍10 (10) 3.3 硬件电路设计图 (11) 3.3.1 PC机与单片机通信接口电路设计框图 (11) 3.3.2整体设计原理图 (11) 4软件设计 (12) 4.1上位机程序设计 (12) 4.2下位机程序设计 (13) 5 软硬件调试部分 (21) 5.1 PROTEUS软件仿真 (21) 5.1.1 Protues简介 (21) 5.1.2 Protues仿真电路图 (22) 5.2 VC软件仿真 (21) 结束语 (27) 致谢 (28) 参考文献 (29)

摘要 本文主要描述了利用PC机与AT89C51单片机之间的通信程序设计实现温度显示。并详述了在VC6.0环境下,上位机利用MSCOMM通信控件与单片机之间串口通信实现温度显示。由单片机采集一个温度信号,将采集到的温度信号传送给PC机显示,PC机用VC6.0编写程序,单片机程序用C语言编写,最后用PROTUES软件进行仿真实现温度显示。 关键词:单片机MSCOMM控件VC6.0 AT89C51 温度显示

1引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。 现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。

上位机与下位机之间通信协议格式

一、通信协议 1、命令帧格式 帧头标志参数校验帧尾 命令字 01累加和 2030 1Byte1Byte2Byte1Byte1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。

2、信息帧格式 帧头标志参数校验帧尾 命令字 2030 02累加和 1Byte1Byte2Byte1Byte1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。

3、数据帧格式 (文件mokuaideng.txt (模块指示灯地址) 20 Byte ) 帧头标志校验帧尾203003累加和数据数据1Byte 16Byte 1Byte 1Byte 1Byte 标志:03 数据帧 文件mokuaideng.txt (模块指示灯地址) 20 Byte 04 数据帧 文件daotongbiao.txt (导通表) 40 Byte 05 数据帧 文件canshu.txt (控制参数) 6 Byte 06 数据帧 校验文件mokuaideng.txt (模块指示灯地址) 20 Byte 07 数据帧 校验文件daotongbiao.txt (导通表) 40 Byte 08 数据帧 校验文件canshu.txt (控制参数) 6 Byte 4、信息帧格式 定位物理针位 下位机-》上位机 上位机-》下位机 点亮指示灯 帧头标志参数校验帧尾203011累加和物理针位1Byte 1Byte 2Byte 1Byte 1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。 标志位 13 ,单点检测 判断单点导通关系是否真确 5、信息帧格式 下位机-》上位机 自检、线检测 帧头标志参数1校验帧尾203012累加和起始针位1Byte 1Byte 2Byte 1Byte 1Byte 参数2终点针位2Byte 参数3状态1Byte 状态:00 导通 01 断路 02 短路/错路

(合同制定方法)单片机与上位机通信协议的制定

(合同制定方法)单片机与上位机通信协议的制定

单片机和上位机通信协议的制定 单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!上行协议,即由单片机向上位机发送数据。 下行协议,即由上位机向单片机发送数据。 而通信协议又要分固定长度和不定长度俩种 本文所介绍的协议属于简单的固定字长的通信协议! 下行协议由四个字节构成

上表是简单的上位机对单片机的控制指令 下述函数是C#中封装的串口通信类中的发送函数的封装publicvoidSerSendCommu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数 //据,需要时可直接调用 { Byte[]BSendTemp=newByte[SEND_LENTH]; BSendTemp[0]=PRE; BSendTemp[1]=orderDef; BSendTemp[2]=data; BSendTemp[3]=END; this.serialPort1.Write(BSendTemp,0,SEND_LENTH); } 下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断 ISR(USART_RXC_vect)//串口接收中断

{ unsignedcharstatus,data; status=UCSRA;//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的 //值即会改变** data=UDR; if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令 { if((status&((1<

基于C#的串口通信上位机和下位机源代码

基于单片机串口通信的上位机和下位机实践串口 Universal Serial Bus或者USB RS232 GPIB兼容的设备也带有RS-232 获取远程采集设备的数据。 bit byte 发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488 202 1200米。 首先亮出C#的源程序吧。

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/3d12749475.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Timers; namespace 单片机功能控制 { public partial class Form1 : Form { public Form1() {

InitializeComponent(); } SerialPort sp = new SerialPort(); private void button1_Click(object sender, EventArgs e) { String str1 = comboBox1.Text;//串口号 String str2 = comboBox2.Text;//波特率 String str3 = comboBox3.Text;//校验位 String str4 = comboBox5.Text;//停止位 String str5 = comboBox4.Text;//数据位 Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型groupBox3.Enabled = true;//LED控制界面变可选 try { if (button1.Text == "打开串口") { if (str1 == null)

基于C#的串口通信上位机和下位机源程序文件

基于单片机串口通信的上位机和下位机实践 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 首先亮出C#的源程序吧。 主要界面: 只是作为简单的运用,可以扩展的。 源代码: using System; using System.Collections.Generic; using https://www.wendangku.net/doc/3d12749475.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Timers; namespace 单片机功能控制 { public partial class Form1 : Form

{ public Form1() { InitializeComponent(); } SerialPort sp = new SerialPort(); private void button1_Click(object sender, EventArgs e) { String str1 = comboBox1.Text;//串口号 String str2 = comboBox2.Text;//波特率 String str3 = comboBox3.Text;//校验位 String str4 = comboBox5.Text;//停止位 String str5 = comboBox4.Text;//数据位 Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型 Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型 groupBox3.Enabled = true;//LED控制界面变可选 try { if (button1.Text == "打开串口") { if (str1 == null) { MessageBox.Show("请先选择串口!", "Error"); return; } sp.Close(); sp = new SerialPort(); sp.PortName = comboBox1.Text;//串口编号 sp.BaudRate = int2;//波特率 switch (str4)//停止位 { case "1": sp.StopBits = StopBits.One; break; case "1.5": sp.StopBits = StopBits.OnePointFive; break; case "2": sp.StopBits = StopBits.Two; break;

上位机通讯协议

2006 12 28 V1.0.01 [ ] 1 2006 11 29 V1.0 MODBUS-RTU MODBUS 01 ON/OFF) 02 ON/OFF) 03 04 05 06 07 8 8 08 09 484 PC 10 484 9 c u-t r a c

11 12 ModBus 13 184/384 484 584 PC 14 184/384 484 584 13 15 16 17 18 884 MICRO 84 PC 19 20 584L 21 584L 22 64 65 c u-t r a c

xx6X x x x abcd a b c d Bit7-bit4 Bit3-bit0B 66 xx6x X x x x x x x c u-t r a c

xx6x x x x x x (x) 67 [ ] 68 xx6x x x x x x x x x xx6x x x x x x x x (x) 0 1= 2= 3= 4= 5= 6= 7= 69 xx6X0x c u-t r a c

xx6x x 70 xx6X x x x xx6x 71 xx x X x x xx x x x 100 72 c u-t r a c

xx x X x x x xx x x 73 [ ] [ ] 74 [ ] [ ] 75 [ ] [ ] 76 [ ] [ ] 77 [ ] [ ] 78 [ ] [ ] 79 [ ] [ ] 80 [ ] [ ] 81 [ ] [ ] 82 [ ] [ ] 83 [ ] [ ] 84 [ ] [ ] 85 [ ] [ ] 86 [ ] [ ] 87 [ ] [ ] 88 [ ] [ ] 89 [ ] [ ] 90 [ ] [ ] c u-t r a c

上位机与下位机之间的连接

第一章上位机与下位机 1.1 上位机与下位机的概念 上位机和下位机,一般是指集中控制系统中的PC机和现场的工控机。上位机(PC 机)主要用来发出操作指令和显示结果数据,下位机(工控机)则主要用来监测和执行上位机的操作指令。举个例子,蓄电池生产中,需要按工艺要求进行充电和放电。现场有许多工位,各自配有智能的充放电设备,它们就是“下位机”。整个车间有一台PC机来集中管理,这就是“上位机”。 上位机软件一般用高级语言编程,如BASIC、C,有比较丰富的图形界面。下位机的编程,依所用的MCU而异,以汇编为主。 上位机和下位机之间的通讯,常见是RS-232,RS-485,当然还有很多,但都是串行方式。特别是“一对多”的RS-485用得最普遍。 上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。 另外,上位机和下位机是通过通讯连接的“物理”层次不同的计算机,是相对而言的。一般下位机负责前端的“测量、控制”等处理;上位机负责“管理”处理。下位机是接收到主设备命令才执行的执行单元,即从设备,但是,下位机也能直接智能化处理测控执行;而上位机不参与具体的控制,仅仅进行管理(数据的储存、显示、打印......人机界面等方面)。常见的DCS系统,“集中-分散(集散)系统”是上位机集中、下位机分散的系统。 在概念上,控制者和提供服务者是上位机.被控制者和被服务者是下位机.也可以理解为主机和从机的关系.但上位机和下位机是可以转换的. 两机如何通讯,一般取决于下位机。TCP/IP一般是支持的。但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯。里面会举大量例子。一般对编程人员而言一看也就那么回事,使用一些新的API罢了。多语言支持功能模块,一般同时支持数种高级语言为上位机编程。 上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信

上位机与下位机通过蓝牙通讯协议

文档名称:蓝牙通信协议编制审定:解晓飞

目录 1 前言 (2) 2帧定义 (2) 2同步字 (2) 3帧类型 (3) 4通讯流程 (3) 4.1设置采集信息 (3) 4.2采集测试命令 (3) 4.3开始采集、结束采集 (4) 5通信原则 (4)

PDA与下位机蓝牙通讯协议 1 前言 本协议用于定义PDA通过蓝牙与下位机进行数据通信的底层操作。数据传输以信息帧格式传输,且帧长度为非定长信息。 2帧定义 系统中共有三种帧格式,根据类型的不同帧的格式也不同具体定义如下: 3.1、命令帧 3.2 回复帧 3、2数据帧 其中命令帧是由PDA发给单片机的,回复帧和数据帧是由单片机发给PDA 的。 2同步字 为保证数据正确传输,帧格式中设有起始同步字和结束同步字,起始同步字包括两个字节,内容为0xaa、0xaa,结束同步字包括两个字节,内容为0x55、0x55。

3帧类型 类型字包括一个字节,表示发送的数据的类型,本系统中包括三个类型:命令、回复、数据三类。具体定义如下: 4通讯流程 操作过程中PDA均采用主动模式,单片机采用被动模式。 4.1设置采集信息 单片机启动后等待接收蓝牙命令首先进行参数设置,本部分由PDA控制。 PDA发送设置命令(帧类型0x30)并将信息发送到单片机,单片机接收到数据后检测数据个数是否正确,如果检测正确返回接收正确命令否则返回接收错误命令。 如果单片机返回的数据为接收错误,PDA重新发送命令。 从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值,自动重新发送命令并等待,重复上述操作。 发送三次都没有返回值时弹出警告对话框,提示蓝牙通讯故障。 如发送数据正常则提示设置成功信息对话框。 4.2采集测试命令 1、PDA发送采集命令 PDA发送采集设置命令(帧类型0x30),单片机接收到数据后检测数据是否正确,如果检测错误则返回接收错误命令。PDA接收到单片机返回接收错误回复,PDA重新发送命令。 从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值(采集数据或错误回复值),自动重新发送命令并等待,重复上述操作。

上位机下位机串口通信

大连海事大学 课程设计报告 课程名称:计算机微机原理课程设计 成员: 成员1:2220133293 范凯锋 成员2:2220132642 唐绍波 成员3:2220130079 曹晓露 设计时间:2016年3月7日至3月18日

考核记录及成绩评定

目录 1.设计任务与要求 (1) 1.1课程设计题目 (1) 1.2课程设计的背景 (1) 1.3课程设计的目的 (1) 1.4课程设计的意义 (1) 1.5设计任务 (1) 2.设计方案 (2) 2.1参数采集和传输设计 (2) 2.2参数显示设计 (2) 2.3模拟信号采样设计 (2)

2.4硬件研制过程 (2) 3.详细设计 (3) 3.1硬件系统框图与说明 (3) 3.2硬件设计 (4) 3.3软件主要模块流程图与说明 (7) 4.设计结果及分析 (8) 5.成员分工及工作情况 (9) 5.1成员分 工 (9) 5.2工作情 况 (9) 5.3实验总结 (9) 6.参考文献 (9) 7. 附录 (10)

一、设计任务与要求 1.1课程设计题目 双机数据采集系统设计 1.2 课程设计的背景 二十一世纪是信息化高速发展的世纪,产业的信息化离不开微型计算机的支持。微型计算机的进步是推动全球信息化的动力。因此在二十一世纪掌握微型计算机接口技术是十分有必要的。本次课题是双机参数采集系统设计,这次课题旨在通过自己对所需功能芯片的设计与实现来巩固以前所学的微机原理课程知识,同时也提高动手实践的能力,还有为将来进行更大规模更复杂的开发积累经验。 随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。 1.3课程设计的目的 《微机原理与汇编语言》是一门实践性和实用性都很强的课程,本次课程设计是在课程学习结束后,为使学生进一步巩固课堂和书本上所学知识,加强综合能力,充分理解和运用所学到的知识,通过简单的应用系统的设计,提高系统设计水平,启发创新思想。通过本课程设计希望达到以下目地: ?培养资料搜集和汇总的能力; ?培养总体设计和方案论证的意识; ?提高硬件,软件设计与开发的综合能力; ?提高软件和硬件联合调试的能力; ?熟练掌握相关测量仪器的使用方法;

PC(上位机)与PLC串行通讯协议与串口DLL之 modbus rtu 协议

Modbus rtu通信协议串口通讯动态链接库DLL(以下简称DLL),是为满足工业通信需要,针对工业领域要求上位机对PLC、工业仪表通讯实时采集与控制的组态编程而设计。 本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点: 1)、遵循modbus rtu串口通讯协议(施耐德、西门子、台达、永宏等品牌PLC及各类工业仪表等支持本协议); 2)、实时性、可靠性好,通用性强; 3)、适用于多PLC联网和上位机通信,满足多方面的需要(联网时可采用485总线式); 4)、函数接口功能全,操作简单,支持modbus的大部分读写功能函数; 5)、附加实用转换与读取函数,易于快速开发(VC等非RAD开发环境的开发); 6)、支持USB、PC扩展卡等扩展串口号; 7)、支持多种操作系统win9x/win2000/winXP(标注Win32 DLL); 8)、可在多种编程环境下使用,例如VB、VC、Delphi等开发环境。 9)、支持modbus rtu标准的功能代码01、02、03、04、05、06、15、16且对相关功能代码的读取和写如做了一些扩充更加符合工业自动化领域的工控软件的开发,是广大工控工程师的必备工具软件。 二、modbus rtu通讯协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网) 和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集 中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请 求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共 格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定 要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消 息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus网络上转输 标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制 器能直接或经由Modem组网。控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备) 根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备 可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播 方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、

上位机与下位机之间通信编程

摘要 本文主要描述了利用PC机与A T89C51单片机之间的通信程序设计实现温度显示。并详述了在VC6.0环境下,上位机利用MSCOMM通信控件与单片机之间串口通信实现温度显示。由单片机采集一个温度信号,将采集到的温度信号传送给PC机显示,PC机用VC6.0编写程序,单片机程序用C语言编写,最后用PROTUES软件进行仿真实现温度显示。 关键词:单片机MSCOMM控件VC6.0 AT89C51 温度显示

目录 摘要 1 引言 (1) 2 结构设计与方案选择 (2) 2.1设计任务 (2) 2.1.1单片机的选择 (2) 2.1.2电平转换 (2) 2.1.1单片机的选择 (2) 2.1.3单片机与pc机通信原理 (2) 2.2软件方案选择 (2) 2.2.1 上位机编程方案选择 (3) 2.2.2 单片机编程方案选择 (3) 2.3 总体方案选择 (2) 3 硬件设计 (8) 3.1单片机主要特性 (5) 3.2 MAX232电平芯片介绍10 (10) 3.3 硬件电路设计图 (11) 3.3.1 PC机与单片机通信接口电路设计框图 (11) 3.3.2整体设计原理图 (11) 4软件设计 (12) 4.1上位机程序设计 (12) 4.2下位机程序设计 (13) 5 软硬件调试部分 (21) 5.1 PROTEUS软件仿真 (21) 5.1.1 Protues简介 (21) 5.1.2 Protues仿真电路图 (22) 5.2 VC软件仿真 (21) 结束语 (27) 致谢 (28) 参考文献 (29)

1引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。 现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。

仪表与上位机ModBus通讯协议

仪表与上位机ModbusRTU通讯协议 1、接口规格 为与PC机或PLC编控仪联机以集中监测或控制仪表,仪表提供RS232、RS485两种数字通讯接口,光电隔离,其中采用RS232通讯接口时上位机只能接一台仪表,三线连接,传输距离约15米;采用RS485通讯接口时上位机需配一只RS232-485的转换器,最多能接64台仪表,二线连接,传输距离约一千米。2、通讯协议(适合本厂所有1~16路仪表) (1)通讯波特率为1200、2400、4800、9600四档可调,数据格式为1个起始位、8个数据位,1个停止位,无校验位。 (2)上位机读一个参数(2字节) 仪表编号功能代码(03)参数首地址读取的字数(0001)CRC16 1byte1byte2byte2byte2byte (3)仪表返回(2字节): 仪表编号功能代码(03)读取的字节数(02)参数值CRC16 1byte1byte1byte2byte2byte (4)上位机写一个参数(2字节)及仪表返回(2字节)(帧格式相同): 仪表编号功能代码(6)参数首地址参数值CRC16 1byte1byte2byte2byte2byte (5)参数代码及地址见仪表说明书 通道显示值地址: 1通道:1001H2通道:1002H3通道:1003H4通道:1004H 5通道:1005H6通道:1006H7通道:1007H8通道:1008H 9通道:1009H10通道:100AH11通道:100BH12通道:100CH 13通道:100DH14通道:100EH15通道:100FH16通道:1010H (6)仪表主控输出状态地址: 1通道:1101H2通道:1102H3通道:1103H4通道:1104H 5通道:1105H6通道:1106H7通道:1107H8通道:1108H 9通道:1109H10通道:110AH11通道:110BH12通道:110CH 13通道:110DH14通道:110EH15通道:110FH16通道:1110H (7)仪表报警输出状态地址: 1200H D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0 AL16AL15AL14AL13AL12AL11AL10AL9AL8AL7AL6AL5AL4AL3AL2AL1 3.1).上位机对仪表写数据的程序部分应按仪表的规格加入参数限幅功能,以防超范围的数 据写入仪表,使其不能正常工作,各参数代码及范围见《仪表说明书》 2).上位机发读或写指令的间隔时间应大于或等于0.2秒,太短仪表可能来不及应答 3).仪表未发送小数点信息,编上位机程序时应根据需要设置 4).测量值为32767(7FFFH)表示HH(超上量程),为32512(7F00H)表示LL(超下量程) 5).除了CRC校验字节低位在前外,其它所有双字节均高位在前,

上位机和下位机控制功能对比

【修改】上位机和下位机控制功能对比 本文上位机控制和下位机控制组态软件进行了简单的对比,通过一些典型示例说明了分别适合上位机和下位机控制的场合。 当前组态软件在工业控制中得到了日益广泛的应用。组态软件依据自身的过程数据库,下连各种硬件设备,并通过动态人机界面可以将采集处理的数据展现给用户,或者传递给其他应用程序。其结构如图所示: 图1 组态软件结构图 组态软件的出现,由于其预先提供了各种常用组件和相关设备驱动,一方面将监控系统设计的难度大为降低,开发相关系统的时间也大为缩短,另一方面,由于可以自由连接多种设备,提供了一个平台,用户可以依据需要设计出成本最优的工程。 对于硬件设备,特别是可编程的PLC等硬件,自身具有一定的控制功能,而可以连接PLC等硬件的组态软件也可以通过脚本等执行一定的控制功能,那么控制是交给上位机的组态软件,还是下位机的PLC呢?这里先对两者做一个简单的比较: 下位机控制 下位机可以执行一些相关的控制动作,优点在于其速度快,可靠性高,稳定。其缺点在于受到其自身的限制,对于一些特殊的复杂控制,以及和其他特殊设备相关或者

涉及到关系数据库等控制功能作无法执行。 上位机控制 上位机的组态软件同样可以执行一定的控制动作,其优点在于脚本编写更容易,而且可以方便可执行涉及到多个设备以及关系数据库或者其他数据的控制动作,能充分发挥自身系统的优势。缺点在于有时会遇到上位机和下位机通讯的时间瓶颈,而且通常组态软件运行工控机在其他操作系统上,其稳定性和PLC等有差距。 在实际工程中,应该根据需要来进行相关的控制分布。下面通过一些典型示例进行说明: 适合下位机控制场合 对于一些实时性要求较高,或者上位机和下位机通讯较慢或容易受到干扰的情况下,建议把关键的控制放在下位机执行。比如对于一些典型的水利项目,比如水质监测,其运行监测系统的子站和运行组态软件的中心站可能相距较远,其通讯可能采用数传电台,拨号,GSM,GPRS等方式。在这种情况下,由于其通讯距离远,可能会有些延迟,所以控制功能更多的放在了下位机,而上位机主要负责数据的采集,存储和显示,也可包含一些对下位机的设置功能。 适合上位机控制的场合 对于一些和关系数据库或者多种设备相关的控制功能,单纯的依靠下位机进行控制,可能非常麻烦或者难以实现,这种情况下建议由上位机进行控制。比如车站的灯光控制,需要获取火车的行车信号以及其他数据来进行判断是否亮灯,而行车信号一般存在数据库或者需要从引导系统中获取,这种情况下,如果其控制几乎全部由上位机实现。 在更多的时候,是根据控制功能自身的特点来进行相关设置。下位机和上位机可以根据需要各执行相关部分控制功能,实时性要求较高的控制可以放到下位机,复杂的,关联其他数据的控制可以放在上位机,两者在一起构成一个完备的控制系统。合理的进行分配,不仅可以减少劳动量,而且可以提高工程的健壮性。

上位机与下位机通讯

单片机课程设计 ——上位机与下位机通讯

目录 目录............................................................................................................................... I 1.引言.. (1) 1.1实习目的 (1) 1.2实习要求 (2) 1.3 实验内容 (2) 2.企业参观 (2) 3. C51单片机开发设计 (4) 3.1设计意义 (4) 3.2系统功能设计 (4) 3.2.1功能特点 (4) 3.2.2负责工作 (4) 3.3硬件设计及描述 ........................................................ 错误!未定义书签。 3.3.1时钟与复位模块 ..................................................... 错误!未定义书签。 3.3.2按键选择模块...................................................... 错误!未定义书签。 3.3.3LCD显示模块 ......................................................... 错误!未定义书签。 3.3.4 硬件原理图 (6) 3.4软件设计流程与描述 ................................................ 错误!未定义书签。 3.4.1编程思路简介......................................................... 错误!未定义书签。 3.4.2 程序流程图 (7) 3.4.3 部分程序 (9) 4.心得体会 (12) 5.参考文献 (13)

单片机与上位机通信协议的制定解析

单片机与上位机通信协议的制定 单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定! 上行协议,即由单片机向上位机发送数据。 下行协议,即由上位机向单片机发送数据。 而通信协议又要分固定长度和不定长度两种 本文所介绍的协议属于简单的固定字长的通信协议! 下行协议由四个字节构成 上表是简单的上位机对单片机的控制指令 下述函数是C#中封装的串口通信类中的发送函数的封装 public void SerSendCommu(byte orderDef, byte data)//参数1为命令字,参数二为要发送的数 //据,需要时可直接调用 {

Byte[] BSendTemp = new Byte[SEND_LENTH]; BSendTemp[0] = PRE; BSendTemp[1] = orderDef; BSendTemp[2] = data; BSendTemp[3] = END; this.serialPort1.Write(BSendTemp, 0, SEND_LENTH); } 下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断 ISR(USART_RXC_vect)//串口接收中断 { unsigned char status,data; status = UCSRA; //**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的 //值即会改变** data = UDR; if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令 { if((status&((1<

上位机协议

校准电压: 分2个区间校准: 1500---3000:输入这个区间的K,B值 B 就是要求输出1500mv的偏差K 就是斜率 = (3000的测量值—1500的测量值)/1500 *1000,也就是放 大1000倍 这个数值写入EEPROM: 格式为: 06 00 01 05 35 04 01 01 第一个表示:06 表示写电压的EEPROM 第二个表示:00表示1500-3000的低电压区间,01表示 3000-4500的区间 第三个表示:01表示误差是正偏差,也就是比真实值大 第4,5表示:K的值535 是K放大1000倍的16进制数据 第6个表示:B的值 3000—4500:同上 格式为: 06 01 01 1A 0A 06 01 01 RIGHT 校准电流: 分2个区间校准: 15ma以下直接加一个偏差,要是没有误差,或者在1ma以内,这个修正值 可以不加 15ma—500ma 直接算这个区间的K,B值B就是真实电流(安吉能表测试)是 15ma的实际测量偏差,K=(500ma的测量值—15ma的测量值) /(500-15) *1000 放大1000倍; RIGHT 设置电压: 原来的协议 01 06 09 C4 01 01 01 01 表示2500 01 06 0e 42 01 01 01 01 表示3650 01表示设置电压 读取电压: 02 读取电流:

读取温度值: 以上我还没加从机的地址,其实是需要加地址的; 框架就是校准-----设置-------读对象就是电压------ 电流------ 温度 数据帧解析: 06 :表示校准也就是往EEPROM里面写数据: 00 :表示电压区间1500---3000的校准命令 01 :偏差的符号,1表示校准为测量值大于真实值(真实值高精度表测试); 0表示小于 05 : 35 :表示K的高位和地位 04 :表示B的值 01 : 01 :表示地址的高位和地位 06 :表示校准也就是往EEPROM里面写数据: 01 :表示电压区间3000---4500的校准命令 01 :偏差的符号,1表示校准为测量值大于真实值(真实值高精度表测试); 0表示小于 05 : 35 :表示K的高位和地位 04 :表示B的值 01 : 01 :表示地址的高位和地位 06 :表示校准也就是往EEPROM里面写数据: 02 :表示电流为15ma以下的 01 :偏差的符号,1表示校准为测量值大于真实值(真实值高精度表测试); 0表示小于 05 : 35 :无意义(也就是在这个区间不算K值,只算个偏差值) 04 :表示B的值 01 : 01 :表示地址的高位和地位

上位机与下位机通讯

上位机与下位机通讯 ——上位机与下位机通讯 目录 目录...................................................................... ...................... 错误~未定义书签。 1. 引言...................................................................... .................. 错误~未定义书签。 1.1 实习目 的 .................................................................... 错误~未定义书签。 1.2 实习要 求 ..................................................................... (2) 1.3 实验内容...................................................................... ............................... 2 2. 企业参观...................................................................... ............................................ 2 3. C51单片机开发设 计 ......................................................... 错误~未定义书签。

ZigBee协调器和上位机通信协议

ZigBee协调器和上位机通信协议通信方式:采用RS232串口通讯,8位数据位,1位停止位,没有校验位。低有效位先传送。波特率可采用38400bps,57600bps,115200bps。默认波特率为38400bps。 通信格式 内容 字节数 SOF: 一帧数开始的标志,其内容为0xFE,但不是每一个0xFE都是一帧数据的开始。 LEN:LEN的值为DATA的长度。 CMD:CMD的长度为2,包括CMD0、CMD1两个字节。 CMD0CMD1=‘w’‘r’表示写系统时间 CMD0CMD1=‘r’‘d’表示读系统时间 CMD0CMD1=‘c’‘w’表示查询节点网络状态 CMD0CMD1=‘c’‘d’表示查询节点的数据 ZigBee协调应答时需要将CMD0CMD1的最高有效位置高. DATA:为数据内容,因命令参数的不同数据内容是可变的。 CMD0CMD1=‘w’‘r’时DATA的内容为时间,格式为年月日时分秒。 年占两个字节值的范围为(2000-2136),

月日时分秒各占一个字节。 CMD0CMD1=‘r’‘d’时DATA的内容为时间,格式为年月日时分秒。 年占两个字节值的范围为(2000-2136), 月日时分秒各占一个字节。 CMD0CMD1=‘c’‘w’时DATA的内容为节点的短地址占两个字节。 应答时DATA的前两个字节为节点的地址,接下来为关联 节点数,子结点短地址,相互关系,链路质量等内容。 上图为2个关联节点的情况。 节点关系定义为: 链路质量占两个字节,第一个字节为发送时平均链路质 量,第二个为接收时平均链路质量。 CMD0CMD1=‘c’‘d’时DATA的内容为节点的短地址占两个字节。 应答时DATA的前两个字节为节点的地址,后两个字节为 请求的数据内容。 FCS: 异或校验字节,校验的内容为LEN到DATA的所有字节。 上位机软件的界面大致如下:

上位机与下位机的定义

学习的路上,越努力越渺小。 ——单片机初学者有很多刚从学校踏入社会的职场新手,在听到前辈们讨论:我们上位机要实现这个功能,你们下位机需要这样配合,之类的话题时都是一脸的蒙:什么是上位机、什么又是下位机。其实在学校都是接触过,只是不知道其在职场应用中的专业名词而已。 上位机通常是指可以直接发出控制命令的计算机,一般是PC/host computer/master computer/upper computer。通常上位机存在可视化的操作界面,例如显示屏,便于使用者进行控制操作。 下位机是直接控制设备、获取设备状态的计算机,一般是PLC、STM32等。通常下位机不为用户所知,有点类似幕后实施者。 上位机与下位机从概念上分析:上位机属于控制者,下位机属于被控制者;从执行角度去分析:上位机属于命令发布者,下位机属于命令实施者。一般工作的流程是:用户通过界面、语音或者按键等操作将用户意图通知给上位机,上位机将用户意图转换为操作命令,通过两者间的通信协议将操作命令传递给下位机,下位机再根据命令去控制对应的相关设备。 上位机与下位机之间的通信通常取决于下位机,通过下位机支持的通信接口,例如:UART、SPI、SCI、I2C、CAN等接口。基于底层接口对通信协议进行设计扩展,可参考各接口标准协议进行开发,亦可根据需求自定义通信协议。 不论是上位机还是下位机,都是可编程设计的。上位机编程,可以选用不同的编程语言,比如:C/C++、C#、JAVA、LABVIEW等。不同的编程语言适用于不同的编程软件,实现出不同风格的监控显示界面。当然使用何种编程语言,主要根据个人爱好、水平以及公司需求。下位机编程通常是嵌入式编程,在硬件资源上进行代码设计,通常使用汇编、C语言、VHDL等等。 下面以一实例描述下上、下位机在项目中的实际功能应用: 上位机:IMAX6,ARM芯片 下位机:STM32F091RC 功能:根据电源电压的变化控制LED0、LED1,提醒操作者工作状态。 通信方式:UART

相关文档
相关文档 最新文档