array(5) { ["chapterid"]=> string(8) "50282192" ["articleid"]=> string(7) "7416039" ["chaptername"]=> string(8) "第18章" ["content"]=> string(10025) "东江的六类接口图没有被丢掉。
沈知微把它们贴在实验室墙上,又把三机厂、华锦和展会上收集到的设备资料全部摊开。十几种编码器、五种电源条件、不同限位逻辑和控制柜尺寸,把整面墙占得满满当当。
JH-01最初被称为“通用运动控制卡”。
直到真正进入客户现场,团队才发现通用二字并不是接口越多越好。
一块主板若为每一种旧设备都保留专用电路,最终会变得昂贵、复杂、难以测试;一套软件若为每个客户建立独立分支,早晚没人知道修改一行代码会影响哪台机器。
梁正元主张先把订单做起来。
“没有项目收入,平台只是图纸。”他说,“我们不能用未来可能出现的规模,要求现在所有客户都适应我们的产品。”
沈知微一开始更接近梁正元。技术人员很容易从具体问题中获得确定感。客户带来一台机器,她可以测量、分析、修改,最终让它运行;而所谓平台化,需要为尚未出现的需求做抽象,任何一层抽象都可能是错误的。
陈凡没有用前世结论压过他们。
他从已经完成的二十四块板卡中抽出维护记录。六块设备使用相同核心功能,却因为接口微调形成三个程序版本。一次断电恢复修复需要分别修改、测试和发布,实际耗时是单版本的两倍多。订单还只有二十四块,维护分叉已经开始发生。
“平台不是预测所有未来。”他说,“只是把已经重复发生的差异,放到不伤害核心的地方。”
“高校项目没有那么多资金提前设计完整平台。客户要什么,我们做什么,做三五年自然就知道共性。”
这是一条现实路径。
许多本土技术企业都是从项目制起步,靠定制收入养团队,再逐步沉淀产品。
陈凡却知道另一面。
前世他投过一家工业软件公司,收入连续五年增长,客户名单也很漂亮。可每个项目都有独立版本,三百名工程师中两百多人在维护旧代码。公司看似拥有大量客户,实际上没有一套能重复销售的产品。任何一名大客户停止续费,都可能让几十人的团队失去收入。
规模没有形成壁垒,只放大了历史包袱。
“不能一开始就追求完美平台,也不能把每个项目都当成例外。”陈凡说,“我们需要划一条线:什么必须稳定,什么可以变化。”
沈知微在白板中央画出三层结构。
最底层是运动控制核心,包括时钟、脉冲、插补、安全停机和状态记录。这一层只保留一套主代码,任何修改必须完成全部回归测试。
中间层是接口模块。编码器、电源、总线和继电器差异通过可插拔硬件与驱动适配,不再直接改动核心板。
最上层是设备配置。客户可以设置行程、速度、去抖时间和故障策略,但所有可调范围都受安全边界限制。
“主板以后不叫通用。”沈知微说,“叫核心板。通用能力由模块组合产生,不是把所有东西焊在一起。”
高志诚担心成本。
可插拔结构会增加连接器和外壳,初期单块成本至少上升百分之八;重新设计测试工装还要花钱。
陈凡没有直接决定。
他让团队按未来一百块、五百块和两千块三种规模分别计算。主板一体化在前二十块最便宜,一旦接口种类超过三种,库存、返工和测试成本迅速上升;模块化前期投入更高,却能让核心板保持统一,并降低备件数量。
“我们现在没有两千块订单。”梁正元说。
“所以不按两千块一次投入。”陈凡回答,“先只开发已经出现两次以上需求的模块。尚未验证的接口保留设计位置,不提前采购。”
讨论并没有一次结束。
高志诚提出将所有接口模块交给客户自行选择,可以减少项目组适配工作。沈知微反对,因为错误组合可能绕过安全保护。最终,模块被分成开放模块和受控模块:普通信号转换允许客户更换;涉及运动时序和安全联锁的模块必须经过认证,并由配置软件识别编号。
梁正元又担心模块化设计被竞争者快速复制。陈凡没有要求把所有接口封闭。他认为基础连接方式可以公开,真正壁垒应来自核心算法、验证数据、兼容清单和持续服务。若一家公司只能靠让客户无法连接其他设备保持优势,它迟早会成为今天的赫曼。
他们确定了第一代产品结构:JH-Core核心板、M1差分编码器模块、M2单端转换模块、P1工业电源隔离模块,以及一套统一日志协议。
三机厂现有订单继续使用已经验证的版本,不为追求新架构强行更换;下一批才切换模块化设计。新旧版本同时存在六个月,之后只保留安全更新,不再接受无期限定制。
这又带来一个问题。
客户已经购买永久使用权,项目组能否停止维护旧版本?
陈凡把“永久使用”和“永久免费服务”分开。客户可以永久使用已交付产品,项目组保证约定期内维护和重大安全缺陷修复;超过维护期后,可购买延长服务,也可以获得必要接口资料自行维护,但不得要求团队无限期提供所有新增功能。
权利边界不只用来防资本。
同样用来防止客户在一次采购后,把供应商未来全部劳动视为附赠。
沈知微还建立了版本发布制度。
任何程序修改都必须有编号、原因、影响范围和回退方式。客户现场不得直接改动正式版本;紧急修复可以先发布临时补丁,但七天内必须补齐测试和记录。研发人员个人电脑里不允许存在唯一版本,源代码每天备份到两套独立介质。
这些流程让实验室的工作明显变慢。
陈凡为此建立了一个简单的成本记录:每个客户需求分别记录分析、开发、测试、现场和后续维护时间。过去大家只看器件成本,很多定制似乎只需改几行代码;记录以后才发现,最昂贵的是反复确认、出差和版本维护。
一项看似只收三千元就有利润的接口改造,若未来三年需要维护独立版本,真实成本可能超过两万元。
这套记录也约束了陈凡。销售不能为了签单,把开发工作描述成“顺手改一下”。任何低于标准报价的项目,必须写明由哪项长期价值补足:通用模块、标杆客户、可复用数据,或确定的后续采购。不能只写“战略意义”。
过去一个下午就能改完的接口,现在可能需要两天文档和测试。两名研究生一开始很不适应,觉得写记录浪费时间。
沈知微没有用管理命令压他们。
她随机拿出三个月前的一段驱动代码,问当时为什么加了一个十五微秒延迟。所有人都记得这段代码解决过问题,却没人能准确说出对应哪种器件、什么温度和哪个客户。
“没有记录,今天删不敢删,改不敢改。”她说,“这不是谨慎,是被自己的过去绑住。”
第一套模块化样机完成前,团队故意做了一次破坏性测试。
他们把错误电压模块插入核心板,又在配置中选择不匹配的编码器。旧设计会直接出现异常信号,新设计则在启动自检时拒绝运行,并给出模块编号冲突。随后,沈知微拔掉一个接口模块,核心板仍保持安全停机,日志完整记录断开时刻。
产品的通用性并不是让任何组合都能工作。
而是让错误组合也能以可预期方式失败。
第一套模块化样机完成后,成本比旧版高了四百六十元。
可在模拟更换接口时,工程师不再需要拆下主板焊接,只用十二分钟就完成模块替换;核心程序也没有建立新分支。
何国栋看完演示,问:“客户会为方便你们维护,多付四百多元吗?”
“多数不会。”陈凡说,“所以价格不因模块化直接上涨。它节省的是我们未来的服务和库存成本。”
“那利润不是更低?”
“单块暂时低,重复交付以后会回来。”
真正的产品思维,并不是给每一项内部改进都立刻找到客户买单。
而是企业愿意为未来的可重复性,承担一部分现在看不见回报的成本。
九月初,东江食品机械厂再次联系项目组。
进口供应商虽然降价,却要求三年独家服务。东江希望JH-01免费保留一个替代方案,以防未来维护涨价。
陈凡没有因为对方回头就报复性提价。
他仍然提供两天现场评估,仍然要求差旅由客户承担,也仍然不免费制作样机。
东江最终没有接受。
这一次,团队里没人觉得遗憾。
他们已经明白,一个项目是否值得做,不由合同首页的总金额决定。
而由它完成以后,企业究竟多了一套可以重复出售的能力,还是多了一堆只能继续维护的例外决定。
墙上的六类接口仍然保留着。
只是每一张图旁边都多了一行标记:核心不变,差异外置,未重复出现的需求不进入产品。
团队同时建立了需求拒绝记录。每一次不进入核心版本的定制,都要写明客户、原因和未来复用条件。若相同需求在三个独立客户中出现,才重新进入产品评审。这样,拒绝不再取决于谁声音大,产品边界也不会被一次大额订单悄悄改写。
版本管理也随之改变。每一个核心版本都规定支持期限和兼容范围,客户专用修改只能存在于外置模块,不能直接改写主干代码。旧版本停止维护前必须提前通知,并提供升级或继续有限支持的成本。产品化不仅是能重复卖,也包括能够有秩序地结束旧承诺。" ["create_time"]=> string(10) "1788848579" }