组态王与单片机多机串口通信的设计方案

合集下载

基于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个

单片机多机串行通信设计方法分析

单片机多机串行通信设计方法分析

单片机多机串行通信设计方法分析单片机多机串行通信设计方法分析单片机是指只有一块集成电路中包含了微处理器CPU、存储器RAM和ROM、I/O口以及各种中断和计时芯片等,是一种完整的计算机系统。

在很多应用场合中,需要将多个单片机互相传递信息,实现工作协同。

这就需要用到串行通信技术,将多个单片机连接在一起,通过串行通信协议实现数据的传递与交换。

单片机多机串行通信的设计方法主要有以下几种:1.基于RS485总线的串行通信RS485总线是一种全双工的串行通信接口标准,可实现多个设备在同一总线上进行通信,具有通信距离远、噪声抵抗能力强、传输速率快等优点。

在单片机多机通信中,可以采用RS485总线,通过总线上的数据收发模块实现单片机之间的串行通信。

在RS485总线上,每一个设备都有一个独立的地址,可以通过地址来区分不同的设备。

发送数据时,将数据和目标地址打包成一个数据帧,通过总线发送给指定的设备;接收数据时,不符合地址的数据帧会被过滤掉,符合地址的数据帧会被接收并处理。

采用RS485总线可以连接多达128个设备,但也存在总线冲突、抢占等问题需要注意。

2.基于CAN总线的串行通信CAN总线是一种多控制器局域网(MCAN)的串行通信标准,用于高速实时数据传输场景,可实现多设备之间的串行通信。

在单片机多机通信中,可以采用CAN总线,通过总线数据收发模块实现单片机之间的串行通信。

在CAN总线上,每个设备都有一个独立的标识符,通过标识符来区分不同的设备和传输的数据类型。

发送数据时,将数据和目标设备的标识符打包成一个数据帧,通过总线发送给指定的设备;接收数据时,通过CAN总线模块接收数据帧,并根据标识符判断数据的来源以及类型。

采用CAN总线可以连接多达110个节点,但也存在总线错误、抢占等问题需要注意。

3.基于SPI总线的串行通信SPI总线是一种在集成电路内部实现的简单串行同步总线,可实现多设备之间的串行通信。

在单片机多机通信中,可以采用SPI总线,通过总线数据收发模块实现单片机之间的串行通信。

单片机串口通信设计方案

单片机串口通信设计方案

单片机串口通信设计方案
一、硬件设计
1.选择串口通信芯片:单片机通常会集成UART串口,因此可以直接
使用单片机自带的串口;如果需要拓展多个串口通信,可以选择对应的芯片,如常用的MAX232芯片。

3.选择通信线缆和接口:通信线缆主要有串口线缆和USB转串口线缆
两种,根据实际需要选择合适的线缆,并与单片机的串口进行连接。

二、软件设计
1.串口初始化设置:在单片机的程序中,需要对串口进行初始化设置,包括波特率、数据位、停止位、校验位等的设置。

2. 数据发送与接收:单片机通过串口发送数据到外部设备,或从外
部设备接收数据,可以利用单片机的串口发送和接收函数实现数据的传输,如使用C语言中的printf和scanf函数。

3.建立通信协议:在通信过程中,为了保证数据的正确传输,可以设
计一套通信协议,包括定义数据包的格式、帧头和帧尾的标识等,以便于
数据的解析和处理。

4.错误处理:在通信过程中,可能会遇到噪声、丢包等问题,因此需
要设置错误处理机制,如重传或重新发送等,以保证数据的可靠性。

5.中断处理:单片机可以通过串口中断来实现异步通信,当有数据接
收时,触发中断,从而及时处理接收到的数据,提高系统的响应速度。

总结:
单片机串口通信的设计方案主要包括硬件设计和软件设计两个方面。

硬件设计主要涉及串口芯片的选择、通信波特率的确定以及通信线缆和接口的选择。

软件设计方面包括串口的初始化设置、数据的发送与接收、通信协议的建立、错误处理和中断处理。

通过合理的设计方案,可以实现单片机与外部设备之间的数据交互,提高系统的功能和性能。

单片机与组态王的通信实例

单片机与组态王的通信实例

单片机与组态王的通信实例随着工业自动化的发展,越来越多的设备开始采用单片机进行控制。

而组态王作为一种通用的组态软件,可以方便地对单片机的控制过程进行监控和操作。

本文将介绍一个单片机与组态王通信的实例,以帮助读者了解二者的基本通信原理和实现方法。

一、单片机与组态王的通信方式单片机与组态王之间的通信一般采用串口通信方式。

