基于RS485的组态王与单片机多机串口通信设计

发布者:xrmilk最新更新时间:2015-07-15 来源: eepw关键字:RS485  单片机  多机串口通信 手机看文章 扫描二维码
随时随地手机看文章
1 引言

随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、 MCGS、WinCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由 于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。

2 组态王与单片机的串口通讯方法

目前,组态王与单片机的通信多是通过动态数据交换(DDE)或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协 议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供 一种与单片机多机串口通信方法,可满足大多数系统需求。

3 PC机与单片机的硬件接口电路

图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集 中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上, 因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线与四线平衡传输方式,二线制可实现真正的多点双向通信,但需要在传输线上接电阻(约120 Ω)。

 

 

由于80C51系列单片机STC89C52串行接口的,TTL电气特性与RS-485电气特性不相符,STC89C52不能与RS-485直接连接,需要电气转换。这里采用Maxim公司的MAX485,图2为其接口电路。

 

 

图2中,MAX485的RE和DE南STC89C52单片机的P1.7控制。由于MAX485以半双工的方式工作,因此由P1.7控制其发送与 接收。当 P1.7为高电平时,驱动器使能而接收器为高阻态,此时可发送数据;而当P1.7为低电平时.接收器使能而驱动器为高阻态,此时接收数据。另外由于PC机 的COM口是基于RS-232的串行通讯口.其电气特性与RS-485不一致,因此也需电平转换。

图3为单片机地址设置电路,单片机STC89C52的P1口的低4位用于设定本机地址,通过4位DIP开关的组合最多可设定16种地址。如当4 位开关全部断开时,对应的本机地址是11 11。下位单片机在开始工作前需先设定自己的地址,这样,在开机自检时下位单机片就能获取本机地址。

 

 

4 系统通讯协议设计

组态王提供了通过PC机与单片机串口进行十六进制数据通讯的驱动,而驱动中已经规定好其通讯协议。

4.1 通讯参数

通讯参数包括数据位、停止位、波特率、校验方式。其中,数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”部分。

4.2 数据传输格式与协议说明

格式1 组态王发送地址请求格式(检验位为1):

 

格式

 

格式2单片机应答地址格式(检验位为0):

 

格式

 

格式3组态王读数据请求格式(检验位为0):

 

格式

 

格式4单片机应答读数据格式(正确)(检验位为O):[page]

 

格式

 

格式5单片机应答读数据格式(错误)(检验位为0):

 

格式

 

格式6组态王写数据请求格式(检验位为O):

 

格式

 

格式7单片机应答写数据格式(正确)(检验位为0):

 

格式

 

协议具体说明如下:

ENQ(头):H05,询问,请求帧的开始代码;

ACK(头):H06,确认,ACK应答帧的开始代码;

NAK(头):H15,否认,NAK应答帧的开始代码;

EOT(尾):H04,正文的结束,请求帧的结束ASCII代码;

ETX(尾):H03,结束正文,应答帧的结束ASCII代码;

数据传输:所有数据均为16进制数;

Sta:设备地址,1个字节,组态王设备地址范围为0~255,此地址为单片机的地址,由单片机中的程序决定;

R:读标志,1个字节(0x52);

W:写标志,1个字节(0x57);

DataType:需要交换的数据类型,1字节。其中“1”代表字节,“2”代表字,“3”代表浮点型;

DataNum:读取数据的个数,1字节;

DataAddr:数据偏移地址,2字节,低字节在前,高字节在后;

Data:实际传输的数据,低字节在前,高字节在后;

DataLong:单片机返回Data的字节数,2字节,低字节在前,高字节在后:

CRC:为从第1个字节至CRC前的所有字节的异或值,1字节;

ErrorCode:错误代码,“0”代表正确应答,“1”代表数据类型错误,“2”代表数据范围超限,“3”代表指令无法识别。

5 单片机通讯程序流程设计

图4为组态王程序流程,图5为单片机通讯程序流程。80C51系列单片机多机通讯可归纳如下:

 

 

 

 

上位机的SM2=0,所有下位机的SM2=1,以便只接收上位机发来的地址;

上位机给下位机发送地址时,第9数据位应该为1,以指示下位机接收这个地址;

所有下位机在SM2=1,RB8=1和RI=0时,接收上位机发来的地址,进入相应中断服务程序,并与本机地址相比较,以确认是否为被寻址的下位机;

被寻址下位机通过指令清除SM2,以便正常接收上位机发送来的数据,并向上位机发回接收到的地址以便核实。未被寻址的下位机保持SM2=1,并退出各自的中断服务程序;

完成上位机和被寻址下位机之间的数据通信后,被寻址从机使SM2=1,并退出中断服务程序,等待下次通信。

6 结束语

该系统实现组态王软件与单片机多机的实时通信,已经在实际项目中得到应用。应用的结果表明该设计方法简单有效,实时性好,成本低廉,可以在控制与监控系统中推广应用。

关键字:RS485  单片机  多机串口通信 引用地址:基于RS485的组态王与单片机多机串口通信设计

上一篇:使用51的定时器模拟串口
下一篇:一个基于RS485总线的智能小区周界防盗报警系统设计

推荐阅读最新更新时间:2024-03-16 14:25

AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
电机驱动仿真原理图如下 单片机汇编语言源程序如下: ADC EQU 35H CLOCK BIT P2.4 ;定义ADC0808时钟位 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 PWM BIT P3.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 START: MOV TMOD,#0
[单片机]
AT89C51<font color='red'>单片机</font>对直流电动机的驱动仿真加汇编语言源程序
51单片机蓝牙小车+TB6612控制
51蓝牙小车,通过蓝牙APP发送指令让小车前进后退,左转,右转。 模块化的插件,让你低成本,低基础,完成这个设计。 电路原理图如下: 单片机源程序如下: #include reg51.h #include intrins.h #define uchar unsigned char #define uint unsigned int unsigned char tmp; unsigned int c=0; uint Count; uint Degree=50; sbit PWMA=P2^0; sbit AIN2=P2^1; sbit AIN1=P2^2; sbit STBY=P2^3; sbit BIN1=P2^4; sb
[单片机]
51<font color='red'>单片机</font>蓝牙小车+TB6612控制
基于单片机AT89C2051的电子钟设计方案
 电路见图1.     一片20引脚的单片机AT89C2051为电子钟主体,其显示数据从P1口分时输出,P3.0~3.3则输出对应的位选通信号。由于LED数码管点亮时耗电较大,故使用了四只PNP型晶体管VT1~VT4进行放大。本来笔者还有一种更简的设计方案(见图2),可省去VT1~VT4及R1~R4八个元件,但这种设计由于单片机输出口的灌入电流有限(约20mA),数码管亮度较暗而不向读者介绍,除非你采用了高亮度的发光数码管。   P3.4、P3.5、3.7外接了三个轻触式按键,这里我们分别命名为:模式设定键set(P3.4)、时调整键hour(P3.5)、分调整键min(P3.7)。C1、R13组成上电复位电路。VT5
[电源管理]
基于<font color='red'>单片机</font>AT89C2051的电子钟设计方案
高性能单片机μPD70320的特点及应用
1. 概述   μPD70320是日本NEC公司生产的V25系列16位单片机,它具有功能强、可靠性高、速度快、兼容性好的优点。该芯片除CPU外还集成了512字节的 RAM、三个I/O口、8个模拟量输入端、两个DMA、两个定时器、两个全双工异步通讯口和一个中断控制器等电路,μPD70320具有先进的快速中断功能,特别适合实时多任务处理;采用严格的CMOS制造工艺,稳定工作范围宽,电源电压3~8V,可选用的晶振频率为1~6MHz,抗干扰,可在恶劣环境中使用;采用特殊的双总线结构,使用32位内部寄存器和6字节指令队列,在相同的时钟频率下,比8088快2~4倍;其指令集仅是8088的一个超集,把 PC机上的程序稍作修改就可在μPD703
[单片机]
高性能<font color='red'>单片机</font>μPD70320的特点及应用
详细介绍单片机可视化编程的相关知识状况
A1:何谓开关电源模块单片机编程的MTD2002可视化?   Q1:可视化编程就是提供给用户可视化的开关电源模块器件模块配置界面使用户在不用关心具体MTD2002器件工作原理和设置的情况下直接生成所要配置的器件初始化代码及驱动程序,从而直接进行单片机应用层程序的开发。   A2:单片机的可视化编程是不是指在环境下避开复杂的指令编写而通过图形的方式产生指令代码?-在MTD2002可视化的条件下是否可以观察到仿真的结果?   Q2:是的。不过仿真的结果不能够直接观察到,而要通过将生成的开关电源模块代码装载到仿真器工具中才能看到。   A3:配置字节(option)怎么样通过C语言定位在0x80-0x84的地址?我现在是通过
[单片机]
基于MSP430的无线传感器网络设计
引言   传感测试技术正朝着多功能化、微型化、智能化、网络化、无线化的方向发展。自组织无线传感器网络(Self Organizing Wireless Sensor Networks)作为新兴技术,是目前国外研究的热点,其在军事、环境、健康、家庭、商业、空间探索和灾难拯救等领域展现出广阔的应用前景。早在2003年美国自然科学基金委员会已经斥巨资来支持这方面的研究,并且出现了一些致力于无线传感器网络的公司,其中Crossbow公司已推出了Mica系列传感器网络产品。国内很多大学现已经开展相关领域的研究,但大部分工作仍处在自组织无线网络协议性能仿真和硬件节点小规模实验设计阶段。本文就国防科技大学传感器教研室开展可应用于环境监测方面无
[网络通信]
STM32单片机串口空闲中断+DMA接收不定长数据
在上一篇文章STM32单片机串口空闲中断接收不定长数据中介绍了利用串口空闲中断接收不定长数据,这种方式有一个问题就是串口每接收到一个字节就会进入一次中断,如果发送的数据比较频繁,那么串口中断就会不停打断主程序运行,影响系统运行。那么能不能在串口接收数据过程中不要每接收一个数据中断一次,只有在一帧数据接收结束完成后只中断一次? 用串口的空闲中断加上DMA功能,就可以实现每帧数据接收完成后只中断一次,而在数据接收过程中,由DMA存储串口接收到的每个字节。 关于串口的空闲检测和DMA在STM32参考手册中有详细介绍。 下面看如何初始化串口空闲中断和 DMA。 void uart2_init( u16 baud )
[单片机]
STM32<font color='red'>单片机</font>串口空闲中断+DMA接收不定长数据
单片机实现无线呼叫系统设计
  随着科技的进步以及生活质量的不断提高,产生了各种不同类型的呼叫系统。传统的 呼叫系统 多是有线的,比如采用分布控制方式的单片机系统,主机和呼叫器的应答通过一根三芯导线,包括电源线、信号线、地线来完成,各呼叫器并行挂接。这样的系统存在着布线繁琐,安装麻烦、成本高等问题,针对这些问题,无线呼叫系统逐渐发展起来,越来越多的研究者将目光投向了无线领域。   1 系统设计方案   低功耗无线呼叫系统的发送和接收模块的框图如图1,图2所示。      其中图1为无线发送模块,以STC89C52RC为主控制核心,及时响应终端的呼叫信息,然后利用nRF905无线传输模块将呼叫信息发送给无线接收模块进行处理。   图2为无
[单片机]
<font color='red'>单片机</font>实现无线呼叫系统设计
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved