合作方式

上位机软件外包怎么切分才不留坑

上位机外包做砸的项目,事后复盘几乎都不是「代码写得不好」,而是边界模糊:点表一直在变、验收标准写的是形容词、源码归属到交付前才提。这三件事在合同阶段就能定完。

外包做砸,通常不是技术问题

设备厂与集成商把上位机外包出去,最常见的失败复盘不是「对方写不出来」, 而是三件事没切清:接口一直在变、验收标准是形容词、 源码归属到最后才谈。 这三件事都属于合同与文档层面的工作,成本极低, 但一旦跳过,后期付出的代价往往是几倍的工作量与一段扯不清的责任争议。 切分的基本原则是:凡是需要两方配合才能完成的动作, 都要在开工前写明由谁做、以什么形式交付、什么时候交付。

四块要在开工前切清

1. 接口先定后开发

上位机的工作量几乎完全由接口决定。接口文档至少要包含四部分:

内容说明
通信变量表每个变量的地址、数据类型、读写方向、量程与单位、缩放倍率、有效范围
状态机与时序启动、复位、暂停、急停、换型的完整时序;每个状态由哪一侧驱动、握手信号如何应答
职责边界安全逻辑、互锁、轴运动的插补计算分别由 PLC / 运动控制器 / 上位机哪一侧承担
异常处理约定通信中断、超时、数据越界、断电恢复时各侧的行为,以及谁先动作

其中职责边界最容易漏。 典型争议是「这个互锁到底谁做」——PLC 侧觉得上位机会拦, 上位机觉得 PLC 一定有硬互锁,结果两边都没做。 安全逻辑原则上必须落在 PLC 或安全回路里,上位机只做提示与二次确认。 接口定稿后双方并行开发,联调时对的是文档而不是对方的实现; 确实要改就走变更单,写清改什么、影响哪些模块、工作量增减多少。

2. 点表与 IO 定义的确认时点

这两份表的确认时点比内容更重要。点表要在软件开发启动前定稿, IO 定义要在电气图纸定稿时同步定稿,两者都必须早于设备开始装配。 因为它们进入现场调试阶段后再改,代价就不是改软件了: 改点表可能要改 PLC 程序,改 IO 可能要改接线甚至改端子排, 那时设备已在客户现场,排期与人力都不在自己手上。

实操做法是电气工程师出 IO 表的同时, 把上位机需要的通信变量一并规划进 PLC 通信区,作为接口文档附件一起提交。 点表里要包含「设备 ↔ 变量 ↔ 工序」的对应关系, 而不只是地址列表——缺了这一列,数据能采上来但归集不到工序。 两份表都要带版本号与生效日期, 否则三方各拿不同版本在对,谁都不知道哪一版最新。 现场排查取不到数时也要先确认手上的表是最新版, 顺序见 数据取不出来怎么排查。

3. 验收标准写成可判定条目

验收标准里最危险的词是形容词:友好、稳定、及时、可靠、易用。 这些词无法判定,所以验收会上只能靠双方谈,谈的结果取决于当天的气氛。 正确的写法是每一条都给出动作 + 输入 + 预期输出 + 容许范围, 并且能由第三方照着文字复现。

维度不可判定的写法可判定的写法
功能完整性「实现全部生产功能」逐条列出功能清单,每条给出操作步骤与预期界面结果
节拍与性能「响应及时」在指定样件、指定光照与指定硬件配置下,单件处理时间不超过约定毫秒数
准确性「检测准确」用双方共同封样的样件集(含合格与各类不良),给出漏检与误判的判定规则与允许上限
稳定性「运行稳定」连续运行约定时长无异常退出;通信中断后自动恢复且不丢已产生记录
异常处理「有异常提示」逐条列出异常场景(断网、断电、超时、越界)与期望的软件行为
数据一致性「统计准确」约定口径下,软件统计值与人工盘点值一致;口径定义见附件
交付物「提供文档」列明交付清单:安装包、部署文档、接口文档、点表、操作手册、(如约定)源码

涉及检测精度的项目还有一个关键动作:样件封样。 合格与不良的判定基准必须落在实物上而不是文字描述上, 双方各留一份签字封存的样件集,验收时用这一套跑。 没有封样的视觉项目验收争议几乎是必然的——「这个算不算划痕」永远谈不完。 成像与算法边界见 机器视觉检测软件。

4. 源码与知识产权的两种归属模式

这一项必须在合同阶段定,因为它直接影响报价结构, 放到交付前谈会变成一次很难看的谈判。敏洽提供两种模式:

