CmvrControlStation/protos/cmvr/msgs/canopen.proto

158 lines
3.9 KiB
Protocol Buffer
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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