组态王及单片机多机串口通信的设计Word格式.docx
《组态王及单片机多机串口通信的设计Word格式.docx》由会员分享,可在线阅读,更多相关《组态王及单片机多机串口通信的设计Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
图1为上位PC机与下位单片机80C51的连接电路。
PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。
RS-485采用差分式传输信号,最大传输距离为1219m.最大传输速率为10Mb/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位开关全部断开时,对应的本机地址是1111。
下位单片机在开始工作前需先设定自己的地址,这样,在开机自检时下位单机片就能获取本机地址。
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”代表指令无法识别。
∙1.首先确认单片机下位机程序是采用标准modbus协议ASCII,RTU,TCP/IP中的哪一种?
∙2.在力控开发系统环境里的IO设备组态选择MODBUS驱动,根据1来选择相应的驱动程序,如1确认是MOUDBUSRTU则选择MOUDBUSRTU驱动后右键单击,在弹出对话框中选择新建。
∙3.在接下来的新建过程中填好相应设置(如通讯方式,采集频率,数据格式,偏移地址等)
∙祝你早日通讯成功!
∙4.个人感觉组态软件中通讯大同小异,只是使用习惯问题。
∙追问
∙设备地址应该怎么填呢
单片机与组态王软件通讯解决方案
摘要:
本文阐述了组态王软件在工业控制领域中的应用,组态王软件和单片机进行通讯的两种解决方案及其优劣性比较,并着重阐述了基于DDE方案的数据通讯原理和代码实现。
1.引言
组态王软件作为一种工业控制组态软件在国内已得到了非常广泛的应用。
其具有强大的硬件支持能力,对国内外绝大多数PLC、变频器、板卡、模块、仪器仪表都编写了相应的驱动程序,使用起来相当方便快捷。
在“农水实验田环境监测”项目中,我们使用的硬件设备包括日本三菱PLC、台湾研华亚当模块及自行开发的基于单片机的分析仪器,我们选择的软件开发平台是组态王软件。
因此,实现单片机与组态王的数据通讯是一个必须解决的问题。
2.单片机与组态王软件通讯的解决方案
2.1两种通讯解决方案
单片机与组态王软件通讯的解决方案有两种,其一是直接编写支持单片机的驱动程序,就象组态王支持PLC一样;
其二是利用组态王软件和Visual
Basic都支持DDE的特点,以VB为开发平台,写一个数据通讯应用程序,一方面实现与单片机的连接,另一方面实现与组态王的动态数据交换。
2.2两种方案的比较
第一种方案的优点是程序结构比较紧凑,数据通讯效率较高;
缺点是必须由对组态王软件内核比较清楚的程序员开发,开发周期较长。
第二种方案可由一般的程序员开发,缺点是数据通讯效率较低。
在本项目中,我们采用了第二种方案。
3.基于DDE方案的实现
3.1
DDE的概念
DDE是WINDOWS平台上的一个完整通信协议,它使应用程序能彼此交换数据和发送指令。
DDE过程可以比喻为两人对话,一方向另一方提出问题,然后等待回答。
提问的一方称为“客户”,回答的一方称为“服务器”。
一个应用程序可以同时是“客户”和“服务器”,当它向其他程序中请求数据是,它充当的是“客户”,若有其他程序向它提供数据,它又成了“服务器”。
3.2通讯程序的数据流向
用VB编写的数据通讯程序作为中间者传递组态王与单片机之间的数据。
当组态王需要向单片机发送控制命令时,组态王充当服务器向VB通讯程序提供数据,VB通讯程序再通过串口实现对单片机的远程控制;
当组态王需要向单片机采集数据时,组态王充当客户向VB通讯程序请求数据。
组态王与单片机通讯的数据流向如图1
图1
组态王与单片机通讯的数据流向
3.3
代码实现
1.组态王的DDE设置
组态王的DDE对话的内容是通过三个标识名来约定的。
应用程序名(application):
进行DDE对话的双方名称
主题(topic)
:
被讨论的数据域
项目
(item)
被讨论的特定数据对象
为了建立DDE连接,需要在组态王的数据词典里建立一个DDE变量,并登记三个标识名。
组态王运行系统的程序名是“VIEW”,主题规定为“TAGNAME”,项目是在定义DDE变量时定义的项目名称。
2.VB通讯程序中的DDE设置
在VB中DDE的连接是通过控件的属性和方法来实现的。
当VB充当服务器时,需要设置LinkTopic
和LinkMode属性;
当VB充当客户时,需要设置LinkTopic
,LinkItem和LinkMode属性。
例如,VB通讯程序作为服务器时的设置如下:
Sub
Form_Load()
LinkTopic=”form1”
LinkMode=1
End
Sub
3.VB与单片机的通讯
在VB中可用Microsoft公司的32位串口通信控件Mscomm32.ocx实现与单片机的通讯。
在程序初始化时,设置Rthreshoid属性为1,接收缓冲区接收到数据时触发OnComm事件,从而进行数据的接收和处理。
MSComm1_OnComm()
Select
Case
MSComm1.CommEvent
Mscomm
EV
RECEIVE
Inbuffe=
MSComm1.Input
Receivedata=Inbuffe
MSComm1
Receive=False
Select
。
4.
结论
采用上述方案,我们在“农水实验田环境监测系统”项目中,很好地解决了组态王软件与单片机的数据通讯。
一年来,系统运行稳定可靠,产生了良好的经济效益。