可编程转盘称重校准:CT 命令第 5 部分

1 CT 命令系列的第 5 部分涵盖称重组。实际中,CT 称重组包含三条相关指令。第一,CT+SETWEIGHTSCALE(Num,Weight); 写入一条校准条目。第二,CT+GETWEIGHTSCALE(); 上报所有已存储的条目。第三,CT+GETWEIGHTBYKG(); 以千克为单位返回实时载荷。三者共同为一台
带称重检测选件的设备涵盖设置、审核与日常读数。
2 具体来说,CT+SETWEIGHTSCALE(Num,Weight); 接受两个参数。Num 选择存储槽,Weight 给出转盘上物体的真实质量。Num=0 存储零点偏移,大多数操作员称之为去皮条目。五个量程点位于 Num=1 到 Num=5。换句话说,一条命令既能重新归零平台,也能定义测量曲线。
3 与此同时,CT+GETWEIGHTSCALE(); 回答的是另一个问题。它上报设备当前持有的内容,因此你可以核验一次校准,而不是盲目信任它。通常,回复会列出一行偏移、五行量程和一行平均值。因此,这一次查询就把一个看不见的过程变成了可核查的证据。
4 此外,CT+GETWEIGHTBYKG(); 给出的是大多数人真正需要的值。它返回以千克为单位的当前载荷,例如 CurLoad(kg)=15.5kg。因此,拍摄脚本无需额外硬件,就能在每一帧旁边记录重量。
5 这三条指令都属于 MT、MT 自动快门和 UT 系列共用的、以 CR 结尾的 ASCII 协议。然而,只有当硬件包含称重传感器模块时它们才会应答。固件 V2R05C01 引入了该组,之后的版本保持相同的语法。值得注意的是,型号代码带有字母 T 表示称重检测功能,因此该选件在 SKU 中就能看出来。
6 相应地,核心优势在于端到端的可追溯性。你校准一次,审核存储的数字,并在同一条已经驱动旋转与快门时序的串行链路上读取实时值。因此,工作流中不会多出第二台秤、额外线缆或额外软件层。此外,称重组不需要自己的轮询循环。它与现有的旋转命令并排使用,使脚本保持简短且可预测。
7 详细适用场景
8 场景 A:同一 SKU 的一致性产品摄影
9 电商影棚会在许多场次中拍摄同一件产品。细微的质量差异会暴露样品被调换或缺少配件。具体来说,操作员先给转盘去皮,放上物品,然后在快门触发前读取载荷。因此,每一个图片文件夹都带有重量指纹。与此同时,记录下来的数值能帮助第二位摄影师在数月后匹配同样的设置。
10 场景 B:珠宝与小型零件的 360 度拍摄
11 珠宝拍摄依赖精确的摆放。自然,一枚戒指或吊坠只有几克重,因此转盘必须先处在稳定的零点。实际中,你在空平台上发送 CT+SETWEIGHTSCALE(0,0);,放上物品,然后确认读数。因此,缺件会在相机浪费一整圈旋转之前就终止批次。此外,读数还能暴露在旋转过程中从平台上滑落的物品。
12 场景 C:无人值守的整夜批处理
13 整夜运行没有操作员盯着平台。因此,自动化必须自我监管。举例来说,脚本可以在每一步之前查询载荷,并与标称范围进行比较。如果转盘上放着两件物品,读数就会跳变,脚本随即暂停队列。结果是,一帧坏图永远不会污染整套好图。
14 场景 D:来料检验与小型零件分拣
- 15 工厂会收到一箱箱外形相似的机加工零件。然而,一箱混杂的零件会在下游造成真金白银的损失。通常,一个检验工位把一件零件放到
- 带内置称重检测的可编程转盘
- 上,读取载荷,并按质量对零件进行分流。与此同时,同一个工位在四个角度拍摄新图像,因此可追溯性集中在一处。
- 16 场景 E:3D 扫描夹具与样品漂移
- 17 扫描装置把小型样品固定在一张夹具板上。实际中,夹具板本身有质量,因此工作流会先给夹具去皮。具体来说,你放上空的夹具,发送 CT+SETWEIGHTSCALE(0,0);,让固件把该状态视为零点。之后,每一步都能核实样品仍安放在平台上。因此,样品滑落会触发停止,而不是毁掉一个网格模型。
- 18 场景 F:直播带货与开箱直播
- 19 直播带货看重可见的证据。因此,主播会在产品旁边显示实时载荷。与此同时,观众能看到当主播向转盘上添加配件时数字随之变化。自然,这种效果让人觉得具体可信,而不是宣传话术。此外,同一次查询还能填入订单表,从而缩短从演示到发货之间的差距。
- 20 语法与完整参数解析
- 21 标准语法
- 22 CT+SETWEIGHTSCALE(Num,Weight);
- 23 CT+GETWEIGHTSCALE();
- 24 CT+GETWEIGHTBYKG();
- 25 参数分解
- 26 通常,Num(必需整数,范围 0~5)选择校准槽。
- 27 0 = 偏移或去皮条目。该槽把当前状态存储为新的空载参考。
28 1~5 = 五个量程点。每个槽在测量曲线上存储一个已知质量。
29 通常,Weight(必需正浮点数,单位 kg)给出该槽的真实质量。
30 精度为 0.1 kg,因此 0.5、5.0、10、50 和 150 都是有效条目。
31 只发送数字,因为单位存在于命令定义中,而不是文本里。
32 对于 Num=0,官方示例写作 CT+SETWEIGHTSCALE(0,0);,并把第二个值视为零。
33 自然,CT+GETWEIGHTSCALE(); 和 CT+GETWEIGHTBYKG(); 完全不接受参数。空括号仍然是必需的。
34 同样地,一对空括号、结尾的分号和 ASCII 字符共同构成完整格式。
35 返回值
36 CR+OK; —— 转盘接受了该命令。
37 CR+ERR=param; —— 帧失败,param 中存放一个数字错误码。
38 In_ROM_Set_Offset=-4243 —— CT+GETWEIGHTSCALE(); 返回的已存储零点偏移。
39 In_ROM_Weight_Scale[0] = 6.32 到 In_ROM_Weight_Scale[4] = 6.37 —— 五个已存储的量程系数。
40 平均值条目 In_ROM_Weight_Scale_Average = 6.36 保存固件在正常换算时应用的系数。
41 CurLoad(kg)=15.5kg —— CT+GETWEIGHTBYKG(); 返回的实时载荷。
42 CurLoad(kg)=130.7kg —— 平台上放有重载时的同一帧。
43 格式规则与约束
44 帧必须以大写字母对 CT 开头,并用加号连接名称。
45 每一帧都必须以分号结尾,解析器只有读到该分号后才会解析这一帧。
46 括号内不得出现空格。此外,数字后不得跟单位后缀。
47 Num 必须是 0 到 5 之间的整数。发送 6 或 -1,固件会拒绝该帧。
48 Weight 必须为正。负值会破坏曲线,固件会拒绝它。
49 小数点分隔小数部分。逗号和千位分隔符会破坏解析器。
50 设备会立即存储被接受的值,因此把每一帧都当作一次小的写操作。
51 在终端操作时请记住结尾的终止符:在分号后按回车,让主机发送回车符。

