普密斯电动变倍镜头靠绝对脉冲数定位——不是电压,也不是模拟反馈信号。每个型号都配有一份脉冲表,文件名即镜头型号,每一行把一个光学倍率对应到一个脉冲位置,例如 1X 4600、2X 8400。所谓多档预置变倍,本质就是把若干个脉冲值存下来,然后反复下发 MoveTo(pulse)。
由于这份映射来自特定光学与机械组件的工厂标定,脉冲值必须与具体型号、电机类型一起引用。同一倍率在不同型号、不同代次电机、以及加密控制卡与标准控制卡上,对应的脉冲数并不相同。
| 项目 | 值 |
|---|---|
| 定位方式 | 绝对脉冲数 + 回零基准 |
| 脉冲表位置 | SDK 中的 OP/*.txt——文件名 = 镜头型号,每行 = 一个倍率 |
| 典型档位粒度 | 随型号不同,每支镜头 9–17 个可选倍率档 |
| 位置回读 | 支持——GetPos() / 串口 XN |
| 与倍率的关系 | 非线性;倍率越高,每档所需脉冲增量越小 |
| 跨型号通用性 | 无——脉冲表与型号、电机一一绑定 |
| 控制方式 | 定位 | 可重复? |
|---|---|---|
| 直流电机 + 电位器 | 模拟量,无绝对基准 | 否 |
| 步进/伺服 + 脉冲计数 | 绝对脉冲数 | 是——可读、可复现 |
| 普密斯电动变倍 | 绝对脉冲 + 回零基准 | 是——MoveTo(绝对脉冲) 并可回读位置 |
工程结论比机理本身更重要:
下表是 PMS-LZL-12109-3 的出厂脉冲表。该型号为双电机 12.5X 镜头,带 3 mm 电动焦点微调电机,全范围内有九个倍率档。
| 光学倍率 | 脉冲 | 光学倍率 | 脉冲 |
|---|---|---|---|
| 0.58X | 10 | 4X | 13650 |
| 1X | 4600 | 5X | 15200 |
| 2X | 8400 | 6X | 16500 |
| 3X | 11700 | 7X | 17700 |
| — | — | 7.5X | 18650 |
不看绝对值、只看增量,非线性一目了然:从 1X 到 2X 需要 3800 个脉冲,而从 7X 到 7.5X 只需 950 个。脉冲数跟踪的是机械位置,倍率是光学结果,两者由工厂标定关联,不存在可以外推的公式。
下表属于 6.5X 65 系列平台,用于 PMS-LZ-650104(电动)与 PMS-LZ-650105(电动、同轴照明)。共十一个档,总行程 24400 脉冲。
| 光学倍率 | 脉冲 | 光学倍率 | 脉冲 |
|---|---|---|---|
| 0.69X | 0 | 3X | 20000 |
| 0.7X | 500 | 3.5X | 21800 |
| 1X | 8000 | 4X | 23000 |
| 1.5X | 12000 | 4.5X | 24200 |
| 2X | 15500 | 总行程:24400 | |
| 2.5X | 18000 | ||
两张表一对比,结论就很具体:1X 在 12.5X 镜头上是脉冲 4600,在 6.5X 镜头上是脉冲 8000。两者之间没有共同标尺。脱离型号谈脉冲值没有意义。
不同代次电机的步距角与细分不同,同一光学倍率会落在不同的脉冲数上。务必按你镜头上实际装配的控制线去取表。
装配加密控制卡的镜头有独立的机械零点标定与 Flash 参数区,其脉冲表与同一光学平台的标准版本不同——例如 6.5X 1" 平台在 1X 处,加密卡读数为 6500,标准卡为 8000。换控制卡就意味着换表。
导轨式变倍结构使用不同的机械传动,这也是 6.5X 平台两种变体给出不同物方分辨率数值的原因。规格数据应按型号取,而不是按系列取。
脉冲表出现在不止一份文档里,而它们并不都一致。产品说明书里有一张流传较广的八列表格,其表头与下方数据列存在系统性错位。把该表与 SDK 中各型号的实际脉冲文件交叉核对,差异非常清楚:
| 表头标注 | 数据实际是什么 | 依据 |
|---|---|---|
| 「650 系列」 | 正确——65 系列数据 | 与 65 系列脉冲文件逐档完全一致(1X = 8000、2X = 15500、4.5X = 24200、总行程 24400) |
| 「4K 系列」 | 实际是 12.5X 的数据 | 与 12.5X 镜头脉冲文件完全一致(1X = 4600、2X = 8400、4X = 13650、7.5X = 18650) |
实用规则:脉冲值请从 SDK 随附的各型号脉冲文件取,不要从说明书的汇总表取。混装平台的汇总表本身就是阅读陷阱;按印刷表头去用某一列,会把镜头送到错误位置。
| 通道 | 方法 | 典型用途 |
|---|---|---|
| 裸串口指令 | XG + 六位十六进制 | PLC、运动控制器、单片机 |
| SDK 旧版 API | MoveGoto(Motor m, long dest) | Windows C++ / C# |
| SDK V4.4.7 | MoveTo(pulse) + GetPos() 回读 | 新开发推荐 |
(1) XM / GetMaxPos() 读取总行程,确认目标在有效范围内
(2) XH / GoHome() 回零,建立绝对基准
(3) XG <pulse> / MoveTo() 运动到预置位
(4) XZ / GetStatus() 轮询至 0x55,或状态显示已停止
(5) XN / GetPos() 回读并校验(闭环)
(6) 回到 (3),切换下一个预置位
点到点循环是随附演示程序的原生能力:在测试位置栏输入脉冲值,载入为记录位置,设置重复次数与等待时间,然后运行。这就是多档变倍时序背后的机制——一支镜头通过调用不同的位置组合服务多种产品型号,既不用换镜头,也不需要机械切换装置。
// 运动到预置倍率并校验结果
int zoomTo(int fd, long targetPulse) {
char buf[16];
int n = snprintf(buf, sizeof(buf), "%c%c%6lX%c", 'X', 'G', targetPulse, '\r');
if (write(fd, buf, n) != n) return -1; // 发送
if (waitStop(fd, 10000) != 0) return -2; // 等待运动结束
long pos = readPos(fd); // 回读
return (labs(pos - targetPulse) <= TOL) ? 0 : -3; // 容差由集成方设定
}
容差 TOL 必须由集成方根据工艺要求自行确定。协议只提供位置回读,不定义重复定位精度数值;在缺少你自己硬件、你自己工况下实测数据的前提下,不应给出任何精度数字。
若工艺确实需要重复定位数据,请实测。下面的流程可得到特定工况下的一个极差值。
| 步骤 | 操作 |
|---|---|
| 1 | 选两个相距较远的预置位:A(低倍率)与 B(高倍率) |
| 2 | 回零,MoveTo(A),等停,用 GetPos() 记录位置 P₁ |
| 3 | MoveTo(B),等停,记录位置 |
| 4 | MoveTo(A),等停,记录 P₂ |
| 5 | 重复第 3–4 步 N 次——建议 N 取 30 以上——每次都记录回到 A 时的位置 |
| 6 | 计算极差 R = max(Pᵢ) − min(P₂) 与标准差 |
| 7 | 把 A、B 角色互换,反向再测一轮(双向测试) |
| 8 | 把环境温度、电机线长度与运行速度一并记录在结果旁 |
报告该组工况下的极差 R,并同时写明工况——没有工况的数字对任何人都不可用。
不是。12.5X 平台已公布的数值会随电机代次不同而变化,彼此不可互换。引用脉冲值时,永远与型号和电机类型一起写。
不可以。光学设计、机械行程与电机细分都不同,必须逐型号查表。仅 6.5X 平台,在标准版、加密版与导轨版之间就至少有四套不同的表。
不是。加密卡有自己的零点标定与 Flash 参数区,因此同一套光学下其表与标准卡不同。
脉冲是位置,倍率是光学结果。两者的关系由工厂标定建立,且并非线性。
不可靠。请用 SDK 随附的各型号脉冲文件。说明书中的汇总表确实存在列错位,后果是把镜头开到错误位置。
来自每个型号的工厂标定。它们以纯文本文件形式放在 SDK 的 OP 文件夹中,文件名为镜头型号,每行把一个倍率与其脉冲位置配对。
不是。每档倍率所需的脉冲增量随倍率升高而减小,因为脉冲数跟踪的是机械位置而不是光学倍率。
镜头接受总行程内的任意脉冲值,因此中间位置是可到达的。由于关系非线性,中间脉冲对应的实际倍率需要实测确定,不能用插值推算。
镜头不动,也不报错。这是规定行为,也正因如此,确认链路是否存活要靠位置回读,而不是靠一条运动指令。
要——如果你希望绝对基准有效。回零建立的就是绝对脉冲值所依据的机械零点。
XG、XM、XNMoveTo、GetPos、GoHome 与双电机 API 族
您将收到我们最新的动态资讯