1、上期回顾
上次内容核心的地方有两个,①是C++多态基类的指针指向派生类,用于初始
化各个插件。②是使用C语言的dlopen函数“动态加载”各个插件,实现用户根据契约接口自定义开发插件,极大程度地实现了软件上的解耦。③再进一步,如果将一些核心能力以参数形式传递到各个插件,这样一个基础的软件架构就得以实现了。核心能力如日志能力。
2、进一步扩展
当状态变成上述第三步情况时,我们再做一个嵌套④将核心功能模块以插件形
式开发,这样核心模块进一步解耦。
各个模块之间如何调用?软件开发经常遇到的情况是别人提供动态库和头文件,使用这些资源进行开发,大家习以为常;其中最令人厌恶的是动态库版本改变,出现了不兼容,编译不过或二进制不兼容。写了8年bug,还没用过商业软件,商业软件或许是二进制兼容的吧… 每个插件可以近似认为是一些有简单限制的动态库,当你有这些插件的头文件时,便可以调用他们的接口了。
上述的前提是大家都在同一进程下,当跨进程的情况存在时,就需要设计新的通讯方式了。
3、机械臂控制软件设计
《机械臂控制软件设计》这个标题很唬人的,工业机械臂控制软件和协作机械
臂控制软件有较大差异。举个例子,UR协作臂各个关节模块之间用的485通讯,有的工业臂各个模块间用ECAT通讯;②工业臂控制系统通常对运行机械臂运控的部分采用一个独立进程且会单独使用一个内核以尽量保证其实时性,协作臂更多直接放到一个进程。究其原因,可能国外都是这么干的吧…后来就都抄成这样了。向优秀者学习,学会了再改进~
各个斗胆认为想要做好《机械臂控制软件设计》,不光要有较好的软件设计基础,还要深入了解机械臂算法相关的内容。仅有上述的插件化思想还是远远不够的,当有接近大几十种机械臂类型,还有一些专用的机械臂软件,如码垛工艺、焊接工艺,焊接工艺进一步细分,电焊、弧焊等,这些软件是工艺插件还是独立软件?从公司角度考虑,分配多少人力进行维护?这个项目不挣钱的话,整个都可能被砍掉。上述这些软件,如果分几十个git分支,那不爽歪歪~现实还真可能就不是一个主分支…
4、组件化开发方法论
这部分是付费内容,得加钱~加钱之后,您将会得到一份实际工程设计的插件
化程序代码。后期如果涨价的话再另行通知。加3块钱~
欢迎关注:
记录90后bug在深漂的周常~
往期软件架构相关: