Skip to content

数据上传

概述

数据上传功能用于将控制器运行过程中采集的数据(如关节角度、速度、力矩、IO 状态等)按照配置的格式和周期上传至远程服务器。支持 FTP 上传方式,可自定义文件格式、采集周期和上传周期。

工作流程

text
┌──────────┐     ┌──────────┐     ┌──────────┐
│  控制器   │     │  上位机   │     │ FTP 服务器│
└────┬─────┘     └────┬─────┘     └────┬─────┘
     │               │               │
     │               │ 配置上传参数    │
     │<──────────────│ 0x7333        │
     │               │               │
     │  周期采集数据   │               │
     │──────┐        │               │
     │      │ (采集)  │               │
     │<─────┘        │               │
     │               │               │
     │  上传周期到达   │               │
     │──────────────────────────────>│ FTP 上传
     │               │               │

核心概念

概念说明
采集周期控制器从机器人读取数据的频率
上传周期将采集到的数据打包上传至服务器的频率
数据文件包含机器人运行数据的文件(csv/txt)
说明文档包含数据列定义的辅助文件

1. 数据传输开关

1.1 上位机设置数据传输开关

命令字: 0x7330

参数名类型描述
enablebool数据传输开关,true-开启,false-关闭
robotint当前机器人号,范围 [1, 4]
json
{
  "enable": true,
  "robot": 1
}

开启数据传输后,控制器按配置的采集周期开始采集数据,并按上传周期发送至服务器。

1.2 上位机查询数据传输开关

命令字: 0x7331

参数名类型描述
robotint当前机器人号,范围 [1, 4]
json
{
  "robot": 1
}

1.3 控制器回复数据传输开关

命令字: 0x7332

参数名类型描述
enablebool数据传输开关
robotint当前机器人号
json
{
  "enable": false,
  "robot": 1
}

2. 数据上传参数

2.1 上位机设置数据上传参数

命令字: 0x7333

参数名类型范围/取值描述
dataCollectTimedouble[0.001, 999999] 秒数据采集周期,即每隔多少秒采集一次数据
dataUploadTimedouble[0.001, 999999] 秒数据上传周期,即每隔多少秒上传一次数据文件
fileSuffixstring"csv" / "txt"文件格式。csv 为逗号分隔值,txt 为空格或制表符分隔
filepathstring-FTP 服务器上的文件存放路径,如 "/robot_data/"
passwordstring-FTP 登录密码
robotint[1, 4]机器人号
sendInfoFileFlagbool-是否发送说明文档。true-每次上传同时发送说明文档
serverIPstring-FTP 服务器 IP 地址
serverPortint(0, 65535]FTP 服务器端口,默认 21
uploadModestring默认 "FTP"上传方式,当前仅支持 "FTP"
usernamestring-FTP 登录用户名

参数配置建议

参数推荐值说明
dataCollectTime0.01~1.0 s高频采集用于精细运动分析,低频用于长期监控
dataUploadTime30~300 s上传间隔应考虑文件大小和网络带宽
fileSuffix"csv"csv 格式兼容性好,易于 Excel 等工具打开
sendInfoFileFlagtrue首次上传建议开启,便于理解数据列含义
json
{
  "dataCollectTime": 1.0,
  "dataUploadTime": 30.0,
  "fileSuffix": "csv",
  "filepath": "/robot_data/",
  "password": "123456",
  "robot": 1,
  "sendInfoFileFlag": true,
  "serverIP": "192.168.1.14",
  "serverPort": 21,
  "uploadMode": "FTP",
  "username": "admin"
}

2.2 上位机查询数据上传参数

命令字: 0x7334

参数名类型范围描述
robotint[1, 4]机器人号
json
{
  "robot": 1
}

2.3 控制器回复数据上传参数

命令字: 0x7335

参数名类型范围/取值描述
dataCollectTimedouble[0.001, 999999]s数据采集周期
dataUploadTimedouble[0.001, 999999]s数据上传周期
fileSuffixstring"csv" / "txt"文件格式
filepathstring-文件路径
passwordstring-密码
robotint[1, 4]机器人号
sendInfoFileFlagbool-是否发送说明文档
serverIPstring-服务器 IP
serverPortint(0, 65535]端口号
uploadModestring默认 "FTP"上传方式
usernamestring-用户名
json
{
  "dataCollectTime": 1.0,
  "dataUploadTime": 30.0,
  "fileSuffix": "csv",
  "filepath": "/robot_data/",
  "password": "123456",
  "robot": 1,
  "sendInfoFileFlag": true,
  "serverIP": "192.168.1.14",
  "serverPort": 21,
  "uploadMode": "FTP",
  "username": "admin"
}

3. 数据格式

说明: 上位机设置与查询分四次进行,分别对应说明文档文件名、说明文档文件内容、数据文档文件名、数据文档文件内容的格式。

3.1 上位机设置数据格式

命令字: 0x7336

参数名类型范围描述
formatstring-数据格式模板,支持占位符
robotint[1, 4]当前机器人号
typeint[1, 4]当前设置的格式类型

type 取值说明

描述应用场景
1说明文档文件名定义发送的说明文档的文件命名规则
2说明文档文件内容定义说明文档中数据列的名称与排列
3数据文档文件名定义数据文件的文件命名规则
4数据文档文件内容定义数据文件中每行数据的排列格式

