1.通讯口设置:
字节数据格局:由单片机决议。
开端位 |
数据位 |
校验位 |
中止位 |
留意:在组态王中设置的通讯参数如波特率,数据位,中止位,奇偶校验有必要与单片机编程中的通讯参数共同
2.在组态王中界说设备地址的格局
格局:##.#
前面的两个字符是设备地址,规模为0-255,此地址为单片机的地址,由单片机中的程序决议 ;
后边的一个字符是用户设定是否打包,“0”为不打包、“1”为打包,用户一旦在界说设备时确认了打包,组态王将处理读下位机变量时数据打包的作业。
3.在组态王中界说的寄存器格局
寄存器称号 |
dd上限 |
dd下限 |
数据类型 |
Xdd |
65535 |
0 |
FLOAT/BYTE/UINT |
斜体字dd代表数据地址,此地址与单片机的数据地址相对应。
留意:在组态王中界说变量时,一个X寄存器依据所选数据类型(BYTE,UINT,FLOAT)的不同别离占用一个、两个,四个字节,界说不同的数据类型要留意寄存器后边的地址,同一数据区内不行穿插界说不同数据类型的变量。为进步通讯速度主张用户运用接连的数据区。
例如,
1、在单片机中界说从地址0开端的数据类型为BYTE型的变量:
则在组态王中界说相应的变量的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节
2、在单片机中界说从地址100开端的数据类型为UINT型的变量:
则在组态王中界说相应的变量的寄存器为X100、X102、X104、X106、X108。。。。。。。。,数据类型UINT,每个变量占两个字节
3、在单片机中界说从地址200开端的数据类型为FLOAT型的变量:
则在组态王中界说相应的变量的寄存器为X200、X204、X208、X212。。。。。。。,
3.组态王与单片机通讯的指令格局:
读写格局(除字头、字尾外一切字节均为ASCII码)
字头 |
设备地址 |
标志 |
数据地址 |
数据字节数 |
数据… |
异或 |
CR |
阐明;
字头:1字节1个ASCII码,40H
设备地址: 1字节2个ASCII码,0—255(即0—0x0ffH)
标志:1字节2个ASCII码,bit0~bit7,
bit0= 0:读,bit0= 1:写。
bit1= 0:不打包。
数据地址: 2字节4个ASCII码,0x0000~0xffff
数据字节数:1字节2个ASCII码,1—100,实践读写的数据的字节数。
数据…:为实践的数据转换为ASCII码,个数为字节数乘2。
异或:异或从设备地址到异或字节前,异或值转换成2个ASCII码
CR:0x0d。
通讯测验康复指令(COMERROR),恳求地址为0的一个BYTE数据
3.1.上位机发送读指令
字头 |
设备地址 |
标志 |
数据地址 |
数据字节数 |
异或 |
CR |
下位机应对:若正常:
字头 |
设备地址 |
数据字节数 |
数据… |
异或 |
CR |
若不正常:
字头 |
设备地址 |
** |
异或 |
CR |
例1:读15号外表,数据地址为15的数据。其间数据为100,数据类型为字节,不打包。组态王所发数据为:
40 |
30 |
46 |
43 |
30 |
30 |
30 |
30 |
46 |
30 |
31 |
37 |
32 |
0d |
字头 |
设备地址15 |
标志 读操作 字节型 不打包 |
数据地址15 |
数据字节数1 |
异或 |
|
若正确:
40 |
30 |
46 |
30 |
31 |
36 |
34 |
37 |
35 |
0d |
字头 |
设备地址15 |
数据字节数1 |
数据100 |
异或 |
|
若不正确:
40 |
30 |
46 |
2a |
2a |
37 |
36 |
0d |
字头 |
设备地址15 |
** |
异或 |
|
例2:读15号外表,数据地址为15的数据。其间数据为100,数据类型为字节,打包。组态王所发数据为:
40 |
30 |
46 |
43 |
32 |
30 |
30 |
30 |
46 |
30 |
31 |
37 |
30 |
0d |
字头 |
设备地址15 |
标志 读操作 字节型 打包 |
数据地址15 |
数据字节数1 |
异或 |
|
若正确:
40 |
30 |
46 |
30 |
31 |
36 |
34 |
37 |
35 |
0d |
字头 |
设备地址15 |
数据字节数1 |
数据100 |
异或 |
|
若不正确:
40 |
30 |
46 |
2a |
2a |
37 |
36 |
0d |
|
设备地址15 |
** |
异或 |
|
3.2.上位机发送写指令
字头 |
设备地址 |
标志 |
数据地址 |
数据字节数 |
数据… |
异或 |
CR |
下位机应对:若正常:
字头 |
设备地址 |
## |
异或 |
CR |
若不正常:
字头 |
设备地址 |
** |
异或 |
CR |
例1:写15号外表,数据地址为15。写数据255,数据类型为字,不打包。组态王所发数据为:
40 |
30 |
46 |
43 |
35 |
30 |
30 |
30 |
46 |
30 |
32 |
30 |
30 |
46 |
46 |
37 |
34 |
0d |
字头 |
设备地址15 |
标志 写操作 字型 不打包 |
数据地址15 |
数据字节数2 |
数据255 |
异或 |
|
若正确:
40 |
30 |
46 |
23 |
23 |
37 |
36 |
0d |
字头 |
设备地址15 |
## |
异或 |
|
若不正确:
40 |
30 |
46 |
2a |
2a |
37 |
36 |
0d |
字头 |
设备地址15 |
** |
异或 |
|