CN112639636B - 开发支援装置、开发支援方法以及存储介质 - Google Patents
开发支援装置、开发支援方法以及存储介质 Download PDFInfo
- Publication number
- CN112639636B CN112639636B CN201980057240.6A CN201980057240A CN112639636B CN 112639636 B CN112639636 B CN 112639636B CN 201980057240 A CN201980057240 A CN 201980057240A CN 112639636 B CN112639636 B CN 112639636B
- Authority
- CN
- China
- Prior art keywords
- function module
- data type
- type
- module
- execution
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Abstract
本发明提供一种可将非周期执行型的功能模块编入周期执行型的控制程序中的开发支援装置、开发支援方法以及存储介质。开发支援程序(50)使计算机执行生成调出非周期执行型的第一功能模块(55A)的周期执行型的第二功能模块(55B)的步骤(S14、S16)。所述步骤(S14、S16)包括:确定与第一功能模块(55A)的引数的数据类型对应的周期执行型的编程语言的数据类型,将所述数据类型的输入变量设定在第二功能模块(55B)的步骤(S14);以及确定与第一功能模块(55A)的返回值的数据类型对应的周期执行型的编程语言的数据类型,将所述数据类型的输出变量设定在第二功能模块(55B)的步骤(S16)。
Description
技术领域
本公开涉及一种开发支援装置、开发支援方法以及存储介质。
背景技术
在各种制造现场中导入有可编程逻辑控制器(Programmable Logic Controller,PLC)等控制器。控制器是一种计算机,执行对应于制造装置或制造设备等所设计的控制程序。此种控制程序使用与控制器分开准备的支持装置来制作。
例如,日本专利特开2016-224557号公报(专利文献1)公开有一种用于制作利用图形化编程语言来记述的程序、及利用高级编程语言来记述的程序的减轻用户的负担的技术。
现有技术文献
专利文献
专利文献1:日本专利特开2016-224557号公报
发明内容
发明所要解决的问题
控制器的控制程序利用周期执行型的编程语言来记述。所谓周期执行型,是指每隔事先决定的周期重复执行控制程序的排头行~最终行的执行形态。即,在周期执行型的控制程序中,程序的执行周期得到保障。
存在想要从此种周期执行型的控制程序中调出利用非周期执行型的编程语言来记述的功能模块的期望。所谓非周期执行型,是指依次执行程序的各行的执行形态。在非周期执行型的功能模块中,从开始执行至结束为止的时间得不到保障。
设计者在将非周期执行型的功能模块编入周期执行型的控制程序中的情况下,不仅需要与周期执行型的编程语言相关的知识,而且需要与非周期执行型的编程语言相关的知识。因此,不具有与非周期执行型的编程语言相关的知识的设计者无法将非周期执行型的功能模块编入周期执行型的控制程序中。
本公开是为了解决如上所述的问题点而形成的发明,某一实施例中的目的是提供一种一种存储介质,其存储可将非周期执行型的功能模块编入周期执行型的控制程序中的开发支援程序。另一实施例中的目的是提供一种可将非周期执行型的功能模块编入周期执行型的控制程序中的开发支援装置。另一实施例中的目的是提供一种可将非周期执行型的功能模块编入周期执行型的控制程序中的开发支援方法。
解决问题的技术手段
在本公开的一例中,存储介质存储用于支援控制器用的控制程序的开发的开发支援程序,开发支援程序使计算机执行:获取可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系的步骤;获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息的步骤;以及生成可在所述控制程序中利用的周期执行型的功能模块的步骤,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块。所述生成步骤包括:基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定的步骤,所述输入变量是所述数据类型的输入变量;以及基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定的步骤,所述输出变量是所述数据类型的输出变量。
根据所述公开,开发支援程序可根据非周期执行型的功能模块的定义信息来生成作为包装模块(wrapper module)的周期执行型的功能模块。通过自动地生成作为包装模块的功能模块,即便是不具有与非周期执行型的编程语言相关的知识的设计者,也可以经由作为包装模块的功能模块而利用非周期执行型的功能模块。另外,通过自动地生成作为包装模块的功能模块,设计者无需进行用于从控制器的控制程序中调出非周期执行型的功能模块的编程。其结果,设计工时得到削减。
在本公开的一例中,在所述生成步骤中所生成的所述周期执行型的功能模块以在从调出所述非周期执行型的功能模块,至所述非周期执行型的功能模块的执行完成为止的期间,中断所述控制程序的执行的方式运行。
根据所述公开,作为包装模块的功能模块可与控制程序的执行周期同步地调出非周期执行型的功能模块。
在本公开的一例中,在所述生成步骤中所生成的所述周期执行型的功能模块以不等待所述非周期执行型的功能模块的执行完成,而继续执行所述控制程序的方式运行。
根据所述公开,作为包装模块的功能模块可与控制程序的执行并行地调出非周期执行型的功能模块。
在本公开的一例中,所述生成步骤还包括将用于反映所述非周期执行型的功能模块的执行完成的输出变量设定在所述周期执行型的功能模块的输出中的步骤。
根据所述公开,周期执行型的功能模块的执行结果被反映在作为包装模块的功能模块的输出变量中。
在本公开的一例中,所述输入变量的名称与所述引数的名称相同。
根据所述公开,设计者容易掌握包装对象的功能模块的引数名与作为包装模块的功能模块的输入变量的对应关系。
在本公开的一例中,所述周期执行型的功能模块的模块名与所述非周期执行型的功能模块的模块名相同。
根据所述公开,设计者容易掌握包装对象的功能模块的模块名与作包装模块为的功能模块的模块名的对应关系。
在本公开的另一例中,用于支援控制器用的控制程序的开发的开发支援装置包括存储装置,所述存储装置保存可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系。所述存储装置还保存包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息。开发支援装置还包括控制装置,所述控制装置用于生成可在所述控制程序中利用的周期执行型的功能模块,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块。所述控制装置基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定,所述输入变量是所述数据类型的输入变量,基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定,所述输出变量是所述数据类型的输出变量。
根据所述公开,开发支援装置可根据非周期执行型的功能模块的定义信息来生成作为包装模块的周期执行型的功能模块。通过自动地生成作为包装模块的功能模块,即便是不具有与非周期执行型的编程语言相关的知识的设计者,也可以经由作为包装模块的功能模块而利用非周期执行型的功能模块。另外,通过自动地生成作为包装模块的功能模块,设计者无需进行用于从控制器的控制程序中调出非周期执行型的功能模块的编程。其结果,设计工时得到削减。
在本公开的另一例中,用于支援控制器用的控制程序的开发的开发支援方法包括:开发支援装置获取可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系的步骤;所述开发支援装置获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息的步骤;以及所述开发支援装置生成可在所述控制程序中利用的周期执行型的功能模块的步骤,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块。所述生成步骤包括:所述开发支援装置基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定的步骤,所述输入变量是所述数据类型的输入变量;以及所述开发支援装置基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定的步骤,所述输出变量是所述数据类型的输出变量。
根据所述公开,开发支援方法可根据非周期执行型的功能模块的定义信息来生成作为包装模块的周期执行型的功能模块。通过自动地生成作为包装模块的功能模块,即便是不具有与非周期执行型的编程语言相关的知识的设计者,也可以经由作为包装模块的功能模块而利用非周期执行型的功能模块。另外,通过自动地生成作为包装模块的功能模块,设计者无需进行用于从控制器的控制程序中调出非周期执行型的功能模块的编程。其结果,设计工时得到削减。
发明的效果
在某一实施例中,可将非周期执行型的功能模块编入周期执行型的控制程序中。
附图说明
图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是表示同步执行调出对象的功能模块时的控制系统的数据流的一例的图。
[符号的说明]
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:CPU单元
251:扩张单元
254:第一执行部
256:委托部
264:第二执行部
300:驱动机器
300A:机器人控制器
300B:伺服驱动器
301A:手臂机器人
301B:伺服马达
400:外部机器
416:现场总线接口
具体实施方式
以下,一边参照附图一边对本发明的各实施方式进行说明。在以下的说明中,对相同的零件及构成元件附加相同的符号。这些零件及构成元件的名称及功能也相同。因此,不重复关于这些零件及构成元件的详细的说明。
<A.应用例>
首先,参照图1对本发明的应用例进行说明。图1是表示实施方式的开发支援装置100的图。
开发支援装置100例如为笔记型或桌上型的个人计算机(Personal Computer,PC)、平板终端、智能手机、或其他信息处理装置。
在开发支援装置100中安装有开发支援程序50。开发支援程序50是用于支援控制器用的控制程序的开发的应用程序。开发支援程序50例如为欧姆龙公司制造的“SysmacStudio”。用户可在开发支援程序50上设计控制器用的控制程序,并将已设计的控制程序安装在控制器中。
控制器用的控制程序利用周期执行型的编程语言来记述。所谓周期执行型,是指每隔事先决定的周期重复执行控制程序的排头行~最终行的执行形态。即,在周期执行型的控制程序中,程序的执行周期得到保障。作为周期执行型的编程语言,例如可列举梯形语言或结构化文本(Structured Text,ST)语言等。
本实施方式的开发支援装置100自动地生成可在控制器用的控制程序中利用的周期执行型的功能模块,所述周期执行型的功能模块是用于调出利用非周期执行型的编程语言来记述的功能模块的功能模块。所谓非周期执行型,是指依次执行程序的各行的执行形态。在非周期执行型的功能模块中,从开始执行至结束为止的时间得不到保障。作为非周期执行型的编程语言,例如可列举:C语言、C++、Java(注册商标)、Python等。
在图1的例子中,开发支援装置100自动生成作为用于调出非周期执行型的功能模块55A的包装模块的周期执行型的功能模块55B。
更具体而言,首先,开发支援程序50从规定的保存地点获取可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系121。所述规定的保存地点可以是开发支援装置100内的存储装置,也可以是可与开发支援装置100进行通信的外部装置(例如服务器等)。
其次,开发支援程序50获取与非周期执行型的功能模块55A相关的定义信息122。作为一例,在定义信息122中规定有功能模块55A的模块名、功能模块55A的引数的数据类型、功能模块55A的引数的变量名、功能模块55A的返回值的数据类型、反映功能模块55A的返回值的变量的名称等。
在图1的定义信息122的例子中,作为功能模块55A的模块名,例示有“sample(样本)”。作为功能模块55A的引数的数据类型,例示有“float(单精度)”型及“double(双精度)”型。作为功能模块55A的引数的变量名,例示有“in1”、“in2”。作为功能模块55A的返回值的数据类型,例示有“bool(布尔)”型。作为反映功能模块55A的返回值的变量的名称,例示有“ret”。
开发支援程序50基于对应关系121及定义信息122,确定与非周期执行型的功能模块55A的引数的数据类型对应的周期执行型的编程语言的数据类型。在图1的例子中,相对于引数“in1”的数据类型“float”而确定数据类型“REAL(实数)”,相对于引数“in2”的数据类型“double”而确定数据类型“LREAL(长实数)”。开发支援程序50将所述已确定的数据类型“REAL”、数据类型“LREAL”的输入变量55B1、输入变量55B2作为周期执行型的功能模块55B的输入接口来设定。功能模块55B的输入变量55B1、输入变量55B2是用于反映功能模块55A的引数“in1”、引数“in2”的值的输入接口。
另外,开发支援程序50基于对应关系121及定义信息122,确定与非周期执行型的功能模块55A的返回值的数据类型对应的周期执行型的编程语言的数据类型。在图1的例子中,相对于功能模块55A的返回值的数据类型“bool”而确定数据类型“BOOL(布尔)”。开发支援程序50将所述已确定的数据类型“BOOL”的输出变量作为周期执行型的功能模块55B的输出接口来设定。功能模块55B的输出变量55B3是用于反映功能模块55A的返回值的输出接口。
所谓“变量”,是指对在控制器用的控制程序中得到处理的数据给予的识别符。典型的是,“变量”是表示控制器或控制器的控制对象的状态的数据。若换一种说法,则“变量”是指值与控制器或控制器的控制对象的状态联动地变化的数据。“变量”的概念可包含表示一个值的数据、作为排列来表示的数据、作为结构体来表示的数据,可在控制程序中规定的各种数据。
如上所述,开发支援程序50可根据功能模块55A的定义信息122来生成作为包装模块的功能模块55B。通过自动地生成作为包装模块的功能模块55B,即便是不具有与非周期执行型的编程语言相关的知识的设计者,也可以经由功能模块55B而利用非周期执行型的功能模块55A。另外,通过自动地生成作为包装模块的功能模块55B,设计者无需进行用于从控制器200的控制程序中调出非周期执行型的功能模块55A的编程。其结果,设计工时得到削减。
另外,在图1的例子中,在对应关系121中规定有两种编程语言间的数据类型的对应关系,但也可以规定有三种以上的编程语言间的数据类型的对应关系。
另外,在图1的例子中,在定义信息122中规定有与一个功能模块55A相关的输入/输出接口的信息,但也可以规定有与多个功能模块55A的各者相关的输入/输出接口的信息。
<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(参照图2)等的与控制器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”型及“double”型,作为引数的变量名,提取“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通过核C2(第二控制部)来执行。
核C1及核C2分别在不同种类的操作系统(Operating System,OS)上运行。典型的是核C1在实时OS等第一种OS上运行,利用所述OS的基本功能。另一方面,核C2在林纳克斯(Linux)(注册商标)或视窗(Windows)(注册商标)等第二种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通信的方式构成。控制器200包含控制装置202。控制装置202包含一个以上的核C1。核C1执行作为控制器200用的控制程序的用户程序210。用户程序210由梯形程序或ST语言等非周期执行型的PLC语言来规定。
外部机器400以可与控制器200通信的方式构成。外部机器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保存所述功能模块55A、所述模块对应关系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]
一种开发支援程序,是用于支援控制器用的控制程序的开发的开发支援程序50,
所述开发支援程序50使计算机执行:
获取可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系121的步骤S10;
获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块55A的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息122的步骤S12;
生成可在所述控制程序210、211中利用的周期执行型的功能模块55B的步骤S14、S16,所述周期执行型的功能模块55B是用于调出所述非周期执行型的功能模块55A的功能模块;
所述生成步骤S14、S16包括:
基于所述对应关系121及所述定义信息122,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块55B的输入接口来设定的步骤S14,所述输入变量是所述数据类型的输入变量;以及
基于所述对应关系121及所述定义信息122,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块55B的输出接口来设定的步骤S16,所述输出变量是所述数据类型的输出变量。
[结构2]
根据结构1中记载的开发支援程序,其中在所述生成步骤S14、S16中所生成的所述周期执行型的功能模块55B以在从调出所述非周期执行型的功能模块55A,至所述非周期执行型的功能模块55A的执行完成为止的期间,中断所述控制程序210、211的执行的方式运行。
[结构3]
根据结构1中记载的开发支援程序,其中在所述生成步骤S14、S16中所生成的所述周期执行型的功能模块55B以不等待所述非周期执行型的功能模块55A的执行完成,而继续执行所述控制程序210、211的方式运行。
[结构4]
根据结构3中记载的开发支援程序,其中所述生成步骤S14、S16还包括将用于反映所述非周期执行型的功能模块55A的执行完成的输出变量设定在所述周期执行型的功能模块55B的输出中的步骤。
[结构5]
根据结构1~结构4的任一项中记载的开发支援程序,其中所述输入变量的名称与所述引数的名称相同。
[结构6]
根据结构1~结构5的任一项中记载的开发支援程序,其中所述周期执行型的功能模块55B的模块名与所述非周期执行型的功能模块55A的模块名相同。
[结构7]
一种开发支援装置,是用于支援控制器用的控制程序210、211的开发的开发支援装置100,
包括存储装置120,所述存储装置120保存可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系121,
所述存储装置120还保存包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块55A的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息122,
所述开发支援装置100还包括控制装置102,所述控制装置102用于生成可在所述控制程序210、211中利用的周期执行型的功能模块55B,所述周期执行型的功能模块55B是用于调出所述非周期执行型的功能模块55A的功能模块,
所述控制装置102基于所述对应关系121及所述定义信息122,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块55B的输入接口来设定,所述输入变量是所述数据类型的输入变量,
基于所述对应关系121及所述定义信息122,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块55B的输出接口来设定,所述输出变量是所述数据类型的输出变量。
[结构8]
一种开发支援方法,是用于支援控制器用的控制程序210、211的开发的开发支援方法,包括:
开发支援装置100获取可在非周期执行型的编程语言中使用的数据类型、与可在周期执行型的编程语言中使用的数据类型的对应关系121的步骤S10;
所述开发支援装置100获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块55A的引数的数据类型、及所述功能模块的返回值的数据类型的定义信息122的步骤S12;
所述开发支援装置100生成可在所述控制程序210、211中利用的周期执行型的功能模块55B的步骤S14、S16,所述周期执行型的功能模块55B是用于调出所述非周期执行型的功能模块55A的功能模块;
所述生成步骤S14、S16包括:
所述开发支援装置100基于所述对应关系121及所述定义信息122,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块55B的输入接口来设定的步骤S14,所述输入变量是所述数据类型的输入变量;以及
所述开发支援装置100基于所述对应关系121及所述定义信息122,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块55B的输出接口来设定的步骤S16,所述输出变量是所述数据类型的输出变量。
本次所公开的实施方式应认为在所有方面均为例示而非进行限制的实施方式。本发明的范围由权利要求而非所述说明来表示,且意图包含与权利要求均等的含义及范围内的所有变更。
Claims (8)
1.一种存储介质,其存储用于支援控制器用的控制程序的开发的开发支援程序,
所述开发支援程序使计算机执行如下步骤:
获取能在非周期执行型的编程语言中使用的数据类型、与能在周期执行型的编程语言中使用的数据类型的对应关系的步骤;
获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述非周期执行型的功能模块的返回值的数据类型的定义信息的步骤;以及
生成能在所述控制程序中利用的周期执行型的功能模块的生成步骤,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块;
所述生成步骤包括:
基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定的步骤,所述输入变量是所述数据类型的输入变量;以及
基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定的步骤,所述输出变量是所述数据类型的输出变量。
2.根据权利要求1所述的存储介质,其中在所述生成步骤中所生成的所述周期执行型的功能模块以在从调出所述非周期执行型的功能模块,至所述非周期执行型的功能模块的执行完成为止的期间,中断所述控制程序的执行的方式运行。
3.根据权利要求1所述的存储介质,其中在所述生成步骤中所生成的所述周期执行型的功能模块以不等待所述非周期执行型的功能模块的执行完成,而继续执行所述控制程序的方式运行。
4.根据权利要求3所述的存储介质,其中所述生成步骤还包括将用于反映所述非周期执行型的功能模块的执行完成的输出变量设定在所述周期执行型的功能模块的输出中的步骤。
5.根据权利要求1至4中任一项所述的存储介质,其中所述输入变量的名称与所述引数的名称相同。
6.根据权利要求1至4中任一项所述的存储介质,其中所述周期执行型的功能模块的模块名与所述非周期执行型的功能模块的模块名相同。
7.一种开发支援装置,是用于支援控制器用的控制程序的开发的开发支援装置,
包括存储装置,所述存储装置保存能在非周期执行型的编程语言中使用的数据类型、与能在周期执行型的编程语言中使用的数据类型的对应关系,
所述存储装置还保存包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述非周期执行型的功能模块的返回值的数据类型的定义信息,
所述开发支援装置还包括控制装置,所述控制装置用于生成能在所述控制程序中利用的周期执行型的功能模块,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块,
所述控制装置基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定,所述输入变量是所述数据类型的输入变量,
基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定,所述输出变量是所述数据类型的输出变量。
8.一种开发支援方法,是用于支援控制器用的控制程序的开发的开发支援方法,包括:
开发支援装置获取能在非周期执行型的编程语言中使用的数据类型、与能在周期执行型的编程语言中使用的数据类型的对应关系的步骤;
所述开发支援装置获取包含由所述非周期执行型的编程语言所规定的非周期执行型的功能模块的引数的数据类型、及所述非周期执行型的功能模块的返回值的数据类型的定义信息的步骤;以及
所述开发支援装置生成能在所述控制程序中利用的周期执行型的功能模块的生成步骤,所述周期执行型的功能模块是用于调出所述非周期执行型的功能模块的功能模块;
所述生成步骤包括:
所述开发支援装置基于所述对应关系及所述定义信息,确定与所述引数的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述引数的值的输入变量作为所述周期执行型的功能模块的输入接口来设定的步骤,所述输入变量是所述数据类型的输入变量;以及
所述开发支援装置基于所述对应关系及所述定义信息,确定与所述返回值的数据类型对应的所述周期执行型的编程语言的数据类型,将用于反映所述返回值的输出变量作为所述周期执行型的功能模块的输出接口来设定的步骤,所述输出变量是所述数据类型的输出变量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018190149A JP7024679B2 (ja) | 2018-10-05 | 2018-10-05 | 開発支援プログラム、開発支援装置、および開発支援方法 |
JP2018-190149 | 2018-10-05 | ||
PCT/JP2019/038954 WO2020071435A1 (ja) | 2018-10-05 | 2019-10-02 | 開発支援プログラム、開発支援装置、および開発支援方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112639636A CN112639636A (zh) | 2021-04-09 |
CN112639636B true CN112639636B (zh) | 2023-06-30 |
Family
ID=70054555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980057240.6A Active CN112639636B (zh) | 2018-10-05 | 2019-10-02 | 开发支援装置、开发支援方法以及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11321052B2 (zh) |
EP (1) | EP3862827A4 (zh) |
JP (1) | JP7024679B2 (zh) |
CN (1) | CN112639636B (zh) |
WO (1) | WO2020071435A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7091986B2 (ja) * | 2018-10-05 | 2022-06-28 | オムロン株式会社 | 制御システム、制御方法、および開発支援プログラム |
US11372853B2 (en) * | 2019-11-25 | 2022-06-28 | Caret Holdings, Inc. | Object-based search processing |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000036477A1 (fr) * | 1998-12-16 | 2000-06-22 | Fujitsu Limited | Systeme, dispositif et support de memorisation servant au developpement d'un programme de commande d'un mecanisme |
DE10008632A1 (de) * | 2000-02-24 | 2001-09-06 | Gunter Gemmel | Verfahren und System zum Erzeugen eines Computerprogramms |
JP2002099312A (ja) * | 2000-09-22 | 2002-04-05 | Mitsubishi Electric Corp | プログラマブルコントローラおよび制御プログラム開発支援装置 |
CN1453699A (zh) * | 2002-04-26 | 2003-11-05 | 株式会社东芝 | 开发片上系统用的开发环境的生成方法及存储该程序的媒体 |
CN1959692A (zh) * | 2005-09-27 | 2007-05-09 | 欧姆龙株式会社 | 可编程控制器系统 |
CN101251751A (zh) * | 2007-02-21 | 2008-08-27 | 三菱电机株式会社 | 程序编制支援装置和程序执行装置 |
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN104067186A (zh) * | 2012-02-01 | 2014-09-24 | 欧姆龙株式会社 | 支援装置、记录有支援程序的记录介质及生成可执行程序的方法 |
CN104395881A (zh) * | 2012-06-01 | 2015-03-04 | 谷歌有限公司 | 动态型阵列的表达和变换 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040216098A1 (en) * | 2001-02-05 | 2004-10-28 | Roe Colleen A. | Scalable agent service scheduler |
JP2006178818A (ja) * | 2004-12-24 | 2006-07-06 | Yaskawa Electric Corp | モーションコントローラとエンジニアリングツール並びにc言語実行システム |
JP4770664B2 (ja) * | 2006-09-20 | 2011-09-14 | 株式会社デンソー | マイクロプロセッサおよびそれを用いたマイクロコンピュータ |
JP4821717B2 (ja) * | 2007-06-29 | 2011-11-24 | 富士電機株式会社 | プログラマブルコントローラ、プログラマブルコントローラ支援装置、及びプログラマブルコントローラシステム |
JP4877423B1 (ja) * | 2011-03-15 | 2012-02-15 | オムロン株式会社 | Plcのcpuユニット、plc用システムプログラムおよびplc用システムプログラムを格納した記録媒体 |
WO2013099032A1 (ja) * | 2011-12-28 | 2013-07-04 | 株式会社安川電機 | モーションコントローラ及びモータ制御システム |
EP2626784A1 (en) * | 2012-02-09 | 2013-08-14 | MIMOON GmbH | Method and apparatus for automated MATLAB interfacing |
JP6484015B2 (ja) * | 2014-12-02 | 2019-03-13 | 株式会社キーエンス | プログラマブル・ロジック・コントローラおよびその制御方法 |
DE102015105436A1 (de) * | 2015-04-09 | 2016-10-13 | Beckhoff Automation Gmbh | Übersetzungsmodul, Verarbeitungsmodul und Steuerungssystem |
JP6550268B2 (ja) * | 2015-05-27 | 2019-07-24 | 株式会社キーエンス | プログラム作成支援装置、プログラムおよび判別方法 |
JP6520545B2 (ja) * | 2015-08-10 | 2019-05-29 | オムロン株式会社 | サポート装置およびサポートプログラム |
WO2018042520A1 (ja) * | 2016-08-30 | 2018-03-08 | 三菱電機株式会社 | プログラム編集装置、プログラム編集方法及びプログラム編集プログラム |
US11036542B2 (en) * | 2017-09-29 | 2021-06-15 | Oracle International Corporation | Automatically limiting repeated checking on completion of a command without relinquishing a processor |
-
2018
- 2018-10-05 JP JP2018190149A patent/JP7024679B2/ja active Active
-
2019
- 2019-10-02 US US17/278,658 patent/US11321052B2/en active Active
- 2019-10-02 EP EP19869966.2A patent/EP3862827A4/en active Pending
- 2019-10-02 WO PCT/JP2019/038954 patent/WO2020071435A1/ja active Application Filing
- 2019-10-02 CN CN201980057240.6A patent/CN112639636B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000036477A1 (fr) * | 1998-12-16 | 2000-06-22 | Fujitsu Limited | Systeme, dispositif et support de memorisation servant au developpement d'un programme de commande d'un mecanisme |
DE10008632A1 (de) * | 2000-02-24 | 2001-09-06 | Gunter Gemmel | Verfahren und System zum Erzeugen eines Computerprogramms |
JP2002099312A (ja) * | 2000-09-22 | 2002-04-05 | Mitsubishi Electric Corp | プログラマブルコントローラおよび制御プログラム開発支援装置 |
CN1453699A (zh) * | 2002-04-26 | 2003-11-05 | 株式会社东芝 | 开发片上系统用的开发环境的生成方法及存储该程序的媒体 |
CN1959692A (zh) * | 2005-09-27 | 2007-05-09 | 欧姆龙株式会社 | 可编程控制器系统 |
CN101251751A (zh) * | 2007-02-21 | 2008-08-27 | 三菱电机株式会社 | 程序编制支援装置和程序执行装置 |
CN102096390A (zh) * | 2011-01-30 | 2011-06-15 | 深圳市合信自动化技术有限公司 | 可编程逻辑控制器、程序编译器、编译系统及方法 |
CN104067186A (zh) * | 2012-02-01 | 2014-09-24 | 欧姆龙株式会社 | 支援装置、记录有支援程序的记录介质及生成可执行程序的方法 |
CN104395881A (zh) * | 2012-06-01 | 2015-03-04 | 谷歌有限公司 | 动态型阵列的表达和变换 |
Also Published As
Publication number | Publication date |
---|---|
JP2020060855A (ja) | 2020-04-16 |
EP3862827A1 (en) | 2021-08-11 |
CN112639636A (zh) | 2021-04-09 |
JP7024679B2 (ja) | 2022-02-24 |
US20220035601A1 (en) | 2022-02-03 |
WO2020071435A1 (ja) | 2020-04-09 |
US11321052B2 (en) | 2022-05-03 |
EP3862827A4 (en) | 2022-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6175206B1 (en) | Robot information processor | |
CN112639636B (zh) | 开发支援装置、开发支援方法以及存储介质 | |
US11334550B2 (en) | Controller, control method, and control program for SQL statement generation in a factory automation database | |
EP3761127B1 (en) | Display device, screen generation method, and screen generation program | |
EP3767411A1 (en) | Control system, development assistance device, and development assistance program | |
JP6695679B2 (ja) | プログラマブル・ロジック・コントローラ、プログラム作成支援装置、プログラム作成支援方法およびプログラム | |
JP7091986B2 (ja) | 制御システム、制御方法、および開発支援プログラム | |
CN112272820B (zh) | 支持装置以及支持程序的记录介质 | |
CN111065976A (zh) | 工厂自动化系统、控制器和控制方法 | |
US20240143287A1 (en) | Development support device, development support method, and non-transitory storage medium | |
US11803376B2 (en) | Programming support apparatus for developing a user program to be executed by a programmable logic controller | |
US20220291903A1 (en) | Information processing device, recording medium, and support system | |
WO2020246096A1 (ja) | サポート装置およびサポートプログラム | |
JPH1185518A (ja) | 制御装置 | |
Lamberský et al. | Development of Simulink blockset for embedded system with complex peripherals | |
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 |