开发板可编程功能(批量指令离线自动执行)

用于在开发板本地存储一批 CAN/RS485 指令,并按预设周期和次数自动执行。
快速集成可使用 SANPO Studio 工具 进行批量 CAN/RS485 指令调试、存储和自动执行配置。

  • 所有 AT+ 命令均需以 \r\n 结尾。

  • 该功能仅适用于固件 V4.2 及以后版本。

  • 发送 AT+VER(以\r\n结尾) 查询固件版本;如未返回 V42 版本号,请更新到最新固件

命令总览

指令

说明

AT+BATBEGIN=<id>,<name>

创建/覆盖一个批次,开始上传该批次指令

AT+BATADD=<id>,<idx>,<proto>,<ch>,<delay_ms>,<hex_payload>

添加单条指令(短 payload)

AT+BATADDX=<id>,<idx>,<proto>,<ch>,<delay_ms>,<total_len>,<seq>,<off>,<hex_part>

添加分片指令(长 payload)

AT+BATADDEND=<id>,<idx>,<crc16>

结束分片上传并校验

AT+BATCOMMIT=<id>

提交并持久化批次

AT+BATRUN=<id>,<mode>,<period_ms>,<repeat>

运行批次(1=ONCE, 2=PERIODIC

AT+BATSTOP

停止当前运行

AT+BATLIST?

查询批次列表

AT+BATREAD=<id>,<idx>

回读批次条目;idx=0 返回摘要

AT+BATDEL=<id>

删除批次

AT+BATSTAT?

查询运行状态

AT+BATAUTOSET=<id>,<mode>,<period_ms>,<repeat>

设置上电自动执行

AT+BATAUTOCLR

清除上电自动执行配置

AT+BATAUTO?

查询上电自动执行配置

AT+BATERASE

硬擦除整个 BATCH 存储区域(不可频繁使用)

全局通信参数(持久化)

为支持开发板离线批量执行,建议先配置全局 CAN/RS485 参数:

  • AT+SETCAN=<baud>:设置全局 CAN 波特率(当前开发板上的 CAN 通道统一生效)。

  • AT+SETRS485=<baud>,<stop>,<parity>,<bits>:设置全局 RS485 参数(当前开发板上的 RS485 通道统一生效)。

字段说明:

  • baud:波特率(示例:CAN 1000000/500000/250000/125000,RS485 4000000 等)

  • stop:停止位,12

  • parity:校验位,0=None1=Odd2=Even

  • bits:数据位,89

持久化规则:

  • 开发板重新上电后将自动加载并应用上次保存的参数。

示例:

AT+SETCAN=1000000
AT+SETRS485=4000000,1,0,8

字段定义

  • id:批次编号,范围 1..99

  • name:批次名称(英文/数字/下划线/中划线),最大 16 字符

  • idx:批次内指令索引,从 1 开始,必须连续递增

  • proto1=CAN_STD, 2=CAN_EXT, 3=RS485

  • ch:通道 1..40 表示广播)

  • delay_ms:指令间相对延时,范围 0..9999 ms

  • hex_payload/hex_part:十六进制文本(2 字符 = 1 字节)

  • mode1=ONCE, 2=PERIODIC

  • repeat:循环次数,0 表示无限循环

  • seq:分片序号,从 1 开始递增

  • off:分片偏移(字节),从 0 开始

Payload 编码定义

  • payload 使用十六进制文本编码(2 字符 = 1 字节)

  • proto=1 (CAN_STD)CANID(2B) + DLC(1B) + DATA(0~8B),总长度 3~11B

  • proto=2 (CAN_EXT)CANID(4B) + DLC(1B) + DATA(0~8B),总长度 5~13B

  • proto=3 (RS485):单条 RS485 数据 <=17B 可用 AT+BATADD,更长请用 AT+BATADDX

  • 示例(CAN_EXT):00000123081122334455667788

  • 示例(RS485):A55A010203040506

长度与分片规则

  • AT+BATADD 适合短 payload(<=17 字节)

  • 长 payload 使用 AT+BATADDX + AT+BATADDEND 分片上传

使用样例

  1. 创建批次

AT+BATBEGIN=1,walk_cycle
  1. 添加 CAN_EXT 条目

AT+BATADD=1,1,2,1,20,00000123081122334455667788
  1. 添加 RS485 条目

AT+BATADD=1,2,3,2,10,A55A010203040506
  1. 提交并运行(周期 100 ms,持续循环)

AT+BATCOMMIT=1
AT+BATRUN=1,2,100,0
  1. 停止运行

AT+BATSTOP
  1. 分片示例(40 字节 RS485)

AT+BATADDX=2,1,3,2,20,40,1,0,11223344556677889900AABBCCDDEEFF
AT+BATADDX=2,1,3,2,20,40,2,16,0102030405060708090A0B0C0D0E0F10
AT+BATADDX=2,1,3,2,20,40,3,32,1112131415161718
AT+BATADDEND=2,1,7A3C
AT+BATCOMMIT=2
  1. 查询批次列表

AT+BATLIST?

返回示例:

BATLIST:1,walk_cycle;2,test_rs485
BATLIST:NONE
  1. 回读批次内容

AT+BATREAD=1,0
AT+BATREAD=1,1
AT+BATREAD=1,2

返回格式:

BATREAD:id=<id>,name=<name>,count=<count>
BATREAD:id=<id>,idx=<idx>,proto=<proto>,ch=<ch>,delay_ms=<delay_ms>,payload=<hex_payload>
  1. 查询运行状态

AT+BATSTAT?
  1. 删除批次

AT+BATDEL=1
  1. 配置上电自动执行

AT+BATAUTOSET=1,2,200,2
AT+BATAUTOSET=1,1,0,0
AT+BATAUTO?
AT+BATAUTOCLR
  1. 擦除全部 BATCH 存储

AT+BATERASE

错误码

失败返回格式:

ERR,<code>

定义如下:

  • 0:成功(通常返回 OK

  • 1BAT_ERR_PARAM,参数格式错误/缺参数/非法字符

  • 2BAT_ERR_STATE,状态错误(未 BATBEGINBATADD、分片顺序错误、idx 不连续等)

  • 3BAT_ERR_RANGE,参数超范围(id/idx/seq/delay_ms/长度等)

  • 4BAT_ERR_CRCBATADDEND CRC 校验失败

  • 5BAT_ERR_NOSPACE,Flash 空间不足

  • 6BAT_ERR_NOTFOUND,批次不存在或被删除

  • 7BAT_ERR_QUEUE,发送队列忙(可重试)

  • 8BAT_ERR_FLASH,Flash 读写/擦除失败