158 lines
3.9 KiB
Protocol Buffer
158 lines
3.9 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
package cmvr.msgs;
|
||
|
||
message SdoFrame {
|
||
uint32 node_id = 1; // 节点ID
|
||
CommandSpecifier cs = 2; // SDO命令字
|
||
uint32 index = 3; // 对象字典索引
|
||
uint32 sub_index = 4; // 子索引
|
||
uint32 data = 5; // 数据区
|
||
}
|
||
|
||
enum PdoBaseId{
|
||
|
||
PDO_BASE_ID_UNSPECIFIED = 0;
|
||
|
||
RPDO1_BASE_ID_200 = 0x200;
|
||
RPDO2_BASE_ID_300 = 0x300;
|
||
RPDO3_BASE_ID_400 = 0x400;
|
||
RPDO4_BASE_ID_500 = 0x500;
|
||
|
||
|
||
TPDO1_BASE_ID_180 = 0x180;
|
||
TPDO2_BASE_ID_280 = 0x280;
|
||
TPDO3_BASE_ID_380 = 0x380;
|
||
TPDO4_BASE_ID_480 = 0x480;
|
||
}
|
||
|
||
// PDO 传输类型
|
||
enum TransmissionType {
|
||
|
||
// 同步传输
|
||
SYNC_EVENT_DRIVEN = 0x00; // 非循环同步
|
||
SYNC_CYCLIC = 0x01; // 循环同步
|
||
|
||
// 远程请求触发
|
||
REMOTE_SYNC = 0xFC; // 远程同步
|
||
REMOTE_ASYNC = 0xFD; // 远程异步
|
||
|
||
// 异步传输
|
||
ASYNC_MANUFACTURER_SPECIFIC = 0xFE; // 异步,制造商特定事件
|
||
ASYNC_DEVICE_SPECIFIC = 0xFF; // 异步,设备子协议特定事件
|
||
}
|
||
|
||
|
||
|
||
enum CommandSpecifier {
|
||
CS_NO = 0; // 默认无效
|
||
CS_WRITE_ONE_BYTE = 0x2F; // 写 1 字节
|
||
CS_WRITE_TWO_BYTES = 0x2B; // 写 2 字节
|
||
CS_WRITE_THREE_BYTES = 0x27; // 写 3 字节
|
||
CS_WRITE_FOUR_BYTES = 0x23; // 写 4 字节
|
||
CS_WRITE_SUCCESS_RESPONSE = 0x60; // 写成功响应
|
||
|
||
CS_READ_REQUEST = 0x40; // 发起读取请求
|
||
CS_READ_RESPONSE_ONE_BYTE = 0x4F; // 响应 1 字节
|
||
CS_READ_RESPONSE_TWO_BYTES = 0x4B;// 响应 2 字节
|
||
CS_READ_RESPONSE_THREE_BYTES = 0x47;
|
||
CS_READ_RESPONSE_FOUR_BYTES = 0x43;
|
||
|
||
CS_EXCEPTION_RESPONSE = 0x80; // 异常响应
|
||
}
|
||
|
||
|
||
|
||
|
||
enum NmtState {
|
||
// 0x00 - 正在初始化(Initializing)
|
||
NMT_INITIALIZING = 0x00;
|
||
|
||
// 0x01 - 未连接 / 应用复位(Reset Application)
|
||
NMT_RESET_APPLICATION = 0x01;
|
||
|
||
// 0x02 - 正在连接(Connecting)
|
||
NMT_CONNECTING = 0x02;
|
||
|
||
// 0x03 - 准备(Preparing)
|
||
NMT_PREPARING = 0x03;
|
||
|
||
// 0x04 - 停止状态(Stopped),开启 SDO,关闭 PDO
|
||
NMT_STOPPED = 0x04;
|
||
|
||
// 0x05 - 运行状态(Operational),开启 SDO、PDO、NMT
|
||
NMT_OPERATIONAL = 0x05;
|
||
|
||
// 0x7F - 预运行状态(Pre-Operational),开启 SDO,关闭 PDO
|
||
NMT_PRE_OPERATIONAL = 0x7F;
|
||
}
|
||
|
||
|
||
|
||
enum NmtCommand {
|
||
// 未指定命令
|
||
NMT_COMMAND_UNSPECIFIED = 0x00;
|
||
|
||
// 0x01 - 启动远程节点(Start Remote Node)
|
||
NMT_START_REMOTE_NODE = 0x01;
|
||
|
||
// 0x02 - 停止远程节点(Stop Remote Node)
|
||
NMT_STOP_REMOTE_NODE = 0x02;
|
||
|
||
// 0x80 - 进入预操作状态(Enter Pre-Operational)
|
||
NMT_ENTER_PRE_OPERATIONAL = 0x80;
|
||
|
||
// 0x81 - 复位节点(Reset Node)
|
||
NMT_RESET_NODE = 0x81;
|
||
|
||
// 0x82 - 复位通信(Reset Communication)
|
||
NMT_RESET_COMMUNICATION = 0x82;
|
||
}
|
||
|
||
|
||
// CANopen communication object dictionary indexes.
|
||
// CiA402 drive-profile objects are defined in cia402.proto.
|
||
enum CanopenObjectIndex {
|
||
CANOPEN_OBJECT_INDEX_ZERO = 0;
|
||
|
||
CANOPEN_PRODUCER_HEARTBEAT_TIME_1017 = 0x1017;
|
||
|
||
// PDO 通信参数对象(Communication Object)
|
||
CANOPEN_RPDO1_COMM_1400 = 0x1400;
|
||
CANOPEN_RPDO2_COMM_1401 = 0x1401;
|
||
CANOPEN_RPDO3_COMM_1402 = 0x1402;
|
||
CANOPEN_RPDO4_COMM_1403 = 0x1403;
|
||
|
||
CANOPEN_TPDO1_COMM_1800 = 0x1800;
|
||
CANOPEN_TPDO2_COMM_1801 = 0x1801;
|
||
CANOPEN_TPDO3_COMM_1802 = 0x1802;
|
||
CANOPEN_TPDO4_COMM_1803 = 0x1803;
|
||
|
||
// PDO 映射对象(Mapping Object)
|
||
CANOPEN_RPDO1_MAP_1600 = 0x1600;
|
||
CANOPEN_RPDO2_MAP_1601 = 0x1601;
|
||
CANOPEN_RPDO3_MAP_1602 = 0x1602;
|
||
CANOPEN_RPDO4_MAP_1603 = 0x1603;
|
||
|
||
CANOPEN_TPDO1_MAP_1A00 = 0x1A00;
|
||
CANOPEN_TPDO2_MAP_1A01 = 0x1A01;
|
||
CANOPEN_TPDO3_MAP_1A02 = 0x1A02;
|
||
CANOPEN_TPDO4_MAP_1A03 = 0x1A03;
|
||
|
||
// Ti5 vendor-specific objects used through CANopen SDO.
|
||
CANOPEN_USER_SAVE_PARA_2000 = 0x2000;
|
||
CANOPEN_POSITION_OFFSET_2008 = 0x2008;
|
||
}
|
||
|
||
// 子索引
|
||
enum ObSubIndex {
|
||
SUB_INDEX_0 = 0;
|
||
SUB_INDEX_1 = 1;
|
||
SUB_INDEX_2 = 2;
|
||
SUB_INDEX_3 = 3;
|
||
SUB_INDEX_4 = 4;
|
||
SUB_INDEX_5 = 5;
|
||
SUB_INDEX_6 = 6;
|
||
SUB_INDEX_7 = 7;
|
||
}
|