这几天在思考我们生产的主体成型设备的程序逻辑结构,由PLC跟诸多伺服电机以及IO控制组成。在想如何能快速了解整体的逻辑结构而不至于迷失在细小的技术细节上,比如伺服电机如何获得编码器的数据,然后如何转换等。重新换个思路把伺服电机控制看做一个模块,整个模块输入是编码器数据,输出的是脉冲数据供伺服电机使用。模块内部有不同的转换函数,比如设定电子齿轮比,设定加减速参数等等,如果需要跟其他伺服进行同步那么这个模块应该含有如何进行同步的算法。对于像伺服这种宏观的物体这种模块化的思路似乎非常自然,突然转念一想对于C++面向对象的编程思路不也正是如此。更多的是需要我们理解整个系统不同模块的构成,再填充不同的实现细节,而不至于陷入如何实现驱动这么小的细节当中,回想STM32官方提供的例程也正是如此。先定义一个器件的成员函数指针的接口模块,比如初始化、读写寄存器等。然后在需要器件层实例化这个接口模块。实例化模块里面的函数需要使用MCU的IO口或者UART、I2C、SPI这些资源则在更底层的硬件层进行定义。
由PLC程序联想到C++
于 2022-03-17 14:23:29 首次发布
博主探讨了在主体成型设备程序逻辑结构设计中,如何运用模块化思维来理解和组织复杂的控制逻辑。通过将伺服电机控制视为独立模块,简化了编码器数据处理和伺服电机控制的细节,强调了接口定义和功能抽象的重要性。同时,对比了这种思维方式与C++面向对象编程的相似性,并引用STM32官方例程作为实例,阐述了底层硬件资源的抽象和器件驱动的实现方法。
摘要由CSDN通过智能技术生成