Embedded Agent

Posted embeddedking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Embedded Agent相关的知识,希望对你有一定的参考价值。

第三方库:1. 采集数据端:plcconnector、libmodbus、RS232。2. 发送数据端:libmosquitto。3. 数据存储:libsqlite3。

其他技术:1. 进程间通信:IpcPOSIX消息队列。2. 线程间通信:全局变量、BlockingQueue队列。3. 创建Timer机制:timerfd.h。4. 线程同步:异步阻塞IO(epoll)、互斥锁(mutex)。5. 智能指针:std::make_shared<class>()。6. 数据格式化:JsonFormatter

1. 获取采集点:利用plcconnector库获取PLC程序中暴露的采集点,Format成Json格式后发送到MQTT SERVER端。

2. 配置采集点:Web界面配置需要采集的Tag点,主要包括采集频率、发送频率、报警阈值、计算公式等。

3. 开始采集:Web界面发送配置到DataAgent,DataAgent根据不同的采集、发送频率分成不同的Group,分别注册不同的采集点集合、采集Timer、发送Timer

4. 采集逻辑:DataAgent主进程中:当某个Group的采集点采集时间到时。采集等待线程中:往BlockingQueue里面放一个request。发送请求到PlcAdapter的线程中:得到请求,向PlcAdapter发送采集命令。

      PlcAdapter主进程中:收到开始采集命令开始采集,采集完成后将数据发送给DataAgent,DataAgent将数据保存到sqlite数据库中。

5. 发送逻辑:DataAgent主进程中:当某个Group的采集点发送时间到时。发送等待线程中:往BlockingQueue里面放一个request。发送数据线程中:得到请求,将这个Group对应采集到的数据从DataPool中取出,Format成Json格式,并发送到MQTT Server。如果发生成功则删除sqlite数据库中的这些数据,如果失败,则等到下次发送时间一起发送。

6. 反向控制逻辑:在Mosquitto库初始化时初始化了on_message、on_connect、on_disconnect、on_publish和on_subscribe等callback,一旦MQTT Server端下达命令,DataAgent会得到响应调用on_message中的方法执行对应命令,包括开始采集、停止采集、开始灌溉、停止灌溉、下载时间表、赋值给PLC某个变量等。

以上是关于Embedded Agent的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 Embedded - 以编程方式禁用磁盘缓存:

排除特定测试的 embedded.mongodb.enabled

Qt/Embedded 简介

如何删除 Spring HATEOAS 中的“_embedded”属性

IPA文件和embedded.provisionprofile详解

删除 Spring RepositoryRestResource 中的“_embedded”属性