CN117667045A - 集成深度学习和plc语言的边缘控制器及代码生成方法 - Google Patents
集成深度学习和plc语言的边缘控制器及代码生成方法 Download PDFInfo
- Publication number
- CN117667045A CN117667045A CN202311709483.8A CN202311709483A CN117667045A CN 117667045 A CN117667045 A CN 117667045A CN 202311709483 A CN202311709483 A CN 202311709483A CN 117667045 A CN117667045 A CN 117667045A
- Authority
- CN
- China
- Prior art keywords
- deep learning
- model
- learning model
- edge controller
- code
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013135 deep learning Methods 0.000 title claims abstract description 52
- 238000013136 deep learning model Methods 0.000 claims abstract description 100
- 238000012549 training Methods 0.000 claims abstract description 65
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 59
- 230000006870 function Effects 0.000 claims abstract description 48
- 238000012360 testing method Methods 0.000 claims description 20
- 238000005457 optimization Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 12
- 230000015654 memory Effects 0.000 claims description 10
- 238000013527 convolutional neural network Methods 0.000 claims description 9
- 238000013256 Gubra-Amylin NASH model Methods 0.000 claims description 6
- 230000002787 reinforcement Effects 0.000 claims description 5
- 230000004913 activation Effects 0.000 claims description 4
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 238000003062 neural network model Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 4
- 230000006403 short-term memory Effects 0.000 claims description 3
- 230000007787 long-term memory Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 10
- 230000003993 interaction Effects 0.000 abstract description 7
- 230000004044 response Effects 0.000 abstract description 3
- 230000002159 abnormal effect Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000008485 antagonism Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010408 sweeping Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
- G06N3/0455—Auto-encoder networks; Encoder-decoder networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0475—Generative networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/094—Adversarial learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明涉及工业控制技术领域,尤其涉及一种同时集成深度学习模型和和PLC语言的边缘控制器装置及代码生成方法,边缘控制器装置包括编译器,编译器将PLC逻辑程序代码转换成Python语言代码;用户可以通过信息配置单元输入深度学习算法的配置信息,通过模型训练单元得到训练好的深度学习模型,最后通过代码生成器,将训练好的深度学习模型与Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码,这样该边缘控制器装置集合成PLC的控制逻辑和深度学习模型,使得该边缘控制器装置同时具备PLC的控制功能以及深度学习模型的数据处理功能,减少了PLC和边缘控制器之间的数据交互,提高了工业控制效率以及响应速度。
Description
技术领域
本发明涉及工业控制技术领域,尤其涉及一种集成深度学习模型和PLC语言的边缘控制器装置及代码生成方法。
背景技术
目前工业控制领域越来越多需要使用支持深度学习等人工智能算法的边缘控制器。例如为了监测风机异常振动、桨叶扫塔、螺栓松动等异常情况,一般需要通过图像采集设备采集监测处的图像,然后将采集的监测处的图像传输至具有深度学习算法的边缘控制器,使用基于深度学习算法的边缘控制器对图像进行特征识别,并将识别结果通过网络反馈到PLC(Programmable Logic Controller,可编程逻辑控制器),如果识别结存在异常情况,PLC根据异常情况采取停机等操作,从而避免更严重的事故发生。
作为工业自动化领域最重要的控制设备PLC,常常需要与边缘控制器进行实时大量数据交互,极大的降低了工业控制效率,并且边缘控制器和PLC之间的数据传输存在一定的时延,这还会导致PLC的控制不够及时,存在一定的安全隐患。
发明内容
本发明的主要目的在于提供一种集成深度学习模型的边缘控制器装置及代码生成方法。
一方面,本发明提供一种集成深度学习模型和PLC语言的边缘控制器装置,所述边缘控制器装置包括采用Python语言构建的操作***,边缘控制器装置还包括:
编译器,用于将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;
信息配置单元,所述信息配置单元包括信息配置界面,所述信息配置界面用于接收用户输入的深度学习算法的配置信息;
模型训练单元,用于根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
代码生成器,用于将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码;
代码运行单元,所述代码运行单元设置在所述操作***上,该代码运行单元用于执行边缘控制器的逻辑程序代码。
可选地,所述信息配置单元包括内置的多种深度学习算法框架以及多种深度学习算法模型。
可选地,所述信息配置单元包括预设的PyTorch算法框架和TensorFlow算法框架;
所述信息配置单元还包括预设的循环神经网络模型、长短期记忆模型、卷积神经网络模型、自编码器模型、GAN模型、深度强化学习模型。
可选地,所述算法配置信息包括选择深度学习算法模型类型、选择算法模型的类型、设置的模型参数、设置的训练集和测试集。
可选地,所述模型参数包括输入输出格式、隐藏层的数量、激活函数类型、损失函数、优化函数和学习率。
可选地,所述代码运行单元包括提前编译模块和即时编译模块;
所述提前编译模块,用于在所述边缘控制器的逻辑程序代码执行之前,将所述边缘控制器的逻辑程序代码编译成机器码;
即时编译模块,用于在所述边缘控制器的逻辑程序代码执行时,实时将所述边缘控制器的逻辑程序代码编译成机器码。
可选地,所述模型训练单元具体用于:
获取用户选择的目标深度学习模型类型、损失函数、优化函数和学习率;
获取用户输入的训练集,采用所述训练集对所述目标深度学习模型类型进行训练,在训练过程中采用所述优化函数和学习率不断更新所述目标深度学习模型类型的模型参数,直到所述损失函数的值小于预设值,得到所述训练好的深度学习模型;
获取输入的测试集,采用所述测试集对所述训练好的深度学习模型进行测试,并根据测试结果评估所述训练好的深度学习模型的性能,并在所述训练好的深度学习模型的性能未达到预设要求时,调整该深度学习模型的超参数和/或损失函数后继续训练该深度学习模型,直到该深度学习模型的性能达到预设要求。
另一方面,本发明还提供一种用于边缘控制器的逻辑程序代码的生成方法,该方法应用于边缘控制器装置中,所述边缘控制器装置为上述任一项所述的边缘控制器装置;
所述逻辑程序代码的生成方法包括:
获取PLC逻辑程序代码,将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;
接收用户输入的深度学习算法配置信息;
根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码。
另一方面,本发明还提供一种电子设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序配置为实现如上所述的用于边缘控制器的逻辑程序代码的生成方法的步骤。
另一方面,本发明还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的用于边缘控制器的逻辑程序代码的生成方法的步骤。
依据本发明提供的集成深度学习模型和PLC语言的边缘控制器装置,其包括编译器,编译器用于将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;用户可以通过信息配置单元输入的深度学习算法的配置信息,进而通过模型训练单元得到训练好的深度学习模型,最后代码生成器,将训练好的深度学习模型与Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码,代码运行单元设置在操作***上,该代码运行单元用于执行边缘控制器的逻辑程序代码,这样该边缘控制器装置集合成PLC的控制逻辑和深度学习模型,使得该边缘控制器装置同时具备PLC的控制功能以及深度学习模型的数据处理功能,减少了PLC和边缘控制器之间的数据交互,提高了工业控制效率以及控制的响应速度。
附图说明
图1为本发明实施例提供的集成深度学习模型和PLC语言的边缘控制器装置的结构示意图;
图2为本发明实施例提供的边缘控制器装置工作流程示意图;
图3为本发明实施例提供的模型训练方法流程图;
图4为本发明实施例提供的代码运行单元的结构示意图;
图5为本发明实施例提供的代码的生成方法流程图;
图6为本发明实施例提供的电子设备的实体结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。在本发明的文字描述中,字符“/”一般表示前后关联对象是一种“或”的关系。
现有技术中的PLC和具有人工智能算法的边缘控制器在物理上是独立的两个***,PLC和该边缘控制器之间通过信号线通信,以实现信息交互,要么虽然PLC和该边缘控制器表面看起来是物理结构上统一,但是在内部逻辑上PLC和该边缘控制器也是独立运行的,两者之间还是需要信息交互,这样增加了数据传输的资源消耗,也由于时延等影响PLC的效率。
为了克服上述技术缺陷,本发明提供一种集成深度学习模型和PLC语言的边缘控制器装置,该边缘控制器装置将PLC逻辑程序(IEC代码)和人工智能深度学习算法模型有机的统一起来,组成一个统一的智能控制***,用户只需要进行简单的信息配置操作即可在IEC代码中调用深度学习模型,采用深度学习模型对数据进行处理,PLC逻辑可以根据深度学习模型的处理结果进行工业控制,提高了工业控制的效率。
下面,将通过下述几个具体的实施例对本发明提供的边缘控制器装置进行详细地说明。可以理解的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本发明实施例提供的集成深度学习模型和PLC语言的边缘控制器装置的结构示意图,图2为本发明实施例提供的边缘控制器装置工作流程示意图,请参考图1和图2所示,边缘控制器装置包括采用Python语言构建的操作***101,另外,该边缘控制器装置还包括:
编译器102,用于将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;
信息配置单元103,所述信息配置单元包括信息配置界面,所述信息配置界面用于接收用户输入的深度学习算法的配置信息;
模型训练单元104,用于根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
代码生成器105,用于将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码;
代码运行单元106,所述代码运行单元设置在所述操作***上,该代码运行单元用于执行边缘控制器的逻辑程序代码。
可以看出,本实施例中通过编译器102将PLC逻辑程序代码转换成Python语言的逻辑程序代码;同时用户可以通过信息配置单元103输入的深度学习算法的配置信息,进而通过模型训练单元104得到训练好的深度学习模型,最后代码生成器105,将训练好的深度学习模型与Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码,代码运行单元106设置在操作***上,该代码运行单元106执行边缘控制器的逻辑程序代码,这样该边缘控制器装置集合成PLC的控制逻辑和深度学习模型,使得该边缘控制器装置同时具备PLC的控制功能以及深度学习模型的数据处理功能,减少了PLC和边缘控制器之间的数据交互,提高了工业控制效率以及控制的响应速度。
示例的,PLC逻辑程序代码一般采用IEC61131-3编程语言编写,因此本实施例中的编译器102可以选用IEC61131-3编程语言编译器,该编译器102可以将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码。这样对于PLC用户来说,即使不懂Python语言,也可以采用熟知的IEC61131-3编程语言来输入指令或者配置信息,简化了边缘控制器装置的使用难度。
在一种实施例中,可以采用LLVM(Low Level Virtual Machine)来构造IEC61131-3编程语言编译器,基于LLVM的Python后端Clang,对PLC内部的逻辑程序代码(具体为ST代码)进行编译成Python字节码。Clang是一个C和C++编程语言的编译器前端,是基于LLVM平台构建的。它可以编译C语言和C++语言,并生成汇编代码或二进制代码。虽然Clang的主要目标不是Python代码,但它可以被修改为支持ST代码到Python代码的转换,包括语法解析和转换,优化算法等。
具体的,将PLC的ST代码编译成Python代码包括:
1.1、利用ST语法,开发一个语法分析器解析ST代码,并生成语法树;
1.2、利用Clang解析已生成的语法树,并将其转换为Python的抽象语法树;
1.3、对Python的抽象语法树进行优化,比如删除无用的语句、函数内联等;
1.4、生成Python代码或Python字节码。
在一种实施例中,可以采用LLVM实现ST代码编译成python代码,LLVM是模块化、可重用的编译工具链。在使用LLVM实现ST代码(Structured Text code,结构化文本代码,一种常用的PLC编程语言)编译成Python代码之前,需要先了解ST和Python这两种编程语言的语法和特点。
ST是PLC编程语言,具有规范的语法和编程范式,相较于Python等高级语言而言更适合对实时性有较高要求的场景。ST的代码需要将它转换成Python代码,具体包括以下步骤:
2.1、解析ST代码:读取ST代码,分析其语法,生成语法树。
2.2、将语法树转换为Python代码:根据ST语法树,递归地将其转换为Python代码。这通常涉及到一些语法上的翻译,包括数据类型、函数、程序结构等。
2.3、对Python代码进行优化:优化是编译器的一个关键步骤,通常有很多种优化策略,包括代码生成时的寄存器分配、代码跟踪、循环展开、内联函数等。优化的目的是使得生成的Python代码更高效。
在这个过程中,LLVM的主要作用是作为代码生成工具,生成Python字节码。它在代码生成时可以根据特定的语法标准和优化策略生成高效的代码,与Python自带的代码生成相比,LLVM可以生成更高效的代码。同时,在转换ST到Python期间,LLVM还进行一些优化操作。使用LLVM实现ST代码编译成Python代码是一个较为复杂的过程,包括解析和转换语法,对目标代码进行优化和字节码生成等多个阶段,此处不再一一赘述。
在一种实施例中,可以先将梯形图(LD)语言转换为ST语言,然后再将ST编译成Python代码。
其中,本实施例的信息配置单元103包括内置的多种深度学习算法框架以及多种深度学习算法模型。
在一种实施例中,信息配置单元103包括预设的PyTorch算法框架和TensorFlow算法框架。
其中,PyTorch是一个开源的机器学***台。
PyTorch框架提供了许多用于构建和训练深度学习模型的工具和实用程序。例如,PyTorch提供了丰富的张量操作函数,可以对数据进行非常高效的操作。它还提供了自动微分功能,可以在构建模型和优化器时帮助用户轻松地更新和调整模型的参数,从而提高模型的准确性。
与其他深度学习框架相比,PyTorch具有更为灵活、易于调试且更少限制性的优势。PyTorch的设计理念是直接使用Python语言进行操作,简化用户的使用流程和学习成本,让用户更加容易地将自己的深度学习想法直接实现在代码中。这种设计也使得PyTorch更为易于扩展,开发者可以使用Python的各种工具和库,加速模型的训练和开发。
TensorFlow是由Google公司开发的深度学***台进行模型的训练和部署。
TensorFlow的核心组件是张量(Tensor),可以看作是多维数组的扩展,是深度学习计算中的基础元素。TensorFlow的编程模型使用数据流图(Data Flow Graph)来表示计算过程,在数据流图中,节点表示计算操作,边表示数据的流向。TensorFLow采用了延迟执行的方式,即在定义完计算图后,需要使用会话(Session)来运行计算图,会话会负责分配计算任务和协调不同设备上的计算资源。TensorFLow还提供了许多丰富的工具和库,如TensorBoard、Keras等,方便用户进行模型可视化和应用开发等。
目前,TensorFlow得到了广泛的应用,被应用于各种领域,如自然语言处理、计算机视觉、语音识别等。其特别之处在于高度的可扩展性、跨平台支持和深度学习模型的高度自定义性,这些使得TensorFlow成为了当今最重要的深度学习框架之一。
本实施例的信息配置单元103中集成PyTorch和TensorFlow两种深度学习算法框架,用户可以自行选择采用那种深度学习算法框架。
进一步的,所述信息配置单元103还包括预设的循环神经网络模型(RNN)、长短期记忆模型(LSTM)、卷积神经网络模型(CNN)、自编码器模型(Autoencoder)、GAN模型、深度强化学习模型等。
循环神经网络(RNN)和长短期记忆(LSTM):这两种模型可以通过对振动信号进行建模来监测异常状态。RNN和LSTM可以捕捉时序数据的动态变化,利用振动信号的时间序列数据训练模型,从而检测可能的异常状态。
卷积神经网络(CNN):CNN是一种适合于处理图像和序列数据的神经网络,但它也可以应用于处理振动信号。通过将振动信号的震动加速度数据作为输入,CNN可以学习振动信号的空间特征和时序特征,从而监测异常振动状态。
自编码器(Autoencoder):自编码器是一种用于无监督学习的神经网络模型,可以用于监测振动数据中的异常。自编码器可以通过学习振动信号的正常数据模式,检测自己从未见过的异常状态,因此常用于振动信号异常监测。
GAN模型(生成对抗网络):GAN模型可以通过学习正常振动数据分布的生成模型,生成和真实异常振动数据非常相似的数据点,并且在检测到异常数据时进行训练。因此,GAN模型常用于振动信号异常检测。
深度强化学习模型:基于深度强化学习的方法通常包括智能代理、环境和奖励,可以用于学习和探索异常振动信号,并根据给予的奖励修正其行为策略,最终通过交互学习的方式实现异常状态监测。
在本实施例中,用户可以根据需要处理的信号类型和特点选择合适的深度学习算法模型。
其中,信息配置单元103的主要作用还在于提供一个信息配置界面,该信息配置界面用于接收用户输入的深度学习算法的配置信息,例如信息配置界面包括信息输入框、信息选择框等,用户可以通过自己输入和选择实现配置信息的输入。
在一种实施例中,用户可以通过信息配置界面选择深度学习算法模型类型、选择算法模型、设置模型参数以及输入训练集和测试集等。具体可以参考以下表1所示:
表1
从上述表1可以看出,算法配置信息包括选择深度学习算法模型类型、选择算法模型的类型、设置的模型参数、设置的训练集和测试集等。其中,模型参数包括输入输出格式、隐藏层的数量、激活函数类型、损失函数、优化函数和学习率等。
模型训练单元104根据用户输入的配置信息,通过优化计算模型的参数,使得模型在给定的训练数据上预测结果的误差尽可能小,以得到训练好的深度学习模型。
在一种实施例中,图3为本发明实施例提供的模型训练方法流程图,请参考图3所述,该模型训练单元104具体用于:
301、获取用户选择的目标深度学习模型类型、损失函数、优化函数和学习率;
302、获取用户输入的训练集,采用所述训练集对所述目标深度学习模型类型进行训练,在训练过程中采用所述优化函数和学习率不断更新所述目标深度学习模型类型的模型参数,直到所述损失函数的值小于预设值,得到所述训练好的深度学习模型;
303、获取输入的测试集,采用所述测试集对所述训练好的深度学习模型进行测试,并根据测试结果评估所述训练好的深度学习模型的性能,并在所述训练好的深度学习模型的性能未达到预设要求时,调整该深度学习模型的超参数和/或损失函数后继续训练该深度学习模型,直到该深度学习模型的性能达到预设要求。
在一种实施例中,深度学习算法训练方法包括以下几个步骤:
准备数据:准备好训练集和测试集,并对数据进行清洗、处理和预处理,使其适合模型的训练。
搭建模型:选择适合任务的深度学习模型,确定模型的输入输出形式、隐藏层的数量和激活函数等。
定义损失函数:选择适合的损失函数,用于衡量模型在训练数据上的表现,如均方误差、交叉熵等。
选择优化函数和学习率:选择适合的优化函数和学习率,如随机梯度下降、Adam、Adagrad等,用于在训练过程中不断更新模型参数,以最小化损失函数的值。
训练模型:使用训练集对模型进行训练,不断调整模型的参数来最小化损失函数的值。在训练过程中,可以使用批量训练、数据增强、正则化等技术来加速训练并提高模型的泛化能力。
测试模型:在训练结束后,使用测试集对模型进行测试,评估模型的表现。可以使用准确率、召回率、F1值等指标来评估模型的性能。
调整模型:根据测试结果调整模型的超参数、损失函数等。如果模型表现不佳,可以通过增加数据、调整模型结构等方法来改善模型的表现。
部署模型:基于代码生产器,将训练后的深度学习的模型代码部署到Python语言的可行性代码中,以边缘控制器的深度学习算法和PLC的控制逻辑相融合,形成新的控制***。
其中,本实施例的代码生成器105,用于将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码。
可以看出,通过上述描述可知,本实施例的边缘控制器装置可以将PLC逻辑程序(IEC代码)和人工智能深度学习算法模型有机的统一起来,组成一个统一的智能控制***,用户只需要进行简单的信息配置操作即可在IEC代码中调用深度学习模型,采用深度学习模型对数据进行处理,PLC逻辑可以根据深度学习模型的处理结果进行工业控制,提高了工业控制的效率。
进一步的,图4为本发明实施例提供的代码运行单元的结构示意图,请参考图4所示,该代码运行单元106包括提前编译模块401和即时编译模块402。
提前编译模块401,用于在所述边缘控制器的逻辑程序代码执行之前,将所述边缘控制器的逻辑程序代码编译成机器码;
即时编译模块402,用于在所述边缘控制器的逻辑程序代码执行时,实时将所述边缘控制器的逻辑程序代码编译成机器码。
可以理解的是,本实施例的边缘控制器代码运行单元106运行时Python解析器可以基于Pyston v2实现。Pyston v2是一个开源的Python实现,是CPython的分支之一,由Dropbox开发。Pyston v2目标是提供一个高性能的Python解释器,以便执行Python代码更快,它是Python 3.8的超集,可以运行标准C Python库。Pyston v2遵循了Python的语言规范,因此它可以在大多数Python应用程序中无缝运行。
Pyston v2与其他Python解释器最大的不同之处在于其运行速度。它使用了许多高级编译技术来提高性能,包括Just-In-Time(JIT)和AOT编译和基于整个程序分析的优化。Pyston v2还使用了一些特殊的代码生成技术,以便在执行代码时动态生成高效的机器代码。
Pyston v2使用DynASM的低开销JIT和常规CPython优化,并改进构建过程。Pystonv2解析Python代码,并转换到LLVM中间表示(IR),然后IR通过LLVM优化器和LLVM JIT引擎,得到可执行的机器码。
兼容性方面,由于Pyston是CPython的分支,当今可用的最兼容的Python实现替代方案之一,Pyston支持CPython的所有功能和C API。
本实施例中使用AOT和JIT技术可以提高Python执行效率。AOT提前编译ahead-of-time compilation。在运行程序代码之前在单独的步骤中编译函数,生成可以独立分发的磁盘二进制对象。这是C、C++等语言中已知的传统编译类型。运行时没有编译开销。JIT即时编译Just In Time Compilation,在程序运行时不断检测统计,进行编译。AOT编译为CPU架构系列(例如“ARM64”)生成通用代码,而JIT编译为特定CPU型号生成优化的代码。以提高代码运行单元106的Python执行效率。
可以理解的是,代码运行单元106在运行时***中执行IEC任务的Python代码,IEC任务调用深度学习算法模型的外部库,可以采用深度学习模型对信息进行处理,然后根据深度学习模型输出的信息处理进行工业控制,这样将PLC逻辑程序(IEC代码)和人工智能深度学习算法模型有机的统一起来,组成一个统一的智能控制***,用户只需要进行简单的信息配置操作即可在IEC代码中调用深度学习模型,减少了原PLC和原边缘控制器之间的信息交互,也避免了信息传输的时延,提高了工业控制的效率。
另外,原PLC用户不需要直接写人工智能深度学习算法代码,只需要选择合适的深度学习框架和算法模型,设置输入、输出、模型的层数、层类型、数量等参数信息,经过上位机训练后,与边缘控制器的IEC逻辑代码一起下装到边缘控制器的运行时***执行。大大简化了深度学习人工智能算法在工控领域的应用难度,扩大了边缘控制器的使用范围。
工作时,边缘控制器中的IEC逻辑代码可以周期性调用深度学习算法,提供输入数据,执行周期任务后根据模型的输出结果执行不同的动作,完成项目功能。实现了IEC代码与深度学习算法模型的深度融合。
同时,从工业成本上来看,虽然边缘控制器的单机成本有所上升,但是其集成了普通PLC和智能边缘单元的所有功能,数据处理能力更强,且具备控制的功能,降低了整个项目的成本。
基于上述实施例提供的边缘控制器,本实施例提供一种用于边缘控制器的逻辑程序代码的生成方法,以下提供的代码的生成方法可与上述的边缘控制器对照理解。
图5为本发明实施例提供的代码的生成方法流程图,请参考图5所示,该代码的生成方法包括:
S501、获取PLC逻辑程序代码,将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码。
S502、接收用户输入的深度学习算法配置信息;
S503、根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
S504、将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码。
可以理解的是,通过上述代码生成方法,将PLC逻辑程序(IEC代码)和人工智能深度学习算法模型的代码有机的统一起来,组成一个统一的智能控制程序,执行该融合后的控制程序,可以采用深度学习模型对数据进行处理,PLC逻辑程序可以根据深度学习模型的处理结果进行工业控制,提高了工业控制的效率。
图6为本发明实施例提供的电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行上述的用于边缘控制器的逻辑程序代码的生成方法。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的用于边缘控制器的逻辑程序代码的生成方法。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的用于边缘控制器的逻辑程序代码的生成方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种同时集成深度学习模型和PLC语言的边缘控制器装置,所述边缘控制器装置包括采用Python语言构建的操作***,其特征在于,边缘控制器装置还包括:
编译器,用于将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;
信息配置单元,所述信息配置单元包括信息配置界面,所述信息配置界面用于接收用户输入的深度学习算法的配置信息;
模型训练单元,用于根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
代码生成器,用于将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码;
代码运行单元,所述代码运行单元设置在所述操作***上,该代码运行单元用于执行边缘控制器的逻辑程序代码。
2.如权利要求1所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述信息配置单元包括内置的多种深度学习算法框架以及多种深度学习算法模型。
3.如权利要求2所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述信息配置单元包括预设的PyTorch算法框架和TensorFlow算法框架;
所述信息配置单元还包括预设的循环神经网络模型、长短期记忆模型、卷积神经网络模型、自编码器模型、GAN模型、深度强化学习模型。
4.如权利要求1-3任一项所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述算法配置信息包括选择深度学习算法模型类型、选择算法模型的类型、设置的模型参数、设置的训练集和测试集。
5.如权利要求4所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述模型参数包括输入输出格式、隐藏层的数量、激活函数类型、损失函数、优化函数和学习率。
6.如权利要求1-3任一项所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述代码运行单元包括提前编译模块和即时编译模块;
所述提前编译模块,用于在所述边缘控制器的逻辑程序代码执行之前,将所述边缘控制器的逻辑程序代码编译成机器码;
即时编译模块,用于在所述边缘控制器的逻辑程序代码执行时,实时将所述边缘控制器的逻辑程序代码编译成机器码。
7.如权利要求1-3所述的集成深度学习模型和PLC语言的边缘控制器装置,其特征在于,所述模型训练单元具体用于:
获取用户选择的目标深度学习模型类型、损失函数、优化函数和学习率;
获取用户输入的训练集,采用所述训练集对所述目标深度学习模型类型进行训练,在训练过程中采用所述优化函数和学习率不断更新所述目标深度学习模型类型的模型参数,直到所述损失函数的值小于预设值,得到所述训练好的深度学习模型;
获取输入的测试集,采用所述测试集对所述训练好的深度学习模型进行测试,并根据测试结果评估所述训练好的深度学习模型的性能,并在所述训练好的深度学习模型的性能未达到预设要求时,调整该深度学习模型的超参数和/或损失函数后继续训练该深度学习模型,直到该深度学习模型的性能达到预设要求。
8.一种用于边缘控制器的逻辑程序代码的生成方法,该方法应用于边缘控制器装置中,所述边缘控制器装置为权利要求1-7任一项所述的边缘控制器装置;
所述逻辑程序代码的生成方法包括:
获取PLC逻辑程序代码,将IEC61131-3编程语言的PLC逻辑程序代码转换成Python语言的逻辑程序代码;
接收用户输入的深度学习算法配置信息;
根据所述用户输入的深度学习算法配置信息,采用预设的深度学习模型训练方法进行模型训练,得到训练好的深度学习模型;
将所述训练好的深度学习模型的代码封装成可被IEC代码调用的外部库,并将所述外部库的输入和输出从训练源修改为IEC代码源,以将所述训练好的深度学习模型与所述Python语言的逻辑程序代码相关联组成边缘控制器的逻辑程序代码。
9.一种电子设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序配置为实现如权利要求8所述的用于边缘控制器的逻辑程序代码的生成方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求8所述的用于边缘控制器的逻辑程序代码的生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311709483.8A CN117667045A (zh) | 2023-12-13 | 2023-12-13 | 集成深度学习和plc语言的边缘控制器及代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311709483.8A CN117667045A (zh) | 2023-12-13 | 2023-12-13 | 集成深度学习和plc语言的边缘控制器及代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667045A true CN117667045A (zh) | 2024-03-08 |
Family
ID=90067929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311709483.8A Pending CN117667045A (zh) | 2023-12-13 | 2023-12-13 | 集成深度学习和plc语言的边缘控制器及代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667045A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118312157A (zh) * | 2024-06-11 | 2024-07-09 | 杭州字节方舟科技有限公司 | 一种基于生成式ai的程序开发辅助方法 |
-
2023
- 2023-12-13 CN CN202311709483.8A patent/CN117667045A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118312157A (zh) * | 2024-06-11 | 2024-07-09 | 杭州字节方舟科技有限公司 | 一种基于生成式ai的程序开发辅助方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885545B (zh) | 用于实时数据流编程语言的工具和方法 | |
US9411559B2 (en) | Resolution of textual code in a graphical hierarchical model of a technical computing environment | |
CN110149800B (zh) | 一种用于处理与源程序的源代码相关联的抽象语法树的装置 | |
Santos et al. | Static-time extraction and analysis of the ROS computation graph | |
Abbott et al. | Model-based software synthesis | |
US20100037213A1 (en) | Grammar-based generation of types and extensions | |
CN117667045A (zh) | 集成深度学习和plc语言的边缘控制器及代码生成方法 | |
CN109143952A (zh) | 可编程逻辑控制器编程语言转换*** | |
US11675570B2 (en) | System and method for using a graphical user interface to develop a virtual programmable logic controller | |
US20220066409A1 (en) | Method and system for generating an artificial intelligence model | |
US8046202B1 (en) | Generation of intermediate representations based on user specified elements in a graphical model that enable simulation, propagation and code generation | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
CN110196720A (zh) | 一种Simulink生成动态链接库的优化方法 | |
CN107463421B (zh) | 一种静态流程模型的编译执行方法及*** | |
CN114217941A (zh) | 一种面向国产异构众核处理器的TensorFlow框架核心计算加速引擎 | |
CN112966433B (zh) | 一种基于即时编译的神经动力学仿真方法及装置 | |
WO2021007178A1 (en) | Techniques for defining and executing program code specifying neural network architectures | |
EP4073626B1 (en) | Method and system for generating engineering diagrams in an engineering system | |
Wiesmayr et al. | A model-based execution framework for interpreting control software | |
Attallah et al. | Towards a COSMIC FSM Programming Language Compiler. | |
EP3996009A1 (en) | Method and apparatus of converting schema in deep learning freamwork, and computer storage medium | |
Hartsell et al. | Workflow automation for cyber physical system development processes | |
JP5775386B2 (ja) | 並列化方法、システム、及びプログラム | |
KR101705996B1 (ko) | 자바스크립트 소스 코드를 최적화하기 위한 자바스크립트 소스 코드 정적 분석 장치 및 방법 | |
US8843906B1 (en) | Inferring data types from compiler call site |
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 |