推广 热搜:
 |  行业设备  |  机械制造  |  机器视觉  |  机械自动化  |  仪器仪表  |  工业机器人  |  编程开发  |  嵌入式  |  电子技术  |  工控自动化  |  电工电气 频道

看图解剖组态王与单片机通讯协议

   日期:2018-09-15     浏览:149    评论:0    
核心提示:组态王与单片机通讯的命令格式:具体协议内容请参看下载的组态王软件解压后:\Value Pack\单片机\通用单片机通讯协议(ASCII).doc工控电脑通过串口RS-232、RS-422或RS-485与下位机(比如PLC)通讯时,经常会接触到通
 组态王与单片机通讯的命令格式:

 

具体协议内容请参看下载的"组态王软件"解压后:\Value Pack\单片机\通用单片机通讯协议(ASCII).doc

 

工控电脑通过串口RS-232RS-422RS-485与下位机(比如PLC)通讯时,经常会接触到‘通讯协议’这个词,那么什么是

 通讯协议呢?

 

通信协议(communications protocol)是指双方实体完成通信或服务所必须遵循的规则和约定。

 

通俗的讲:如果将双方实体比喻成两个人,那么通讯在这里就是说话给对方。要想听懂和完全理解对方说话的意思,起

 码得使用同一种语言,比如:都用汉语或者都用英语。


通讯协议的种类有很多,其中工业控制领域应用最广的是Modbus协议,ModBus是一个工业通信系统协议,由施耐德电气公司

 

1979年发明的,此协议支持传统的RS-232RS-422RS-485和以太网设备。许多工业设备,包括PLCDCS,智能仪表等都

 

在使用Modbus协议作为他们之间的通讯标准,应用非常广泛。

 

 

下面将要介绍的组态王与单片机之间的通讯协议,这个协议与ModBus协议就很相似,理解了下面介绍的内容,就不

难理解ModBus协议。

 

那么为什么不直接介绍ModBus协议而绕道介绍组态王与单片机的通讯协议呢?

 

这是因为对于初次接触协议的人来说,枯燥的理论要是不辅以眼见为实的实物运行,理解起来显然要有一定难度。因为协议要通过设备间运行,有了运行组态王的上位机,没有下位机协议也无法运行。本文介绍的是组态王与单片机的通讯协议,那么下位机自然就是单片机了。

 

相比较而言,组态王与单片机的通讯协议与ModBus协议类似,且简单一些,本文的目的就是最大限度的利用可见的方式去理解这个协议。

 

那么下位机为什么不选择常见的工控设备(比如:PLC),而选择单片机呢?

 

包括常见的PLC在内,很多工控设备价格不菲,很多人手里没有,用它直接去做通讯实验有些难度,且PLC作为一个成熟的产品,即使手里有,也未必能了解和掌握它的软硬件原理。

 

而单片机就不同了,他可以从每个元件开始组装,并且价格低廉的多,他可以理解为PLC的原始版,通过它能更好的理解PLC的工作原理。

 

实际工控系统特别是大中型控制系统中单片机板用的并不多,主要考虑的是软硬件可靠性。

 

下面就通过实例来解释这个协议及其用法。

  

运行组态王\新建工程

工程浏览器\com2\设备驱动\智能模块\单片机\通用单片机ASCII\串口\下一步\新IO设备\下一步\COM2\下一步\255.0\下一步\下一步\完成

以上步骤是通过COM2通讯端口连接一个‘新IO设备’。

这个工程还没有新建变量和画面。

 

分别下载两个免费软件并安装:

友善串口调试助手 Serial Port Utility

图1

2、虚拟串口驱动VSPD6


图2

这个软件功能强大,它是在操作系统层面虚拟出相互连接的串行端口,除了没有实物的端口外,具备串行端口的全部功能。


运行VSPD6


图3

添加一对连接的串口COM2和COM4.

 

运行友善串口调试助手


图4

按顺序对友善串口调试助手进行设定,并运行。

 

运行组态王新建工程‘test’

图5

工程浏览器\COM2\右键单击‘新IO设备’\测试新IO设备,弹出‘串口设备测试’对话框。
在‘通讯参数’选项卡中可以查看‘设备参数’及‘通讯参数’。

图6
 鼠标单击‘设备测试’选项卡,出现设备测试选项。

图7
按以上步骤将‘新IO设备’中,新建一个寄存器名称为‘X0’,数据类型为'BYTE'的被采集数据加入到采集列表中,按下‘读取’按钮,观察友善串口调试助手接收文本框中接收的文本。

图8

如果是写,用鼠标双击上图采集列表中的‘X0’,输入要写的值即可。

图9

组态王与单片机通讯的数据帧的组成,以ascii码为例:

1、@ 和末尾的回车符(ascii无显示),是固定不变的,表示组态王与单片机相互通讯中数据的开始和结束。

2、‘FF’设备地址,是与图6中的‘设备地址’相对应的,图6中设定的设备地址是‘255’,是10进制,转换成16进制就是‘FF’。那么怎么转换呢,用电脑附带的计算器就可以完成。

‘开始’\‘程序’\‘附件’\‘计算器’。


图10

组态王中使用的是10进制,很多时候都要进行16-10-2进制之间的转换。

 

3、标志:1字节2个ASCII码,bit0~bit7,共8位,有效4位。

