概述
关于 自动化设备开发
上位机软件包含各种模块/对接,视觉/数据/控制
不单纯是软件,还有硬件, IO,运动控制,相机光源,还包含各种专业设备或者传感器
bug因素多,排查困难:在开始调试过程中,除了软件bug外,硬件带来的bug往往是多个方面的原因
修改频繁,需要上机大量测试
随着开发,往往会增加很多外置流程和判断,对接. 使得原本简单的流程变的复杂,代码量和复杂度急剧增加
标定准确性问题,针对产品的工艺问题 都和设备控制密切相关. 为了达到某种要求 往往需要各种修改和测试
自动化设备运动控制,大扭矩电机, 涉及人身的安全事故
实际开发:
>IOM硬件配置
在一些设备中,IO和电机多,单配置都要花费很多时间, 而且要在软件中添加大量的枚举类型来引用
如果事物无法得以良好的分类, 那么逻辑的清晰就无从谈起
"设备还在组装 我怎么开发?" => ""你可以通过想象力啊"
如果不能很快的将设备的IO电机/机构等硬件形成直观的印象, 怎么能在细微的代码的实现上很快的进展呢!
>多流程的线程同步协作问题
基于特定设备的机械流程或业务流程 需要开很多线程 穿插调用/同步, 导致代码复杂度非常高, 耦合性强, 导致 难以开发和维护
多线程不好调试
要配置很多同步锁, 线程锁之间又有影响, 思维层面很难做出准确的业务逻辑判断
>软件和控制 开发的人员的协作成本较高, 开发对接 效率低下.
> 设备硬件组装出来前, 软件无法进行准确的预先开发
那么基于离线的图形模拟开发 就可以实现准确的预先开发
> 软件调试开发 都要放在设备上进行验证,编译,初始化.
需要强大的离线开发调试模拟机制, 快速验证和处理问题
自动化控制开发最重要的事情是[安全]
随便一个小电机都可以轻松夹掉手指
随便一个代码的失误,或者没有考虑到位 都有可能带来风险
误操作带来的风险
安全防护模块进行开发
自动化开发软件工程师的职业感受
开发调试周期长,细节问题多
稍复杂的设备流程, 代码开发/调试/维护困难 , 工作压力大
出差时间长
AUTOFRAME开发历程
2018年版本: 基于代码层面的框架设计 , 在参数模块, IOM硬件配置可查询, 多线程过程 应用 异常来大大减少判断代码量, 二层封装层 等 模块设计中 进行了创新
2019年板: 图形编程: 采用 QT C++图形框架 进行设计, 实现图形编程的方式来加速 控制框架的开发, 并提供更好的配置和调试, 开发模拟 等用来解决 控制开发的 繁琐的问题.
实现了 所有的图形编程模式, 用堆栈模拟了递归过程的 图形开发
2020年版: 加入脚本开发, 并构建了基于后台服务的 脚本平台, 将图形开发和逻辑部分分离的模式.
2021年版: 应用qml/quick图形框架进行重构 + 异步编程来实现设备流程. 使得框架的代码量和复杂度大大降低
....