CN112639637A - 控制***、控制方法以及控制程序 - Google Patents
控制***、控制方法以及控制程序 Download PDFInfo
- Publication number
- CN112639637A CN112639637A CN201980057265.6A CN201980057265A CN112639637A CN 112639637 A CN112639637 A CN 112639637A CN 201980057265 A CN201980057265 A CN 201980057265A CN 112639637 A CN112639637 A CN 112639637A
- Authority
- CN
- China
- Prior art keywords
- function module
- execution
- control
- module
- control unit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000000737 periodic effect Effects 0.000 abstract description 46
- 230000006870 function Effects 0.000 description 350
- 238000011161 development Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 21
- 238000004806 packaging method and process Methods 0.000 description 17
- 230000001360 synchronised effect Effects 0.000 description 13
- 238000009434 installation Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000010276 construction Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 239000000470 constituent Substances 0.000 description 3
- 238000005401 electroluminescence Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Images
Classifications
-
- 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/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0421—Multiprocessor system
-
- 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/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
- G05B19/0426—Programming the control sequence
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- 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
- G05B2219/00—Program-control systems
- G05B2219/20—Pc systems
- G05B2219/25—Pc structure of the system
- G05B2219/25032—CAN, canbus, controller area network bus
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明提供一种用于从周期执行型的控制程序中调出非周期执行型的功能模块的技术。控制***包括第一控制部、第二控制部(C1、C2),及保存控制器用的控制程序(210、211)的存储装置。控制程序(210、211)包含调出非周期执行型的功能模块(55A)的周期执行型的功能模块(55B)。第一控制部(C1)将周期执行型的功能模块(55B)的输入变量的值反映在非周期执行型的功能模块(55A)的引数中,将所述功能模块的执行开始命令输出至第二控制部(C2)。第二控制部(C2)将非周期执行型的功能模块(55A)的返回值输出至第一控制部(C1)。第一控制部(C1)将返回值反映在周期执行型的功能模块(55B)的输出变量中。
Description
技术领域
本公开涉及一种用于执行由不同种类的编程语言所规定的程序的技术。
背景技术
在各种制造现场中导入有可编程逻辑控制器(Programmable Logic Controller,PLC)等控制器。控制器是一种计算机,执行对应于制造装置或制造设备等所设计的控制程序。此种控制程序使用与控制器分开准备的支持装置来制作。
例如,日本专利特开2016-224557号公报(专利文献1)公开有一种用于制作利用图形化编程语言来记述的程序、及利用高级编程语言来记述的程序的减轻用户的负担的技术。
现有技术文献
专利文献
专利文献1:日本专利特开2016-224557号公报
发明内容
发明所要解决的问题
控制器的控制程序利用周期执行型的编程语言来记述。所谓周期执行型,是指每隔事先决定的周期重复执行控制程序的排头行~最终行的执行形态。即,在周期执行型的控制程序中,程序的执行周期得到保障。
存在想要从此种周期执行型的控制程序中调出利用非周期执行型的编程语言来记述的功能模块的期望。所谓非周期执行型,是指依次执行程序的各行的执行形态。在非周期执行型的功能模块中,从开始执行至结束为止的时间得不到保障。
本公开是为了解决如上所述的问题点而形成的发明,某一实施例中的目的是提供一种可从周期执行型的控制程序中调出非周期执行型的功能模块的控制***。另一实施例中的目的是提供一种从周期执行型的控制程序中调出非周期执行型的功能模块的控制方法。另一实施例中的目的是提供一种可从周期执行型的控制程序中调出非周期执行型的功能模块的控制程序。
解决问题的技术手段
在本公开的一例中,控制***包括用于保存控制器用的控制程序的存储装置。所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块。所述控制***包括:第一控制部,用于执行所述控制程序;以及第二控制部,用于执行所述非周期执行型的功能模块。所述第一控制部当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述周期执行型的功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部。所述第二控制部基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块的执行,基于所述非周期执行型的功能模块的执行已完成,而将所述非周期执行型的功能模块的返回值输出至所述第一控制部。所述第一控制部基于从所述第二控制部接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块的输出变量中。
根据所述公开,调出源的周期执行型的功能模块的输入变量被反映在调出对象的非周期执行型的功能模块的引数中。另外,调出对象的非周期执行型的功能模块的返回值被反映在调出源的周期执行型的功能模块的输出变量中。由此,所述控制***可从周期执行型的功能模块中调出非周期执行型的功能模块。
在本公开的一例中,所述第一控制部在从对所述第二控制部输出所述执行开始命令至接收所述返回值为止的期间,中断所述控制程序的执行。
根据所述公开,所述第一控制部可与周期执行型的控制程序的执行周期同步地执行非周期执行型的功能模块。
在本公开的一例中,所述第一控制部在从对所述第二控制部输出所述执行开始命令至接收所述返回值为止的期间,继续执行所述控制程序。
根据所述公开,由此第一控制部可不与周期执行型的控制程序的执行周期同步地执行非周期执行型的功能模块。
在本公开的一例中,所述周期执行型的功能模块的输出包含用于反映所述非周期执行型的功能模块的执行完成的输出变量。
根据所述公开,周期执行型的功能模块的执行结果被反映在调出源的非周期执行型的功能模块的输出变量中。
在本公开的一例中,所述第一控制部对照所述引数的数据类型来转换所述输入变量的值后,将所述输入变量的值反映在所述引数中。
根据所述公开,周期执行型的功能模块的输入变量的数据类型、与非周期执行型的功能模块的引数的数据类型之间的差异被吸收。
在本公开的一例中,所述第一控制部对照所述输出变量的数据类型来转换所述返回值后,将所述返回值反映在所述输出变量中。
根据所述公开,非周期执行型的功能模块的返回值的数据类型、与周期执行型的功能模块的输出变量的数据类型之间的差异被吸收。
在本公开的另一例中,提供一种包括第一控制部与第二控制部的控制***的控制方法。所述控制方法包括获取控制器用的控制程序的步骤。所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块。所述控制方法还包括:所述第一控制部执行所述控制程序的步骤;所述第一控制部当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述周期执行型的功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部的步骤;所述第二控制部基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块的执行,基于所述非周期执行型的功能模块的执行已完成,而将所述非周期执行型的功能模块的返回值输出至所述第一控制部的步骤;以及所述第一控制部基于从所述第二控制部接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块的输出变量中的步骤。
根据所述公开,调出源的周期执行型的功能模块的输入变量被反映在调出对象的非周期执行型的功能模块的引数中。另外,调出对象的非周期执行型的功能模块的返回值被反映在调出源的周期执行型的功能模块的输出变量中。由此,所述控制方法可从周期执行型的功能模块中调出非周期执行型的功能模块。
在本公开的另一例中,提供一种通过控制器来执行的周期执行型的控制程序。所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块。所述控制器包括第一控制部。以可与所述控制器通信的方式构成的外部机器、或所述控制器包括第二控制部。所述控制程序使所述第一控制部执行:执行所述控制程序的步骤;当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部的步骤;以及基于从所述第二控制部接收了所述非周期执行型的功能模块的执行结果,而将所述执行结果反映在所述周期执行型的功能模块的输出变量中的步骤。
根据所述公开,调出源的周期执行型的功能模块的输入变量被反映在调出对象的非周期执行型的功能模块的引数中。另外,调出对象的非周期执行型的功能模块的返回值被反映在调出源的周期执行型的功能模块的输出变量中。由此,所述控制程序可从周期执行型的功能模块中调出非周期执行型的功能模块。
发明的效果
在某一实施例中,可从周期执行型的控制程序中调出非周期执行型的功能模块。
附图说明
图1是表示控制***的装置结构的图。
图2是表示工厂自动化(Factory Automation,FA)***的***结构的一例的图。
图3是表示开发支援装置的硬件结构的一例的示意图。
图4是表示控制器的硬件结构的一例的示意图。
图5是表示外部机器的硬件结构的一例的框图。
图6是表示开发支援装置的功能结构的一例的图。
图7是用于说明程序分析部的功能的图。
图8是用于说明模块登记部的功能的图。
图9是概略性地表示非同步设定时的功能模块的生成过程的图。
图10是概略性地表示同步设定时的功能模块的生成过程的图。
图11是用于说明编辑部的功能的图。
图12是表示开发支援装置所执行的处理的一部分的流程图。
图13是表示各核的安装形态的具体例1的图。
图14是表示各核的安装形态的具体例2的图。
图15是表示各核的安装形态的具体例3的图。
图16是表示各核的功能结构的一例的图。
图17是概略性地表示利用委托部的委托处理的概念图。
图18是表示非同步执行调出对象的功能模块时的控制***的数据流的一例的图。
图19是表示同步执行调出对象的功能模块时的控制***的数据流的一例的图。
具体实施方式
以下,一边参照附图一边对本发明的各实施方式进行说明。在以下的说明中,对相同的零件及构成元件附加相同的符号。这些零件及构成元件的名称及功能也相同。因此,不重复关于这些零件及构成元件的详细的说明。
<A.应用例1>
首先,参照图1对本发明的应用例进行说明。图1是表示实施方式的控制***10的装置结构的图。
控制***10包含:用于执行周期执行型的程序的核C1(第一控制部)、用于执行非周期执行型的程序的核C2(第二控制部)、以及存储装置208。
核C1及核C2分别在不同种类的操作***(Operating System,OS)上运行。典型的是核C1在实时OS等第一种OS上运行,利用所述OS的基本功能。另一方面,核C2在林纳克斯(Linux)(注册商标)或视窗(Windows)(注册商标)等第二种OS上运行,利用所述OS的基本功能。
在本说明书中,将包含两个以上的核C1、C2(第一控制部、第二控制部)的***称为“控制***”。即,“控制***”的概念包括:包含至少两个核C1、C2的一个装置,或包含具有核C1的第一装置与具有核C2的第二装置的***。
存储装置208是非易失性的存储器,保存作为控制器用的控制程序的一种的用户程序210。用户程序210利用周期执行型的编程语言来记述。所谓周期执行型,是指每隔事先决定的周期重复执行控制程序的排头行~最终行的执行形态。即,在周期执行型的控制程序中,程序的执行周期得到保障。作为周期执行型的编程语言,例如可列举梯形语言或结构化文本(Structured Text,ST)语言等。
本实施方式的开发支援装置100可从周期执行型的用户程序210中调出由非周期执行型的编程语言所规定的非周期执行型的功能模块55A。所谓非周期执行型,是指依次执行程序的各行的执行形态。在非周期执行型的功能模块中,从开始执行至结束为止的时间得不到保障。作为非周期执行型的编程语言,例如可列举:C语言、C++、Java(注册商标)、Python等。
在步骤S1中,核C1每隔事先决定的控制周期重复执行用户程序210。用户程序210包含用于调出功能模块55A的周期执行型的功能模块55B。功能模块55B是功能模块55A的包装模块。
在步骤S2中,核C2当在用户程序210的执行中执行了周期执行型的功能模块55B时,将非周期执行型的功能模块55A的执行开始命令输出至核C2。此时,核C2将功能模块55B的输入变量“in1”、输入变量“in2”反映在功能模块55A的引数“in1”、引数“in2”中。
在步骤S3中,核C2基于从核C1受理了功能模块55A的执行开始命令,而开始功能模块55A的执行。此时,核C2依次执行功能模块55A的各行。
在步骤S4中,核C2基于功能模块55A的执行已完成,而将功能模块55A的执行结果输出至核C1。此时,核C1将功能模块55A的返回值“ret”反映在功能模块55B的输出变量“ret”中。
所谓“变量”,是指对在控制器用的控制程序中得到处理的数据给予的识别符。典型的是,“变量”是表示控制器或控制器的控制对象的状态的数据。若换一种说法,则“变量”是指值与控制器或控制器的控制对象的状态联动地变化的数据。“变量”的概念可包含表示一个值的数据、作为排列来表示的数据、作为结构体来表示的数据,可在控制程序中规定的各种数据。
如上所述,控制***10包含执行周期执行型的用户程序210的核C1、及接受来自核C1的委托而执行非周期执行型的功能模块55A的核C2。通过使执行形态不同的程序在不同的核中执行,而可从周期执行型的控制程序中调出非周期执行型的功能模块。
<B.FA***1的***结构>
图2是表示FA***1的***结构的一例的图。参照图2对FA***1的***结构进行说明。
FA***1是用于使生产步骤自动化的***。FA***1包含:一个以上的开发支援装置100、一个以上的控制器200、一个以上的驱动机器300、以及一个以上的外部机器400。
开发支援装置100、控制器200、及外部机器400与网络NW1连接。网络NW1采用以太网(EtherNET)(注册商标)等。
控制器200及驱动机器300与网络NW2连接。网络NW2优选采用保证数据的到达时间的进行固定周期通信的现场网络。作为此种进行固定周期通信的现场网络,已知有以太网控制自动化技术(Ethernet Control Automation Technology,EtherCAT)(注册商标)、以太网/网际协议(EtherNet/Internet Protocol,EtherNet/IP)(注册商标)、注册商标)、康博网(CompoNet)(注册商标)等。
驱动机器300包含用于使生产步骤自动化的各种产业用机器。作为一例,驱动机器300包含:机器人控制器300A、或伺服驱动器300B、或由机器人控制器300A控制的手臂机器人301A、或由伺服驱动器300B控制的伺服马达301B等。另外,驱动机器300也可以包含用于拍摄工件的视觉传感器、或在生产步骤中利用的其他机器等。
设计者通过执行开发支援程序50,而可启动用户程序210的开发工具。设计者可在已启动的开发工具上设计用户程序210。此时,设计者可将图1中所说明的作为包装模块的功能模块55B编入用户程序210中。经设计的用户程序210得到编写后被转送至控制器200。
控制器200基于受理了用户程序210的执行开始命令,而开始用户程序210的执行,按照用户程序210中所规定的控制命令来控制驱动机器300。当在用户程序210的执行中,执行了作为包装模块的功能模块55B时,控制器200将对应的功能模块55A的执行开始命令发送至外部机器400。外部机器400基于接收了所述执行开始命令,而开始功能模块55A的执行。其后,外部机器400将功能模块55A的执行结果发送至控制器200。
另外,以上对将功能模块55A的执行委托给外部机器400的例子进行了说明,但功能模块55A的执行未必需要委托给外部机器400。其后对不将功能模块55A的执行委托给外部机器400的模式进行叙述。
<C.硬件结构>
参照图3~图5,对图2中所示的开发支援装置100、控制器200、及外部机器400的硬件结构依次进行说明。
(C1.开发支援装置100的硬件结构)
首先,参照图3对开发支援装置100的硬件结构进行说明。图3是表示开发支援装置100的硬件结构的一例的示意图。
作为一例,开发支援装置100包含依据通用的计算机架构所构成的计算机。开发支援装置100包含:中央处理器(Central Processing Unit,CPU)或微处理器(Micro-Processing Unit,MPU)等控制装置102、主存储器104、通信接口111、输入/输出(Input/Output,I/O)接口114、显示接口117、以及非易失性的存储装置120。这些组件经由内部总线125而相互可通信地连接。
控制装置102将已被保存在存储装置120中的开发支援程序50在主存储器104中展开并加以执行,由此启动用户程序210(参照图2)的开发工具。存储装置120除保存开发支援程序50以外,也保存用于生成作为包装模块的功能模块55B(参照图1)的各种数据56。
通信接口111与其他通信机器之间经由网络来交换数据。所述其他通信机器例如包含控制器200、外部机器400、服务器等。开发支援装置100也能够以可经由通信接口111而从所述其他通信机器下载开发支援程序50等各种程序的方式构成。
I/O接口114与操作部115连接,取入来自操作部115的表示用户操作的信号。操作部115典型的是包含键盘、鼠标、触摸屏、触摸垫等,受理来自用户的操作。操作部115可以与开发支援装置100一体地构成,也可以与开发支援装置100分开构成。
显示接口117与显示部118连接,按照来自控制装置102等的指令,对显示部118送出用于显示图像的图像信号。显示部118包含液晶显示器(Liquid Crystal Display,LCD)或有机电致发光(Electro Luminescence,EL)显示器等,对用户提示各种信息。显示部118可以与开发支援装置100一体地构成,也可以与开发支援装置100分开构成。
(C2.控制器200的硬件结构)
继而,参照图4对控制器200的硬件结构进行说明。图4是表示控制器200的硬件结构的一例的示意图。
控制器200包含:通信接口201、CPU或MPU等控制装置202、芯片组204、主存储器206、非易失性的存储装置208、内部总线控制器222、现场总线控制器224、以及存储卡接口239。
控制装置202读出已被保存在存储装置208中的控制程序211,在主存储器206中展开并加以执行,由此实现对于机器人控制器300A或伺服驱动器300B等驱动机器300的任意的控制。控制程序211包含用于控制控制器200的各种程序。作为一例,控制程序211包含***程序209及用户程序210等。***程序209包含用于提供数据的输入/输出处理或执行时机控制等控制器200的基本的功能的命令代码。用户程序210是已被从开发支援装置100下载的程序。用户程序210对应于控制对象而任意地设计,包含用于执行序列控制的序列程序210A及用于执行运动控制的运动程序210B。
芯片组204控制各组件,由此实现作为控制器200整体的处理。
存储装置208保存控制程序211、或在控制器200中使用的各种数据212。
内部总线控制器222是与通过内部总线来与控制器200连结的各种设备交换数据的接口。作为此种设备的一例,连接有I/O单元226。
现场总线控制器224是与通过现场总线来与控制器200连结的各种驱动机器300交换数据的接口。作为此种设备的一例,连接有机器人控制器300A或伺服驱动器300B。除此以外,也可以连接视觉传感器等驱动机器。
内部总线控制器222及现场总线控制器224可对经连接的设备给予任意的指令,并且获取设备所管理的任意的数据。另外,内部总线控制器222及/或现场总线控制器224也作为用于与机器人控制器300A或伺服驱动器300B之间交换数据的接口发挥功能。
通信接口201控制通过各种有线网络/无线网络的数据的交换。控制器200经由通信接口201而与开发支援装置100或外部机器400进行通信。
存储卡接口239以可装卸作为外部存储介质的一例的存储卡240(例如,安全数字(Secure Digital,SD)卡)的方式构成,可对存储卡240写入数据,从存储卡240读出数据。
(C3.外部机器400的硬件结构)
继而,参照图5对外部机器400的硬件结构进行说明。图5是表示外部机器400的硬件结构的一例的框图。
外部机器400包含具有通用的架构的硬件结构。即,外部机器400作为一种个人计算机来安装。但是,也可以使用专用硬件而非通用的硬件来安装外部机器400。
更具体而言,外部机器400包含:CPU或MPU等控制装置402、主存储器404、非易失性的存储装置410、通信接口412、I/O接口414、以及显示接口420。这些组件经由内部总线425而相互可进行数据通信地连接。
控制装置402读出已被保存在存储装置410中的控制程序(未图示),在主存储器404中展开并加以执行,由此控制外部机器400。即,控制装置402通过与主存储器404及存储装置410联系,而实现执行控制运算的控制部。
通信接口412、I/O接口414、及现场总线接口416促成外部机器400与其他通信机器的数据的交换。
更具体而言,通信接口412促成经由网络NW1(参照图1)等的与控制器200的通信。在通信接口412,例如可采用可进行按照以太网的通信的组件。
I/O接口414与操作部415连接,取入来自操作部415的表示用户操作的信号。操作部415典型的是包含键盘、鼠标、触摸屏、触摸垫等,受理来自用户的操作。操作部415可以与外部机器400一体地构成,也可以与外部机器400分开构成。
显示接口420与显示部421连接,按照来自控制装置402等的指令,对显示部421送出用于显示图像的图像信号。显示部421包含LCD或有机EL显示器等,对用户提示各种信息。显示部421可以与外部机器400一体地构成,也可以与外部机器400分开构成。
<D.开发支援装置100的功能结构>
参照图6对开发支援装置100的功能结构进行说明。图6是表示开发支援装置100的功能结构的一例的图。
开发支援装置100包含作为硬件结构的控制装置102与存储装置120。控制装置102包含作为功能结构的程序分析部152、模块登记部154、包装模块生成部156、编辑部158、以及构建部160。存储装置120保存有所述各种数据56(参照图3)、及用户程序210。各种数据56包含所述数据类型的对应关系121、所述定义信息122、包装模块126、以及模块对应关系127。
以下,对程序分析部152、模块登记部154、包装模块生成部156、编辑部158、以及构建部160的功能依次进行说明。
(D1.程序分析部152)
首先,参照图7对图6中所示的程序分析部152进行说明。图7是用于说明程序分析部152的功能的图。
程序分析部152对非周期执行型的程序60进行分析,自动生成所述定义信息122(参照图1)。更具体而言,程序分析部152根据非周期执行型的程序60来确定功能模块55A(例如,函数)的宣言部分。继而,程序分析部152从已确定的宣言部分中提取功能模块55A的模块名、功能模块55A的引数的数据类型、功能模块55A的引数的变量名、以及功能模块55A的返回值的数据类型。在图7的例子中,作为模块名,提取“sample(样本)”,作为引数的数据类型,提取“float(单精度)”型及“float(单精度)”型,作为引数的变量名,提取“in1”及“in2”,作为返回值的数据类型,提取“bool(布尔)”。
进而,程序分析部152对功能模块55A的内部的记述进行分析,获取返回值的变量名。作为一例,程序分析部152探索事先决定的关键字(例如“return(返回)”),将紧接在所述关键字之后的记述作为返回值的变量名来获取。在图7的例子中,作为返回值的变量名,获取“ret”。
程序分析部152将模块名“sample”与引数的数据类型“float”、数据类型“double”,引数的变量名“in1”、变量名“in2”,返回值的数据类型“bool”,以及返回值的变量名“ret”建立对应后,将它们写入定义信息122中。定义信息122例如被保存在开发支援装置100的存储装置120中。
另外,在图7的例子中,在程序60中规定有功能模块55A的处理内容,但也可以在程序60中仅规定有功能模块55A的宣言部。在此情况下,程序分析部152读入仅规定有功能模块55A的宣言的作为头文件的程序60。所述头文件包含功能模块55A的模块名、功能模块55A的引数的数据类型、功能模块55A的引数的变量名、以及功能模块55A的返回值的数据类型。
(D2.模块登记部154)
继而,参照图8对图6中所示的模块登记部154进行说明。图8是用于说明模块登记部154的功能的图。
以下,对与非周期执行型的功能模块55A(参照图1)相关的各种信息的登记的例子进行说明,但登记对象的功能模块并不限定于功能模块55A。
模块登记部154例如为由开发支援程序50所提供的登记画面32。登记画面32包含输入区域33A~输入区域33E。对于登记画面32的操作例如可使用开发支援装置100的操作部115(参照图3)来进行。
输入区域33A受理功能模块55A的名称的输入。所述名称的输入例如可通过文字输入来进行。
输入区域33B受理功能模块55A的编程语言的种类的输入。作为一例,将展开按钮B1与输入区域33B建立了对应。若设计者按下展开按钮B1,则事先决定的各种编程语言被列表显示。设计者从被列表显示的编程语言中选择一个编程语言,由此可指定功能模块55A的编程语言的种类。
输入区域33C受理与功能模块55A的引数相关的各种信息的输入。作为一例,将追加按钮B3与输入区域33C建立了对应。每当设计者按下追加按钮B3时,均在输入区域33C中追加引数的登记栏。设计者可在引数的登记栏中输入引数的数据类型、及引数的变量名。将展开按钮B4与各个引数的登记栏建立了对应。若设计者按下展开按钮B4,则可在已在输入区域33B中指定的编程语言中利用的数据类型被列表显示。设计者从已被列表显示的数据类型中选择一个数据类型,由此可指定引数的数据类型。进而,设计者可将引数的变量名与已指定的数据类型建立对应来输入。变量名的输入例如可通过文字输入来进行。
输入区域33D受理与功能模块55A的返回值相关的各种信息的输入。作为一例,将追加按钮B7与输入区域33D建立了对应。每当设计者按下追加按钮B7时,均在输入区域33D中追加返回值的登记栏。设计者可在返回值的登记栏中输入返回值的数据类型、及返回值的变量名。将展开按钮B8与各个返回值的登记栏建立了对应。若设计者按下展开按钮B8,则可在已在输入区域33B中指定的编程语言中利用的数据类型被列表显示。设计者从已被列表显示的数据类型中选择一个数据类型,由此可指定返回值的数据类型。进而,设计者可将返回值的变量名与已指定的数据类型建立对应来输入。变量名的输入例如可通过文字输入来进行。
输入区域33E受理关于是否使功能模块55A的执行与控制器200的执行周期同步的选择。作为一例,将追加按钮B10与输入区域33E建立了对应。若设计者按下追加按钮B10,则“是(YES)”及“否(NO)”的选择项被列表显示。在设计者选择了“是”的情况下,功能模块55A的执行与控制器200的执行周期不同步。在设计者选择了“否”的情况下,功能模块55A的执行与控制器200的执行周期同步。其后对功能模块55A的同步执行/非同步执行的详细情况进行叙述。
在设计者按下了登记按钮B12的情况下,已被输入登记画面32中的各种信息作为所述定义信息122来登记。在图8的例子中,模块登记部154将模块名“sample”与引数的数据类型“float”、数据类型“double”,引数的变量名“in1”、变量名“in2”,返回值的数据类型“bool”,以及返回值的变量名“ret”建立对应后,将它们作为定义信息122来登记。
在设计者按下了取消按钮B13的情况下,已被输入登记画面32中的各种信息被废弃,登记画面32被关闭。
(D3.包装模块生成部156)
继而,参照图9及图10对图6中所示的包装模块生成部156进行说明。图9是概略性地表示非同步设定时的功能模块55B的生成过程的图。图10是概略性地表示同步设定时的功能模块55B的生成过程的图。
如图9及图10所示,包装模块生成部156基于各编程的数据类型的对应关系121、及包装对象的功能模块55A的定义信息122,生成用于调出功能模块55A的周期执行型的功能模块55B。
更具体而言,包装模块生成部156参照各编程的数据类型的对应关系121,确定与定义信息122中所规定的引数的数据类型对应的周期执行型的编程语言的数据类型。其后,包装模块生成部156将用于反映功能模块55A的引数的值的输入变量作为功能模块55B的输入接口来设定,所述输入变量是所述数据类型的输入变量。
设定在功能模块55B中的输入变量的名称任意。优选为功能模块55B的输入变量的名称以变成与功能模块55A的引数的名称相同的方式设定。在图9及图10的例子中,相对于功能模块55A的引数“in1”的数据类型“float”,将“REAL(实数)”型的输入变量“in1”设定在功能模块55B中。另外,相对于功能模块55A的引数“in2”的数据类型“double”,将“LREAL(长实数)”型的输入变量“in2”设定在功能模块55B中。由此,设计者容易掌握功能模块55A的引数名与功能模块55B的输入变量的对应关系。
另外,包装模块生成部156参照各编程的数据类型的对应关系121,确定与定义信息122中所规定的返回值的数据类型对应的周期执行型的编程语言的数据类型。其后,包装模块生成部156将用于反映功能模块55A的返回值的输出变量作为功能模块55B的输出接口来设定,所述输出变量是已确定的数据类型的输出变量。
设定在功能模块55B中的输出变量的名称任意。优选为功能模块55B的输出变量的名称以变成与功能模块55A的返回值的变量名相同的方式设定。在图9及图10的例子中,相对于功能模块55A的返回值“ret”的数据类型“bool”,将数据类型“BOOL(布尔)”的输出变量“ret”设定在功能模块55B中。由此,设计者容易掌握功能模块55A的返回值与功能模块55B的输出变量的对应关系。
另外,包装模块生成部156参照定义信息122中所规定的模块名,决定功能模块55B的模块名。功能模块55B的模块名任意。优选为功能模块55B的模块名以变成与功能模块55A的模块名相同的方式设定。在图9及图10的例子中,功能模块55A的模块名为“sample”,因此将功能模块55B的模块名设定成“sample”。由此,设计者容易掌握功能模块55A的模块名与功能模块55B的模块名的对应关系。
典型的是包装模块生成部156在所述登记画面32的输入区域33E中,根据是否进行了同步设定来改变功能模块55B的输入/输出接口。
在非同步设定时,包装模块生成部156生成以不等待功能模块55A的执行完成,而继续执行控制器200的控制程序的方式运行的功能模块55B。即,在已利用控制器200来执行功能模块55B的情况下,与控制器200的控制程序的执行并行地执行调出对象的功能模块55A。
更具体而言,如图9所示,在非同步设定时,包装模块生成部156在功能模块55B的输入接口进一步设定“BOOL”型的输入变量“cont”,在功能模块55B的输出接口进一步设定“BOOL”型的输出变量“done”与“DWORD(双字)”型的输出变量“error”。输入变量“cont”是受理调出对象的功能模块55A的执行开始的输入接口。输出变量“done”是用于反映已被从功能模块55B调出的功能模块55A的执行完成的输出接口。输出变量“error”是用于反映已被从功能模块55B调出的功能模块55A是否已被正常地执行的输出接口。在功能模块55A已异常结束的情况下,错误代码被反映在输出变量“error”中。
在同步设定时,包装模块生成部156生成以在从调出功能模块55A至功能模块55A的执行完成为止的期间,中断控制器200的控制程序的执行的方式运行的功能模块55B。
更具体而言,如图10所示,在同步设定时,包装模块生成部156在功能模块55B的输出接口进一步设定“DWORD”型的输出变量“error”。输出变量“error”是用于反映已被从功能模块55B调出的功能模块55A的执行结果的输出接口。
由包装模块生成部156所生成的功能模块55B作为包装模块126而被保存在开发支援装置100的存储装置120中。
另外,包装模块生成部156生成规定了生成源的功能模块55A的输入/输出接口、与已生成的功能模块55B的输入/输出接口的关系的模块对应关系127。在模块对应关系127中,将功能模块55A的模块名与功能模块55B的模块名建立关联。另外,在模块对应关系127中,将功能模块55A的引数与功能模块55B的输入变量建立关联。另外,在模块对应关系127中,将功能模块55A的返回值与功能模块55B的输出变量建立关联。已生成的模块对应关系127被保存在开发支援装置100的存储装置120中。
另外,以上对包装模块生成部156基于对于功能模块55A的同步设定/非同步设定,改变生成的功能模块55B的输入/输出接口的例子进行了说明,但未必需要进行同步设定/非同步设定。在某一形态中,包装模块生成部156不论同步设定/非同步设定,均生成图9中所示的功能模块55B。在另一形态中,包装模块生成部156不论同步设定/非同步设定,均生成图10中所示的功能模块55B。
(D4.编辑部158)
继而,参照图11对图6中所示的编辑部158进行说明。图11是用于说明编辑部158的功能的图。
编辑部158受理所述用户程序210的编辑操作。编辑部158例如为由开发支援程序50提供的设计画面35。
设计画面35包含用户程序210的编辑区域36A、及用于将功能块名进行列表显示的显示区域36B。显示在显示区域36B中的功能块包含由包装模块生成部156所生成的包装模块126。作为一例,包装模块126包含所述功能模块55B。例如,若将显示在显示区域36B中的功能模块55B拖放至编辑区域36A,则功能模块55B显示在编辑区域36A中。
如此,设计者可将包装模块126任意地编入用户程序210中。此时,设计者无需在意被从包装模块126调出的功能模块的编程语言的类别。即,设计者即便不具有与非周期执行型的编程语言相关的知识,也可以从周期执行型的用户程序210中利用非周期执行型的功能模块。
典型的是编辑部158在作为包装模块126的功能模块55B的显示时,将与调出对象的功能模块55A相关的特性信息与功能模块55B建立对应来显示。作为一例,被显示的特性信息包含调出对象的功能模块55A的编程语言的类别等。在图11的例子中,显示有“C++”。除此以外,被显示的特性信息也可以包含调出对象的功能模块55A的引数的数据类型、调出对象的功能模块55A的返回值的数据类型、调出对象的功能模块55A的模块名等。特性信息的显示/非显示可通过用户操作来适宜切换。
另外,编辑部158使包装模块126的显示形态与其他功能模块的显示形态不同。作为一例,利用与其他功能模块不同的颜色来显示包装模块126。或者,也可以利用与其他功能模块不同的字体来显示包装模块126。
另外,在图11的例子中,对将包装模块126编入作为梯形程序的用户程序210中的例子进行了说明,但也可以将包装模块126编入作为ST语言的用户程序210中。由于利用字符串来记述ST语言,因此若将与调出对象的功能模块55A相关的特性信息直接显示在程序的设计画面中,则变得难以看见编辑中的程序。因此,通过工具提示(ToolTip)来显示所述特性信息。更具体而言,编辑部158基于设计者已将光标放在设计画面中的包装模块126上,而将与调出对象的功能模块55A相关的特性信息显示在另一画面中。
通过工具提示来显示的特性信息例如包含:调出对象的功能模块55A的编程语言的类别、调出对象的功能模块55A的引数的数据类型、调出对象的功能模块55A的返回值的数据类型、调出对象的功能模块55A的模块名等。
另外,编辑部158使利用ST语言来记述的包装模块126的显示形态与其他功能模块的显示形态不同。作为一例,利用与其他功能模块不同的颜色来显示包装模块126。或者,也可以利用与其他功能模块不同的字体来显示包装模块126。
(D5.构建部160)
继而,对图6中所示的构建部160进行说明。
当设计者在所述设计画面35(参照图11)中进行了构建操作时,构建部160构建利用设计画面35所设计的用户程序210,生成用户程序210的执行文件。其后,当设计者在所述设计画面35(参照图11)中进行了转送操作时,构建部160将用户程序210的执行文件、及所述模块对应关系127(参照图9、图10)转送至控制器200。
可以将模块对应关系127在已被编入用户程序210的执行文件中的状态下转送至控制器200,也可以将模块对应关系127与用户程序210的执行文件分开转送至控制器200。
<E.开发支援装置100的控制结构>
参照图12对开发支援装置100的控制结构进行说明。图12是表示开发支援装置100所执行的处理的一部分的流程图。图12中所示的处理通过开发支援装置100的控制装置102作为所述包装模块生成部156(参照图6)发挥功能来实现。在其他形态中,也可以利用电路元件或其他硬件来执行处理的一部分或全部。
在步骤S10中,控制装置102获取规定了可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的关系的对应关系121(参照图1)。
在步骤S12中,控制装置102获取与包装对象的功能模块55A相关的定义信息122(参照图1)。定义信息122包含:功能模块55A的模块名、功能模块55A的引数的数据类型、功能模块55A的引数的变量名、功能模块55A的返回值的数据类型、功能模块55A的返回值的变量名等。
在步骤S14中,控制装置102基于在步骤S10中所获取的数据类型的对应关系121、及在步骤S12中所获取的定义信息122,确定与功能模块55A的引数的数据类型对应的周期执行型的编程语言的数据类型。其后,控制装置102将所述已确定的数据类型的输入变量设定功能模块55B的输入接口。所述输入变量是用于反映功能模块55A的引数的值的输入接口。
在对包装对象的功能模块55A进行了非同步设定的情况下,控制装置102在功能模块55B的输入接口进一步设定“BOOL”型的输入变量“cont”(参照图9)。输入变量“cont”是受理调出对象的功能模块55A的执行开始命令的输入接口。另一方面,在对包装对象的功能模块55A进行了同步设定的情况下,控制装置102不在功能模块55B的输入接口设定“BOOL”型的输入变量“cont”(参照图10)。
在步骤S16中,控制装置102基于在步骤S10中所获取的数据类型的对应关系121、及在步骤S12中所获取的定义信息122,确定与功能模块55A的返回值的数据类型对应的周期执行型的编程语言的数据类型。其后,控制装置102将所述已确定的数据类型的输出变量作为功能模块55B的输出接口来设定。所述输出变量是用于反映功能模块55A的返回值的输出接口。
另外,控制装置102在功能模块55B的输出接口进一步设定“DWORD”型的输出变量“error”(参照图9、图10)。输出变量“error”是用于反映已被从功能模块55B调出的功能模块55A是否已被正常地执行的输出接口。在功能模块55A已异常结束的情况下,错误代码被反映在输出变量“error”中。
进而,在对包装对象的功能模块55A进行了非同步设定的情况下,控制装置102在功能模块55B的输出接口进一步设定“BOOL”型的输出变量“done”(参照图9)。输出变量“done”是用于反映已被从功能模块55B调出的功能模块55A的执行完成的输出接口。另一方面,在对包装对象的功能模块55A进行了同步设定的情况下,控制装置102不在功能模块55B的输出接口设定“BOOL”型的输出变量“done”(参照图10)。
在步骤S18中,控制装置102将已生成的功能模块55B作为包装模块126而保存在开发支援装置100的存储装置120中。
<F.安装形态>
控制器200按照已被从开发支援装置100转送的用户程序210,控制驱动机器300。用户程序210通过核C1(第一控制部)来执行。在执行了用户程序210中所包含的作为包装模块的功能模块55B的情况下,控制器200调出对应的功能模块55A。非周期执行型的功能模块55A通过第二核(第二控制部)来执行。
核C1及核C2分别在不同种类的OS(操作***)上运行。典型的是核C1在实时OS等第一种OS上运行,利用所述OS的基本功能。另一方面,核C2在林纳克斯(注册商标)或视窗(注册商标)等第二种OS上运行,利用所述OS的基本功能。
在本说明书中,将包含两个以上的核C1、C2(第一控制部、第二控制部)的***称为“控制***”。即,“控制***”的概念包括:包含至少两个核C1、C2的一个装置,或包含具有核C1的第一装置与具有核C2的第二装置的***。
以下,参照图13~图15对核C1、核C2的安装形态进行说明。
(F1.核C1、核C2的安装形态的具体例1)
图13是表示核C1及核C2的安装形态的具体例1的图。
如图13所示,控制器200包含CPU单元250。CPU单元250包括包含两个以上的核的控制装置202。作为一例,控制装置202包含核C1及核C2。在本具体例中,控制***10包含装载在一个控制装置202的多个核C1、C2。
核C1执行所述用户程序210。用户程序210由梯形程序或ST语言等非周期执行型的PLC语言来规定。核C1当在用户程序210的执行中执行了作为包装模块的所述功能模块55B时,将对应的非周期执行型的功能模块55A的执行开始命令输出至核C2。
核C2基于受理了所述执行开始命令,而执行功能模块55A。所述功能模块55A例如由C语言、C++、Java、或Python等来规定。核C2基于功能模块55A的执行已完成,而将功能模块55A的执行结果输出至核C1。
如上所述,在本具体例中,将执行周期执行型的编程语言的核C1、及执行非周期执行型的编程语言的核C2装载在一个控制装置102。
(F2.核C1、核C2的安装形态的具体例2)
图14是表示核C1及核C2的安装形态的具体例2的图。
如图14所示,控制器200包含CPU单元250、及扩张单元251。扩张单元251以可与CPU单元250分离的方式构成,经由控制器200的总线而与CPU单元250连接。
CPU单元250包含控制装置202。CPU单元250包含一个以上的核C1。核C1执行作为控制器200用的控制程序的用户程序210。用户程序210由梯形程序或ST语言等非周期执行型的PLC语言来规定。
扩张单元251包括包含一个以上的核的控制装置252。作为一例,控制装置252包含核C2。核C2执行非周期执行型的功能模块55A。所述功能模块55A例如由C语言、C++、Java、或Python等来规定。
在本具体例中,控制***10包含装载在CPU单元250的核C1、及装载在扩张单元251的核C2。
核C1当在用户程序210的执行中执行了作为包装模块的所述功能模块55B时,将对应的非周期执行型的功能模块55A的执行开始命令输出至核C2。核C2基于受理了所述执行开始命令,而执行功能模块55A。核C2基于功能模块55A的执行已完成,而将功能模块55A的执行结果输出至核C1。
如上所述,在本具体例中,将执行周期执行型的编程语言的核C1装载在CPU单元250的控制装置202。另一方面,将执行非周期执行型的编程语言的核C2装载在扩张单元251的控制装置252。
(F3.核C1、核C2的安装形态的具体例3)
图15是表示核C1及核C2的安装形态的具体例3的图。
控制器200以可与外部机器400通信的方式构成。CPU单元250包含控制装置202。控制装置202包含一个以上的核C1。核C1执行作为控制器200用的控制程序的用户程序210。用户程序210由梯形程序或ST语言等非周期执行型的PLC语言来规定。
控制器200以可与外部机器400通信的方式构成。外部机器400包括包含一个以上的核的控制装置402。作为一例,控制装置402包含核C2。核C2执行非周期执行型的功能模块55A。所述功能模块55A例如由C语言、C++、Java、或Python等来规定。
在本具体例中,控制***10包含装载在控制器200的控制装置202的核C1、及装载在外部机器400的控制装置402的核C2。
核C1当在用户程序210的执行中执行了作为包装模块的所述功能模块55B时,将对应的非周期执行型的功能模块55A的执行开始命令输出至核C2。核C2基于受理了所述执行开始命令,而执行功能模块55A。核C2基于功能模块55A的执行已完成,而将功能模块55A的执行结果输出至核C1。
如上所述,在本具体例中,将执行周期执行型的编程语言的核C1装载在控制器200的控制装置202。另一方面,将执行非周期执行型的编程语言的核C2装载在外部机器400的控制装置402。
<G.核C1、核C2的功能结构>
参照图16对图13~图15中所示的核C1、核C2的功能结构进行说明。图16是表示核C1、核C2的功能结构的一例的图。
控制***10包含作为硬件结构的核C1、核C2、以及存储装置208、存储装置410。核C1包含作为功能结构的第一执行部254、及委托部256。核C2包含作为功能结构的第二执行部264。
控制器200的存储装置208、或外部机器400的存储装置410保存所述功能模块55B、所述模块对应关系127、以及所述用户程序210。模块对应关系127及用户程序210例如被保存在存储装置208中。模块对应关系127被保存在存储装置208及存储装置410的任一者中。
第一执行部254每隔事先决定的周期重复执行用户程序210的排头行~最终行,并按照用户程序210来控制驱动机器300。第一执行部254在执行了用户程序210中所包含的作为包装模块的功能模块55B的情况下,将对应的功能模块55A的执行委托给委托部256。
委托部256具有远程过程调用(Remote Procedure Call,RPC)功能。即,委托部256使另一个核C2执行调出对象的功能模块55A的执行。
参照图17对委托部256的功能进行说明。图17是概略性地表示利用委托部256的委托处理的概念图。
如图17所示,委托部256从作为包装模块126之一的功能模块55B接受了功能模块55A的执行命令。基于此,委托部256参照模块对应关系127,确定与功能模块55B的模块名对应的调出对象的功能模块55A的模块名(函数名)。在图17的例子中,作为功能模块55A的模块名,确定“sample”。
其后,委托部256参照模块对应关系127,确定与功能模块55B的输入变量对应的功能模块55A的引数。在图17的例子中,相对于“REAL”型的输入变量“in1”而确定“float”型的引数“in1”。相对于“LREAL”型的输入变量“in2”而确定“double”型的引数“in2”。
委托部256按照已确定的数据类型的关系,将“REAL”型的输入变量“in1”的值转换成“float”型,并将所述转换后的值代入功能模块55A的引数“in1”中。同样地,委托部256按照已确定的数据类型的关系,将“LREAL”型的输入变量“in2”转换成“double”型,并将所述转换后的输入变量“in2”代入功能模块55A的引数“in2”中。如此,委托部256对照功能模块55A的数据类型来转换功能模块55B的输入变量的值后,将所述输入变量的值反映在所述引数中。其后,委托部256将功能模块55A的执行开始命令输出至第二执行部264。
再次参照图16,第二执行部264基于从委托部256受理了执行开始命令,而读出调出对象的功能模块55A的执行程序,并依次执行所述执行程序的各行。此时,第二执行部264基于所述执行程序的执行已完成,而将执行结果输出至委托部256。
再次参照图17,委托部256基于从第二执行部264接受了功能模块55A的执行结果,而将所述执行结果反映在功能模块55B的输出变量中。更具体而言,委托部256参照模块对应关系127,确定与功能模块55A的返回值对应的功能模块55B的输出变量。在图17的例子中,相对于“bool”型的返回值“ret”而确定“BOOL”型的输出变量“ret”。委托部256按照已确定的数据类型的关系,将“bool”型的返回值“ret”转换成“BOOL”型,并将所述转换后的返回值代入功能模块55B的输出变量“ret”中。如此,委托部256对照功能模块55B的输出变量的数据类型来转换功能模块55A的返回值后,将所述返回值反映在所述输出变量中。
<H.数据流>
如在所述图9及图10中所说明那样,存在进行了非同步设定的包装模块126、及进行了同步设定的包装模块126。在已执行进行了非同步设定的包装模块126的情况下,不与用户程序210的执行周期同步地执行调出对象的功能模块55A。在已执行进行了同步设定的包装模块126的情况下,与用户程序210的执行周期同步地执行调出对象的功能模块55A。
以下,参照图18及图19对非同步执行调出对象的功能模块55A时的控制***10的数据流、及同步执行调出对象的功能模块55A时的控制***10的数据流依次进行说明。
(H1.非同步执行)
图18是表示非同步执行调出对象的功能模块55A时的控制***10的数据流的一例的图。以下,以从作为包装模块的功能模块55B中调出功能模块55A为前提来进行说明。
第一执行部254按照控制器200的控制周期来重复执行用户程序210。在非同步执行的情况下,与用户程序210的执行并行地执行调出对象的功能模块55A。
更具体而言,在步骤S50(控制器200的控制周期第0周)中,作为包装模块126之一的功能模块55B的输入变量“cont”为“开启(ON)”。如在所述图9中所说明那样,输入变量“cont”是受理调出对象的功能模块55A的执行开始命令的输入接口。将输入变量“cont”设为“开启”表示开始调出对象的功能模块55A的执行。
在步骤S52中,委托部256基于功能模块55B的输入变量“cont”已被设定成“开启”,而与执行用户程序210的线程(任务)分开生成新的线程。
在步骤S54中,委托部256将功能模块55B的输出变量“done”设定成“关闭(OFF)”。如在所述图9中所说明那样,输出变量“done”是用于反映已被从功能模块55B调出的功能模块55A的执行完成的输出接口。输出变量“done”为“关闭”表示调出对象的功能模块55A的执行未完成。
在步骤S56中,作为在步骤S52中所生成的另一线程,委托部256将调出源的功能模块55B的输入变量的值反映在调出对象的功能模块55A的引数中,并将所述功能模块55A的执行开始命令输出至第二执行部264。关于将输入变量反映在引数中的方法,如在图17中所说明那样,因此不重复其说明。
在步骤S60(控制器200的控制周期第一周)中,功能模块55B的输入变量“cont”继续为“开启”。此时,调出对象的功能模块55A仍在执行中,因此即便功能模块55B的输入变量“cont”已被设定成“开启”,委托部256也不特别针对第二执行部264进行任何操作。
在步骤S62中,委托部256将功能模块55B的输出变量“done”设定成“关闭”。如上所述,输出变量“done”为“关闭”表示调出对象的功能模块55A的执行未完成。
在步骤S64中,调出对象的功能模块55A的执行已完成。基于此,第二执行部264将功能模块55A的执行结果输出至委托部256。
在步骤S66中,作为在步骤S52中所生成的另一线程,委托部256将功能模块55B的输出变量“done”设定成“开启”。输出变量“done”为“开启”表示调出对象的功能模块55A的执行已完成。
在步骤S70(控制器200的控制周期第二周)中,功能模块55B的输入变量“cont”继续为“开启”。此时,由于是调出对象的功能模块55A刚完成之后,因此即便功能模块55B的输入变量“cont”已被设定成“开启”,委托部256也不特别针对第二执行部264进行任何操作。
在步骤S72中,委托部256将功能模块55A的执行结果(返回值)反映在功能模块55B的输出变量“ret”中。关于将返回值反映在输出变量中的方法,如在图17中所说明那样,因此不重复其说明。
如上所述,委托部256在非同步执行时,在从对第二执行部264输出功能模块55A的执行开始命令至接受功能模块55A的执行结果为止的期间,继续执行用户程序210。即,调出对象的功能模块55A的执行与用户程序210的执行并行地进行。由此,委托部256可不与用户程序210的执行周期同步地执行非周期执行型的功能模块55A。
(H2.同步执行)
图19是表示同步执行调出对象的功能模块55A时的控制***10的数据流的一例的图。以下,以从作为包装模块的功能模块55B中调出功能模块55A为前提来进行说明。
第一执行部254按照控制器200的控制周期来重复执行用户程序210。在同步执行的情况下,在调出对象的功能模块55A完成之前,中断用户程序210的执行。
更具体而言,在步骤S80(控制器200的控制周期第0周)中,第一执行部254从调出源的功能模块55B中调出了调出对象的功能模块55A。
在步骤S82中,委托部256基于从第一执行部254接受了功能模块55A的执行命令,而将调出源的功能模块55B的输入变量的值反映在调出对象的功能模块55A的引数中,并将功能模块55A的执行开始命令输出至第二执行部264。关于将输入变量反映在引数中的方法,如在图17中所说明那样,因此不重复其说明。
在步骤S84中,调出对象的功能模块55A的执行已完成。基于此,第二执行部264将功能模块55A的执行结果输出至委托部256。
在步骤S86中,委托部256将功能模块55A的执行结果(返回值)反映在功能模块55B的输出变量“ret”中。关于将返回值反映在输出变量中的方法,如在图17中所说明那样,因此不重复其说明。
在步骤S90(控制器200的控制周期第一周)中,第一执行部254从调出源的功能模块55B中再次调出了调出对象的功能模块55A。
在步骤S92中,委托部256基于从第一执行部254接受了功能模块55A的调出命令,而将调出源的功能模块55B的输入变量的值反映在调出对象的功能模块55A的引数中,并将功能模块55A的执行开始命令输出至第二执行部264。
在步骤S94中,调出对象的功能模块55A的执行已完成。基于此,第二执行部264将功能模块55A的执行结果输出至委托部256。
在步骤S96中,委托部256将功能模块55A的执行结果(返回值)反映在功能模块55B的输出变量“ret”中。
如上所述,委托部256在同步执行时,在从在步骤S92中对第二执行部264输出功能模块55A的执行开始命令,至在步骤S94中接受功能模块55A的执行结果为止的期间,中断用户程序210的执行。即,委托部256将用户程序210的执行与功能模块55A的执行串行地执行。由此,委托部256可与用户程序210的执行周期同步地执行非周期执行型的功能模块55A。
<I.附记>
如上所述,本实施方式包含如下的公开。
[结构1]
一种控制***,包括用于保存控制器用的控制程序(210、211)的存储装置(208),所述控制程序(210、211)包含用于调出非周期执行型的功能模块(55A)的周期执行型的功能模块(55B),所述控制***包括:
第一控制部(C1),用于执行所述控制程序(210、211);以及
第二控制部(C2),用于执行所述非周期执行型的功能模块(55A);
所述第一控制部(C1)当在所述控制程序(210、211)的执行中执行了所述周期执行型的功能模块(55B)时,将所述周期执行型的功能模块(55B)的输入变量的值反映在所述非周期执行型的功能模块(55A)的引数中,将所述非周期执行型的功能模块(55A)的执行开始命令输出至所述第二控制部(C2),
所述第二控制部(C2)基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块(55A)的执行,基于所述非周期执行型的功能模块(55A)的执行已完成,而将所述非周期执行型的功能模块(55A)的返回值输出至所述第一控制部(C1),
所述第一控制部(C1)基于从所述第二控制部(C2)接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块(55B)的输出变量中。
[结构2]
根据结构1中记载的控制***,其中所述第一控制部(C1)在从对所述第二控制部(C2)输出所述执行开始命令至接收所述返回值为止的期间,中断所述控制程序(210、211)的执行。
[结构3]
根据结构1中记载的控制***,其中所述第一控制部(C1)在从对所述第二控制部(C2)输出所述执行开始命令至接收所述返回值为止的期间,继续执行所述控制程序(210、211)。
[结构4]
根据结构3中记载的控制***,其中所述周期执行型的功能模块(55B)的输出包含用于反映所述非周期执行型的功能模块(55A)的执行完成的输出变量。
[结构5]
根据结构1~结构4的任一项中记载的控制***,其中所述第一控制部(C1)对照所述引数的数据类型来转换所述输入变量的值后,将所述输入变量的值反映在所述引数中。
[结构6]
根据结构1~结构5的任一项中记载的控制***,其中所述第一控制部(C1)对照所述输出变量的数据类型来转换所述返回值后,将所述返回值反映在所述输出变量中。
[结构7]
一种控制方法,是包括第一控制部(C1)与第二控制部(C2)的控制***的控制方法,
所述控制方法包括获取控制器用的控制程序(210、211)的步骤,所述控制程序(210、211)包含用于调出非周期执行型的功能模块(55A)的周期执行型的功能模块(55B),
所述控制方法还包括:
所述第一控制部(C1)执行所述控制程序(210、211)的步骤(S1);
所述第一控制部(C1)当在所述控制程序(210、211)的执行中执行了所述周期执行型的功能模块(55B)时,将所述周期执行型的功能模块(55B)的输入变量的值反映在所述非周期执行型的功能模块(55A)的引数中,将所述非周期执行型的功能模块(55A)的执行开始命令输出至所述第二控制部(C2)的步骤(S2);
所述第二控制部(C2)基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块(55A)的执行,基于所述非周期执行型的功能模块(55A)的执行已完成,而将所述非周期执行型的功能模块(55A)的返回值输出至所述第一控制部(C1)的步骤(S4);以及
所述第一控制部(C1)基于从所述第二控制部(C2)接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块(55B)的输出变量中的步骤(S4)。
[结构8]
一种控制程序,是通过控制器来执行的周期执行型的控制程序(210、211),
所述控制程序(210、211)包含用于调出非周期执行型的功能模块(55A)的周期执行型的功能模块(55B),
所述控制器包括第一控制部(C1),
以可与所述控制器通信的方式构成的外部机器、或所述控制器包括第二控制部(C2),
所述控制程序(210、211)使所述第一控制部(C1)执行:
执行所述控制程序(210、211)的步骤(S1);
当在所述控制程序(210、211)的执行中执行了所述周期执行型的功能模块(55B)时,将所述功能模块的输入变量的值反映在所述非周期执行型的功能模块(55A)的引数中,将所述非周期执行型的功能模块(55A)的执行开始命令输出至所述第二控制部(C2)的步骤(S2);以及
基于从所述第二控制部(C2)接收了所述非周期执行型的功能模块(55A)的执行结果,而将所述执行结果反映在所述周期执行型的功能模块(55B)的输出变量中的步骤(S4)。
本次所公开的实施方式应认为在所有方面均为例示而非进行限制的实施方式。本发明的范围由权利要求而非所述说明来表示,且意图包含与权利要求均等的含义及范围内的所有变更。
符号的说明
10:控制***
32:登记画面
33A、33B、33C、33D、33E:输入区域
35:设计画面
36A:编辑区域
36B:显示区域
50:开发支援程序
55A、55B:功能模块
55B1、55B2:输入变量
55B3:输出变量
56、212:各种数据
60:程序
100:开发支援装置
102、202、252、402:控制装置
104、206、404:主存储器
111、201、412:通信接口
114、414:I/O接口
115、415:操作部
117、420:显示接口
118、421:显示部
120、208、410:存储装置
121:对应关系
122:定义信息
125、425:内部总线
126:包装模块
127:模块对应关系
152:程序分析部
154:模块登记部
156:包装模块生成部
158:编辑部
160:构建部
200:控制器
204:芯片组
209:***程序
210:用户程序
210A:序列程序
210B:运动程序
211:控制程序
222:内部总线控制器
224:现场总线控制器
226:I/O单元
239:存储卡接口
240:存储卡
250:单元
251:扩张单元
254:第一执行部
256:委托部
264:第二执行部
300:驱动机器
300A:机器人控制器
300B:伺服驱动器
301A:手臂机器人
301B:伺服马达
400:外部机器
416:现场总线接口
Claims (8)
1.一种控制***,包括用于保存控制器用的控制程序的存储装置,所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块,所述控制***包括:
第一控制部,用于执行所述控制程序;以及
第二控制部,用于执行所述非周期执行型的功能模块;
所述第一控制部当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述周期执行型的功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部,
所述第二控制部基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块的执行,基于所述非周期执行型的功能模块的执行已完成,而将所述非周期执行型的功能模块的返回值输出至所述第一控制部,
所述第一控制部基于从所述第二控制部接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块的输出变量中。
2.根据权利要求1所述的控制***,其中所述第一控制部在从对所述第二控制部输出所述执行开始命令至接收所述返回值为止的期间,中断所述控制程序的执行。
3.根据权利要求1所述的控制***,其中所述第一控制部在从对所述第二控制部输出所述执行开始命令至接收所述返回值为止的期间,继续执行所述控制程序。
4.根据权利要求3所述的控制***,其中所述周期执行型的功能模块的输出包含用于反映所述非周期执行型的功能模块的执行完成的输出变量。
5.根据权利要求1至4中任一项所述的控制***,其中所述第一控制部对照所述引数的数据类型来转换所述输入变量的值后,将所述输入变量的值反映在所述引数中。
6.根据权利要求1至5中任一项所述的控制***,其中所述第一控制部对照所述输出变量的数据类型来转换所述返回值后,将所述返回值反映在所述输出变量中。
7.一种控制方法,是包括第一控制部与第二控制部的控制***的控制方法,
所述控制方法包括获取控制器用的控制程序的步骤,所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块,
所述控制方法还包括:
所述第一控制部执行所述控制程序的步骤;
所述第一控制部当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述周期执行型的功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部的步骤;
所述第二控制部基于受理了所述执行开始命令,而开始所述非周期执行型的功能模块的执行,基于所述非周期执行型的功能模块的执行已完成,而将所述非周期执行型的功能模块的返回值输出至所述第一控制部的步骤;以及
所述第一控制部基于从所述第二控制部接收了所述返回值,而将所述返回值反映在所述周期执行型的功能模块的输出变量中的步骤。
8.一种控制程序,是通过控制器来执行的周期执行型的控制程序,
所述控制程序包含用于调出非周期执行型的功能模块的周期执行型的功能模块,
所述控制器包括第一控制部,
以能与所述控制器通信的方式构成的外部机器、或所述控制器包括第二控制部,
所述控制程序使所述第一控制部执行如下步骤:
执行所述控制程序的步骤;
当在所述控制程序的执行中执行了所述周期执行型的功能模块时,将所述功能模块的输入变量的值反映在所述非周期执行型的功能模块的引数中,将所述非周期执行型的功能模块的执行开始命令输出至所述第二控制部的步骤;以及
基于从所述第二控制部接收了所述非周期执行型的功能模块的执行结果,而将所述执行结果反映在所述周期执行型的功能模块的输出变量中的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-190150 | 2018-10-05 | ||
JP2018190150A JP7091986B2 (ja) | 2018-10-05 | 2018-10-05 | 制御システム、制御方法、および開発支援プログラム |
PCT/JP2019/038955 WO2020071436A1 (ja) | 2018-10-05 | 2019-10-02 | 制御システム、制御方法、および制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112639637A true CN112639637A (zh) | 2021-04-09 |
CN112639637B CN112639637B (zh) | 2024-06-04 |
Family
ID=70054811
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980057265.6A Active CN112639637B (zh) | 2018-10-05 | 2019-10-02 | 控制***、控制方法以及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11579580B2 (zh) |
EP (1) | EP3862828A4 (zh) |
JP (1) | JP7091986B2 (zh) |
CN (1) | CN112639637B (zh) |
WO (1) | WO2020071436A1 (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010224939A (ja) * | 2009-03-24 | 2010-10-07 | Hitachi Industrial Equipment Systems Co Ltd | 制御用計算機および制御システム |
CN103995499A (zh) * | 2013-02-15 | 2014-08-20 | 欧姆龙株式会社 | 控制器、信息处理装置及程序 |
CN104081299A (zh) * | 2012-02-29 | 2014-10-01 | 富士电机株式会社 | 可编程控制器、可编程控制器***及可编程控制器的提供*** |
JP2016110220A (ja) * | 2014-12-02 | 2016-06-20 | 株式会社キーエンス | プログラマブル・ロジック・コントローラおよびその制御方法 |
CN106020010A (zh) * | 2015-03-31 | 2016-10-12 | 欧姆龙株式会社 | 控制装置 |
FR3063855A1 (fr) * | 2017-03-08 | 2018-09-14 | Areva Np | Circuit logique programmable de commande d'une installation electrique, en particulier une installation nucleaire, dispositif et procede de commande associes |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002189507A (ja) | 2000-12-19 | 2002-07-05 | Omron Corp | コントローラ |
JP4770664B2 (ja) * | 2006-09-20 | 2011-09-14 | 株式会社デンソー | マイクロプロセッサおよびそれを用いたマイクロコンピュータ |
US9367323B2 (en) * | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9442756B2 (en) * | 2014-09-24 | 2016-09-13 | International Business Machines Corporation | Multi-processor command management in electronic components with multiple microcontrollers |
JP6550268B2 (ja) | 2015-05-27 | 2019-07-24 | 株式会社キーエンス | プログラム作成支援装置、プログラムおよび判別方法 |
JP6594813B2 (ja) * | 2016-03-24 | 2019-10-23 | 株式会社神戸製鋼所 | 通信制御システム及び通信制御方法 |
US10395036B2 (en) * | 2017-03-16 | 2019-08-27 | Dell Products, L.P. | Continued runtime authentication of information handling system (IHS) applications |
US11520922B2 (en) * | 2018-01-22 | 2022-12-06 | Todd Jeremy Marlin | Method for personal data administration in a multi-actor environment |
JP7024679B2 (ja) * | 2018-10-05 | 2022-02-24 | オムロン株式会社 | 開発支援プログラム、開発支援装置、および開発支援方法 |
WO2020194402A1 (ja) * | 2019-03-22 | 2020-10-01 | 三菱電機株式会社 | 情報処理装置、計算機、計算機システム、情報処理方法及び情報処理プログラム |
-
2018
- 2018-10-05 JP JP2018190150A patent/JP7091986B2/ja active Active
-
2019
- 2019-10-02 US US17/278,337 patent/US11579580B2/en active Active
- 2019-10-02 CN CN201980057265.6A patent/CN112639637B/zh active Active
- 2019-10-02 EP EP19870013.0A patent/EP3862828A4/en active Pending
- 2019-10-02 WO PCT/JP2019/038955 patent/WO2020071436A1/ja active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010224939A (ja) * | 2009-03-24 | 2010-10-07 | Hitachi Industrial Equipment Systems Co Ltd | 制御用計算機および制御システム |
CN104081299A (zh) * | 2012-02-29 | 2014-10-01 | 富士电机株式会社 | 可编程控制器、可编程控制器***及可编程控制器的提供*** |
CN103995499A (zh) * | 2013-02-15 | 2014-08-20 | 欧姆龙株式会社 | 控制器、信息处理装置及程序 |
JP2016110220A (ja) * | 2014-12-02 | 2016-06-20 | 株式会社キーエンス | プログラマブル・ロジック・コントローラおよびその制御方法 |
CN106020010A (zh) * | 2015-03-31 | 2016-10-12 | 欧姆龙株式会社 | 控制装置 |
FR3063855A1 (fr) * | 2017-03-08 | 2018-09-14 | Areva Np | Circuit logique programmable de commande d'une installation electrique, en particulier une installation nucleaire, dispositif et procede de commande associes |
Also Published As
Publication number | Publication date |
---|---|
WO2020071436A1 (ja) | 2020-04-09 |
EP3862828A1 (en) | 2021-08-11 |
JP2020060856A (ja) | 2020-04-16 |
EP3862828A4 (en) | 2022-06-15 |
US11579580B2 (en) | 2023-02-14 |
JP7091986B2 (ja) | 2022-06-28 |
US20210349434A1 (en) | 2021-11-11 |
CN112639637B (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012194664A (ja) | 演算ユニット、出力制御方法、およびプログラム | |
CN112639636B (zh) | 开发支援装置、开发支援方法以及存储介质 | |
EP3767459A1 (en) | Controller, control method, and control program | |
EP3761127B1 (en) | Display device, screen generation method, and screen generation program | |
CN112639637B (zh) | 控制***、控制方法以及存储介质 | |
JP7172864B2 (ja) | サポート装置およびサポートプログラム | |
EP3767411A1 (en) | Control system, development assistance device, and development assistance program | |
CN112272820B (zh) | 支持装置以及支持程序的记录介质 | |
US20220291903A1 (en) | Information processing device, recording medium, and support system | |
CN111065976B (zh) | 工厂自动化***、控制器和控制方法 | |
JP6484015B2 (ja) | プログラマブル・ロジック・コントローラおよびその制御方法 | |
US11640153B2 (en) | Control system, support device, and recording medium | |
JP7234810B2 (ja) | サポート装置およびサポートプログラム | |
CN112272802A (zh) | 支持装置以及支持程序 | |
JPH1185518A (ja) | 制御装置 | |
JP2004178303A (ja) | 表示装置、画面データ生成装置、および、そのプログラム |
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 |