格式模板占位符

格式字符串中使用以下占位符,上传时自动替换为实际值:

占位符替换内容示例输出
$Y%4 位年份2024
$m%2 位月份03
$d%2 位日期15
$H%2 位小时(24小时制)14
$M%2 位分钟30
$S%2 位秒00
$R%机器人号1
$N%递增序号001
TEXT普通文本(原样输出)Robot-R1

type=1 示例(说明文档文件名)

json
{
  "format": "Robot-R$R%_$Y%-$m%-$d%_$H%-$M%-$S%_Info.txt",
  "robot": 1,
  "type": 1
}

生成的说明文档文件名示例:Robot-R1_2024-03-15_14-30-00_Info.txt

type=3 示例(数据文档文件名)

json
{
  "format": "Robot-R$R%_$Y%-$m%-$d%_$H%-$M%-$S%",
  "robot": 1,
  "type": 3
}

生成的数据文件名示例:Robot-R1_2024-03-15_14-30-00.csv

3.2 上位机查询数据格式

命令字: 0x7337

参数名类型范围描述
robotint[1, 4]当前机器人号
typeint[1, 4]当前设置的格式类型
json
{
  "robot": 1,
  "type": 1
}

3.3 控制器回复数据格式

命令字: 0x7338

参数名类型范围描述
formatstring-数据格式模板
robotint[1, 4]当前机器人号
typeint[1, 4]当前设置的格式类型
json
{
  "format": "Robot-R$R%_$Y%-$m%-$d%_$H%-$M%-$S%",
  "robot": 1,
  "type": 1
}

4. 触发方式

定时触发

数据上传默认采用定时触发方式,由 dataUploadTime 控制上传间隔。

  • 控制器内部维护一个上传定时器
  • 定时器到达 dataUploadTime 时,将采集缓冲区数据写入文件并上传
  • 上传完成后重置定时器,进入下一周期

条件触发(手动触发)

命令字: 0x7339

除了定时触发外,上位机可随时发送命令触发一次即时上传。

请求参数

参数名类型描述
robotint机器人号,范围 [1, 4]
commandstring"upload_now"-立即上传,"clear_buffer"-清空采集缓冲区

请求示例

json
{
  "robot": 1,
  "command": "upload_now"
}

5. 上传内容定义

数据文件内容(type=4)

type=4 的格式定义决定了数据文件中每行的数据排列。格式字符串由变量名和分隔符组成。

可用数据变量

变量名说明数据类型
$JT1% ~ $JT6%关节 1~6 的角度double (°)
$JV1% ~ $JV6%关节 1~6 的速度double (°/s)
$JTQ1% ~ $JTQ6%关节 1~6 的力矩double (Nm)
$TCX% / $TCY% / $TCZ%TCP 位置 X/Y/Zdouble (mm)
$TRX% / $TRY% / $TRZ%TCP 姿态 RX/RY/RZdouble (°)
$DI1% ~ $DIN%数字输入int (0/1)
$DO1% ~ $DON%数字输出int (0/1)
$TS%时间戳int (ms)

请求示例(type=4)

json
{
  "format": "$TS%,$JT1%,$JT2%,$JT3%,$JT4%,$JT5%,$JT6%,$TCX%,$TCY%,$TCZ%",
  "robot": 1,
  "type": 4
}

生成的数据行示例:12345,10.5,-20.3,45.0,0.5,30.2,-90.0,500.1,100.0,250.5

说明文档内容(type=2)

type=2 定义说明文档中数据列标题。通常与 type=4 的数据排列一一对应。

json
{
  "format": "时间戳(ms),关节1(deg),关节2(deg),关节3(deg),关节4(deg),关节5(deg),关节6(deg),TCP_X(mm),TCP_Y(mm),TCP_Z(mm)",
  "robot": 1,
  "type": 2
}

6. 上传状态反馈

控制器上报上传状态

命令字: 0x733A

每次上传操作完成后,控制器主动上报上传结果。

参数说明

字段类型描述
robotint机器人号
statusint上传状态,0-成功,1-失败,2-上传中
fileNamestring上传的文件名
fileSizeint文件大小(字节)
errorMsgstring错误信息(失败时返回)

响应示例

json
{
  "robot": 1,
  "status": 0,
  "fileName": "Robot-R1_2024-03-15_14-30-00.csv",
  "fileSize": 20480,
  "errorMsg": ""
}

7. 常见问题

上传失败排查

现象可能原因解决方案
上传失败FTP 服务器地址错误检查 serverIPserverPort
上传失败用户名/密码错误检查 usernamepassword
上传失败路径不存在确认 FTP 服务器上 filepath 目录存在
上传失败网络不通用 ping 测试控制器与 FTP 服务器连通性
文件为空采集周期过大减小 dataCollectTime,增大 dataUploadTime
文件为空数据变量未配置检查 type=4 格式是否包含有效变量
文件命名错乱格式占位符错误确认占位符语法正确

性能建议

  • 长时间运行建议设置较大的上传周期(如 300s),避免产生过多小文件
  • 高频采集(dataCollectTime < 0.01s)时注意控制器内存占用
  • FTP 服务器应有足够的磁盘空间,定期清理历史数据文件
  • sendInfoFileFlag 改为 false 可减少上传数据量(仅首次需要说明文档)