52 分步实操教程
53 准备阶段
54 1. 给
上电,并把 USB 线缆连接到电脑。
55 2. 如果操作系统无法自动识别设备,请安装 CH340 驱动。
56 3. 打开设备管理器,记下分配到的 COM 端口号。
57 4. 启动一个终端工具,例如 PuTTY,或基于你所选串口库写一个简短脚本。
58 5. 把端口设为 115200 波特率、8 位数据位、无校验、1 位停止位、无流控。
59 6. 彻底清空转盘,并用 CT+SETSTOP(); 停止任何运动。
60 写入校准条目
61 1. 让设备预热几分钟,因为电子元件稳定下来时称重传感器会发生漂移。
62 2. 确认平台为空,然后发送 CT+SETWEIGHTSCALE(0,0); 记录零点偏移。
63 3. 把第一个经过认证的测试砝码放到转盘中心,等待读数稳定。
64 4. 对 0.5 kg 砝码发送 CT+SETWEIGHTSCALE(1,0.5);,并确认回复 CR+OK;。
65 5. 逐级向上重复:CT+SETWEIGHTSCALE(2,5.0);、CT+SETWEIGHTSCALE(3,10);、CT+SETWEIGHTSCALE(4,50);、CT+SETWEIGHTSCALE(5,150);。
66 6. 每接受一帧后就移除砝码,让平台回到零点。
67 验证阶段
68 1. 发送 CT+GETWEIGHTSCALE(); 并读取返回的七行。
69 2. 把平均值那一行与你的预期进行比较,并确认量程值落在较窄的区间内。
70 3. 再次放上一个已知质量,并发送 CT+GETWEIGHTBYKG();。
71 4. 把返回的 CurLoad(kg) 值与真实质量进行比较,预期会有一个小的容差范围。
72 5. 在三个不同的质量下重复检查,以覆盖曲线的低、中、高各段。
73 日常归零、终止与复位
74 1. 每次会话前用 CT+SETWEIGHTSCALE(0,0); 给平台去皮。
75 2. 在放置或移除任何载荷之前,用 CT+SETSTOP(); 停止转盘。
76 3. 通过中止序列来放弃一次校准,因为每一个被接受的帧都会立即提交。
77 4. 如果发生错误,恢复你记录下来的数值,并按顺序重新录入每个槽。
78 5. 如果终端停止响应,给设备断电重启,但预期存储的值在重启后仍然保留。
79 标准实用示例
80 示例 1:拍摄前的日常去皮
81 CT+SETSTOP();
- 82 CT+SETWEIGHTSCALE(0,0);
- 83 预期回复:CR+OK;
- 84 示例 2:完整的五点校准
- 85 首先,在平台为空时发送 CT+SETWEIGHTSCALE(0,0);,等待回复 CR+OK;。
- 86 然后,在 0.5 kg 测试砝码稳定在转盘上之后,发送 CT+SETWEIGHTSCALE(1,0.5);。
- 87 接着,对 5.0 kg 砝码发送 CT+SETWEIGHTSCALE(2,5.0);。
- 88 之后,对 10 kg 砝码发送 CT+SETWEIGHTSCALE(3,10);。
- 89 按同样的顺序,对 50 kg 砝码发送 CT+SETWEIGHTSCALE(4,50);。
- 90 最后,对 150 kg 砝码发送 CT+SETWEIGHTSCALE(5,150);,之后再移除砝码。
- 91 每一个被接受的帧都以 CR+OK; 应答。

