菜单

1.3 TFT协议说明

下载

ApusTFT - 协议说明

ApusTFT目前集成集成DCBUS、XGUS、Modbus协议,更多协议请联系客服或厂家。用户根据产品,选择对应协议开发。用户不需要关心屏幕端如何接收或发送指令/报文,只需要将变量地址关联到对应的组态控件即可。屏幕底层会将接收的报文解析后,将数据更新到控件中;同时,操作控件时,会将相应的寄存器的值下发到设备中。

1. DCBUS

DCBUS协议:一种组态协议。在工程设置中,DCBUS协议,如下所示:

帧头:2byte,默认为0xAA55,用户可自定义

站号:1byte,默认为站号0,255为广播地址。一般在RS485总线用于区分那个从站;

启用CRC:2byte,默认是启用,若关闭,校验字段默认为0XCCCC;帧头不参与校验;计算方法如下所示:

自动上传:当开启后,用户操作控件会自动上传指令给用户主板

写命令应答:用户主板给屏幕写寄存器时候,会自动应答写成功

c 复制代码
int calculate_crc(uint8_t* data, uint16_t length){
    uint16_t crc = 0xFFFF;
    for (uint16_t i = 0; i < length; i++) {
        crc ^= data[i];
        for (uint8_t j = 0; j < 8; j++) {
            if (crc & 0x0001) {
                crc >>= 1;
                crc ^= 0xA001;
            } else {
                crc >>= 1;
            }
        }
    }
    return crc;
}

读、写、应答的帧格式如下所示:

帧头(2byte) 站号(1byte) 长度(1byte) 功能码(1byte) 地址(2byte) 数据(n byte) 校验(2byte)
0xAA55 0x00~0xFF 功能码+…+校验 0xF1/0xF2 0x0000~0xFFFF ……. 0xCCCC

1.1.写变量存储器指令指令(0xF1)

以向 0x1000 变量地址里写数值100为例: AA55 00 07 F1 1000 0064 CCCC

AA55 表示:帧头;

00表示:站号;

07表示:数据长度,功能码+…+校验的总字节长度;

F1表示:写寄存器;

1000表示:变量地址(2 byte);

0064表示:数据 100(2byte);

CCCC表示:预留字段,没有开启CRC;

若屏幕的站号为1: AA55 01 07 F1 1000 0064 CCCC

若屏幕的站号为1、开启CRC :AA55 01 07 F1 1000 0064 7289

屏幕开启应答:AA55 00 03 F1 CCCC

若屏幕的站号为1:AA55 01 03 F1 CCCC

若屏幕的站号为1、开启CRC:AA55 01 03 F1 B0B4

1.2.读变量存储器指令指令(0xF2)

以读 1000 变量地址里的数值(假设当前数值为 100)为例:AA55 00 06 F2 1000 01 CCCC

AA55 表示:帧头;

00表示:站号;

06表示:数据长度;

F2表示:读寄存器;

1000表示:变量起始地址(2 byte);

01表示:读取的地址个数,范围为1~255个(1byte);

CCCC表示:预留字段,没有开启CRC;

屏收到主板的指令,返回读应答指令:AA55 00 08 F2 1000 01 0064 CCCC

AA55 表示:帧头;

00表示:站号;

08表示:数据长度;

F2表示:读寄存器;

1000表示:变量起始地址(2 byte);

01表示:寄存器数据的长度,单位1 word;

0064表示:寄存器值,100

CCCC表示:预留字段,没有开启CRC;

若屏幕的站号为1:

主板请求:AA55 01 06 F2 1000 01 CCCC

屏幕返回:AA55 01 08 F2 1000 01 0064 CCCC

若屏幕的站号为1、开启CRC :

主板请求:AA55 01 06 F2 1000 01 7B77

屏幕返回:AA55 01 08 F2 1000 01 0064 8CFD

1.3.屏幕修改变量上传主板(0xF2)

若开启 “自动上传”,用户在屏幕上操作控件,修改寄存器值,可自动发出指令上传给主板。

如,点击屏幕将寄存器LW1000修改为100:AA55 0008 F2 1000 01 0064 CCCC

AA55 表示:帧头;

00表示:站号;

08表示:数据长度;

F2表示:读寄存器;

1000表示:变量起始地址(2 byte);

01表示:寄存器数据的长度;

0064表示:寄存器值,100

CCCC表示:预留字段,没有开启CRC;

2.XGUS

XGUS协议格式如下所示:

帧头(2byte) 长度(1byte) 功能码(1byte) 地址(2byte) 数据(n byte) 校验(2byte)
0xAA55 0x00~0xFF 0x80/0x81/0x82/0x83 0x0000~0xFFFF ……. CRC16(x16+x15+x2+x1)

帧头(2byte) 长度(1byte) 功能码(1byte) 地址(2byte) 数据(n byte) 校验(2byte)
0xAA55 0x00~0xFF 0x80/0x81/0x82/0x83 0x0000~0xFFFF ……. CRC16(x16+x15+x2+x1)

在工程属性配置,开启XGUS协议,如下所示:

帧头:2byte,默认为0x5AA5, 用户可自定义;

启用CRC:2byte,默认是启用;

自动上传:当开启后,用户操作控件会自动上传指令给用户主板;

写命令应答:用户主板给屏幕写寄存器时候,会自动应答写成功;

模式:兼容两种模式

模式1:切换画面使用0x80: 5AA5 04 80 03 XX XX, XXXX表示画面ID

模式2:切换画面使用0x82: 5AA5 07 82 0084 5A01 XXXX , XXXX表示画面ID

上一个
1.2 TFT工作界面介绍
下一个
1.4 TFT创建简单样例工程
最近修改: 2026-02-27Powered by