cmvr-es/protos/cmvr/msgs/canopen.proto

158 lines
3.9 KiB
Protocol Buffer
Raw Normal View History

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;
}