对IIC工业互联网参考架构的理解

对IIC工业互联网参考架构的理解,第1张

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通信

参数:

返回值: 接收到的数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10907295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存