CN111095194B - 控制系统、控制器以及控制方法 - Google Patents
控制系统、控制器以及控制方法 Download PDFInfo
- Publication number
- CN111095194B CN111095194B CN201980004158.7A CN201980004158A CN111095194B CN 111095194 B CN111095194 B CN 111095194B CN 201980004158 A CN201980004158 A CN 201980004158A CN 111095194 B CN111095194 B CN 111095194B
- Authority
- CN
- China
- Prior art keywords
- variable
- database
- data type
- development
- controller
- 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
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000011161 development Methods 0.000 claims abstract description 173
- 238000003860 storage Methods 0.000 claims description 32
- 238000004891 communication Methods 0.000 claims description 26
- 238000013461 design Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 52
- 238000013507 mapping Methods 0.000 description 45
- 230000008569 process Effects 0.000 description 37
- 230000006870 function Effects 0.000 description 30
- 238000012545 processing Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000003825 pressing Methods 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000005401 electroluminescence Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 240000000594 Heliconia bihai Species 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2445—Data retrieval commands; View definitions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
Abstract
期望用于在不描述SQL语句的情况下在数据库上生成表的技术。控制系统(10)具有开发辅助装置(100)和控制器(200)。开发辅助装置(100)的开发工具(30)受理从控制程序所包含的变量内指定作为收集对象的变量的设定、和对作为收集对象的各变量指定数据库(430)上的识别名的设定来作为设定信息(212)。控制器(200)包含生成模块(250),该生成模块(250)根据设定信息(212)所规定的数据库(430)上的识别名和数据类型,输出用于在数据库(430)上生成表(432)的SQL语句。
Description
技术领域
本公开涉及用于在由控制器访问的数据库上生成表的技术。
背景技术
在各种生产现场中,使生产工序自动化的FA(Factory Automation:工厂自动化)系统正在普及。FA系统由各种工业用的驱动设备构成。工业用的驱动设备例如包含用于使工件移动的移动台、用于搬运工件的输送机、用于将工件移动到预定的目标场所的手臂机器人等。这些驱动设备由PLC(Programmable Logic Controller:可编程逻辑控制器)、机器人控制器等工业用的控制装置(以下,也称为“控制器”。)来控制。
近年来,能够访问外部设备的数据库的控制器正在普及。关于这样的控制器,日本特开2016-194808号公报(专利文献1)公开了“在不描述SQL的情况下操作数据库的技术中,能够通过简单的机理来统一操作多个记录”的控制器。国际公开第2014/184962号(专利文献2)公开了“在从数据库读出数据时,与以往相比能够减少从数据库进行读出的工序数”的控制器。
现有技术文献
专利文献
专利文献1:日本特开2016-194808号公报
专利文献2:国际公开第2014/184962号
发明内容
发明要解决的课题
但是,为了将控制器内的收集对象的数据上传到数据库,需要预先在数据库上登记表。表是指用于数据管理的模型。表由表示列的列和表示行的记录构成。
为了在数据库上生成表,用户需要预先定义各列的属性。作为一例,用户需要定义各列的识别名(列名)或能够追加到各列的数据类型等。此外,作为用于将控制器内的收集对象的数据追加到表中的事前准备,用户需要将控制器内的收集对象的数据与表上的各列名对应起来、或者按照登记在各列中的数据类型来转换收集对象的数据的类型。
在这样的事前设定中需要SQL知识等专业知识。因此,缺乏专业知识的用户很难构建数据库。因此,期望能够在不描述SQL语句的情况下在数据库上生成表的技术。
用于解决课题的手段
在本公开的一例中,具有:控制器,其能够访问数据库;以及开发辅助装置,其构成为能够与上述控制器进行通信。在上述开发辅助装置中能够安装用于辅助上述控制器的控制程序的开发的开发工具。上述开发工具构成为受理如下设定作为设定信息:用于从上述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对作为该收集对象的各变量指定上述数据库上的识别名的设定。上述控制器或上述开发工具包含生成模块,该生成模块用于根据从上述开发辅助装置接收到的上述设定信息所规定的上述数据库上的识别名、和与该识别名对应的上述数据库上的数据类型,输出用于在上述数据库上生成表的SQL语句,上述表是作为上述收集对象的变量的存储目的地。
根据本公开,用户能够在不描述SQL语句的情况下在数据库上生成表。
在本公开的一例中,上述开发工具根据设定了作为上述收集对象的各变量这一情况,显示该变量的数据类型。
根据本公开,用户能够容易地确认作为收集对象的变量的数据类型。
在本公开的一例中,上述开发工具构成为还受理用于从被指定为上述收集对象的变量内指定主键的设定。
根据本公开,用户能够在不描述SQL语句的情况下进行主键的设定。
在本公开的一例中,上述开发工具构成为在被指定为上述收集对象的变量中包含结构体的情况下,针对该结构体所包含的各成员,受理上述数据库上的识别名的指定。
根据本公开,用户能够将结构体所包含的成员变量也设定为收集对象。
在本公开的一例中,上述生成模块按照如下的方式生成上述SQL语句:将针对上述结构体的各成员决定的上述识别名登记在与上述表不同的表中。
根据本公开,用户能够将结构体所包含的成员变量作为与其他收集对象的变量不同的表来进行管理。
在本公开的一例中,上述生成模块将命令代码包含在上述SQL语句中,上述命令代码用于将上述结构体的识别名作为外部键而登记在上述表中。
根据本公开,用户能够在不描述SQL语句的情况下将与结构体对应的数据库上的识别名登记为外部键。
在本公开的其他例子中,提供控制器,其构成为能够与用于辅助控制程序的开发的开发辅助装置进行通信,并且能够访问数据库。在上述开发辅助装置中能够安装用于辅助上述控制程序的开发的开发工具。上述开发工具构成为受理如下设定作为设定信息:用于从上述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对作为该收集对象的各变量指定上述数据库上的识别名的设定。上述控制器具有:通信部,其用于从上述开发辅助装置接收上述设定信息和上述控制程序;程序执行模块,其用于按照从上述开发辅助装置接收到的上述控制程序,对控制对象的驱动设备进行控制;以及生成模块,其用于根据从上述开发辅助装置接收到的上述设定信息所规定的上述数据库上的识别名、和与该识别名对应的上述数据库上的数据类型,输出用于在上述数据库上生成表的SQL语句,上述表是作为上述收集对象的变量的存储目的地。
根据本公开,用户能够在不描述SQL语句的情况下在数据库上生成表。
在本公开的其他例子中,提供控制器的控制方法,该控制器构成为能够与用于辅助控制程序的开发的开发辅助装置进行通信,并且能够访问数据库。在上述开发辅助装置中能够安装用于辅助上述控制程序的开发的开发工具。上述开发工具构成为受理如下设定作为设定信息:用于从上述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对作为该收集对象的各变量指定上述数据库上的识别名的设定。上述控制方法具有如下的步骤:从上述开发辅助装置接收上述设定信息和上述控制程序;按照从上述开发辅助装置接收到的上述控制程序,对控制对象的驱动设备进行控制;以及根据从上述开发辅助装置接收到的上述设定信息所规定的上述数据库上的识别名、和与该识别名对应的上述数据库上的数据类型,输出用于在上述数据库上生成表的SQL语句,上述表是作为上述收集对象的变量的存储目的地。
根据本公开,用户能够在不描述SQL语句的情况下在数据库上生成表。
发明效果
在某些方面,能够在不描述SQL语句的情况下在数据库上生成表。
附图说明
图1是示出第1实施方式的控制系统的结构例的图。
图2是示出第1实施方式的开发辅助装置、控制器、驱动设备以及外部设备之间的数据流的时序图。
图3是示出作为由第1实施方式的开发工具提供的用户界面的一例即程序设计画面的图。
图4是示出作为由第1实施方式的开发工具提供的用户界面的一例即表设定画面的图。
图5是概略地示出第1实施方式的SQL语句的生成处理的图。
图6是示出根据图5所示的SQL语句而生成的表的数据结构的图。
图7是概略地示出第1实施方式的表的生成模式1的图。
图8是示出根据图7所示的SQL语句而生成的表的数据结构的图。
图9是概略地示出第1实施方式的表的生成模式2的图。
图10是示出从图9所示的SQL语句生成的表的数据结构的图。
图11是示出第1实施方式的开发辅助装置的硬件结构的示意图。
图12是示出第1实施方式的控制器的硬件结构的一例的示意图。
图13是示出第1实施方式的外部设备的硬件结构的框图。
图14是示出第2实施方式的控制系统的结构例的图。
图15是概略地示出由第2实施方式的生成模块进行的SQL语句的生成处理的图。
图16是示出第2实施方式的开发辅助装置、控制器、驱动设备以及外部设备之间的数据流的时序图。
图17是概略地示出第2实施方式的SQL语句的生成处理的图。
图18是示出作为第2实施方式的生成模块的一例的表生成FB的图。
图19是概略地示出变形例的SQL语句的生成处理的图。
图20是示出作为第2实施方式的映射模块的一例的映射FB的图。
图21是示出作为第2实施方式的生成模块的一例的表生成FB的图。
图22是概略地示出第2实施方式的生成模式3的图。
图23是概略地示出第2实施方式的生成模式4的图。
图24是示出由比较例的控制系统进行的表生成的处理流程的图。
图25是示出由第2实施方式的控制系统进行的表生成的处理流程的图。
具体实施方式
以下,参照附图对本发明的各实施方式进行说明。在以下的说明中,对相同的部件和构成要素赋予相同的标号。这些名称和功能也是相同的。因此,不重复进行这些部件和构成要素的详细说明。
《第1实施方式》
<A.应用例>
参照图1对本发明的应用例进行说明。图1是示出第1实施方式的控制系统10的结构例的图。
控制系统10是用于使生产工序自动化的FA系统。在图1的例子中,控制系统10由1个以上的开发辅助装置100、1个以上的控制器200、1个以上的驱动设备300、1个以上的外部设备400构成。
开发辅助装置100、控制器200以及外部设备400与网络NW1连接。网络NW1采用EtherNET(注册商标)、OPC-UA(Object Linking and Embedding for Process ControlUnified Architecture:用于过程控制的对象链接与嵌入统一架构)等。OPC-UA是不依赖于供应商或OS(Operating System:操作系统)种类等的、为了实现数据交换而确定的通信的标准规格。
开发辅助装置100例如是笔记本型或台式的PC(Personal Computer:个人计算机)、平板终端、智能手机或者能够开发控制器200用的控制程序的其他信息处理装置。外部设备400是具有数据库功能的其他DBMS(Database Management System:数据库管理系统)。外部设备400例如是笔记本型或台式的PC或者服务器。
控制器200和驱动设备300与网络NW2连接。网络NW2优选采用能够保证数据的到达时间的、进行恒定周期通信的现场网络。作为进行这样的恒定周期通信的现场网络,公知有EtherCAT(注册商标)、EtherNet/IP(注册商标)、注册商标)、CompoNet(注册商标)等。
驱动设备300包含用于使生产工序自动化的各种工业用设备。作为一例,驱动设备300包含机器人控制器300A、伺服驱动器300B、被机器人控制器300A控制的手臂机器人301A、被伺服驱动器300B控制的伺服电机301B等。另外,驱动设备300也可以包含用于拍摄工件的视觉传感器、在生产工序中使用的其他设备等。
在开发辅助装置100中能够安装开发工具30。开发工具30是用于辅助控制器200用的控制程序的开发的应用程序。作为一例,开发工具30是欧姆龙公司制造的“SysmacStudio”。用户能够在开发工具30上设计控制器200用的控制程序,将设计出的控制程序作为用户程序210而安装在控制器200中。用户程序210作为由开发辅助装置100编译的执行格式的文件而被发送到控制器200。
开发工具30受理用于从用户程序210所包含的变量内选择作为收集对象的变量的选择操作。“变量”是指提供给在用户程序210的源代码中进行处理的数据的标识符。典型地,“变量”是表示控制器200或驱动设备300的状态的数据。换言之,“变量”是指值与控制器200或驱动设备300的各结构的状态联动地发生变化的数据。“变量”的概念可包含表示一个值的数据、表示为排列的数据、表示为结构体的数据、可由用户程序210规定的各种数据。
在用户程序210的执行期间收集被选择为收集对象的变量,并定期地上传到外部设备400的数据库430。为了向数据库430上传数据,需要预先在数据库430上登记表432。表432是用于数据管理的模型。表432由表示列的列和表示行的记录来表示。在对各列设置了数据之后,以记录为单位将数据上传到表432。
在本实施方式中,设计者能够对开发工具30进行用于生成表432的操作。更具体而言,开发工具30构成为受理用于从用户程序210所包含的变量内指定作为收集对象的变量的设定。另外,开发工具30构成为受理如下设定,该设定用于指定与作为收集对象的各变量的数据类型对应的、数据库430上的数据类型。另外,开发工具30构成为受理如下设定,该设定用于针对作为收集对象的各变量,指定数据库430上的识别名。例如对后述的表设定画面33(参照图4)进行这些设定。在后面对表设定画面33进行详述。
在图1的例子中,用户程序210所包含的变量“A”、“B”被指定为收集对象。变量“A”是“Int”型的变量。变量“B”是“bool”型的变量。另外,作为与变量“A”对应的数据库430中的识别名,指定了列名“A’”。作为与变量“B”对应的数据库430中的识别名,指定了列名“B’”。另外,作为与变量“A”的数据类型“Int”对应的数据库430上的数据类型,指定了“Number(10)”。另外,作为与变量“B”的数据类型“bool”对应的数据库430上的数据类型,指定了“Number(1)”。
这些对应关系作为设定信息212被发送到控制器200。控制器200包含控制装置202和存储装置208。作为功能结构,控制装置202包含生成模块250和程序执行模块252。存储装置208存储从开发辅助装置100接收的用户程序210和设定信息212。
程序执行模块252根据受理了用户程序210的执行开始命令的情况,开始执行用户程序210。之后,程序执行模块252根据用户程序210所规定的控制命令来控制驱动设备300。程序执行模块252根据用户程序210的执行结果来逐次更新变量的值。
生成模块250根据设定信息212所规定的数据库430上的识别名、和与该识别名对应的数据库430上的数据类型,输出用于在数据库430上生成表432的SQL语句230,所述表432是作为收集对象的变量的存储目的地。在图1的例子中,SQL语句230被规定为构成包含“Number(10)”型的列“A’”和“Number(1)”型的列“B’”的表432。
所生成的SQL语句230被传送到外部设备400。作为DBMS的外部设备400解释从控制器200接收的SQL语句230,并根据SQL语句230在数据库430上生成表432。在图1的例子中,在数据库430上生成包含“A’”、“B’”的表432。
如上所述,开发辅助装置100构成为受理用于指定作为收集对象的变量的设定、用于指定与作为收集对象的各变量的数据类型对应的数据库430上的数据类型的设定、用于针对作为收集对象的各变量指定数据库430上的识别名的设定。控制器200根据这些设定,将用于在数据库430上生成表432的SQL语句230输出到外部设备400。由此,在外部设备400的数据库430上生成表432。这样,在生成表432时,用户不需要描述SQL语句230。因此,即使是没有SQL知识的用户,也能够容易地构建数据库430。
另外,在上述内容中,对根据用户程序210所包含的变量来生成表432的例子进行了说明,但除了用户程序210所包含的变量以外,生成模块250也可以根据控制器200内的各种控制程序所包含的变量来生成表432。
另外,在图1中,示出了用户程序210和设定信息212作为单独的数据被传送给控制器200的例子,但用户程序210和设定信息212也可以作为一体的数据而被传送。另外,设定信息212可以在与用户程序210相同的时刻被传送,也可以在不同的时刻被传送。
另外,在图1的例子中,对数据库430存在于外部设备400的例子进行了说明,但数据库430也不一定需要存在于外部设备400。例如,数据库430也可以存在于控制器200的内部。或者,数据库430也可以存在于与控制器200的内部总线相连的其他单元的内部。
<B.时序流程>
参照图2~图6对表432的生成处理的处理流程进行说明。图2是示出开发辅助装置100、控制器200、驱动设备300以及外部设备400之间的数据流的时序图。
在步骤S10中,开发辅助装置100受理开发工具30的启动命令。基于此,开发辅助装置100显示程序设计画面。图3是示出作为由开发工具30提供的用户界面的一例的程序设计画面31的图。程序设计画面31例如显示在开发辅助装置100的显示部121上。
用户程序210可利用任意的编程语言来描述。作为一例,用户程序210可以由梯形图(LD:Ladder Diagram)来规定,也可以由命令列表(IL:Instruction List)、结构化文本(ST:Structured Text)以及顺序功能图(SFC:Sequential Function Chart)中的任意一个或者它们的组合来规定。或者,用户程序210也可以由JavaScript(注册商标)或C语言等通用的编程语言来规定。
在图3的例子中,用户程序210由梯形图来描述。设计者通过在程序设计画面31上对任意的功能块进行组合或者对变量和功能块的输入输出关系进行规定,能够设计出与控制对象的驱动设备300匹配的用户程序210。功能块是指在用户程序210内反复使用的功能被部件化的功能块。
在图3的例子中,用户程序210包含变量A~C和功能块FB1、FB2。功能块FB1根据与其输入部相关联的变量A的值,执行功能块FB1所规定的预定的功能。该执行结果被反映在与功能块FB1的输出部相关联的变量B中。功能块FB2根据与其输入部相关联的变量B的值,执行功能块FB2所规定的预定的功能。该执行结果被反映在与功能块FB2的输出部相关联的变量C中。这样,设计者通过在程序设计画面31上对变量和功能块进行组合,能够设计任意的用户程序210。
再次参照图2,在步骤S14中,开发工具30受理了与表生成相关的表设定画面的调用操作。基于此,开发工具30显示表设定画面。
图4是示出作为由开发工具30提供的用户界面的一例的表设定画面33的图。表设定画面33受理用于表生成的各种设定。
更具体而言,表设定画面33包含连接到数据库的连接信息的设定栏35、表名的设定栏36、用于指定作为收集对象的变量的设定栏41、用于显示收集对象的变量的数据类型的显示栏42、用于指定数据库上的数据的识别名的设定栏45、用于指定数据库上的数据类型的设定栏46、用于指定主键的设定栏50、用于指定允许或禁止null指定的设定栏51。
设定栏35受理连接到数据库的连接信息的指定。各连接信息是由用户等预先设定的。在连接信息中规定有连接名、连接对象的数据库类型、连接目的地地址数据库名、用户名、密码等。通过用户按下按钮35A,各连接信息所规定的数据库类型被一览显示。作为数据库类型的种类,例如,可列举“Oracle Database”、“SQL Server”、“MySQL(注册商标)”、“Firebird”、“DB2(注册商标)”、“PostgreSQL”等。用户通过从数据库类型的一览中选择一个数据库类型,能够指定连接到数据库的连接信息。
设定栏36受理与作为生成对象的表432相关的表名的输入。设定栏36例如是文本框,表名通过字符输入来设定。在图4的例子中,作为表名,设定有“TABLE1”。
设定栏41受理作为收集对象的变量的指定。典型地,通过用户按下按钮41A,在用户程序210中定义的结构体名(变量名)被一览显示。一览显示的结构体名可以是由用户预先登记的,也可以从用户程序210自动提取。用户通过从结构体名的一览中选择一个结构体名,能够将结构体所包含的变量指定为收集对象。
显示栏42显示在设定栏41中设定的作为收集对象的各变量的数据类型。与各变量对应的数据类型例如是在上述程序设计画面31(参照图3)中登记变量时等设定的,在进行该设定时,保存变量与数据类型的对应关系。开发工具30基于在设定栏41中选择了作为收集对象的变量的情况,根据变量与数据类型的对应关系来确定与该选择出的变量对应的数据类型,并与该变量并排地显示该数据类型。
设定栏45受理用于对在设定栏41中设定的作为收集对象的各变量指定数据库430上的识别名的设定。在设定栏45中设定的识别名是表的列名。设定栏45例如是文本框,用户通过对各文本框进行字符输入,能够设定与各变量对应的列名。
表的列名优选自动决定。作为一例,列名被设定为与变量名相同。或者,将在变量名中附加了预定的关键字的变量名决定为列名。在自动设定列名的情况下,用户不需要在设定栏45中设定列名。
设定栏46受理用于对在设定栏41中设定的各变量指定数据库430上的数据类型的设定。作为一例,通过用户按下按钮46A,可设定的数据类型被一览显示。用户通过从数据类型的一览中选择一个数据类型,能够指定数据库430上的数据类型。
数据库430上的数据类型优选自动决定。更具体而言,用户程序210中能够使用的各数据类型与数据库430上的数据类型的对应关系是预先规定的。开发工具30根据该对应关系,确定与作为收集对象的各变量的数据类型对应的数据库430上的数据类型,并将该数据类型显示在设定栏46中。在该情况下,用户不需要在设定栏46中设定数据类型。
设定栏50受理用于指定在表432上视为主键的变量的设定。主键用于唯一地识别表432内的记录。对于被设定为主键的变量,不允许数据的重复。作为主键的设定方式的一例,通过用户按下按钮50A,显示“是”和“否”。选择了“是”的列被设定为主键。选择了“否”的列不被设定为主键。
设定栏51针对各列受理是否允许输入NULL的设定。作为设定方式的一例,通过用户按下按钮51A,显示“是”和“否”。选择了“是”的列禁止输入NULL。选择了“否”的列允许输入NULL。
在表生成按钮58被按下的情况下,开发辅助装置100将对表设定画面33进行的表设定作为设定信息212而传送给控制器200。在表设定画面33的取消按钮59被按下的情况下,开发辅助装置100关闭表设定画面33而不传送设定在表设定画面33中的表设定。
再次参照图2,在步骤S20中,表生成按钮58被按下。基于此,开发辅助装置100将对表设定画面33进行的表设定作为设定信息212而传送给控制器200。
在步骤S22中,控制器200的生成模块250根据从开发辅助装置100接收到设定信息212的情况,生成用于表生成的SQL语句230(参照图1)。另外,在步骤S22中,示出了SQL语句230是由控制器200生成的例子,但SQL语句230也可以由开发工具30生成。
参照图5,说明生成模块250对SQL语句230的生成处理。图5是概略地示出SQL语句230的生成处理的图。
如图5所示,生成模块250将设定信息212作为输入而生成SQL语句230。更具体而言,生成模块250参照设定信息212所包含的表名“TABLE1”,将“Create Table TABLE1”这样的描述反映到SQL语句230中。通过该描述,所生成的表432的表名为“TABLE1”。
接着,生成模块250根据设定信息212所包含的识别名“A’”和与识别名“A’”相对应的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230中。通过该描述,识别名“A’”的列被追加到表432中。另外,关于识别名“A’”,由于禁止NULL指定,所以将“NOT NULL”这样的描述反映到SQL语句230中。同样,生成模块250将用于追加识别名“B’”~“F’”的列的描述反映到SQL语句230中。
接着,由于在设定信息212中规定了将识别名“A’”、“B’”的列设定为主键,所以生成模块250将“PRIMARY KEY(A’、B’)”这样的描述追加到SQL语句230中。通过该描述,识别名“A’”、“B’”的列被设定为主键。
所生成的SQL语句230被发送到外部设备400。再次参照图2,在步骤S24中,外部设备400根据从控制器200接收到的SQL语句230来生成表432。
图6是示出根据图5所示的SQL语句230而生成的表432的数据结构的图。如图6所示,表432由识别名“A’”~“F’”的列构成。“*”标记表示主键。在图6的例子中,列“A’”、“B’”表示为主键。
再次参照图2,在步骤S30中,开发工具30受理了编译操作。基于此,开发工具30对在程序设计画面31上设计的用户程序210进行编译。之后,开发工具30受理了编译结果的下载操作。基于此,开发工具30将所编译的用户程序210传送给控制器200。控制器200将接收到的用户程序210保存在存储装置208(参照图1)中。
在步骤S32中,控制器200受理了用户程序210的执行命令。基于此,控制器200开始执行用户程序210。在用户程序210是循环执行型的程序的情况下,控制器200按照每个预定的控制周期反复执行用户程序210所包含的命令组。更具体而言,控制器200在1个控制周期内执行用户程序210的第一行到最后一行。在下一个控制周期中,控制器200再次执行用户程序210的第一行到最后一行。控制器200在每个控制周期中生成指令值,并将该指令值输出到驱动设备300。
在步骤S50中,控制器200判断是否受理了用户程序210所规定的指令值的生成处理的执行命令。在判断为受理了该执行命令的情况下(在步骤S50中为“是”),控制器200根据所规定的命令来生成指令值,并将该指令值发送到驱动设备300(步骤S52)。驱动设备300根据从控制器200接收到的指令值来驱动控制对象。在控制器200判断为未受理指令值的生成处理的执行命令的情况下(在步骤S50中为“否”),控制器200将控制切换为步骤S60而不执行步骤S52的处理。
在步骤S60中,控制器200判断是否受理了作为收集对象的变量的上传处理的执行命令。在判断为受理了该执行命令的情况下(在步骤S60中为“是”),控制器200生成用于执行INSERT命令的SQL语句。在该SQL语句中规定有用于指定追加目的地的表的信息(例如,表名)、上传到各列的数据的值等。
在步骤S62中,控制器200将所生成的SQL语句发送到外部设备400。外部设备400根据从控制器200接收的SQL语句来生成在各列中反映了变量值的记录,并将生成的记录追加到在步骤S24中生成的表432中。由此,作为收集对象的变量被反映到表432中。之后,外部设备400将表示正常结束或异常结束的上传结果发送到控制器200。
控制器200在未接收到作为收集对象的变量的上传处理的执行命令的情况下(在步骤S60中为“否”),将处理切换为步骤S70而不执行步骤S62的处理。
在步骤S70中,控制器200判断是否结束用户程序210的执行。该结束命令例如是基于从用户受理了结束操作而发出的。在判断为从用户受理了结束操作的情况下(在步骤S70中为“是”),控制器200结束用户程序210的执行。在未受理结束操作的情况下(在步骤S70中为“否”),控制器200使控制返回到步骤S50。
另外,在上述内容中,对在步骤S62中将INSERT命令的SQL语句从控制器200发送到外部设备400的数据库430的例子进行了说明,但也可以仅将进行INSERT的值发送到外部设备400的数据库430。在该情况下,外部设备400根据接收到进行INSERT的值的情况,生成INSERT命令的SQL语句,根据该SQL语句来执行接收到的值的INSERT处理。
<C.生成模块250的生成模式>
在作为收集对象的变量中,有时包含结构体。在作为收集对象的变量中包含结构体的情况下,生成模块250以与不包含结构体的情况不同的方式来生成用于表生成的SQL语句230。作为在收集对象的变量中包含结构体的情况下的表432的生成处理,例如可考虑两个生成模式(生成模式1、2)。
在生成模式1中,生成模块250分别生成用于管理不是结构体的变量的表、和用于管理结构体所包含的成员变量的表。在生成模式2中,生成模块250生成用于共同管理不是结构体的变量和结构体所包含的成员变量的1个表。
以下,参照图7~图10对第1实施方式的生成模式1、2依次进行说明。
(C1.表的生成模式1)
首先,对第1实施方式的表的生成模式1进行说明。图7是概略地示出第1实施方式的表的生成模式1的图。
在被指定为收集对象的变量中包含结构体的情况下,上述开发工具30(参照图4)不仅对不是结构体的变量,还对结构体所包含的各成员受理数据库430上的数据类型的指定和数据库430上的识别名的指定。
例如,在上述表设定画面33(参照图4)中,结构体“C”被指定为收集对象。在结构体“C”包含成员变量“α”、“β”、“γ”的情况下,用户对成员变量“α”,“β”,“γ”也受理数据库430上的数据类型的指定和数据库430上的识别名(列名)的指定。作为一例,对成员变量“α”设定数据类型“Number(5)”的列“α’”,对成员变量“β”设定数据类型“Number(5)”的列“β’”,对成员变量“γ”设定数据类型“Number(5)”的列“γ’”。作为这些设定的结果,生成图7所示的设定信息212。
在本生成例中,如图7所示,控制器200的生成模块250将设定信息212作为输入而按照如下的方式生成SQL语句,将对结构体的各成员决定的识别名登记在另一表中。在图7的例子中,生成模块250将设定信息212作为输入而生成用于生成“TABLE1”的SQL语句230A和用于生成“TABLE2”的SQL语句230B。
更具体而言,生成模块250根据设定信息212所包含的识别名“A’”和与识别名“A’”相对应的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230A中。通过该描述,识别名“A’”的列被追加到表中。另外,关于识别名“A’”,由于禁止NULL指定,所以将“NOT NULL”这样的描述反映到SQL语句230A中。同样,生成模块250将用于追加识别名“B’”的列的描述反映到SQL语句230A中。
关于结构体“C”,生成模块250新生成与结构体名对应的列名“C’”。列名“C’”可以与结构体名相同,也可以不同。之后,生成模块250将“C’Number(5)”这样的描述反映到SQL语句230A中。由此,识别名“C’”的列被追加到表中。
另外,生成模块250将命令代码包含在SQL语句230A中,命令代码用于将结构体的列名作为外部键登记在表中。在图7的例子中,“FOREIGN KEY(C’)REFERENCES TABLE2”这样的描述被追加到SQL语句230A中。通过该描述,列“C’”被规定为参照“TABLE2”的外部键。
接着,关于结构体“C”所包含的成员变量“α”,“β”,“γ”,生成模块250将用于追加列“C’”、“α’”、“β’”、“γ’”的描述反映到与SQL语句230A不同的SQL语句230B中。在图7的例子中,“C’Number(5)”这样的描述、“α’Number(5)”这样的描述、“β’Number(5)”这样的描述、“γ’Number(5)”这样的描述被反映到SQL语句230B中。通过这些描述,识别名“C’”、“α’”、“β’”、“γ’”的列被追加到另一表中。此时,关于附加在结构体名“C”上的列名“C’”,将“PRIMARY KEY(C’)”这样的描述追加在SQL语句230B中。通过该描述,识别名“C’”的列被设定为主键。
图8是示出根据图7所示的SQL语句230A而生成的表432A、和根据图7所示的SQL语句230B而生成的表432B的数据结构的图。
表432A由识别名“A’”、“B’”、“C’”的列构成。“*”标记表示主键。在图8的例子中,列“A’”、“B’”表示为主键。另外,列“C’”参照外部的“TABLE2”。
表432B由识别名“C’”、“α’”、“β’”、“γ’”的列构成。“*”标记表示主键。在图8的例子中,列“C’”表示为主键。
这样,在本生成例中,生成模块250分别生成用于管理不是结构体的变量的表432A、和用于管理结构体所包含的成员变量的表432B。
另外,在图7和图8中,对在作为收集对象的变量中包含有1个结构体的例子进行了说明,但在作为收集对象的变量中包含有多个结构体的情况下,以根据结构体的数量来生成表的方式生成SQL语句。另外,在结构体的成员中包含结构体的情况下,以对各结构体生成表的方式生成SQL语句。
另外,在上述图7和图8的例子中,对在作为收集对象的变量中包含结构体的情况下将该结构体的名称登记为表432A的外部键和表432B的主键的例子进行了说明,但不是一定需要将该结构体的名称登记为表432A的外部键和表432B的主键。作为一例,也可以是该结构体的1个以上的成员被登记为表432A的外部键和表432B的主键。作为一例,结构体“C”的成员“C.α”被登记为表432A的外部键,并且被登记为表432B的主键。在该情况下,不需要将结构体“C”自身登记为表432A、432B的列。
(C2.表的生成模式2)
接着,参照图9和图10对在作为收集对象的变量中包含结构体的情况下的表432的生成模式2进行说明。
图9是概略地示出第1实施方式的表的生成模式2的图。如图9所示,控制器200的生成模块250将设定信息212作为输入而生成SQL语句230。
在设定信息212中,结构体“C”被规定为作为收集对象的变量。作为成员变量,结构体“C”包含变量“α”、“β”、“γ”。在本生成例中,生成模块250生成用于共同管理不是结构体的变量和结构体所包含的成员变量的1个表432。
更具体而言,生成模块250根据设定信息212所包含的识别名“A’”和与识别名“A’”相对应的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230中。通过该描述,识别名“A’”的列被追加到表432中。另外,关于识别名“A’”,由于禁止NULL指定,所以将“NOT NULL”这样的描述反映到SQL语句230中。同样,生成模块250将用于追加识别名“B’”的列的描述反映到SQL语句230中。另外,关于结构体“C”的成员变量“α”,“β”,“γ”,与变量“A”、“B”同样,生成模块250将用于追加识别名“α’”、“β’”、“γ’”的列的描述反映到SQL语句230中。
图10是示出从图9所示的SQL语句230生成的表432的数据结构的图。
表432由识别名“A’”、“B’”、“C’”、“α’”、“β’”、“γ’”的列构成。“*”标记表示主键。在图10的例子中,列“A’”、“B’”表示为主键。
这样,在本生成例中,生成模块250生成用于共同管理不是结构体的变量和结构体所包含的成员变量的1个表432。
<D.硬件结构>
参照图11~图13对开发辅助装置100、控制器200以及外部设备400的硬件结构依次进行说明。
(D1.开发辅助装置100的硬件结构)
首先,参照图11对开发辅助装置100的硬件结构进行说明。图11是示出开发辅助装置100的硬件结构的示意图。
作为一例,开发辅助装置100由按照通用的计算机架构构成的计算机构成。开发辅助装置100包含CPU(Central Processing Unit:中央处理单元)或MPU(Micro-ProcessingUnit:微处理单元)等控制装置102、主存储器104、非易失性的存储装置110、通信接口111、I/O(InputOutput:输入输出)接口114、显示界面120。这些组件经由内部总线125以能够互相通信的方式连接。
控制装置102通过在主存储器104中展开并执行存储在存储装置110中的开发辅助程序110A,实现开发工具30的各种处理。开发辅助程序110A是用于提供用户程序210的开发环境的程序。除了开发辅助程序110A之外,存储装置110还存储由开发工具30生成的各种数据等。该数据例如包含在开发工具30上设计的上述用户程序210、上述设定信息212等。
在通信接口111与其他通信设备之间经由网络来交换数据。该其他通信设备例如包含控制器200、外部设备400、服务器等。开发辅助装置100也可以构成为能够经由通信接口111从该其他通信设备下载开发辅助程序110A等各种程序。
I/O接口114与操作部115连接,取入表示来自操作部115的用户操作的信号。操作部115典型地由键盘、鼠标、触摸面板、触控板等构成,受理来自用户的操作。
显示界面120与显示部121连接,根据来自控制装置102等的指令对显示部121发送用于显示图像的图像信号。显示部121由LCD(Liquid Crystal Display:液晶显示器)或有机EL(Electro Luminescence:电致发光)显示器等构成,对用户提示各种信息。在显示部121中,可以显示由开发工具30提供的各种画面(例如,上述程序设计画面31或上述表设定画面33)。在图11的例子中,开发辅助装置100和显示部121作为分体来表示,但开发辅助装置100和显示部121也可以构成为一体。
(D2.控制器200的硬件结构)
接着,参照图12对控制器200的硬件结构进行说明。图12是示出控制器200的硬件结构的一例的示意图。
控制器200包含通信接口201、CPU或MPU等控制装置202、芯片组204、主存储器206、非易失性的存储装置208、内部总线控制器222、现场总线控制器224、存储卡接口239。
控制装置202读出存储于存储装置208的控制程序211并在主存储器206中展开和执行该控制程序211,由此实现针对机器人控制器300A或伺服驱动器300B等的任意的控制。控制程序211包含用于对控制器200进行控制的各种程序。作为一例,控制程序211包含系统程序209和用户程序210等。系统程序209包含用于提供数据的输入输出处理或执行时刻控制等控制器200的基本功能的命令代码。用户程序210是从开发辅助装置100下载的。用户程序210可根据控制对象来任意设计,包含用于执行顺序控制的顺序程序210A和用于执行运动控制的运动程序210B。
芯片组204通过对各组件进行控制来实现作为控制器200整体的处理。
除了控制程序211之外,存储装置208还存储各种数据。作为一例,存储装置208存储上述设定信息212和数据类型的对应关系213等。关于数据类型的对应关系213的详细内容,在后述的“第2实施方式”中进行说明。
内部总线控制器222是与通过内部总线和控制器200连接的各种设备之间交换数据的接口。作为这样的设备的一例,连接有I/O单元226。
现场总线控制器224是与通过现场总线和控制器200连接的各种驱动设备300之间交换数据的接口。作为这样的设备的一例,连接有机器人控制器300A和伺服驱动器300B。此外,还可以连接视觉传感器等驱动设备。
内部总线控制器222和现场总线控制器224能够对所连接的设备提供任意指令,并且能够取得由设备管理的任意数据。另外,内部总线控制器222和/或现场总线控制器224也作为用于与机器人控制器300A或伺服驱动器300B之间交换数据的接口来发挥功能。
通信接口201(通信部)对通过各种有线/无线网络的数据交换进行控制。控制器200经由通信接口201而与开发辅助装置100或外部设备400进行通信。另外,控制器200能够经由通信接口201来访问外部设备400上的数据库430。
存储卡接口239构成为能够拆装作为外部存储介质的一例的存储卡240(例如,SD卡),能够对存储卡240写入数据并从存储卡240读出数据。
(D3.外部设备400的硬件结构)
接着,参照图13对外部设备400的硬件结构进行说明。图13是示出外部设备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对外部设备400与其他通信设备之间的数据交换进行中介。
更具体而言,通信接口412对经由网络NW1(参照图1)等的与控制器200的通信进行中介。通信接口412例如可采用能够依据EtherNET进行通信的组件。
I/O接口414与操作部415连接,取入来自操作部415的表示用户操作的信号。操作部415典型地由键盘、鼠标、触摸面板、触控板等构成,受理来自用户的操作。
显示界面420与显示部421连接,根据来自控制装置402等的指令,对显示部421发送用于显示图像的图像信号。显示部421由LCD或有机EL显示器等构成,对用户提示各种信息。在图13的例子中,外部设备400和显示部421作为分体而示出,但外部设备400和显示部421也可以构成为一体。
<E.第1实施方式的总结>
如上所述,本实施方式的开发辅助装置100构成为受理用于指定作为收集对象的变量的设定、用于指定与作为收集对象的各变量的数据类型对应的数据库430上的数据类型的设定、用于针对作为收集对象的各变量指定数据库430上的识别名的设定。这些设定作为设定信息212从开发辅助装置100传送给控制器200。
控制器200根据从开发辅助装置100接收的设定信息212所规定的数据库430上的识别名、和与该识别名对应的数据库430上的数据类型,将用于在数据库430上生成表432的SQL语句230输出到外部设备400。由此,在外部设备400的数据库430上自动生成表432。
这样,用户只要指定作为收集对象的变量、和与各变量的数据类型对应的数据库430上的数据类型,便能够在数据库430上生成表432。因此,在生成表432时,用户不需要描述SQL语句230。因此,即使是没有SQL知识的用户,也能够容易地构建数据库430。
<F.附记>
如上所述,本实施方式包含以下的公开内容。
[结构1]
一种控制系统,该控制系统具有:
控制器(200),其能够访问数据库(430);以及
开发辅助装置(100),其构成为能够与所述控制器(200)进行通信,
在所述开发辅助装置(100)中能够安装用于辅助所述控制器(200)的控制程序的开发的开发工具(30),
所述开发工具(30)构成为受理如下设定来作为设定信息(212):用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对作为该收集对象的各变量指定所述数据库(430)上的识别名,
所述控制器(200)或所述开发工具(30)包含生成模块(250),该生成模块(250)用于根据从所述开发辅助装置(100)接收的所述设定信息(212)所规定的所述数据库(430)上的识别名、和与该识别名对应的所述数据库(430)上的数据类型,输出用于在所述数据库(430)上生成表(432)的SQL语句,所述表(432)是作为所述收集对象的变量的存储目的地。
[结构2]
根据结构1所述的控制系统,其中,所述开发工具(30)构成为根据设定了作为所述收集对象的各变量这一情况,显示该变量的数据类型。
[结构3]
根据结构1或2所述的控制系统,其中,所述开发工具(30)构成为还受理用于从被指定为所述收集对象的变量内指定主键的设定。
[结构4]
根据结构1~3中的任意一项所述的控制系统,其中,所述开发工具(30)构成为在被指定为所述收集对象的变量中包含结构体的情况下,针对该结构体所包含的各成员,受理所述数据库(430)上的识别名的指定。
[结构5]
根据结构4所述的控制系统,其中,所述生成模块(250)按照如下的方式生成所述SQL语句:将对所述结构体的各成员决定的所述识别名登记在与所述表(432)不同的表中。
[结构6]
根据结构5所述的控制系统,其中,所述生成模块(250)将命令代码包含在所述SQL语句中,所述命令代码用于将所述结构体的识别名作为外部键而登记在所述表(432)中。
[结构7]
一种控制器(200),其构成为能够与用于辅助控制程序的开发的开发辅助装置(100)进行通信,并且能够访问数据库(430),其中,
在所述开发辅助装置(100)中能够安装用于辅助所述控制程序的开发的开发工具(30),
所述开发工具(30)构成为受理如下设定来作为设定信息(212):用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对作为该收集对象的各变量指定所述数据库(430)上的识别名,
所述控制器(200)具有:
通信部,其用于从所述开发辅助装置(100)接收所述设定信息(212)和所述控制程序;
程序执行模块,其用于根据从所述开发辅助装置(100)接收的所述控制程序,对控制对象的驱动设备进行控制;以及
生成模块(250),其用于根据从所述开发辅助装置(100)接收的所述设定信息(212)所规定的所述数据库(430)上的识别名、和与该识别名对应的所述数据库(430)上的数据类型,输出用于在所述数据库(430)上生成表(432)的SQL语句,所述表(432)是作为所述收集对象的变量的存储目的地。
[结构8]
一种控制方法,其是控制器(200)的控制方法,所述控制器(200)构成为能够与用于辅助控制程序的开发的开发辅助装置(100)进行通信,并且能够访问数据库(430),其中,
在所述开发辅助装置(100)中能够安装用于辅助所述控制程序的开发的开发工具(30),
所述开发工具(30)构成为受理如下设定来作为设定信息(212):用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及用于针对该收集对象的各变量指定所述数据库(430)上的识别名,
所述控制方法具有如下的步骤:
从所述开发辅助装置(100)接收所述设定信息(212)和所述控制程序;
根据从所述开发辅助装置(100)接收的所述控制程序,对控制对象的驱动设备进行控制;以及
根据从所述开发辅助装置(100)接收的所述设定信息(212)所规定的所述数据库(430)上的识别名、和与该识别名对应的所述数据库(430)上的数据类型,输出用于在所述数据库(430)上生成表(432)的SQL语句,所述表(432)是作为所述收集对象的变量的存储目的地。
《第2实施方式》
<G.概要>
在第1实施方式中,用户对表设定画面33进行用于生成表432的设定,根据该设定,生成了表生成用的SQL语句230。与此相对,在第2实施方式中,将用于生成SQL语句230的功能作为能够组装在用户程序210中的功能模块来提供。即,用户能够在程序设计画面31(参照图3)上将该功能模块与其他功能模块组合起来而使用。
由于第2实施方式的控制系统10的硬件结构等其他方面与第1实施方式的控制系统10相同,因此,以下不重复进行它们的说明。
<H.应用例>
参照图14和图15对本发明的其他应用例进行说明。图14是示出第2实施方式的控制系统10的结构例的图。
如图14所示,控制系统10由1个以上的开发辅助装置100、1个以上的控制器200、1个以上的驱动设备300、1个以上的外部设备400构成。作为硬件结构,控制器200包含控制装置202和存储装置208。作为功能结构,控制装置202包含程序执行模块252。
本实施方式的开发辅助装置100将用于生成SQL语句230的功能来作为功能块等功能模块来提供。在图14的例子中,该功能模块表示为生成模块250。用户能够在上述程序设计画面31(参照图3)上将生成模块250与其他功能模块组合起来而使用。
开发辅助装置100根据受理了下载操作的情况,将组装有生成模块250的用户程序210传送给控制器200。控制器200将从开发辅助装置100接收的用户程序210保存在存储装置208中。
程序执行模块252根据受理了用户程序210的执行开始命令的情况,开始执行用户程序210。程序执行模块252根据生成模块250的执行时刻到来的情况,执行生成模块250对SQL语句230的生成功能。
参照图15对生成模块250生成SQL语句230的功能进行说明。图15是概略地示出由生成模块250进行的SQL语句230的生成处理的图。
生成模块250将存储在存储装置208中的对应关系213和收集对象变量229作为输入而生成SQL语句230。
对应关系213对用户程序210中能够使用的数据类型与数据库430中能够使用的数据类型的对应关系进行了规定。对应关系213可以是预先规定的,也可以由用户任意编辑。典型地,可根据需要从服务器下载对应关系213。
收集对象变量229在由上述程序设计画面31(参照图3)设计的用户程序210上被指定为收集对象。在图15的例子中,变量“A”~“F”被指定为收集对象。
生成模块250对作为收集对象的各变量决定数据库430上的识别名。在某些方面,生成模块250将识别名决定为与变量名相同。在其他方面,生成模块250将在变量名上附加了预定的关键字的变量名决定为识别名。作为一例,针对变量“A”~“F”的数据库430上的识别名被决定为列名“A’”~“F’”。另外,列名的决定方法不限定于此,可采用任意的决定方法。
接着,生成模块250根据对应关系213,针对作为收集对象的各变量,确定与该变量的数据类型对应的数据库430上的数据类型。其结果是,关于“DINT”型的变量“A”,“Number(10)”型被确定为对应的数据类型。关于“String(128)”型的变量“B”,“nchar(127)”型被确定为对应的数据类型。关于“Int”型的变量“C”,“Number(5)”型被确定为对应的数据类型。关于“String(20)”型的变量“D”,“nchar(19)”型被确定为对应的数据类型。关于“bool”型的变量“E”,“Number(1)”型被确定为对应的数据类型。关于“DATE_AND_TIME”型的变量“F”,“TIMESTAMP”型被确定为对应的数据类型。
接着,生成模块250根据对收集对象的各变量决定的识别名、和对作为收集对象的各变量确定的数据库430上的数据类型,生成SQL语句230。更具体而言,生成模块250根据对变量“A”确定的识别名“A’”和对变量“A”确定的数据库430上的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230中。通过该描述,识别名“A’”的列被追加到表432中。同样,生成模块250将用于追加识别名“B’”~“F’”的列的描述反映到SQL语句230中。
所生成的SQL语句230被传送到外部设备400。作为DBMS的外部设备400解释从控制器200接收的SQL语句230,根据SQL语句230,在数据库430上生成表432。
如上所述,表生成用的SQL语句230是自动生成的。用户仅通过以将收集对象变量作为生成模块250的输入的方式建立用户程序210,便能够生成以作为收集对象的变量为要素的表432。这样,用户能够在不描述SQL语句的情况下在数据库430上生成表432。
另外,在上述内容中,对根据用户程序210所包含的变量来生成表432的例子进行了说明,但除了用户程序210以外,还可以根据控制器200内的各种控制程序所包含的变量来生成表432。
另外,在图14的例子中,对数据库430存在于外部设备400的例子进行了说明,但数据库430不需要一定存在于外部设备400。例如,数据库430也可以存在于控制器200的内部。或者,数据库430也可以存在于与控制器200的内部总线相连的其他单元的内部。
另外,在图15所示的对应关系213中,对用户程序210上的数据类型与数据库430上的数据类型一一对应的例子进行了说明,但在与多种数据库430对应的情况下,用户程序210上的数据类型与数据库430上的数据类型也可以以1对N(≥2)的方式对应。
<I.时序流程>
参照图16和图17对表432的生成处理的处理流程进行说明。图16是示出第2实施方式的开发辅助装置100、控制器200、驱动设备300以及外部设备400之间的数据流的时序图。
在步骤S10中,开发辅助装置100受理了开发工具30的启动命令。基于此,开发辅助装置100显示上述程序设计画面31(参照图3)。程序设计画面31由于如在图3中说明的那样,因此不重复进行其说明。设计者能够在程序设计画面31上将用于表生成的生成模块250装入到用户程序210中。
在步骤S30中,开发工具30受理了编译操作。基于此,开发工具30对在程序设计画面31上设计的用户程序210进行编译。之后,开发工具30受理了编译结果的下载操作。基于此,开发工具30将所编译的用户程序210传送给控制器200。控制器200将接收到的用户程序210保存在存储装置208(参照图14)中。
在步骤S32中,控制器200受理了用户程序210的执行命令。基于此,控制器200开始用户程序210的执行。在用户程序210是循环执行型的程序的情况下,控制器200按照每个预定的控制周期反复执行用户程序210所包含的命令组。更具体而言,控制器200在1个控制周期内执行用户程序210的第一行到最后一行。在下一个控制周期中,控制器200再次执行用户程序210的第一行到最后一行。控制器200在每个控制周期中生成指令值,并将该指令值输出到驱动设备300。
在步骤S40中,控制器200判断是否受理了表生成处理的执行命令。在用户程序210所规定的生成模块250被执行的情况下,控制器200判断为受理了表生成处理的执行命令。在判断为生成模块250被执行的情况下(在步骤S40中为“是”),控制器200将控制切换为步骤S42。在未执行生成模块250的情况下(在步骤S40中为“否”),控制器200将控制切换为步骤S50。
在步骤S42中,控制器200的生成模块250生成用于表生成的SQL语句230。另外,在步骤S42中,示出了SQL语句230由控制器200生成的例子,但SQL语句230也可以由开发工具30生成。图17是概略地示出第2实施方式的SQL语句230的生成处理的图。
如图17所示,控制器200的生成模块250将上述对应关系213(参照图15)、上述收集对象变量229(参照图15)、其他的各种设定作为输入来生成SQL语句230。
更具体而言,生成模块250对作为收集对象的各变量决定数据库430上的识别名。生成模块250例如将针对变量“A”~“F”的数据库430上的识别名决定为列名“A’”~“F’”。在某些方面,生成模块250将与作为收集对象的各变量的变量名相同的名称决定为数据库430上的识别名。在该情况下,列名“A’”~“F’”分别与变量名“A”~“F”相同。在其他方面,生成模块250将包含作为收集对象的各变量的变量名的名称决定为数据库430上的所述识别名。在该情况下,在变量名“A”~“F”上分别附加了规定的关键字的变量名分别成为列名“A’”~“F’”。通过将变量名表示在数据库430上的识别名中,用户能够容易地掌握与各变量对应的列。
接着,生成模块250根据对应关系213,对作为收集对象的各变量确定数据库430上的对应的数据类型。
接着,生成模块250根据对作为收集对象的各变量决定的识别名、和对作为收集对象的各变量确定的数据库430上的数据类型,生成SQL语句230。更具体而言,生成模块250根据对变量“A”确定的识别名“A’”和对变量“A”确定的数据库430上的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230中。通过该描述,识别名“A’”的列被追加到表432中。同样,生成模块250将用于追加识别名“B’”~“F’”的列的描述反映到SQL语句230中。
另外,生成模块250将所输入的各种设定反映到SQL语句230中。作为一例,该各种设定包含对所生成的表赋予的表名的设定、指定为主键的列的设定、是否对各列允许输入NULL的设定。
例如,“TABLE1”被指定为表名。在该情况下,生成模块250将“Create TableTABLE1”这样的描述反映到SQL语句230中。通过该描述,所生成的表432的表名为“TABLE1”。
另外,变量“A”、“B”被设定为主键。在该情况下,生成模块250将“PRIMARY KEY(A’、B’)”这样的描述追加到SQL语句230中。通过该描述,与变量“A”对应的列“A’”和与变量“B”对应的列“B’”被设定为主键。这样,SQL语句230包含用于将与所指定的变量对应的数据库的识别名作为主键而登记在表中的命令语句。
另外,对变量“A”、“B”设定了NULL禁止。在该情况下,生成模块250对列“A’”、“B’”附加“NOT NULL”这样的描述。由此,对与变量“A”、“B”对应的列“A’”、“B’”禁止NULL指定。
以上,生成模块250自动生成用于表生成的SQL语句230。除了SQL语句230之外,优选生成模块250还输出作为对应结果的映射表232。
针对作为收集对象的各变量,映射表232示出变量的数据类型、数据库430上的识别名以及数据库430上的数据类型的对应结果。优选映射表232还包含表示某个列是否被设定为主键的标志、表示针对各列的NULL指定是否被禁止的标志。通过输出这样的映射表232,用户能够容易地掌握与作为收集对象的各变量相对应的列名、作为收集对象的各变量的数据类型等。
所生成的SQL语句230被发送到外部设备400。再次参照图16,在步骤S44中,外部设备400基于从控制器200接收到SQL语句230的情况,根据该SQL语句230来生成表432。其结果是,在数据库430上生成上述图6所示的空的表432。
在步骤S50中,控制器200判断是否受理了用户程序210所规定的指令值的生成处理的执行命令。在判断为受理了该执行命令的情况下(在步骤S50中为“是”),控制器200根据所规定的命令来生成指令值,并将该指令值发送到驱动设备300(步骤S52)。驱动设备300根据从控制器200接收的指令值来驱动控制对象。在控制器200判断为未受理指令值的生成处理的执行命令的情况下(在步骤S50中为“否”),控制器200将控制切换为步骤S60而不执行步骤S52的处理。
在步骤S60中,控制器200判断是否受理了作为收集对象的变量的上传处理的执行命令。在判断为受理了该执行命令的情况下(在步骤S60中为“是”),控制器200生成用于执行INSERT命令的SQL语句。在该SQL语句中规定有用于指定追加目的地的表的信息(例如,表名)、上传到各列的数据的值等。
在步骤S62中,控制器200将所生成的SQL语句发送到外部设备400。外部设备400根据从控制器200接收的SQL语句来生成在各列中反映了变量值的记录,并将生成的记录追加到在步骤S44中生成的表432中。由此,作为收集对象的变量被反映在表432中。之后,外部设备400将表示正常结束或异常结束的上传结果发送到控制器200。
控制器200在未接收到作为收集对象的变量的上传处理的执行命令的情况下(在步骤S60中为“否”),将处理切换为步骤S70而不执行步骤S62的处理。
在步骤S70中,控制器200判断是否结束用户程序210的执行。该结束命令例如是基于从用户受理了结束操作而发出的。在判断为从用户受理了结束操作的情况下(在步骤S70中为“是”),控制器200结束用户程序210的执行。在未受理结束操作的情况下(在步骤S70中为“否”),控制器200使控制返回到步骤S40。
另外,在上述内容中,对在步骤S62中将INSERT命令的SQL语句从控制器200发送到外部设备400的数据库430的例子进行了说明,但也可以是仅将进行INSERT的值发送到外部设备400的数据库430。在该情况下,外部设备400根据接收到进行INSERT的值的情况,生成INSERT命令的SQL语句,根据该SQL语句来执行接收到的值的INSERT处理。
<J.表生成FB>
如上所述,开发辅助装置100将生成用于表生成的SQL语句230的功能作为生成模块250来提供。生成模块250例如利用功能块(FB:Function Block)来提供。
参照图18对作为功能块而提供的生成模块250进行说明。图18是示出作为生成模块250的一例的表生成FB 251的图。
另外,生成模块250也可以由功能块以外的模块来规定。例如,生成模块250可以包含由梯形图规定的模块、命令列表、结构化文本以及顺序功能图中的任意一个、或者由它们的组合规定的模块。另外,生成模块250还可以包含利用JavaScript或C语言之类的通用编程语言规定的模块。
表生成FB 251包含:输入部255A~255E,它们受理与SQL语句230的生成相关的设定;以及输出部256A~256F,它们用于输出SQL语句230的生成结果。
表示为“Execute”的输入部255A受理用于指定是否执行SQL语句的生成处理的设定。作为一例,输入部255A被规定为受理“BOOL”型的输入。只要向输入部255A输入了“FALSE”,则不执行SQL语句的生成处理。另一方面,在向输入部255A输入了“TRUE”的情况下,执行SQL语句的生成处理。
表示为“DBConnection”的输入部255B受理执行用于与数据库430连接的功能块而得到的连接结果。在该连接结果中包含有用于访问数据库430的信息(例如,数据库名等)。
表示为“TableName”的输入部255C受理表名的设定。输入部255E例如被规定为受理“DWORD”型的变量。
表示为“MappingVariableList”的输入部255D受理作为收集对象的变量的输入。输入部255D被规定为受理预先定义的结构体。向输入部255D输入上述收集对象变量229(参照图17)。
表示为“PrimaryKey”的输入部255E受理用于设定主键的输入。输入部255E例如被规定为受理“String”型的变量。这样,表生成FB 251被规定为受理用于将作为收集对象的变量中的某个变量指定为主键的输入。
在正常生成SQL语句230的情况下,从表示为“Done”的输出部256A输出表示正常结束的信号。在SQL语句230的生成期间,从表示为“Busy”的输出部256B输出表示生成处理中的信号。在没有正常生成SQL语句230的情况下,从表示为“Error”的输出部256C输出表示异常结束的信号。在该情况下,还从表示为“ErrorID”的输出部256D输出用于识别错误内容的错误ID。从表示为“SQLStatement”的输出部256E输出通过执行表生成FB 251而生成的SQL语句230(参照图17)。从表示为“MappingTable”的输出部256F输出通过执行表生成FB 251而生成的映射表232(参照图17)。
<K.表生成模式的变形例>
参照图19对SQL语句230的生成模式的变形例进行说明。图19是概略地示出变形例的SQL语句230的生成处理的图。
在上述图17中,生成模块250将对应关系213和收集对象变量229作为输入而生成用于表生成的SQL语句230和映射表232。与此相对,在变形例的生成模式中,生成模块250A将由映射模块248生成的映射表232作为输入而输出SQL语句230。由于其他方面如上述那样,因此,以下不重复进行它们的说明。
映射模块248是能够装入到用户程序210中的程序模块。映射模块248将对应关系213和收集对象变量229作为输入而生成映射表214。
更具体而言,映射模块248对作为收集对象的各变量决定数据库430上的识别名。映射模块248将针对变量“A”~“F”的数据库430上的识别名决定为列名“A’”~“F’”。在某些方面,映射模块248将与作为收集对象的各变量的变量名相同的名称决定为数据库430上的识别名。在该情况下,列名“A’”~“F’”分别与变量名“A”~“F”相同。在其他方面,映射模块248将包含作为收集对象的各变量的变量名的名称决定为数据库430上的所述识别名。在该情况下,在变量名“A”~“F”上分别附加了规定的关键字的名称分别成为列名“A’”~“F’”。
接着,映射模块248根据对应关系213,对作为收集对象的各变量确定与该变量的数据类型对应的数据库430上的数据类型。
接着,映射模块248将变量名“A”~“F”、变量“A”~“F”的数据类型、变量“A”~“F”的数据库上的识别名以及变量名“A”~“F”的数据库上的数据类型之间的对应关系作为映射表214而输出到生成模块250A。
生成模块250A根据映射表232所规定的数据库上的识别名、和与该识别名对应的数据库上的数据类型,生成SQL语句230。由于生成模块250A对SQL语句230的生成方法如上述那样,因此不重复进行其说明。
<L.映射FB>
图19所示的映射模块248例如利用功能块(FB)来提供。以下,参照图20对作为功能块而提供的映射模块248进行说明。图20是示出作为映射模块248的一例的映射FB 249的图。
另外,映射模块248也可以由功能块以外的功能块来规定。例如,映射模块248可以包含由梯形图规定的模块、命令列表、结构化文本以及顺序功能图中的任意一个、或者由它们的组合规定的模块。另外,映射模块248还可以包含利用JavaScript、C语言之类的通用编程语言规定的模块。
映射FB 249包含:输入部258A、258B,它们受理与映射表214的生成相关的设定;以及输出部259A~259E,它们用于输出映射表214的生成结果。
表示为“Excute”的输入部258A受理用于指定是否执行映射表214的生成处理的设定。作为一例,输入部258A被规定为受理“BOOL”型的输入。只要向输入部258A输入了“FALSE”,便不执行映射表214的生成处理。另一方面,在向输入部258A输入了“TRUE”的情况下,执行映射表214的生成处理。
表示为“MappingVariableList”的输入部258B受理作为收集对象的变量的输入。输入部258B被规定为受理预先定义的结构体。向输入部258B输入被定义为结构体的收集对象变量229(参照图19)。
在正常生成映射表214的情况下,从表示为“Done”的输出部259A输出表示正常结束的信号。在映射表214的生成期间,从表示为“Busy”的输出部259B输出表示生成处理中的信号。在没有正常生成映射表214的情况下,从表示为“Error”的输出部259C输出表示异常结束的信号。在该情况下,还从表示为“ErrorID”的输出部259D输出用于识别错误的内容的错误ID。从表示为“MappingTable”的输出部259E输出通过执行映射FB 249而生成的映射表232(参照图19)。
<M.表生成FB的变形例>
图19所示的生成模块250A例如利用功能块(FB)来提供。以下,参照图21对作为功能块而提供的生成模块250A进行说明。图21是示出作为生成模块250A的一例的表生成FB251A的图。
表生成FB 251A包含:输入部255A~255C、255D2、255E,它们受理与SQL语句230的生成相关的设定;以及输出部256A~256F,它们用于输出SQL语句230的生成结果。由于输入部255D2以外的结构与图18所示的表生成FB 251相同,因此,以下不重复进行输入部255D2以外的说明。
表示为“MappingValue”的输入部255D2受理通过上述映射FB 249(参照图20)而生成的映射表232来作为输入。
表生成FB 251A根据输入到输入部255A~255C、255D2、255E的信息,生成SQL语句230。由于基于表生成FB 251A的SQL语句230的生成方法如在图19中说明的那样,因此不重复进行其说明。
<N.生成模块250的生成模式>
在作为收集对象的变量中,有时包含结构体。在作为收集对象的变量中包含结构体的情况下,生成模块250以与不包含结构体的情况不同的方式生成用于表生成的SQL语句230。作为在收集对象的变量中包含结构体的情况下的表432的生成处理,例如,可考虑两个生成模式(生成模式3、4)。
在生成模式3中,生成模块250分别生成用于管理不是结构体的变量的表和用于管理结构体所包含的成员变量的表。在生成模式4中,生成模块250生成用于共同管理不是结构体的变量和结构体所包含的成员变量的1个表。
以下,参照图22和图23对第2实施方式的生成模式3、4依次进行说明。
(M1.表的生成模式3)
首先,对第2实施方式的生成模式3进行说明。图22是概略地示出第2实施方式的表的生成模式3的图。
生成模块250将数据类型的对应关系213和收集对象变量229作为输入而生成用于生成“TABLE1”的SQL语句230A和用于生成“TABLE2”的SQL语句230B。
更具体而言,生成模块250对作为收集对象的各变量决定数据库430上的识别名。此时,在作为收集对象的变量中包含结构体的情况下,生成模块250对结构体名决定数据库430上的识别名,并且对结构体的各成员决定数据库430上的识别名。其结果是,针对作为收集对象的变量“A”、“B”的数据库430上的识别名被决定为列名“A’”、“B’”。另外,针对结构体“C”的数据库430上的识别名被决定为列“C’”。另外,针对收集对象的结构体“C”的成员变量“α”~“γ”的数据库430上的识别名被决定为列名“α’”~“γ’”。
接着,生成模块250根据对应关系213,对作为收集对象的各变量确定与该变量的数据类型对应的数据库430上的数据类型。
接着,生成模块250根据对作为收集对象的各变量决定的识别名、和对作为收集对象的各变量确定的数据库430上的数据类型,生成SQL语句230。此时,生成模块250按照如下的方式生成SQL语句230A:将对收集对象的变量名决定的识别名“A’”、“B’”和对结构体名决定的识别名“C’”登记在表“TABLE1”中。另外,生成模块250按照如下的方式生成SQL语句230B:将对结构体的各成员变量决定的识别名“α’”~“γ’”登记在与表“TABLE1”不同的表“TABLE2”中。
更具体而言,生成模块250根据对变量“A”决定的识别名“A’”和与变量“A”对应的数据库上的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230A中。通过该描述,识别名“A’”的列被追加到表中。同样,生成模块250将用于追加识别名“B’”、“C’”的列的描述反映到SQL语句230A中。
另外,生成模块250将命令代码包含在SQL语句230A中,命令代码用于将对结构体名决定的列名“C’”作为外部键而登记在表“TABLE2”中。在图22的例子中,“FOREIGN KEY(C’)REFERENCES TABLE2”这样的描述被追加到SQL语句230A中。通过该描述,列“C’”被规定为参照“TABLE2”的外部键。
接着,对于结构体“C”所包含的成员变量“α”、“β”、“γ”,生成模块250将用于追加列“C’”、“α’”、“β’”、“γ’”的描述反映到与SQL语句230A不同的SQL语句230B中。在图22的例子,“C’Number(5)”这样的描述、“α’Number(5)”这样的描述、“β’Number(5)”这样的描述、“γ’Number(5)”这样的描述被反映到SQL语句230B中。通过这些描述,识别名“C’”、“α’”、“β’”、“γ’”的列被追加到另一表中。此时,对于附加在结构体名“C”上的列名“C’”,将“PRIMARY KEY(C’)”这样的描述追加到SQL语句230B中。通过该描述,识别名“C’”的列被设定为主键。
以上,生成模块250自动生成用于表生成的SQL语句230A、230B。另外,在图22中,对在作为收集对象的变量中包含有1个结构体的例子进行了说明,但在作为收集对象的变量中包含有多个结构体的情况下,以根据结构体的数量来生成表的方式生成SQL语句。另外,在结构体的成员中包含结构体的情况下,以对各结构体生成表的方式生成SQL语句。
优选生成模块250除了输出SQL语句230A、230B之外,还输出作为对应结果的映射表232A、232B。
映射表232A是作为SQL语句230A的生成结果而生成的。映射表232A示出与SQL语句230A所规定的列对应的变量名、该变量的数据类型、该列的识别名以及该列的数据类型之间的对应结果。另外,对映射表232A所规定的作为收集对象的各变量,对应有表示是否为主键的标志、与表示NULL指定是否被禁止的标志。
映射表232B是作为SQL语句230B的生成结果而生成的。映射表232B示出与SQL语句230B所规定的列对应的变量名、该变量的数据类型、该列的识别名以及该列的数据类型之间的对应结果。另外,对映射表232B所规定的作为收集对象的各变量,对应有表示是否为主键的标志、与表示NULL指定是否被禁止的标志。
通过输出映射表232A、232B,用户能够容易地掌握与作为收集对象的各变量相对应的列名、与作为收集对象的各变量的数据类型对应的数据库上的数据类型等。
(M2.表的生成模式4)
接着,参照图23对在作为收集对象的变量中包含结构体的情况下的表432的生成模式4进行说明。图23是概略地示出第2实施方式的表的生成模式4的图。
在收集对象变量229中,结构体“C”被指定为收集对象的变量。作为成员变量,结构体“C”包含变量“α”、“β”、“γ”。在本生成例中,生成模块250生成将不是结构体的变量和结构体所包含的成员变量作为要素的1个表。
更具体而言,生成模块250对作为收集对象的各变量决定数据库430上的识别名。此时,在作为收集对象的变量中包含结构体的情况下,生成模块250针对不是结构体的各变量和结构体所包含的各成员变量,决定数据库430上的识别名。其结果是,针对收集对象的变量“A”、“B”的数据库430上的识别名被决定为列名“A’”、“B’”。另外,针对收集对象的结构体“C”的成员变量“α”~“γ”的数据库430上的识别名被决定为列名“α’”~“γ’”。
接着,生成模块250根据对应关系213,对不是结构体的各变量和结构体所包含的各成员变量确定数据库430上的对应的数据类型。
接着,生成模块250根据对作为收集对象的各变量决定的识别名、和对作为收集对象的各变量确定的数据库430上的数据类型,生成SQL语句230。此时,按照如下的方式生成SQL语句230A:将对收集对象的变量名决定的识别名“A’”、“B’”、“α’”~“γ’”登记在表“TABLE1”中。
更具体而言,生成模块250根据对变量“A”决定的识别名“A’”、和与变量“A”对应的数据库上的数据类型“Number(10)”,将“A’Number(10)”这样的描述反映到SQL语句230A中。通过该描述,识别名“A’”的列被追加到表中。同样,生成模块250将用于追加识别名“B’”、“α’”~“γ’”的列的描述反映到SQL语句230A中。
以上,生成模块250自动生成用于表生成的SQL语句230。优选生成模块250除了输出SQL语句230之外,还输出作为对应结果的映射表232。
映射表232是作为SQL语句230的生成结果而生成的。映射表232表示与SQL语句230所规定的列对应的变量名、该变量的数据类型、该列的识别名以及该列的数据类型之间的对应结果。另外,对映射表232所规定的作为收集对象的各变量,对应有表示是否为主键的标志、与表示NULL指定是否被禁止的标志。
通过输出映射表232,用户能够容易地掌握与作为收集对象的各变量相对应的列名、与作为收集对象的各变量的数据类型对应的数据库上的数据类型等。
<O.优点>
参照图24和图25,通过与比较例的控制系统10X进行比较,对第2实施方式的控制系统10的优点进行说明。图24是示出比较例的控制系统10X所进行的表生成的处理流程的图。图25是示出第2实施方式的控制系统10所进行的表生成的处理流程的图。
在比较例的控制系统10X中没有搭载用于自动生成表的生成模块250。为了将表登记在控制系统10X中并将收集对象的数据上传到表中,用户需要进行以下的步骤S1~S6的操作。
(步骤S1)在外部设备400上描述用于表生成的SQL语句,在数据库430上预先登记表。
(步骤S2)根据在步骤S1中登记于数据库430的表的数据结构,在开发辅助装置100的开发工具30上定义结构体变量。
(步骤S3)将在步骤S2中定义的结构体变量登记在开发辅助装置100中。
(步骤S4)在用户程序210上规定在上述步骤S2中定义的结构体变量的各成员、与在步骤S1中登记于数据库430的表的各列之间的对应关系。
(步骤S5)将用户程序210设计成将作为收集对象的变量设置在通过步骤S3登记的结构体变量中。
(步骤S6)将用户程序210设计成将在步骤S5中设置了作为收集对象的变量的结构体变量上传到数据库430。
与此相对,在本实施方式的控制系统10中,只要用户程序210被设计成将作为收集对象的变量输入到生成模块250中,则在数据库430上自动生成表。因此,在本实施方式的控制系统10中,如图25所示,不需要上述步骤S1、S2、S3、S5的操作。其结果是,对数据库430的操作变得容易,即使是没有专门知识的用户,也能够设计数据库430。
<P.第2实施方式的总结>
如上所述,开发辅助装置100将自动生成表的功能作为生成模块250来提供。生成模块250对作为收集对象的各变量决定数据库430上的识别名。另外,生成模块250根据用户程序210中能够使用的数据类型、与数据库430中能够使用的数据类型之间的预定的对应关系213,针对用户程序210所包含的作为收集对象的各变量,确定与该变量的数据类型对应的数据库430上的数据类型。接着,生成模块250根据对作为收集对象的各变量决定的数据库430上的识别名、和对作为收集对象的各变量确定的数据库430上的数据类型,生成用于表生成的SQL语句。
这样,在数据库430中生成表时,用户不需要描述SQL语句230。因此,即使是没有SQL知识的用户,也能够容易地构建数据库430。
<Q.附记>
如上所述,本实施方式包含以下的公开内容。
[结构1]
一种控制器(200),该控制器用于对控制对象进行控制,其中,
控制器(200)具有:
通信部(201),其用于访问数据库(430);以及
存储装置(208),其存储用于对所述控制对象进行控制的控制程序,
所述控制程序包含生成模块(250),该生成模块(250)输出用于在所述数据库(430)上生成表(432)的SQL语句(230),表(432)是该控制程序所包含的作为收集对象的变量的存储目的地,
所述生成模块(250)对作为所述收集对象的各变量决定所述数据库(430)上的识别名,
所述生成模块(250)根据所述控制程序中能够使用的数据类型、与所述数据库(430)中能够使用的数据类型之间的预定的对应关系(213),针对作为所述收集对象的各变量,确定与该变量的数据类型对应的所述数据库(430)上的数据类型,
所述生成模块(250)根据针对作为所述收集对象的各变量决定的所述识别名、和针对作为所述收集对象的各变量确定的所述数据类型,生成所述SQL语句(230)。
[结构2]
根据结构1所述的控制器,其中,所述控制器(200)还输出作为所述收集对象的各变量、该各变量的数据类型、与该各变量相关的所述数据库(430)上的识别名以及与该各变量相关的所述数据库(430)上的数据类型之间的对应结果。
[结构3]
根据结构1或2所述的控制器,其中,所述生成模块(250)将与作为所述收集对象的各变量的变量名相同的名称、或包含作为所述收集对象的各变量的变量名的名称决定为所述数据库(430)上的所述识别名。
[结构4]
根据结构1~3中的任意一项所述的控制器,其中,
在作为所述收集对象的变量中包含结构体的情况下,所述生成模块(250)针对结构体名决定所述识别名,并且针对所述结构体的各成员决定所述识别名,
所述生成模块(250)按照如下的方式生成所述SQL语句(230):将针对所述结构体名决定的所述识别名登记在所述表(432)中,
所述生成模块(250)按照如下的方式生成所述SQL语句(230):将针对所述结构体的各成员决定的所述识别名登记在与所述表(432)不同的表(432)中。
[结构5]
根据结构4所述的控制器,其中,所述SQL语句(230)包含用于将针对所述结构体名决定的所述识别名作为外部键而登记在所述表(432)中的命令语句。
[结构6]
根据结构1~5中的任意一项所述的控制器,其中,
所述生成模块(250)被规定为受理用于将作为所述收集对象的变量中的任意变量指定为主键的输入,
所述SQL语句(230)包含用于将与指定的变量对应的识别名作为主键而登记在所述表(432)中的命令语句。
[结构7]
一种控制方法,其是控制器(200)的控制方法,所述控制器(200)能够访问数据库(430),其中,
该控制方法具有如下的步骤:
接收所述控制器(200)的控制程序;
针对所述控制程序所包含的作为收集对象的各变量,决定所述数据库(430)上的识别名;
根据所述控制程序中能够使用的数据类型、与所述数据库(430)中能够使用的数据类型之间的预定的对应关系(213),针对作为所述收集对象的各变量,确定与该变量的数据类型对应的所述数据库(430)上的数据类型;以及
根据针对作为所述收集对象的各变量决定的所述识别名、和针对作为所述收集对象的各变量确定的所述数据类型,输出用于在所述数据库(430)上生成表(432)的SQL语句(230),所述表(432)是作为所述收集对象的变量的存储目的地。
[结构8]
一种控制程序,其是控制器(200)的控制程序,所述控制器(200)能够访问数据库(430),其中,
所述控制程序使所述控制器(200)执行如下的步骤:
针对所述控制程序所包含的作为收集对象的各变量,决定所述数据库(430)上的识别名;
根据所述控制程序中能够使用的数据类型、与所述数据库(430)中能够使用的数据类型之间的预定的对应关系(213),针对作为所述收集对象的各变量,确定与该变量的数据类型对应的所述数据库(430)上的数据类型;以及
根据针对作为所述收集对象的各变量决定的所述识别名、和针对作为所述收集对象的各变量确定的所述数据类型,输出用于在所述数据库(430)上生成表(432)的SQL语句(230),所述表(432)是作为所述收集对象的变量的存储目的地。
应该认为本次公开的实施方式在所有方面都是例示性的,而不是限制性的。本发明的范围不由上述说明示出,而由权利要求书示出,意图在于包含与权利要求书均等的意思和范围内的全部变更。
标号说明
10、10X:控制系统;30:开发工具;31:程序设计画面;33:表设定画面;35、36、41、45、46、50、51:设定栏;42:显示栏;35A、41A、42A、46A、50A、51A:按钮;58:表生成按钮;59:取消按钮;100:开发辅助装置;102、202、402:控制装置;104、206、404:主存储器;110、208、410:存储装置;110A:开发辅助程序;111、201、412:通信接口;114、414:I/O接口;115、415:操作部;120、420:显示界面;121、421:显示部;125、425:内部总线;200:控制器;204:芯片组;209:系统程序;210:用户程序;210A:顺序程序;210B:运动程序;211:控制程序;212:设定信息;213:对应关系;214、232、232A、232B:映射表;222:内部总线控制器;224:现场总线控制器;226:I/O单元;229:收集对象变量;230、230A、230B:SQL语句;239:存储卡接口;240:存储卡;248:映射模块;249:映射FB;250、250A:生成模块;251、251A:表生成FB;252:程序执行模块;255A、255B、255C、255D、255D2、255E、258A、258B:输入部;256A、256B、256C、256D、256E、256F、259A、259B、259C、259D、259E:输出部;300:驱动设备;300A:机器人控制器;300B:伺服驱动器;301A:手臂机器人;301B:伺服电机;400:外部设备;416:现场总线接口;430:数据库;432、432A、432B:表。
Claims (8)
1.一种控制系统,该控制系统具有:
控制器,其能够访问数据库;以及
开发辅助装置,其构成为能够与所述控制器进行通信,
在所述开发辅助装置中能够安装用于辅助所述控制器的控制程序的开发的开发工具,
所述开发工具构成为受理如下设定作为设定信息:
用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及
用于针对作为该收集对象的各变量指定所述数据库上的识别名的设定,
所述开发工具根据在所述控制程序的设计时保存的、变量和数据类型的第1对应关系,确定与所述收集对象的变量对应的第1数据类型,
所述控制器或所述开发工具包含生成模块,该生成模块用于根据能够在所述控制程序中利用的各数据类型和所述数据库上的数据类型的第2对应关系,确定与所述第1数据类型对应的所述数据库上的第2数据类型,并根据所述设定信息所规定的所述数据库上的识别名、和所述第2数据类型,输出用于在所述数据库上生成表的SQL语句,所述表是作为所述收集对象的变量的存储目的地。
2.根据权利要求1所述的控制系统,其中,
所述开发工具构成为根据设定了作为所述收集对象的各变量这一情况,显示该变量的数据类型。
3.根据权利要求1或2所述的控制系统,其中,
所述开发工具构成为还受理用于从被指定为所述收集对象的变量内指定主键的设定。
4.根据权利要求1或2所述的控制系统,其中,
所述开发工具构成为在被指定为所述收集对象的变量中包含结构体的情况下,针对该结构体所包含的各成员,受理所述数据库上的识别名的指定。
5.根据权利要求4所述的控制系统,其中,
所述生成模块按照如下的方式生成所述SQL语句:将针对所述结构体的各成员决定的所述识别名登记在与所述表不同的表中。
6.根据权利要求5所述的控制系统,其中,
所述生成模块将命令代码包含在所述SQL语句中,所述命令代码用于将所述结构体的识别名作为外部键而登记在所述表中。
7.一种控制器,其构成为能够与用于辅助控制程序的开发的开发辅助装置进行通信,并且能够访问数据库,其中,
在所述开发辅助装置中能够安装用于辅助所述控制程序的开发的开发工具,
所述开发工具构成为受理如下设定作为设定信息:
用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及
用于针对作为该收集对象的各变量指定所述数据库上的识别名的设定,
所述开发工具根据在所述控制程序的设计时保存的、变量和数据类型的第1对应关系,确定与所述收集对象的变量对应的第1数据类型,
所述控制器具有:
通信部,其用于从所述开发辅助装置接收所述设定信息和所述控制程序;
程序执行模块,其用于按照从所述开发辅助装置接收到的所述控制程序,对控制对象的驱动设备进行控制;以及
生成模块,其用于根据能够在所述控制程序中利用的各数据类型和所述数据库上的数据类型的第2对应关系,确定与所述第1数据类型对应的所述数据库上的第2数据类型,并根据从所述开发辅助装置接收到的所述设定信息所规定的所述数据库上的识别名、和所述第2数据类型,输出用于在所述数据库上生成表的SQL语句,所述表是作为所述收集对象的变量的存储目的地。
8.一种控制方法,其是控制器的控制方法,所述控制器构成为能够与用于辅助控制程序的开发的开发辅助装置进行通信,并且能够访问数据库,其中,
在所述开发辅助装置中能够安装用于辅助所述控制程序的开发的开发工具,
所述开发工具构成为受理如下设定作为设定信息:
用于从所述控制程序所包含的变量内指定作为收集对象的变量的设定;以及
用于针对作为该收集对象的各变量指定所述数据库上的识别名的设定,
所述开发工具根据在所述控制程序的设计时保存的、变量和数据类型的第1对应关系,确定与所述收集对象的变量对应的第1数据类型,
所述控制方法具有如下的步骤:
从所述开发辅助装置接收所述设定信息和所述控制程序;
按照从所述开发辅助装置接收到的所述控制程序,对控制对象的驱动设备进行控制;
根据能够在所述控制程序中利用的各数据类型和所述数据库上的数据类型的第2对应关系,确定与所述第1数据类型对应的所述数据库上的第2数据类型;以及
根据从所述开发辅助装置接收到的所述设定信息所规定的所述数据库上的识别名、和所述第2数据类型,输出用于在所述数据库上生成表的SQL语句,所述表是作为所述收集对象的变量的存储目的地。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018047633A JP6720994B2 (ja) | 2018-03-15 | 2018-03-15 | 制御システム、コントローラ、および制御方法 |
JP2018-047633 | 2018-03-15 | ||
PCT/JP2019/006292 WO2019176486A1 (ja) | 2018-03-15 | 2019-02-20 | 制御システム、コントローラ、および制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111095194A CN111095194A (zh) | 2020-05-01 |
CN111095194B true CN111095194B (zh) | 2023-11-17 |
Family
ID=67907677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980004158.7A Active CN111095194B (zh) | 2018-03-15 | 2019-02-20 | 控制系统、控制器以及控制方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11281650B2 (zh) |
EP (1) | EP3767458A4 (zh) |
JP (1) | JP6720994B2 (zh) |
CN (1) | CN111095194B (zh) |
WO (1) | WO2019176486A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7044086B2 (ja) * | 2019-03-15 | 2022-03-30 | オムロン株式会社 | 制御システム、制御方法、および制御プログラム |
CN112015831A (zh) * | 2020-09-09 | 2020-12-01 | 深圳市绿联科技有限公司 | 基于c语言对关系型数据库进行操作的方法、装置及设备 |
US20220078267A1 (en) * | 2020-09-10 | 2022-03-10 | Fisher-Rosemount Systems, Inc. | Highly-versatile field devices and communication networks for use in control and automation systems |
US11436211B1 (en) * | 2020-09-29 | 2022-09-06 | Amazon Technologies, Inc. | Renaming a database table with minimized application downtime |
WO2023152835A1 (ja) | 2022-02-09 | 2023-08-17 | ファナック株式会社 | プログラマブルロジックコントローラと通信を行うロボットの制御装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5619688A (en) * | 1993-09-02 | 1997-04-08 | Microsoft Corporation | Method and system for constructing database queries using a field selection grid |
US5732262A (en) * | 1994-01-31 | 1998-03-24 | International Business Machines Corporation | Database definition language generator |
US5826257A (en) * | 1996-03-20 | 1998-10-20 | Microsoft Corporation | Method and structure for maintaining and utilizing a lookup value associated with a stored database value |
JPH103303A (ja) * | 1996-06-14 | 1998-01-06 | Mitsubishi Electric Corp | インターフェース装置 |
US7792853B2 (en) * | 2006-11-08 | 2010-09-07 | Ragothaman Subbian | Presenting data flow in legacy program |
US20090055429A1 (en) * | 2007-08-23 | 2009-02-26 | Lockheed Martin Corporation | Method and system for data collection |
US8819068B1 (en) * | 2011-09-07 | 2014-08-26 | Amazon Technologies, Inc. | Automating creation or modification of database objects |
US10061809B2 (en) | 2012-06-22 | 2018-08-28 | Omron Corporation | Control device |
DE112013006971B4 (de) | 2013-05-17 | 2024-06-13 | Mitsubishi Electric Corporation | Programmierbare Steuerung und Programm für Zugriff auf Tabellendaten der programmierbaren Steuerung |
CN105393181B (zh) | 2014-04-25 | 2017-06-09 | 三菱电机株式会社 | 信息协同辅助装置、信息协同辅助程序 |
JP2016194808A (ja) | 2015-03-31 | 2016-11-17 | オムロン株式会社 | プログラマブルロジックコントローラ、データ収集装置、データベースアクセス方法およびデータベースアクセスプログラム |
US10353794B2 (en) | 2016-05-09 | 2019-07-16 | Sap Se | Parameter-based deployment control for deployment of database artifacts |
-
2018
- 2018-03-15 JP JP2018047633A patent/JP6720994B2/ja active Active
-
2019
- 2019-02-20 EP EP19766954.2A patent/EP3767458A4/en active Pending
- 2019-02-20 CN CN201980004158.7A patent/CN111095194B/zh active Active
- 2019-02-20 US US16/643,546 patent/US11281650B2/en active Active
- 2019-02-20 WO PCT/JP2019/006292 patent/WO2019176486A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
JP2019159995A (ja) | 2019-09-19 |
US11281650B2 (en) | 2022-03-22 |
EP3767458A1 (en) | 2021-01-20 |
WO2019176486A1 (ja) | 2019-09-19 |
EP3767458A4 (en) | 2022-02-09 |
US20200201835A1 (en) | 2020-06-25 |
CN111095194A (zh) | 2020-05-01 |
JP6720994B2 (ja) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111095194B (zh) | 控制系统、控制器以及控制方法 | |
CN111095195B (zh) | 控制器、控制方法以及存储介质 | |
EP1351108B1 (en) | Method and apparatus for programming | |
CN111052008B (zh) | 显示装置、画面生成方法和存储介质 | |
CN111052010B (zh) | 控制系统、开发辅助装置和存储介质 | |
EP4060437A1 (en) | Machining system, machine tool, information processing system, setting data inheritance method, and setting data inheritance program | |
JP7044086B2 (ja) | 制御システム、制御方法、および制御プログラム | |
CN113728286B (zh) | 画面数据生成系统、画面数据生成方法及记录介质 | |
CN116450589A (zh) | 控制系统、信息处理装置以及记录介质 | |
KR20240112419A (ko) | 반도체 전장 도면 관리 장치 및 반도체 전장 도면 관리 방법 |
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 |