CN116500957B - 一种设备联动控制方法及物联网智能联动控制系统 - Google Patents

一种设备联动控制方法及物联网智能联动控制系统 Download PDF

Info

Publication number
CN116500957B
CN116500957B CN202310782269.9A CN202310782269A CN116500957B CN 116500957 B CN116500957 B CN 116500957B CN 202310782269 A CN202310782269 A CN 202310782269A CN 116500957 B CN116500957 B CN 116500957B
Authority
CN
China
Prior art keywords
period
response
equipment
time
control instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310782269.9A
Other languages
English (en)
Other versions
CN116500957A (zh
Inventor
高若云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Zhonghao Construction Engineering Co ltd
Original Assignee
Jiangsu Zhonghao Construction Engineering Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu Zhonghao Construction Engineering Co ltd filed Critical Jiangsu Zhonghao Construction Engineering Co ltd
Priority to CN202310782269.9A priority Critical patent/CN116500957B/zh
Publication of CN116500957A publication Critical patent/CN116500957A/zh
Application granted granted Critical
Publication of CN116500957B publication Critical patent/CN116500957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25257Microcontroller
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开一种设备联动控制方法及物联网智能联动控制系统,涉及智能控制技术领域。本发明包括获取每个设备接收到的控制指令的时刻的历史记录;根据设备接收到的控制指令的时刻的历史记录得到设备的响应周期;根据设备接收到的控制指令的时刻的历史记录分析得到设备在响应周期内每个时段收到控制指令的概率;将设备在单位时间内设定的通讯时长按照设备在响应周期内每个时段收到控制指令的概率进行分配,得到设备在响应周期内的接收响应窗口时段;在每个响应周期内,设备在接收响应窗口时段接收控制指令;在执行完毕控制指令之后发送确认信息。本发明在确保控制指令执行的前提下提高设备之间联动控制的效率。

Description

一种设备联动控制方法及物联网智能联动控制系统
技术领域
本发明属于智能控制技术领域,特别是涉及一种设备联动控制方法及物联网智能联动控制系统。
背景技术
随着信息技术和互联网技术的飞速发展,人们的生活和工作越来越依赖于各种设备。这些设备包括但不限于家用电器,办公设备,交通工具,通信设备等。然而,随着设备数量和种类的增多,设备的管理和控制变得越来越复杂。为了解决这个问题,物联网(Internet of Things,IoT)技术被广泛应用于设备的联动控制。
但是由于物联网设备之间的互联通讯网络不稳定以及部分物联网设备的低功耗特性,导致设备之间的远程联动控制会出现较大的控制延迟。
在公开号为CN105022362A的专利中公开了一种智能家居设备的联动控制系统和联动控制方法,涉及基于物联网的智能家居系统中设备的控制系统和方法。本系统包括局域网、物联网和连接两者的网关。本方法包括联动消息配置步骤和联动操作步骤。联动消息配置步骤能自由设定联动的设备、联动场景或场景模块。联动步骤为主节点通过广播的方式,发送操作指令,从节点完成主设备联动从设备的操作。联动操作步骤还可以为主节点逐个匹配所有联动列表的操作,发送操作指令,从节点通过通信应答方式来进行联动操作。但是此方案中没有对设备之间的联动控制延迟进行控制,难以有效降低设备之间联动控制延迟。
发明内容
本发明的目的在于提供一种设备联动控制方法及物联网智能联动控制系统,通过对设备之间的通讯时间进行规划控制,在确保控制指令执行的前提下提高设备之间联动控制的效率。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种设备联动控制方法,包括,
获取每个设备在单位时间内的设定的通讯时长;
获取每个设备接收到的控制指令的时刻的历史记录;
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备的响应周期;
根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率;
将所述设备在单位时间内设定的通讯时长按照所述设备在所述响应周期内每个时段收到控制指令的概率进行分配,得到所述设备在所述响应周期内的接收响应窗口时段;
在每个所述响应周期内,所述设备在所述接收响应窗口时段接收控制指令;
在执行完毕控制指令之后发送确认信息。
本发明还公开了一种设备联动控制方法,包括,
将控制指令打包为数据包;
持续将所述数据包发送至目标设备;
接收上述设备联动控制方法中的确认信息;
判断接收到的所述确认信息是否由目标设备发送;
若是,则停止发送所述数据包;
若否,则持续将所述数据包发送至目标设备。
本发明还公开了一种物联网智能联动控制系统,包括,
控制端,用于将控制指令打包为数据包;
持续将所述数据包发送至目标设备;
设备,用于获取每个设备在单位时间内的设定的通讯时长;
获取每个设备接收到的控制指令的时刻的历史记录;
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备的响应周期;
根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率;
将所述设备在单位时间内设定的通讯时长按照所述设备在所述响应周期内每个时段收到控制指令的概率进行分配,得到所述设备在所述响应周期内的接收响应窗口时段;
在每个所述响应周期内,所述设备在所述接收响应窗口时段接收包含控制指令的数据包;
在执行完毕控制指令之后发送确认信息;
所述控制端,还用于接收确认信息;
判断接收到的所述确认信息是否由目标设备发送;
若是,则停止发送所述数据包;
若否,则持续将所述数据包发送至目标设备。
本发明通过规划控制设备间的通讯时间,确保控制指令的准确执行和快速响应。本发明包括控制端和设备两部分,在实施过程中控制端将控制指令打包为数据包并发送至目标设备。设备收集每个设备的通讯时长和接收控制指令时刻的历史记录,分析出设备的响应周期和每个时刻接收控制指令的概率,然后将通讯时长按概率分配,形成接收响应窗口时段。设备在每个响应周期内的这个窗口时段接收数据包,并在执行完指令后发送确认信息。控制端接收确认信息,判断其是否由目标设备发送,若是则停止发送数据包,否则继续发送,从而在确保控制指令被执行的前提下降低了控制端和设备之间的控制延迟。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所述一种物联网智能联动控制系统于一实施例的步骤流程示意图;
图2为本发明所述一种物联网智能联动控制系统于一实施例的交互单元的信息流向示意图;
图3为本发明所述步骤S4于一实施例的步骤流程示意图;
图4为本发明所述步骤S43于一实施例的步骤流程示意图;
图5为本发明所述步骤S5于一实施例的步骤流程示意图;
图6为本发明所述步骤S55于一实施例的步骤流程示意图;
图7为本发明所述步骤S01于一实施例的步骤流程示意图;
图8为本发明所述步骤S6于一实施例的步骤流程示意图。
附图中,各标号所代表的部件列表如下:
1-控制端,2-设备。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了降低控制端和设备之间的联动控制的时间延迟,本发明提供以下方案。
请参阅图1至2所示,本发明提供了一种物联网智能联动控制系统,包括控制端1和设备2。由控制端1发出控制指令,用以实现和设备2之间的联动控制。在具体实施的过程中首先由控制端1执行步骤S01将控制指令打包为数据包。接下来可以执行步骤S02持续将数据包发送至目标设备。
之后由设备2执行步骤S1获取每个设备在单位时间内的设定的通讯时长。接下来可以执行步骤S2获取每个设备接收到的控制指令的时刻的历史记录。接下来可以执行步骤S3根据设备接收到的控制指令的时刻的历史记录得到设备的响应周期,设备的响应周期可以是一天、一周、一月或一年。接下来可以执行步骤S4根据设备接收到的控制指令的时刻的历史记录分析得到设备在响应周期内每个时段收到控制指令的概率。接下来可以执行步骤S5将设备在单位时间内设定的通讯时长按照设备在响应周期内每个时段收到控制指令的概率进行分配,得到设备在响应周期内的接收响应窗口时段。接下来可以执行步骤S6在每个响应周期内,设备在接收响应窗口时段接收包含控制指令的数据包。接下来可以执行步骤S7在执行完毕控制指令之后发送确认信息。
再接下来由控制端3执行步骤S03接收确认信息,接下来可以执行步骤S04判断接收到的确认信息是否由目标设备发送。若是则接下来可以执行步骤05停止发送数据包,若否则接下来可以返回执行步骤S3持续将数据包发送至目标设备。
以上步骤在实施的过程中,控制单元把命令封装为数据包并发送到指定设备。各设备会收集自身通信时间及接收控制指令的历史数据,用于判断接收控制指令的时间概率,之后依照概率比例分配通信时间,计算得到接收响应窗口时间,设备在此窗口时间接收数据包,执行完命令后发出确认信息。控制单元收到确认后,验证是否来自指定设备,如是则停止发送,不是则继续。此方法在保障命令执行的同时,有效减少了设备和控制单元之间的联动控制延时。
设备在运行的过程中执行的步骤S1至步骤S7在实际应用中可以通过以下代码实现,受限于篇幅仅展示部分功能的源代码,并在注释部分进行解释。
#include<vector>
#include<map>
// 设备类,包含设备的通讯时长和接收到的控制指令的历史记录
class Device {
public:
float communicationTime; // 设备在单位时间内的通讯时长
std::vector<int> commandHistory; // 设备接收到的控制指令的时刻的历史记录
float responseCycle; // 设备的响应周期
std::map<int, float> commandProbabilities; // 设备在响应周期内每个时刻收到控制指令的概率
std::map<int, float> responseWindow; // 设备在响应周期内的接收响应窗口时段
// 获取设备在单位时间内的通讯时长
float getCommunicationTime() {
// 在此处添加获取通讯时长的代码
return communicationTime;
}
// 获取每个设备接收到的控制指令的时刻的历史记录
std::vector<int> getCommandHistory() {
// 在此处添加获取历史记录的代码
return commandHistory;
}
// 根据设备接收到的控制指令的时刻的历史记录得到设备的响应周期
float getResponseCycle() {
// 在此处添加计算响应周期的代码
return responseCycle;
}
// 根据设备接收到的控制指令的时刻的历史记录分析得到设备在响应周期内每个时刻收到控制指令的概率
std::map<int, float> getCommandProbabilities() {
// 在此处添加计算控制指令概率的代码
return commandProbabilities;
}
// 将设备在单位时间内设定的通讯时长按照设备在响应周期内每个时刻收到控制指令的概率进行分配,得到设备在响应周期内的接收响应窗口时段
std::map<int, float> getResponseWindow() {
// 在此处添加计算响应窗口时段的代码
return responseWindow;
}
// 在每个响应周期内,设备在接收响应窗口时段接收控制指令
void receiveCommand() {
// 在此处添加接收控制指令的代码
}
// 在执行完毕控制指令之后发送确认信息
void sendConfirmation() {
// 在此处添加发送确认信息的代码
}
};
这段代码定义了一个Device类,其中包含了设备在单位时间内的通讯时长,设备接收到的控制指令的时刻的历史记录,设备的响应周期,设备在响应周期内每个时刻收到控制指令的概率,设备在响应周期内的接收响应窗口时段等属性。同时也定义了一些方法,用于获取这些属性,并执行相应的功能。
控制端在运行的过程中执行的步骤S01至步骤S06在实际应用中可以通过以下代码实现,受限于篇幅仅展示部分功能的源代码,并在注释部分进行解释。
#include <iostream>
#include <string>
// 控制端类,包含控制指令打包、发送数据包、接收确认信息、判断确认信息来源等方法
class ControlEnd {
public:
std::string command; // 控制指令
std::string dataPacket; // 数据包
bool isStop; // 是否停止发送数据包
std::string confirmation; // 确认信息
// 将控制指令打包为数据包
void packageCommand() {
// 在此处添加控制指令打包的代码
dataPacket = command;
}
// 持续将数据包发送至目标设备
void sendDataPacket() {
while (!isStop) {
// 在此处添加数据包发送的代码
std::cout << "Sending data packet: " << dataPacket <<std::endl;
receiveConfirmation();
}
}
// 接收确认信息
void receiveConfirmation() {
// 在此处添加接收确认信息的代码
// 在此处暂时设定确认信息为"confirmation"
confirmation = "confirmation";
judgeConfirmation();
}
// 判断接收到的确认信息是否由目标设备发送
void judgeConfirmation() {
// 在此处添加判断确认信息来源的代码
// 在此处暂时设定目标设备发送的确认信息为"confirmation"
if (confirmation == "confirmation") {
isStop = true;
}
}
};
int main() {
ControlEnd controlEnd;
controlEnd.packageCommand();
controlEnd.sendDataPacket();
return 0;
}
这段代码定义了一个ControlEnd类,其中包含了控制指令,数据包,是否停止发送数据包,确认信息等属性。同时也定义了一些方法,用于将控制指令打包为数据包,持续发送数据包,接收确认信息,判断确认信息是否由目标设备发送等。
请参阅图3所示,由于智能家居设备的使用具有高度的周期性,有鉴于此可以通过计算分析每个时段内接收控制指令的概率分配通讯时长,在此期间保持设备处于活跃状态不休眠。为了得到设备在响应周期内每个时段收到控制指令的概率,上述的步骤S4在具体实施的过程中首先可以执行步骤S41根据设备接收到的控制指令的时刻的历史记录得到设备在多个响应周期内的收到控制指令的时刻分布。接下来可以执行步骤S42根据设备在多个响应周期内的收到控制指令的时刻分布累计合并统计,得到设备在响应周期内的收到控制指令的累计时刻分布。接下来可以执行步骤S43根据设备在响应周期内的收到控制指令的累计时刻分布得到设备在响应周期内每个时段收到控制指令的有效次数。最后可以执行步骤S44根据设备在响应周期内每个时段收到控制指令的有效次数之间的比值得到设备在响应周期内每个时段收到控制指令的概率。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <vector>
#include <map>
// 历史记录以vector存储,每个元素代表一个控制指令的接收时刻
std::vector<int> history;
// 分析设备在响应周期内每个时刻收到控制指令的概率
std::map<int, double> analyzeCommandProbability(const std::vector<int>& history, int responseCycle) {
std::map<int, int> distribution; // 设备在多个响应周期内的收到控制指令的时刻分布
std::map<int, int> cumulativeDistribution; // 设备在响应周期内的收到控制指令的累计时刻分布
std::map<int, int> effectiveCount; // 设备在响应周期内每个时段收到控制指令的有效次数
std::map<int, double> probabilities; // 设备在响应周期内每个时段收到控制指令的概率
// 根据设备接收到的控制指令的时刻的历史记录得到设备在多个响应周期内的收到控制指令的时刻分布
for(auto& timestamp : history) {
int period = timestamp % responseCycle;
distribution[period]++;
}
// 累计合并统计,得到设备在响应周期内的收到控制指令的累计时刻分布
for(auto& pair : distribution) {
cumulativeDistribution[pair.first] += pair.second;
}
// 根据设备在响应周期内的收到控制指令的累计时刻分布得到设备在响应周期内每个时段收到控制指令的有效次数
for(auto& pair : cumulativeDistribution) {
effectiveCount[pair.first] = pair.second;
}
// 根据设备在响应周期内每个时段收到控制指令的有效次数之间的比值得到设备在响应周期内每个时段收到控制指令的概率
int totalEffectiveCount = history.size();
for(auto& pair : effectiveCount) {
probabilities[pair.first] = (double)pair.second /totalEffectiveCount;
}
return probabilities;
}
int main() {
// 有一些历史记录和响应周期
std::vector<int> history = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int responseCycle = 10;
std::map<int, double> probabilities = analyzeCommandProbability(history, responseCycle);
// 打印概率
for(auto& pair : probabilities) {
std::cout << "Time: " << pair.first << ", Probability: " <<pair.second <<
std::endl;
}
return 0;
}
在主函数中,首先有一组历史记录和一个响应周期,然后调用分析函数得到每个时段的接收控制指令的概率,并打印出结果。
请参阅图4所示,设备接收到的控制指令有可能是重复的,为了避免重复的控制指令对有效次数的计数影响,上述的步骤S43在具体实施的过程中首先可以执行步骤S431获取设备在响应周期内的收到控制指令的累计时刻分布中对应的每个控制指令。接下来可以执行步骤S432判断收到时刻相邻的多个控制指令是否相同。若是则接下来可以执行步骤S433将多个相同的控制指令仅保留一个,若否则接下来可以执行步骤S434不进行处理。接下来可以执行步骤S435得到设备在响应周期内的收到控制指令的有效时刻分布。接下来可以执行步骤S436将响应周期划分为多个时段。最后可以执行步骤S437根据设备在响应周期内的收到控制指令的有效时刻分布得到设备在响应周期内每个时段收到控制指令的有效次数。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <vector>
#include <map>
// 设备在响应周期内的收到控制指令的累计时刻分布
std::vector<std::pair<int, std::string>> distribution;
// 判断相邻控制指令是否相同,如果是,只保留一个
std::vector<std::pair<int, std::string>> filterSameCommands(std::vector<std::pair<int, std::string>>& distribution) {
std::vector<std::pair<int, std::string>> result;
std::string lastCommand;
for(auto& p : distribution) {
if(p.second != lastCommand) {
result.push_back(p);
lastCommand = p.second;
}
}
return result;
}
// 获取设备在响应周期内每个时段收到控制指令的有效次数
std::map<int, int> getValidCounts(std::vector<std::pair<int, std::string>>& validDistribution, int period) {
std::map<int, int> counts;
int segmentCount = period / 10; // 响应周期被划分为10个时段
for(auto& p : validDistribution) {
int segment = p.first / segmentCount;
counts[segment]++;
}
return counts;
}
int main() {
// 获取设备在响应周期内的收到控制指令的累计时刻分布中对应的每个控制指令
distribution.push_back(std::make_pair(1, "CMD1"));
distribution.push_back(std::make_pair(2, "CMD1"));
distribution.push_back(std::make_pair(3, "CMD2"));
distribution.push_back(std::make_pair(4, "CMD3"));
distribution.push_back(std::make_pair(5, "CMD3"));
// ...
// 处理累计时刻分布,得到有效时刻分布
auto validDistribution = filterSameCommands(distribution);
// 获取设备在响应周期内每个时段收到控制指令的有效次数
auto counts = getValidCounts(validDistribution, 10);
// 打印每个时段的有效次数
for(auto& p : counts) {
std::cout << "Segment " << p.first << ": " << p.second << "times" << std::endl;
}
return 0;
}
这段代码首先定义了设备在响应周期内的收到控制指令的累计时刻分布,然后通过filterSameCommands函数去掉相邻的重复控制指令,得到有效时刻分布。接下来,调用getValidCounts函数将响应周期划分为多个时段,并得到每个时段的有效次数。最后,在主函数中打印出每个时段的有效次数。
请参阅图5所示,为了具体计算设备在响应周期内的接收响应窗口时段,需要考虑设备执行完一次控制指令所需的时间。具体而言,上述的步骤S5在实施的过程中首先可以执行步骤S51根据设备的响应周期的时长以及设备在单位时间内设定的通讯时长得到响应周期内的通讯时长。接下来可以执行步骤S52按照响应周期内每个时段收到控制指令的概率之间的比例将响应周期内的通讯时长进行分配,得到响应周期内每个时段中的通讯时长。接下来可以执行步骤S53获取设备完成信息收发执行的最短时间作为响应粒度时长。接下来可以执行步骤S54根据响应周期内每个时段中的通讯时长以及响应粒度时长得到响应周期内每个时段中的响应粒度时长的数量。接下来可以执行步骤S55在响应周期内每个时段内,按照对应响应粒度时长的数量将响应周期内每个时段中的响应粒度时长进行分散得到全部响应粒度时长在响应周期内的分布时段。最后可以执行步骤S56将全部响应粒度时长在响应周期内的分布时段作为设备在响应周期内的接收响应窗口时段。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <vector>
#include <map>
// 设备在单位时间内设定的通讯时长
int communicationTime = 100;
// 响应周期内每个时段收到控制指令的概率
std::map<int, double> probabilityDistribution;
// 设备完成信息收发执行的最短时间
int responseTime = 1;
// 按比例分配通讯时长
std::map<int, int> allocateCommunicationTime(inttotalCommunicationTime, std::map<int, double>& probabilityDistribution) {
std::map<int, int> allocatedTime;
for(auto& p : probabilityDistribution) {
allocatedTime[p.first] = totalCommunicationTime * p.second;
}
return allocatedTime;
}
// 根据通讯时长和响应粒度时长得到响应粒度时长的数量
std::map<int, int> getResponseGrainCounts(std::map<int, int>&allocatedTime, int responseTime) {
std::map<int, int> grainCounts;
for(auto& p : allocatedTime) {
grainCounts[p.first] = p.second / responseTime;
}
return grainCounts;
}
int main() {
// 根据设备的响应周期的时长以及设备在单位时间内设定的通讯时长得到响应周期内的通讯时长
int totalCommunicationTime = 10 * communicationTime; // 响应周期是10个单位时间
// 按照响应周期内每个时段收到控制指令的概率之间的比例将响应周期内的通讯时长进行分配
auto allocatedTime = allocateCommunicationTime(totalCommunicationTime, probabilityDistribution);
// 获取响应周期内每个时段中的响应粒度时长的数量
auto grainCounts = getResponseGrainCounts(allocatedTime,responseTime);
// 打印出响应周期内每个时段的响应粒度时长的数量
for(auto& p : grainCounts) {
std::cout << "Segment " << p.first << ": " << p.second << "grains" << std::endl;
}
return 0;
}
这段代码首先定义了设备在单位时间内设定的通讯时长、响应周期内每个时段收到控制指令的概率以及设备完成信息收发执行的最短时间。接下来,使用allocateCommunicationTime函数按照概率分配通讯时长,然后通过getResponseGrainCounts函数获取响应周期内每个时段中的响应粒度时长的数量。最后,在主函数中打印出每个时段的响应粒度时长的数量。
请参阅图6所示,对于响应周期内每个时段,为了将响应粒度时长分散在对应的时段内,上述的步骤S55在实施的过程中首先可以执行步骤S551根据对应响应粒度时长的数量将时段均匀划分为若干个子时段。接下来可以执行步骤S552获取每个子时段的中值时刻。接下来可以执行步骤S553将响应粒度时长的中值时刻与子时段的中值时刻对齐,得到响应粒度时长在时段内的分布状态。最后可以执行步骤S554根据响应粒度时长在时段内的分布状态得到全部响应粒度时长在响应周期内的分布时段。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <vector>
#include <map>
// 设备完成信息收发执行的最短时间
int responseTime = 1;
// 响应周期内每个时段中的响应粒度时长的数量
std::map<int, int> grainCounts;
// 对于响应周期内每个时段
std::vector<std::vector<double>> distributeGrainTime(std::map<int,int>& grainCounts, int responseTime) {
std::vector<std::vector<double>> distribution;
// 遍历响应周期内每个时段
for(auto& p : grainCounts) {
std::vector<double> segmentDistribution;
int segmentTime = p.first;
int grainCount = p.second;
// 将时段均匀划分为若干个子时段
double step = (double)segmentTime / grainCount;
// 获取每个子时段的中值时刻
for(int i = 0; i < grainCount; i++) {
double middleTime = i * step + step / 2.0;
// 将响应粒度时长的中值时刻与子时段的中值时刻对齐,得到响应粒度时长在时段内的分布状态
segmentDistribution.push_back(middleTime);
}
// 根据响应粒度时长在时段内的分布状态得到全部响应粒度时长在响应周期内的分布时段
distribution.push_back(segmentDistribution);
}
return distribution;
}
int main() {
// 生成响应粒度时长在响应周期内的分布时段
auto distribution = distributeGrainTime(grainCounts,responseTime);
// 打印全部响应粒度时长在响应周期内的分布时段
for(auto& segment : distribution) {
for(auto& time : segment) {
std::cout << time << " ";
}
std::cout << std::endl;
}
return 0;
}
这段代码首先定义了设备完成信息收发执行的最短时间和响应周期内每个时段中的响应粒度时长的数量。接着,使用distributeGrainTime函数生成响应粒度时长在响应周期内的分布时段。最后,在main函数中打印全部响应粒度时长在响应周期内的分布时段。
请参阅图7所示,为了让设备能够将收到的重复数据包快速排除,上述的步骤S01在具体实施的过程中首先可以执行步骤S011将控制指令编码为指令数据块。接下来可以执行步骤S012获取指令数据块的数字摘要,为了提高比对速度可以设置数字摘要的数据量小于指令数据块的数据量。最后可以执行步骤S013将数据头、目标设备网络地址、指令数据块以及数字摘要打包为数据包。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <string>
// 模拟数据头
struct DataHeader {
int type; // 数据类型
int length; // 数据长度
};
// 模拟目标设备网络地址
struct NetworkAddress {
std::string ip;
int port;
};
// 模拟控制指令
struct ControlCommand {
std::string command;
};
// 模拟数字摘要
struct DigitalDigest {
std::string digest;
};
// 模拟数据包
struct DataPacket {
DataHeader header;
NetworkAddress address;
ControlCommand command;
DigitalDigest digest;
};
// 将控制指令编码为指令数据块
ControlCommand encodeCommand(std::string command) {
ControlCommand encodedCommand;
encodedCommand.command = command;
return encodedCommand;
}
// 获取指令数据块的数字摘要
DigitalDigest getDigitalDigest(ControlCommand command) {
DigitalDigest digest;
digest.digest = command.command.substr(0, 5);
return digest;
}
// 将数据头、目标设备网络地址、指令数据块以及数字摘要打包为数据包
DataPacket packageData(DataHeader header, NetworkAddress address,ControlCommand command, DigitalDigest digest) {
DataPacket packet;
packet.header = header;
packet.address = address;
packet.command = command;
packet.digest = digest;
return packet;
}
int main() {
DataHeader header = {1, 100}; // 数据头
NetworkAddress address = {"192.168.32.166", 8080}; // 目标设备网络地址
std::string commandStr = "Turn on the light"; // 控制指令
ControlCommand command = encodeCommand(commandStr); // 编码控制指令
DigitalDigest digest = getDigitalDigest(command); // 获取数字摘要
DataPacket packet = packageData(header, address, command,digest); // 打包为数据包
return 0;
}
在这段代码中,首先模拟定义了数据头、目标设备网络地址、控制指令、数字摘要和数据包等数据结构。然后,定义了编码控制指令、获取数字摘要和打包数据为数据包等函数。最后,在main函数中使用这些函数将控制指令打包为数据包。
请参阅图8所示,为了具体实现设备对收到的数据包进行快速比对,上述的步骤S6在实施的过程中首先可以执行步骤S61解析出数据包中的数字摘要。接下来可以执行步骤S62判断相邻时间接收得到的数据包中的数字摘要是否相同。若是则接下来可以执行步骤S63判定相邻时间接收得到的数据包相同,接下来可以执行步骤S64不再执行接收时间在后的相同数据包中的控制指令。若否则接下来可以执行步骤S65判定相邻时间接收得到的数据包不相同,最后可以执行步骤S66执行接收时间在后的数据包中的控制指令。
为了对以上步骤进行补充说明,提供部分功能的源代码,并在注释部分进行说明。
#include <queue>
#include <string>
// 模拟控制指令
struct ControlCommand {
std::string command;
};
// 数字摘要
struct DigitalDigest {
std::string digest;
};
// 数据包
struct DataPacket {
ControlCommand command;
DigitalDigest digest;
};
// 数据包队列
std::queue<DataPacket> packetQueue;
// 解析数据包中的数字摘要
DigitalDigest parseDigest(DataPacket packet) {
return packet.digest;
}
// 判断相邻时间接收得到的数据包中的数字摘要是否相同
bool isDigestSame(DigitalDigest digest1, DigitalDigest digest2) {
return digest1.digest == digest2.digest;
}
// 执行控制指令
void executeCommand(ControlCommand command) {
// 执行控制指令的代码
}
void processPacketQueue() {
DigitalDigest lastDigest;
bool isLastDigestValid = false;
while (!packetQueue.empty()) {
DataPacket packet = packetQueue.front();
packetQueue.pop();
DigitalDigest digest = parseDigest(packet);
if (isLastDigestValid && isDigestSame(lastDigest, digest)) {
// 相邻时间接收得到的数据包中的数字摘要相同,不执行控制指令
continue;
} else {
// 相邻时间接收得到的数据包中的数字摘要不相同,执行控制指令
executeCommand(packet.command);
lastDigest = digest;
isLastDigestValid = true;
}
}
}
在这段代码中,首先定义了控制指令、数字摘要和数据包等数据结构,以及一个数据包队列。然后,定义了解析数据包中的数字摘要、判断相邻时间接收得到的数据包中的数字摘要是否相同和执行控制指令等函数。最后,定义了一个处理数据包队列的函数,该函数将依次处理队列中的每个数据包,如果数据包中的数字摘要与前一个数据包的数字摘要不同,则执行该数据包中的控制指令。
综上所述,本方案在实行过程中,控制端将指令打包成数据包并将其投递至目标设备。每个设备收集自身的通讯时间和接收指令的历史记录,以分析出设备的反应周期和各时刻接收指令的几率,进而按比例分配通讯时间,形成反应窗口时间段。设备在每个反应周期内的这个时间段内接收数据包,并在完成指令执行后发出确认信号。控制端收到确认信息后,确认其是否来自目标设备,如果是则停止发送数据包,若否则继续发送。这种方式在保证指令的实施的同时,有效地降低了设备与控制端之间的响应延迟。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件,例如电路或ASIC(专用集成电路,Application Specific Integrated Circuit)来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (9)

1.一种设备联动控制方法,其特征在于,包括,
获取每个设备在单位时间内的设定的通讯时长;
获取每个设备接收到的控制指令的时刻的历史记录;
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备的响应周期;
根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率;
将所述设备在单位时间内设定的通讯时长按照所述设备在所述响应周期内每个时段收到控制指令的概率进行分配,得到所述设备在所述响应周期内的接收响应窗口时段;
在每个所述响应周期内,所述设备在所述接收响应窗口时段接收控制指令;
在执行完毕控制指令之后发送确认信息;
其中,所述根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率的步骤,包括,
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备在多个所述响应周期内的收到控制指令的时刻分布;
根据所述设备在多个所述响应周期内的收到控制指令的时刻分布累计合并统计,得到所述设备在所述响应周期内的收到控制指令的累计时刻分布;
根据所述设备在所述响应周期内的收到控制指令的累计时刻分布得到所述设备在所述响应周期内每个时段收到控制指令的有效次数;
根据所述设备在所述响应周期内每个时段收到控制指令的有效次数之间的比值得到设备在所述响应周期内每个时段收到控制指令的概率。
2.根据权利要求1所述的方法,其特征在于,所述设备的响应周期包括一天、一周、一月或一年。
3.根据权利要求1所述的方法,其特征在于,所述根据所述设备在所述响应周期内的收到控制指令的累计时刻分布得到所述设备在所述响应周期内每个时段收到控制指令的有效次数的步骤,包括,
获取所述设备在所述响应周期内的收到控制指令的累计时刻分布中对应的每个控制指令;
判断收到时刻相邻的多个控制指令是否相同;
若是,则将多个相同的控制指令仅保留一个;
若否,则不进行处理;
得到所述设备在所述响应周期内的收到控制指令的有效时刻分布;
将所述响应周期划分为多个时段;
根据所述设备在所述响应周期内的收到控制指令的有效时刻分布得到所述设备在所述响应周期内每个时段收到控制指令的有效次数。
4.根据权利要求1所述的方法,其特征在于,所述将所述设备在单位时间内设定的通讯时长按照所述设备在所述响应周期内每个时段收到控制指令的概率进行分配,得到所述设备在所述响应周期内的接收响应窗口时段的步骤,包括,
根据所述设备的所述响应周期的时长以及所述设备在单位时间内设定的通讯时长得到所述响应周期内的通讯时长;
按照所述响应周期内每个时段收到控制指令的概率之间的比例将所述响应周期内的通讯时长进行分配,得到所述响应周期内每个时段中的通讯时长;
获取所述设备完成信息收发执行的最短时间作为响应粒度时长;
根据所述响应周期内每个时段中的通讯时长以及所述响应粒度时长得到所述响应周期内每个时段中的所述响应粒度时长的数量;
在所述响应周期内每个时段内,按照对应所述响应粒度时长的数量将所述响应周期内每个时段中的所述响应粒度时长进行分散得到全部所述响应粒度时长在所述响应周期内的分布时段;
将全部所述响应粒度时长在所述响应周期内的分布时段作为所述设备在所述响应周期内的接收响应窗口时段。
5.根据权利要求4所述的方法,其特征在于,所述在所述响应周期内每个时段内,按照对应所述响应粒度时长的数量将所述响应周期内每个时段中的所述响应粒度时长进行分散得到全部所述响应粒度时长在所述响应周期内的分布时段的步骤,包括,
对于所述响应周期内每个时段;
根据对应所述响应粒度时长的数量将时段均匀划分为若干个子时段;
获取每个子时段的中值时刻;
将所述响应粒度时长的中值时刻与子时段的中值时刻对齐,得到所述响应粒度时长在时段内的分布状态;
根据所述响应粒度时长在时段内的分布状态得到全部所述响应粒度时长在所述响应周期内的分布时段。
6.一种设备联动控制方法,其特征在于,包括,
将控制指令打包为数据包;
持续将所述数据包发送至目标设备;
接收权利要求1至5任一项所述设备联动控制方法中的确认信息;
判断接收到的所述确认信息是否由目标设备发送;
若是,则停止发送所述数据包;
若否,则持续将所述数据包发送至目标设备。
7.根据权利要求6所述的方法,其特征在于,所述将控制指令打包为数据包的步骤,包括,
将所述控制指令编码为指令数据块;
获取所述指令数据块的数字摘要,其中,所述数字摘要的数据量小于所述指令数据块的数据量;
将数据头、目标设备网络地址、指令数据块以及数字摘要打包为数据包。
8.一种物联网智能联动控制系统,其特征在于,包括,
控制端,用于将控制指令打包为数据包;
持续将所述数据包发送至目标设备;
设备,用于获取每个设备在单位时间内的设定的通讯时长;
获取每个设备接收到的控制指令的时刻的历史记录;
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备的响应周期;
根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率;
将所述设备在单位时间内设定的通讯时长按照所述设备在所述响应周期内每个时段收到控制指令的概率进行分配,得到所述设备在所述响应周期内的接收响应窗口时段;
在每个所述响应周期内,所述设备在所述接收响应窗口时段接收包含控制指令的数据包;
在执行完毕控制指令之后发送确认信息;
所述控制端,还用于接收确认信息;
判断接收到的所述确认信息是否由目标设备发送;
若是,则停止发送所述数据包;
若否,则持续将所述数据包发送至目标设备;
其中,所述根据所述设备接收到的控制指令的时刻的历史记录分析得到所述设备在所述响应周期内每个时段收到控制指令的概率的步骤,包括,
根据所述设备接收到的控制指令的时刻的历史记录得到所述设备在多个所述响应周期内的收到控制指令的时刻分布;
根据所述设备在多个所述响应周期内的收到控制指令的时刻分布累计合并统计,得到所述设备在所述响应周期内的收到控制指令的累计时刻分布;
根据所述设备在所述响应周期内的收到控制指令的累计时刻分布得到所述设备在所述响应周期内每个时段收到控制指令的有效次数;
根据所述设备在所述响应周期内每个时段收到控制指令的有效次数之间的比值得到设备在所述响应周期内每个时段收到控制指令的概率。
9.根据权利要求8所述的系统,其特征在于,所述在每个所述响应周期内,所述设备在所述接收响应窗口时段接收包含控制指令的数据包的步骤,包括,
解析出所述数据包中的数字摘要;
判断相邻时间接收得到的所述数据包中的所述数字摘要是否相同;
若是,则判定相邻时间接收得到的所述数据包相同,
不再执行接收时间在后的相同数据包中的控制指令;
若否,判定相邻时间接收得到的所述数据包不相同,
执行接收时间在后的数据包中的控制指令。
CN202310782269.9A 2023-06-29 2023-06-29 一种设备联动控制方法及物联网智能联动控制系统 Active CN116500957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310782269.9A CN116500957B (zh) 2023-06-29 2023-06-29 一种设备联动控制方法及物联网智能联动控制系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310782269.9A CN116500957B (zh) 2023-06-29 2023-06-29 一种设备联动控制方法及物联网智能联动控制系统

Publications (2)

Publication Number Publication Date
CN116500957A CN116500957A (zh) 2023-07-28
CN116500957B true CN116500957B (zh) 2023-09-12

Family

ID=87320654

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310782269.9A Active CN116500957B (zh) 2023-06-29 2023-06-29 一种设备联动控制方法及物联网智能联动控制系统

Country Status (1)

Country Link
CN (1) CN116500957B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016058907A (ja) * 2014-09-10 2016-04-21 沖電気工業株式会社 無線通信端末、無線通信システム、および通信状況予測方法
JP2017005444A (ja) * 2015-06-09 2017-01-05 東芝ライテック株式会社 通信装置、通信システム、通信方法
EP3136663A1 (en) * 2015-08-26 2017-03-01 Alcatel Lucent Network congestion notification in communication networks
CN113885340A (zh) * 2021-10-08 2022-01-04 深圳朗特智能控制股份有限公司 一种设备控制方法、装置、终端及存储介质
CN114527673A (zh) * 2022-02-25 2022-05-24 珠海格力电器股份有限公司 一种智能设备控制方法、装置、电子设备及存储介质
CN115865543A (zh) * 2022-11-30 2023-03-28 中南大学 一种基于最优控制的周期性节能方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5071102B2 (ja) * 2007-12-28 2012-11-14 富士通株式会社 通信制御方法、無線端末と無線基地局制御装置間での無線基地局情報共有化方法、無線端末の通信制御プログラム、無線基地局の通信制御プログラム、無線端末、無線基地局、および、無線基地局制御装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016058907A (ja) * 2014-09-10 2016-04-21 沖電気工業株式会社 無線通信端末、無線通信システム、および通信状況予測方法
JP2017005444A (ja) * 2015-06-09 2017-01-05 東芝ライテック株式会社 通信装置、通信システム、通信方法
EP3136663A1 (en) * 2015-08-26 2017-03-01 Alcatel Lucent Network congestion notification in communication networks
CN113885340A (zh) * 2021-10-08 2022-01-04 深圳朗特智能控制股份有限公司 一种设备控制方法、装置、终端及存储介质
CN114527673A (zh) * 2022-02-25 2022-05-24 珠海格力电器股份有限公司 一种智能设备控制方法、装置、电子设备及存储介质
CN115865543A (zh) * 2022-11-30 2023-03-28 中南大学 一种基于最优控制的周期性节能方法

Also Published As

Publication number Publication date
CN116500957A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
JP6456330B2 (ja) 工業インターネットブロードバンドフィールドバスのリアルタイム性の実現方法
RU2548909C2 (ru) Cпособ выделения полосы пропускания и терминал оптической линии
Mubeen et al. Holistic modeling of time sensitive networking in component-based vehicular embedded systems
Wu et al. Network delay analysis of EtherCAT and PROFINET IRT protocols
CN113032166B (zh) 核间通信的方法、处理器、核间通信系统及计算机可读存储介质
CN113452566A (zh) 一种云边端协同资源管理方法及系统
CN110996390B (zh) 一种无线接入网络计算资源分配方法及网络系统
CN116500957B (zh) 一种设备联动控制方法及物联网智能联动控制系统
CN113891192B (zh) 工业网络中进行数据传输的控制方法及装置、设备
CN101431458B (zh) 一种基于p坚持策略的csma工业控制网络调度方法
Neukirchner et al. Response-time analysis of the flexray dynamic segment under consideration of slot-multiplexing
Natale et al. Scheduling messages with earliest deadline techniques
Keshtkarjahromi et al. Adaptive and heterogeneity-aware coded cooperative computation at the edge
WO2024041052A1 (zh) 带宽划分方法、装置、设备及计算机可读存储介质
CN114024913B (zh) 一种网络性能优化方法、装置、设备以及存储介质
CN113676423A (zh) 一种端口流量控制方法、装置、交换芯片和存储介质
TWI451780B (zh) 服務提供裝置、服務使用裝置及其服務傳輸方法
Khan et al. Analyzing transport and MAC layer in system-level performance simulation
Khan et al. Probabilistic bandwidth assignment in wireless sensor networks
Hsieh et al. The CAN-based synchronized structure for multi-axis motion control systems
CN102356608B (zh) 一种实时业务带宽分配方法及基站
Rehman et al. Modeling the impact of deferred transmission in CSMA/CA algorithm for IEEE 802.15. 4 using Markov chain model
CN112055068B (zh) 多代理系统主控节点的分配方法、装置、终端及存储介质
Cho et al. Utilization-aware dynamic GTS allocation scheme in IEEE 802.15. 4
US11979295B2 (en) Reinforcement learning agent training method, modal bandwidth resource scheduling method and apparatus

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant