168 lines
5.8 KiB
Protocol Buffer
168 lines
5.8 KiB
Protocol Buffer
syntax = "proto3";
|
||
package laserweld.common;
|
||
|
||
option csharp_namespace = "Laserweld.Protos.Common";
|
||
|
||
// ===== Java / Android 必须的配置 =====
|
||
option java_multiple_files = true;
|
||
option java_package = "com.lxsoft.weld.grpc";
|
||
option java_outer_classname = "CommonProto";
|
||
|
||
// ==================== 坐标类型 ====================
|
||
|
||
// 6轴坐标 (X, Y, Z, A, B, C)
|
||
// 使用 optional 支持可选轴(某些机型可能没有全部轴)
|
||
message Vector6d {
|
||
optional double x = 1;
|
||
optional double y = 2;
|
||
optional double z = 3;
|
||
optional double a = 4; // 旋转轴
|
||
optional double b = 5; // 旋转轴
|
||
optional double c = 6; // 旋转轴
|
||
}
|
||
|
||
// ==================== 轨迹类型 ====================
|
||
|
||
// 轨迹类型枚举
|
||
enum TrackKind {
|
||
TRACK_KIND_UNSPECIFIED = 0;
|
||
TRACK_KIND_LINE = 3; // 直线
|
||
TRACK_KIND_ARC = 4; // 圆弧
|
||
TRACK_KIND_CIRCLE = 5; // 整圆
|
||
TRACK_KIND_CURVE = 6; // 曲线
|
||
TRACK_KIND_DELAY = 20; // 延时
|
||
TRACK_KIND_IO_ON = 21; // 开启IO
|
||
TRACK_KIND_IO_OFF = 22; // 关断IO
|
||
TRACK_KIND_WAIT_INPUT = 23; // 等待输入
|
||
TRACK_KIND_STATION = 50; // 工位
|
||
TRACK_KIND_SPOT_WELD = 60; // 点焊点
|
||
}
|
||
|
||
// 轨迹项
|
||
message TrackItem {
|
||
uint32 id = 1; // 轨迹唯一标识 (ushort)
|
||
TrackKind kind = 2; // 轨迹类型
|
||
uint32 process = 3; // 工艺ID (0:无 | 1-8:工艺 | 9-10:特殊 | 11-12:空走)
|
||
uint32 index = 4; // 界面索引
|
||
string status = 5; // 状态描述
|
||
string brief = 6; // 简要描述
|
||
repeated Vector6d points = 7; // 相关点数据
|
||
repeated TrackItem sub_track_items = 8; // 子轨迹项(子程序专属)
|
||
bool is_exec_in_order = 9; // 是否顺序执行(子程序专属)
|
||
uint32 trigger_input_id = 10; // 触发执行输入端(子程序专属)
|
||
bool is_stop_close_out = 11; // 停止时自动关断(IO专用)
|
||
uint32 io_num = 12; // IO引脚号(IO专用)
|
||
double delay_ms = 13; // 延时毫秒(延时专用)
|
||
repeated double spot_weld_params = 14; // 点焊取点参数(曲线参数u)
|
||
}
|
||
|
||
// ==================== 工艺类型 ====================
|
||
|
||
// 普通工艺模型
|
||
message GeneralProc {
|
||
// 工艺参数
|
||
float scan_speed = 1; // 扫描速度 mm/s
|
||
float scan_width = 2; // 扫描宽度 mm
|
||
uint32 peak_power = 3; // 峰值功率 W
|
||
uint32 duty_cycle = 4; // 占空比 %
|
||
uint32 pulse_freq = 5; // 脉冲频率 Hz
|
||
float scan_height = 6; // 扫描高度 mm
|
||
uint32 rotate_angle = 7; // 旋转角度 °
|
||
|
||
// 开光参数
|
||
uint32 open_air_delay_ms = 10; // 开气延时 ms
|
||
uint32 close_air_delay_ms = 11; // 关气延时 ms
|
||
uint32 open_light_percent = 12; // 开光功率 %
|
||
uint32 open_light_gradual_ms = 13; // 开光渐进时间 ms
|
||
uint32 close_light_percent = 14; // 关光功率 %
|
||
uint32 close_light_gradual_ms = 15; // 关光渐进时间 ms
|
||
|
||
// 送丝参数
|
||
bool need_feed_wire = 20; // 是否送丝
|
||
uint32 feed_wire_ahead_ms = 21; // 提前送丝时间 ms
|
||
uint32 feed_speed = 22; // 送丝速度 cm/min
|
||
uint32 back_length = 23; // 回抽长度 mm
|
||
uint32 patch_length = 24; // 补丝长度 mm
|
||
uint32 patch_delay_ms = 25; // 补丝延迟 ms
|
||
|
||
// 运动参数
|
||
float move_speed = 30; // 运动速度 mm/s
|
||
uint32 open_light_wait_ms = 31; // 开光停留时间 ms
|
||
uint32 close_light_delay_ms = 32; // 关光延迟时间 ms
|
||
uint32 back_wire_ahead_ms = 33; // 回抽提前时间 ms
|
||
|
||
// 点焊参数
|
||
uint32 spot_weld_duration_ms = 40; // 点焊持续时长 ms
|
||
|
||
// 过焊参数
|
||
bool need_show_over_welding = 50; // 是否显示过焊参数
|
||
uint32 over_weld_track_length = 51; // 过焊轨迹长度 mm
|
||
uint32 over_weld_wire_length = 52; // 过焊送丝长度 mm
|
||
}
|
||
|
||
// 空走工艺模型
|
||
message EmptyProc {
|
||
float move_speed = 1; // 运动速度 mm/s
|
||
}
|
||
|
||
// ==================== 项目详情 ====================
|
||
|
||
// 项目详细信息
|
||
message ProjectDetail {
|
||
uint32 id = 1; // 项目编号 (ushort)
|
||
int64 create_time = 2; // 创建时间 (Unix ms)
|
||
string name = 3; // 项目名称
|
||
bool enable_rtcp = 4; // RTCP使能
|
||
repeated TrackItem track_items = 5; // 轨迹列表
|
||
}
|
||
|
||
// ==================== 通用响应 ====================
|
||
|
||
// 确认响应(命令已收到)
|
||
message Ack {
|
||
int64 received_at = 1; // 服务端收到时间戳 (Unix ms)
|
||
}
|
||
|
||
// 通用结果响应(对应 C# Result)
|
||
message Result {
|
||
bool success = 1; // IsSuccess
|
||
string message = 2; // Message
|
||
int32 error_code = 3; // ErrorCode
|
||
}
|
||
|
||
// ==================== 运动相关枚举 ====================
|
||
|
||
// 轴类型 (0-5 对应 X Y Z A B C)
|
||
enum AxisType {
|
||
AXIS_X = 0;
|
||
AXIS_Y = 1;
|
||
AXIS_Z = 2;
|
||
AXIS_A = 3;
|
||
AXIS_B = 4;
|
||
AXIS_C = 5;
|
||
}
|
||
|
||
// 运动方向
|
||
enum Direction {
|
||
DIRECTION_POSITIVE = 0; // 正向
|
||
DIRECTION_NEGATIVE = 1; // 反向
|
||
}
|
||
|
||
// ==================== 错误码 ====================
|
||
|
||
// todo 后期等业务做完再维护这个
|
||
|
||
enum ErrorCode {
|
||
ERROR_CODE_OK = 0; // 成功
|
||
ERROR_CODE_UNKNOWN = 1; // 未知错误
|
||
ERROR_CODE_INVALID_COMMAND = 100; // 无效命令
|
||
ERROR_CODE_INVALID_PARAMS = 101; // 无效参数
|
||
ERROR_CODE_PROJECT_NOT_FOUND = 200; // 项目不存在
|
||
ERROR_CODE_PROJECT_EXISTS = 201; // 项目已存在
|
||
ERROR_CODE_PROJECT_NOT_OPEN = 202; // 项目未打开
|
||
ERROR_CODE_HARDWARE_ERROR = 300; // 硬件错误
|
||
ERROR_CODE_CONNECTION_LOST = 301; // 连接丢失
|
||
ERROR_CODE_MOTION_BUSY = 302; // 运动中,无法执行
|
||
ERROR_CODE_LIMIT_REACHED = 303; // 到达限位
|
||
}
|