串口通信是一种常见的通信方式,它通过串口数据线将单片机与计算机连接起来,实现数据传输。

在组态王中,可以通过设置串口参数来与单片机进行通信。

二、单片机通信协议在单片机与组态王通信的过程中,需要约定一些通信协议来实现数据的传输和控制。

通信协议一般包括数据格式、波特率、校验方式等。

根据不同的单片机和组态王版本,通信协议可能会有所不同,需要根据实际情况进行调整。

三、组态王通信控件的使用在组态王中,可以使用串口通信控件来实现单片机与组态王之间的通信。

控件提供了许多函数和属性,可以方便地进行串口通信。

例如,可以使用控件的Open函数打开串口,使用Read函数和Write函数进行数据的读取和写入。

四、实例:单片机控制LED灯亮灭下面是一个简单的单片机与组态王通信实例:通过单片机控制LED灯的亮灭。

该实例中使用的单片机型号为AT89C51,组态王版本为6.53。

1、硬件连接将AT89C51单片机的P1.0引脚连接到LED灯上,并将单片机的RXD 和TXD引脚分别连接到计算机的串口上。

2、编写程序在AT89C51单片机上编写程序,用于控制LED灯的亮灭。

程序如下:MOV P1.0, #1 //将P1.0引脚电平设为高电平,LED灯亮SJMP $ //无限循环,保持电平不变3、组态王组态设计在组态王中创建一个新项目,并添加一个设备,选择与AT89C51单片机进行通信的串口设备。

然后创建一个画面,添加一个按钮和指示灯,用于控制LED灯的亮灭。

4、编写组态王脚本程序在组态王中编写脚本来实现与单片机的通信。

脚本如下:Dim ledState As Integer //定义LED状态变量,初始值为0 Function OnClick() As Integer //按钮单击事件处理函数If ledState = 0 Then //如果LED状态为灭,则发送高电平信号,使LED亮起CommandManager.WriteTag("TagName", "1") //写入高电平信号ledState = 1 //修改LED状态为亮Else //如果LED状态为亮,则发送低电平信号,使LED熄灭CommandManager.WriteTag("TagName", "0") //写入低电平信号ledState = 0 //修改LED状态为灭End IfEnd Function5、调试与运行将程序编译并下载到AT89C51单片机中,然后运行组态王程序。

组态王与单片机多机串口通信的设计方案

组态王与单片机多机串口通信的设计方案

组态王与单片机多机串口通信的设计1 引言随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。

