1.一种基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,所述分布式故障诊断方法包括以下步骤:步骤A,准备n+1块FPGA,将其中一块FPGA定义为核心FPGA,其余n块FPGA定义为非核心FPGA;以n块非核心FPGA分别表征n个传感器节点,结合空调传感器对应的约束等式连接节点,构建玻尔兹曼机投票网络平台;n为大于1的正整数;
步骤B,基于空调传感器的训练数据集,在核心FPGA 中对玻尔兹曼机投票网络平台进行训练,将获得的最优可信度矩阵发送至n块非核心FPGA;
步骤C,采用n块非核心FPGA分别调用相应的可信度向量与激活函数计算出的投票值相乘,以获得传感器节点之间的投票边权值,将投票边权值发送给核心FPGA;
步骤D,利用核心FPGA将所有投票边权值整合成投票值矩阵,对投票值矩阵对称化处理后得到对称化玻尔兹曼机,迭代玻尔兹曼机状态,得到玻尔兹曼机每个传感器节点的状态值,将每个传感器节点的状态值发送给对应传感器节点的非核心FPGA,使非核心FPGA接收状态值后,调用工具库函数对状态值进行显示。
2.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤B中,采用pynq‑z2的PS端双ARM Cortex‑A9内核调用的JupyterNotebook,将玻尔兹曼机神经网络的.py文件和空调传感器的训练数据集上传至JupyterNotebook中;在核心FPGA I0中执行玻尔兹曼机神经网络.py文件,对玻尔兹曼机投票网络平台进行训练。
3.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤B中,基于空调传感器的训练数据集,在核心FPGA 中对玻尔兹曼机投票网络平台进行训练的过程包括以下步骤:步骤B1,计算第k个故障特征 的平均值 ,标准差
;其中 是训练集中对应正常状态下数据的第k个故障
特征的第i个采样, 是第k个故障特征的正常状态下的数据的样本数;
步骤B2,采用3‑sigma统计控制方法获得第k个故障特征的置信区间上界;使用激活函数 将故障特征转化为传感器节点之间的投票值;
步骤B3,采用n*n可信度矩阵C表示不同传感器节点之间的投票的可信度,其中矩阵中的第i行第j列的元素 表示从传感器节点i到传感器节点j的投票可信度;令可信度矩阵C的初始值为 ;
步骤B4,将步骤B2中的激活函数代入置信区间的值后通过公式 (t) =
得到t时刻传感器节点i对传感器节点j的投票值 (t),其中 是所有与
传感器节点i和传感器节点j都相关的故障特征的集合; 是基于故障特征k的投票值; 是所有与传感器节点i和传感器节点j都相关的故障特征的个数;
步骤B5,采用投票值组合成投票矩阵V(t)= ,并乘
上可信度值C,作为玻尔兹曼机的边权值;
步骤B6,对投票矩阵V(t)进行对称化处理,令W=V,经过对称化处理后的矩阵为,则新玻尔兹曼机的输入为:;得到新
增节点的边权值 ,将新增节点的边权值代入投票矩阵W中得到相应
的对称玻尔兹曼机;
式中,wi,j表示传感器节点i对传感器节点j的投票结果,i=1,2,…,n,j=1,2,…,n; 为传感器节点i分别与新玻尔兹曼机中其余各节点彼此间相互投票结果;vi为传感器节点i对应的状态值;表示令各节点的偏移向量 i均等于0所构成的节点偏差向量矩阵; 表示结合新节点的状态值等于1所构成的新玻尔兹曼机对应的状态值矩阵;
步骤B7,对对称玻尔兹曼机的传感器节点进行状态迭代,直至迭代收敛;
步骤B8,将可信度矩阵C作为决策变量,采用粒子群算法,不断更新可信度矩阵,重复步骤B4至步骤B7,得到故障诊断精度和最优可信度矩阵C,并将数据以csv格式储存在核心FPGA上。
4.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤B中,基于UDP通信的数据传输方法将获得的最优可信度矩阵发送至n块非核心FPGA,发送过程包括以下步骤:导入numpy库,使用ravel()函数将最优可信度矩阵转化成列向量;
服务端绑定目标IP地址和端口号,并设定待发送的浮点数列表;服务端创建UDP套接字,用于网络通信;
设置分片后数据包长度为IPv4头部长度、UDP头部长度以及对应节点的投票值列向量;
定义UDP数据包头,UDP数据包头包括源地址端口号、目的地址口号、数据包长度以及校验和;
定义数据负载和顺序戳,使用python的struct库的pack()函数将数据负载和待传输的投票值列向量数据进行打包,设定数据按照大端字节序传输;
对原始矩阵数据中的20个浮点数进行二进制格式的解码,并按照字节顺序打包;
输入源地址和目标地址的IP和端口号,使用socket库的sendto()函数将UDP数据包头和数据负载打包生成UDP数据包,并将UDP数据包发送至对应目标地址的非核心FPGA中。
5.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,在JupyterNotebook环境中,使用Python的socket模块进行网络通信;具体地,在每个FPGA上创建一个socket对象,设定其协议类型为UDP,并将其绑定到为每个FPGA分配的特定地址和端口;利用sendto()和recvfrom()函数,为每个传感器节点Ii发送和接收权重向量vij数据,使数据传输至相应的非核心FPGA。
6.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤C中,第i个非核心FPGA收到数据之后,根据激活函数公式 =算出投票值,调用对应的可信度向量中的第j个可信度相乘,算出第i个非核心FPGA到第j个非核心FPGA的玻尔兹曼机边权值mij,并将边权值mij整合为1*n的矩阵mi绑定第i个非核心FPGA的IP地址和端口号,将UDP数据包通过sendto()函数发送给核心FPGA;
式中,x表示第k个故障特征基于当前故障特征的绝对值, 表示第k个故障特征的故障特征绝对值 所对应的当前置信区间上限。
7.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤D中,得到玻尔兹曼机每个传感器节点的状态值的过程包括以下步骤:对玻尔兹曼机的传感器节点进行状态迭代,得到玻尔兹曼机每个传感器节点的状态值S,其中,第i个非核心FPGA的状态值Si,Si= ,i=1,2,3,…n。
8.根据权利要求1所述的基于FPGA的玻尔兹曼机投票网络的分布式故障诊断方法,其特征在于,步骤D中,核心FPGA将每个传感器节点的状态值发送给对应传感器节点的非核心FPGA,调用烧录在pynq‑z2中LCDpackage.py文件,通过 PYNQ 板上的 Arduino 接口与液晶显示屏进行交互实现初始化 LCD、显示 IP 地址、LCD 通信和清除 LCD的功能过程;其中,将LCDpackage库调用时命名为lcd,使用lcd.lcd_string()函数将每个非核心FPGA的状态值Si在其对应的液晶显示屏上进行显示。