维度模式一:授权使用模式二:源码交付
交付内容可执行程序、部署文档、操作手册上述内容加项目定制部分的源码与构建说明
知识产权软件著作权归敏洽,客户获得使用授权定制部分的知识产权由客户享有;通用底层框架的权利由敏洽保留
授权范围按项目或按机型约定台数与使用范围客户可在自有产品上自由复用定制部分
后续维护由敏洽负责,可按年签维护协议客户可自行维护与二次开发,也可继续委托敏洽
适用情形客户不打算自建软件团队,希望长期由供应商负责客户有工程师能接手,或机型要长期批量出货
白标交付支持,界面与文档挂客户品牌支持

模式二里的边界需要说清楚:交付的是这个项目定制出来的那一层—— 业务逻辑、界面、工艺流程、针对该机型的适配代码,这部分归客户; 而通用底层框架——通信驱动、算法库、界面基础组件这类可跨项目复用的部分, 权利由敏洽保留,客户获得的是随交付软件使用的权利。 这个划分对双方都合理:客户拿到自己产品的核心逻辑与长期维护能力, 供应商保留跨项目复用的基础资产,否则每个项目都要重写底层, 成本最终还是转嫁到报价里。

责任划分:软件与硬件的分工

还有一条边界要在方案阶段说清:硬件谁买、谁装、谁接。敏洽的分工是固定的——

工作项责任方
软件开发、算法实现、协议适配敏洽
接口文档、点表与口径定义的编写与维护敏洽起草,双方确认
相机、镜头、光源、工控机、网络设备的选型建议敏洽给建议
硬件采购与到货客户
机械安装、支架加工、相机与光源的装配固定客户
电气接线、柜内布线、网络布设客户
PLC 程序与安全回路客户(敏洽按接口文档配合)
供应商对接可由敏洽推荐长期合作的供应商

这样分工的好处是责任清晰:软件出问题找敏洽,接线与安装出问题在客户侧闭环, 不会出现「到底是软件读不到还是线没接好」这种谁都不认账的局面。 对应的排查动作见 数据取不出来怎么排查。

开工前的检查清单

把下面七项都打上勾再开工,项目基本不会失控: 接口文档(含变量表、状态机时序、职责边界、异常约定)已签字; 点表带版本号且已定稿;IO 定义与电气图纸同步定稿; 验收标准全部为可判定条目、无形容词; 涉及检测的项目已完成样件封样; 统计类指标的口径表已确认(写法见 OEE 怎么算才不被终端客户挑战); 源码与知识产权归属模式已在合同中写明。

到底该走定制还是先买标准品再做二次开发,判断维度见 定制开发还是买标准品。 定制服务的范围见 非标工控软件定制, 有具体设备清单或工件样品可以致电 400-814-5288, 先给可行性判断与硬件前置条件,再谈工作量与报价。

常见问题

因为上位机的工作量几乎全部由接口决定。PLC 侧给出多少个变量、什么数据类型、谁负责状态机的哪一段、异常时谁先动作,这些定下来之后界面与逻辑才有确定的实现路径。接口不定就开工,等于在假设上写代码:PLC 那边一改地址或改状态机语义,上位机相关模块就要重做,而这种返工在项目后期成本极高。正确顺序是先出接口文档(变量表 + 状态机时序 + 异常处理约定),双方签字,然后并行开发,各自照文档做。
点表在软件开发启动前确认,IO 定义在电气图纸定稿时同步确认,两者都要在设备开始装配之前完成。原因是这两份东西一旦进入现场调试阶段再改,往往意味着改 PLC 程序甚至改接线,都要排期。实际做法是电气工程师出 IO 表的同时把需要给上位机的通信变量一并规划出来,作为接口文档附件,之后的变更走变更单,逐条记录版本与生效日期。
把形容词换成可判定的条目。「界面友好」「运行稳定」「响应及时」这类描述无法判定,验收会上只能靠谈。可判定的写法是:给出具体动作、具体输入、具体的预期输出与容许范围,例如「连续运行 72 小时无重启,期间通信中断自动恢复且不丢已产生的记录」「单件检测节拍在给定样件与光照条件下不超过 X 毫秒」。每一条都要能由第三方按文字复现并给出通过或不通过的结论,不需要解释。
敏洽提供两种模式。一是授权使用:交付可执行程序与部署文档,按项目或按机型授权,客户不获得源码,后续维护与升级由敏洽负责,适合客户不打算自建软件团队的情形。二是源码交付:项目定制部分的源码交付给客户,该部分的知识产权由客户享有,客户可自行维护与二次开发;同时敏洽保留通用底层框架(通信驱动、算法库、界面基础组件等可复用部分)的权利。两种模式都支持白标交付,界面与文档挂客户品牌。选哪种在合同阶段定,价格结构不同。

有具体设备清单或工件样品,可以直接给判断

提供设备型号、PLC 品牌与需要采集的数据项,或提供被检工件照片与精度要求,敏洽可先给出可行性判断与硬件前置条件,再谈软件工作量与报价。