Files

168 lines
5.8 KiB
Protocol Buffer
Raw Permalink 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 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; // 到达限位
}