The Industrial Internet Consortium(IIC)提出的工业互联网参考架构Industrial Internet Reference Architecture(IIRA)是广为人知的著名的智能制造参考架构,是业内开展相关工作的重要指导。这里将其中比较偏重技术层面的“ 三层IIoT系统架构 ”拿出来,结合我对智能制造技术目标的理解,对上述架构进行解读,希望为智能制造的技术架构方面的整体规划提供一些借鉴。
技术架构是为技术目标服务的,用于有效支撑技术目标的实现。因此,尝试从下图中所描述的“工业40发展阶段”中提炼出相关技术目标。个人认为,这张图从技术角度清晰完整为我们勾勒出了智能制造、工业40的技术发展方向以及各个阶段的技术目标。
通向工业40的六个发展阶段:
总结一下, 智能制造的技术目标是应用信息技术与通讯技术,对制造业企业所有生产运营相关环节的信息进行全面获取、集成以及充分利用,分析挖掘数据中的价值,形成对生产运营相关工作的改善建议。
如果对上述技术目标有了清晰的认识,那么对于下图中的技术架构理解起来就相对容易了。
其中,Edge Tier侧重于依托Edge Gateway(边缘网关)对于数据的采集、转换、传输,Platform Tier完成对于数据的分析处理,并且将分析的结果发送到Enterprise Tier的各个领域的应用(Domain Application),形成决策与行动建议,并最终反馈给Edge Tier,优化边缘侧设备的运行。
当然,该架构仅仅是一个参考,也是有一些可以调整的空间,比如,边缘分析的引入能够有效增强边缘侧的自适应能力,并且能够降低边缘层与平台层的数据传输量,提升架构的经济性。
此外,平台层所进行分析的数据来源也不止是边缘层,也会有企业层的业务系统。因此,平台层与企业层的数据流向如果改成双向可能会更好一些。
在信息集成方面,应有一个中间件平台完成这边缘层、平台层、企业层所有系统、设备的数据集成工作。如下面的架构简要示意图,其中 信息集成中间件平台 将扮演重要的数据传输枢纽作用。
有了上述认知,再看看下面这张微软的IoT参考架构图,是不是也很容易理解了。
ESP32 芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于 16 位预分频器和 64 位自动重载功能的向上/向下计数器的 64 位通用定时器。
hw_timer_t timerBegin(uint8_t num, uint16_t divider, bool countUp){}
参数:
返回值:
返回一个计时器结构体指针 hw_timer_t ,我们预定义一个指针接收他
void timerEnd(hw_timer_t timer)
参数:
void timerAttachInterrupt(hw_timer_t timer, void ( fn)(void), bool edge){}
参数:
void timerDetachInterrupt(hw_timer_t timer)
void timerAlarmWrite(hw_timer_t timer, uint64_t alarm_value, bool autoreload){}
参数:
void timerAlarmEnable(hw_timer_t timer){}
参数:
void timerAlarmDisable(hw_timer_t timer)
bool timerAlarmEnabled(hw_timer_t timer)
ESP32有两个I2C控制器(也称为端口),负责处理两条I2C总线上的通信。每个I2C控制器都可以作为主机或从机运行。引脚21 默认的SDA, 引脚22是默认的SCL
IIC需要引入自带库 Wireh Wire继承steam类 steam类有的他都有
void requestFrom(uint16_t address, uint8_t size, bool sendStop)
请求完成后 主机可以用 Wireavailable() 和 Wireread() 等函数等待并获取从机的回答
参数:
void beginTransmission(int address)
随后, 主机可以使用 Wirewrite(); 写数据并使用 WireendTransmission(); 结束传输
参数:
结束传输, 并释放IIC
返回值: uint8_t 类型
当作为主机时: 主机将要发送的数据加入发送队列;
当作为从机时: 从机发送的数据给主机;
参数:
返回值: byte类型
输入的字节数
返回接收到的字节数
返回值: byte类型
当作为主机时: 主机使用requestFrom()后 要使用此函数获取数据;
当作为从机时: 从机读取主机给的数据;
返回值: 读到的字节数据 byte
size_t readBytes(char buffer, size_t length)
参数:
返回值: 数据长度
size_t readBytesUntil(char terminator, char buffer, size_t length)
参数:
返回值: 数据长度
Wirebusy();
返回布尔值
继承自steam类, 个人感觉iic不会用到的
parseFloat
parseInt
find
findUntil
setTimeout
这些都是steam继承来的 大家灵活应用
从机有些函数和主机是一样的, 请看上一章节,本章节只有不一样的部分
Wirebegin(adress); //adress取值0~127
void onRequest(void ()())
参数:
void onReceive(void ()(int))
参数:
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。
SPI通讯流程如下:
SPI接口默认VSPI 接口频率1 000 000, 数据默认采用MSBFIRST(低有效位优先), 时钟模式:SPI_MODE0(SCLK闲置为0, SCLK上升沿采样)
参数:
参数:
参数:
采用该函数,可以代替上面三个函数了
参数:
结束SPI通信
参数:
返回值: 接收到的数据
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)