92 示例 3:校准审核
93 CT+GETWEIGHTSCALE();
94 回复首先列出 In_ROM_Set_Offset=-4243。接着是五个量程条目:In_ROM_Weight_Scale[0] = 6.32 和 In_ROM_Weight_Scale[1] = 6.36,而槽 2 到槽 4 共享相同的读数 6.37。最后,In_ROM_Weight_Scale_Average = 6.36 结束该帧。
95 示例 4:实时载荷读取
96 CT+GETWEIGHTBYKG();
97 典型回复:CurLoad(kg)=15.5kg
98 示例 5:带重量门限的拍摄循环
99 发送 CT+EVENT(1); 打开事件消息,然后用 CT+START(0,1,1,36,4,10); 启动运动。在每一步之间用 CT+GETWEIGHTBYKG(); 查询载荷,并把该值与对应 SKU 的标称范围进行比较。如果读数落在范围之外,就暂停队列并记录帧序号。最后,把该值存储在每个图像文件名旁边,让文件夹日后能自我说明。
100 常见错误与故障排查
101 症状:CR+ERR=40; 不支持的功能
102 大体来说,这个代码意味着该型号缺少所请求的能力。因此,检查型号代码中是否有字母 T,因为该字母标记称重检测功能。同时确认已安装的固件,因为称重组由 V2R05C01 引入。
103 症状:CR+ERR=61; 空参数