开发板可编程功能(批量指令离线自动执行)
用于在开发板本地存储一批 CAN/RS485 指令,并按预设周期和次数自动执行。
快速集成可使用 SANPO Studio 工具 进行批量 CAN/RS485 指令调试、存储和自动执行配置。
所有
AT+命令均需以\r\n结尾。该功能仅适用于固件
V4.2及以后版本。发送
AT+VER(以\r\n结尾) 查询固件版本;如未返回V42版本号,请更新到最新固件。
命令总览
指令 |
说明 |
|---|---|
|
创建/覆盖一个批次,开始上传该批次指令 |
|
添加单条指令(短 payload) |
|
添加分片指令(长 payload) |
|
结束分片上传并校验 |
|
提交并持久化批次 |
|
运行批次( |
|
停止当前运行 |
|
查询批次列表 |
|
回读批次条目; |
|
删除批次 |
|
查询运行状态 |
|
设置上电自动执行 |
|
清除上电自动执行配置 |
|
查询上电自动执行配置 |
|
硬擦除整个 BATCH 存储区域(不可频繁使用) |
全局通信参数(持久化)
为支持开发板离线批量执行,建议先配置全局 CAN/RS485 参数:
AT+SETCAN=<baud>:设置全局 CAN 波特率(当前开发板上的 CAN 通道统一生效)。AT+SETRS485=<baud>,<stop>,<parity>,<bits>:设置全局 RS485 参数(当前开发板上的 RS485 通道统一生效)。
字段说明:
baud:波特率(示例:CAN1000000/500000/250000/125000,RS4854000000等)stop:停止位,1或2parity:校验位,0=None、1=Odd、2=Evenbits:数据位,8或9
持久化规则:
开发板重新上电后将自动加载并应用上次保存的参数。
示例:
AT+SETCAN=1000000
AT+SETRS485=4000000,1,0,8
字段定义
id:批次编号,范围1..99name:批次名称(英文/数字/下划线/中划线),最大16字符idx:批次内指令索引,从1开始,必须连续递增proto:1=CAN_STD,2=CAN_EXT,3=RS485ch:通道1..4(0表示广播)delay_ms:指令间相对延时,范围0..9999mshex_payload/hex_part:十六进制文本(2 字符 = 1 字节)mode:1=ONCE,2=PERIODICrepeat:循环次数,0表示无限循环seq:分片序号,从1开始递增off:分片偏移(字节),从0开始
Payload 编码定义
payload使用十六进制文本编码(2 字符 = 1 字节)proto=1 (CAN_STD):CANID(2B) + DLC(1B) + DATA(0~8B),总长度3~11Bproto=2 (CAN_EXT):CANID(4B) + DLC(1B) + DATA(0~8B),总长度5~13Bproto=3 (RS485):单条 RS485 数据<=17B可用AT+BATADD,更长请用AT+BATADDX示例(CAN_EXT):
00000123081122334455667788示例(RS485):
A55A010203040506
长度与分片规则
AT+BATADD适合短 payload(<=17字节)长 payload 使用
AT+BATADDX + AT+BATADDEND分片上传
使用样例
创建批次
AT+BATBEGIN=1,walk_cycle
添加 CAN_EXT 条目
AT+BATADD=1,1,2,1,20,00000123081122334455667788
添加 RS485 条目
AT+BATADD=1,2,3,2,10,A55A010203040506
提交并运行(周期 100 ms,持续循环)
AT+BATCOMMIT=1
AT+BATRUN=1,2,100,0
停止运行
AT+BATSTOP
分片示例(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
查询批次列表
AT+BATLIST?
返回示例:
BATLIST:1,walk_cycle;2,test_rs485
BATLIST:NONE
回读批次内容
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>
查询运行状态
AT+BATSTAT?
删除批次
AT+BATDEL=1
配置上电自动执行
AT+BATAUTOSET=1,2,200,2
AT+BATAUTOSET=1,1,0,0
AT+BATAUTO?
AT+BATAUTOCLR
擦除全部 BATCH 存储
AT+BATERASE
错误码
失败返回格式:
ERR,<code>
定义如下:
0:成功(通常返回OK)1:BAT_ERR_PARAM,参数格式错误/缺参数/非法字符2:BAT_ERR_STATE,状态错误(未BATBEGIN就BATADD、分片顺序错误、idx不连续等)3:BAT_ERR_RANGE,参数超范围(id/idx/seq/delay_ms/长度等)4:BAT_ERR_CRC,BATADDENDCRC 校验失败5:BAT_ERR_NOSPACE,Flash 空间不足6:BAT_ERR_NOTFOUND,批次不存在或被删除7:BAT_ERR_QUEUE,发送队列忙(可重试)8:BAT_ERR_FLASH,Flash 读写/擦除失败