当前值是16进制的10,用上面的方法转换成2进制,4位都是0。

其中:

bit0= 0:读,bit0= 1:写。对应图8中设备测试‘读取’按钮,所以这一位当前值是‘0’,写操作后面介绍。

bit1= 0:不打包。对应图6中设备地址点后边那项,当前是‘0’表示不打包。

bit3bit2 = 00,数据类型为字节。

bit3bit2 = 01,数据类型为字。

bit3bit2 = 1x,数据类型为浮点数。

对应图7中寄存器选项卡中的数据类型,因为设定的是‘BYTE’字节,所以当前值是00。

4、数据地址:2个字节4个ascii码,16进制取值范围0x0000-0xFFFF,对应的10进制是0-65535。

对应图7中寄存器选项卡中寄存器值,因为设定的是‘x0’,所以当前值是0000。

有兴趣你可以试试设定为‘x65535’,这时的数据地址值将变成‘FFFF’,因为10进制的65535对应的16进制是FFFF。

5、数据字节数:1字节2个ascii。与图7中选择的数据类型有关,BYTE是1个字节,SHORT和USHORT都是两个字节,Float是4个字节。

6、异或值:从设备地址到异或字节前的异或值。本例就是图8第1行ascii中'F^F^1^0^0^0^0^0^0^1'的值,也可以是16进制中‘46^46^31^30^30^30^30^30^30^31’异或运算也可以用电脑中的计算器,也就是图10中的‘Xor’键。

异或运算的目的,为的是接收方检验数据是否准确有效的一种方法。

 

通过以上内容可以看出,组态王与单片机通讯当‘读/写、设备地址、标志、数据地址、数据字节数’中任意一项有变化时,输出的数据帧都随之变化,有兴趣可以试试,看和想象的是否一致。

文后附表是我总结的显示值与上述几项变化之间的关系。

 

附表: 

 

设置值

显示值

标志位分析

 

读写

设备地址

打包

寄存器

数据类型

友善显示ascii结果

标志值

对应二进制

二进制分解

Bit3 Bit2

功能

Bit1

功能

Bit0

功能

1

255

0

X 65535

BYTE

@FF10FFFF0100

10

10000

00

字节

0

不打包

0

2

SHORT

@FFA4FFFF0277

A4

10100100

01

3

USHORT

4

Float

@FF18FFFF040D

18

11000

10

浮点数

5

1

BYTE

@FF12FFFF0102

12

10010

00

字节

1

打包

6

SHORT

@FFA6FFFF0275

A6

10100110

01

7

USHORT

8

Float

@FF1AFFFF0474

1A

11010

10

浮点数

1

10进制100

255

0

X 65535

BYTE

@FF01FFFF016402

01

1

00

字节

0

不打包

1

2

SHORT

@FF05FFFF02006405

05

101

01

3

USHORT

4

Float

@FF0DFFFF0407C800000C

0D

1101

11

浮点数

5

1

BYTE

@FF03FFFF016400

03

11

00

字节

1

打包

6

SHORT

@FF07FFFF02006407

07

111

01

7

USHORT

8

Float

@FF0FFFFF0407C800000E

0F

1111

11

浮点数

  

组态王通用单片机协议(ASCII)

 

看图解剖组态王与单片机通讯协议 概述  

通用单片机ASCII协议支持单片机与组态王通讯,用户只要按照我们的协议编写单片机通讯程

序就可实现与组态王的通讯.

看图解剖组态王与单片机通讯协议 组态王设置

1、定义组态王设备

定义组态王定义设备时请选择:智能模块\单片机\通用单片机ASCII\串口

组态王的设备地址定义格式:##.#

前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定;

后面的一个字符是用户设定是否打包,"0"为不打包、"1"为打包,用户一旦在定义设备时确定了

打包,组态王将处理读下位机变量时数据打包的工作,与单片机的程序无关.

2、组态王通讯

通讯方式:RS-232,RS-485,RS-422均可。

波特率:由单片机决定(2400,4800,9600and19200bps)。

注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中

的通讯参数一致

看图解剖组态王与单片机通讯协议 组态王数据词典--变量定义 

在组态王中定义的寄存器数据格式(类型):由单片机决定。

寄存器名称 dd上限 dd下限 读写属性 变量类型 数据类型
Xdd 65535 0 读写 I/O实数,I/O整数 BYTE/USHORT/FLOAT

斜体字dd代表数据地址,此地址与单片机的数据地址相对应.

注意:

在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,USHORT,FLOAT)的不同,分别

占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内

不可交叉定义不同数据类型的变量。为提高通讯速度建议用户使用连续的数据区。

例如,

1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量

的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节

2、在单片机中定义从地址100开始的数据类型为USHORT型的变量: 则在组态王中定义相应的变

量的寄存器为X100、X102、X104、X106、X108。。。数据类型USHORT,每个变量占两个字节

3、在单片机中定义从地址200开始的数据类型为FLOAT型的变量: 则在组态王中定义相应的变

量的寄存器为X200、X204、X208、X212。。。。。。数据类型FLOAT,每个变量占四个字节

 

看图解剖组态王与单片机通讯协议 组态王与单片机通讯的命令格式:

具体协议内容请参看组态王安装盘:\Value Pack\单片机\通用单片机通讯协

议(ASCII).do

 
打赏
 
更多>同类工控
0相关评论

推荐图文
推荐工控
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报