现在组态软件繁多,比如KingVieW(组态王>、MCGS、W inCC等。

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直接连接,需要电气转换。

组态王与ARM开发板串口通信实现

组态王与ARM开发板串口通信实现

组态王与ARM开发板串口通信实现组态王与ARM开发板串口通信实现摘要本文阐述了一种基于亚控公司的组态王中的单片机通讯协议(ASCII)实现组态王与ARM9开发板串口通信的程序设计方法,本方法已在TQ2440开发板上编程设计实现,并成功与组态王正确通信。

关键词组态王;ARM9;通讯协议;串口通信0 引言随着工业自动化要求提高,组态软件设计的监控系统逐步普及,开发的控制设备与监控设备之间需要通讯。

组态王KingView软件基于Microsoft Windows XP,NT/2000操作系统,具有友好的人机操作界面,可与各种PLC、智能仪表等实时通讯,但无法与自己开发的控制设备通信,ARM9作为高性能处理器经常用来开发工控设备,所以实现组态王与ARM9开发板的串口通信对工控设备开发十分必要。

1 组态王与ARM9开发板的串口通信方法1.1 组态王支持的单片机通讯协议(ASCII)本设计采用亚控公司的组态王中的单片机通讯协议(ASCII)实现组态王与ARM9开发板串口通信。

亚控公司的组态王中的单片机通讯协议(ASCII)简介如下:上位机发送读命令:字头-设备地址-标志-数据地址-数据字节数-异或-CR若正常下位机应答:字头-设备地址-数据字节数-数据-异或- CR 若不正常下位机应答:字头-设备地址-**-异或- CR上位机发送写命令:字头-设备地址-标志-数据地址-数据字节数-数据-异或- CR若正常下位机应答:字头-设备地址-##-异或- CR若不正常下位机应答:字头-设备地址-**-异或- CR1.2 组态王与ARM9开发板串口通信方法组态王与ARM9开发板串口通信采用亚控公司的组态王中的单片机通讯协议(ASCII)。

组态王安装在上位PC机上,组态王本身支持单片机通讯协议(ASCII),要实现组态王与ARM9开发板串口通信,其实任务就是在下位机。

单片机与组态王软件通讯的解决方案

单片机与组态王软件通讯的解决方案

单片机与组态王软件通讯的解决方案
1、引言
组态王软件作为一种工业控制组态软件在国内已得到了非常广泛的应用。

其具有强大的硬件支持能力,对国内外绝大多数PLC、变频器、板卡、模块、仪器仪表都编写了相应的驱动程序,使用起来相当方便快捷。

在农水实验田环境监测项目中,我们使用的硬件设备包括日本三菱PLC、台湾研华亚当模块及自行开发的基于单片机的分析仪器,我们选择的软件开发平台是组态王软件。

因此,实现单片机与组态王的数据通讯是一个必须解决的问题。

2、单片机与组态王软件通讯的解决方案
2.1 两种通讯解决方案
单片机与组态王软件通讯的解决方案有两种,其一是直接编写支持单片机的驱动程序,就象组态王支持PLC 一样;其二是利用组态王软件和Visual Basic 都支持DDE 的特点,以VB 为开发平台,写一个数据通讯应用程序,一方面
实现与单片机的连接,另一方面实现与组态王的动态数据交换。

2.2 两种方案的比较
第一种方案的优点是程序结构比较紧凑,数据通讯效率较高;缺点是必须由对组态王软件内核比较清楚的程序员开发,开发周期较长。

第二种方案可由一般的程序员开发,缺点是数据通讯效率较低。

在本项目中,我们采用了第二种方案。

3、基于DDE 方案的实现
3.1 DDE 的概念
DDE 是WINDOWS 平台上的一个完整通信协议,它使应用程序能彼此交换数据和发送指令。

DDE 过程可以比喻为两人对话,一方向另一方提出问题,然。

单片机与组态王的通信实例

单片机与组态王的通信实例

单片机与组态王的通信组态王(kingView)内置了通用单片机通信模块,这样,我们自己开发的单片机仪表就可以挂接在KingView上了。

因为这样,所以对这个东西有了些兴趣,做了些研究。

(1)研究环境组态王6.53,免费下载,当然有使用限制,不过用于研究是没有问题的。

下载地址:Keil软件,Porteus,这些就不多说了。

Virtual Serial Ports Driver XP 5.1 虚拟串口软件,用此软件可以生成一对相互联接的虚拟串口,这样,初期的研究工作就在电脑上完成了,省得用硬件电路板了。

(2)资料KingView提供了一份简单的说明材料,就在下载后的解压缩文件包中。

具体的位置是:Value Pack\技术资料\常用协议\单片机ASCII码通讯协议(3)电路搭建注意单片机的TXD与虚拟串口的TXD,单片机的RXD与虚拟串口的RXD是连在一起的,不要交叉哦,我在这上面可吃了不少的苦头。

这个虚拟串口元件的设置如下图所示:说明:这里选COM2,是因为我事先用Vspd生成了一对虚拟串口,com2和com4,至于其他参数则应该选得和kingview中的一致,这个到下面再说。

什么,这个元件不知哪里找?这里啦(4)VSPD的使用现如今的电脑很少有两个串口的了,人呢也是越来越懒了,虽然手边的电路板是现成的,写片子是容易的,但是仍然还是嫌麻烦的,所以就发动狗狗搜一搜,找到了这个VSPD,当然它是很容易用的在first后面选一个串口名,然后在Second后面再选一个串口名,然后点一下Add Pair 就行啦。

怎么选都可以,就算是选com1也是可以的,虽然com1是真实存在的物理串口,但是这个VSPD照样把它给虚拟了。

这里我选的是com2和com4,大家可以看到在左侧的窗口中出现了这样一对互联的串口了,也就是说,我从串口2发数据,然后串口4就能收到。

同样,我从串口4发数据,串口2就能收到。

(5)组态王置根据自己屏幕选择演示项目中的一个找到设备->DDE,双击“新建...”选择:智能模块(上面的图中看不到)->单片机->通用单片机ASCII->串口起个名字,然后选择串口号,我们选择com4这一步选择地址,需要为自己的单片机设备确定一个地址,这有点麻烦。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组态王与单片机多机串口通信的设计
1 引言
随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。

现在组态软件繁多,比如KingVieW(组态王>、MCGS、W inCC等。

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公司的M AX485,图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>:
格式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 结束语
该系统实现组态王软件与单片机多机的实时通信,已经在实际工程中得到应用。

应用的结果表明该设计方法简单有效,实时性好,成本低廉,可以在控制与监控系统中推广应用。

相关文档
最新文档