对接PLC 协议时想到了简约涉及哲学.
最近的项目里, 需要通过PLC 协议, 控制设备在预设的多个点位之间移动。
在初始方案中,PLC内部预设了5个固定点位:
- 点位1:实际位置 0
- 点位2:实际位置 100
- 点位3:实际位置 300
- …
PLC 协议的细节是, 采用写入连续多个线圈的方式, 期望的点位.
类似OneHot编码:[false, true, false, false, false] 表示移动到第2个点位.
进入现场调试阶段后, 需要将预设点位从5个扩展到10个.
PLC 协议端依旧保持内置点位的思路.
所以在调整完毕后, 几个关键的线圈/寄存器的数字, 协议使用方(也就是我们)也得跟着改:
- PLC端: 重新编写程序,调整内部预设的点位数量,编译拷贝
- 调用方:软件层面需要修改线圈起始地址配置
- 联调时间:双方需要重新测试验证所有点位
实际联调过程中,因为PLC程序端的改动并没有向前兼容, 又增加了实际的对接时间.
后来发现, 设备本身具备通过PLC 协议控制点位预设距离的功能.
那么, 为什么还要内置多个点位呢?
如果按照现在具有的协议, 在保证先前兼容的情况下, 修改做:
- 内部只存在一个预设点位
那么每次只需要在实际的操作流程前, 增加修改预设点位的距离值的环节, 那么逻辑上可以移动到任意位置.
然后, 软件层面就可以增加配置功能, 即交由系统设置多个”软”点位, 而不用每次调整都需要重新开发程序并编译烧录等流程.
一瞬间, 脑子里面就闪过了, 复杂指令集与精简指令集、开闭原则、少即是多(Less is More).