可执行程序创建装置、可执行程序创建方法以及可执行程序创建程序与流程

文档序号:17286347发布日期:2019-04-03 03:35阅读:193来源:国知局
可执行程序创建装置、可执行程序创建方法以及可执行程序创建程序与流程

本发明涉及创建由工业控制器执行的可执行程序的技术。



背景技术:

当前,使用工业控制器来控制多个设备(装置)的系统正在进行各种实用化。例如,在非专利文献1所示的系统中,工业控制器(机器自动控制器)经由控制用网络与各种设备连接。另外,工业控制器能够与个人计算机等的可执行程序的创建装置连接。

用于创建可执行程序的软件被安装在个人计算机上。程序员使用该软件,创建作为可执行程序的基础的源代码。通过构建源代码来创建可执行程序。通过个人计算机创建的可执行程序被传送到工业控制器。

工业控制器存储从个人计算机传送的可执行程序。工业控制器通过执行该可执行程序,从而执行各种设备的控制参数的设定等设备控制。

现有技术文献

非专利文献1:omron控制装置机器自动控制器概要网址:http://www.fa.omron.co.jp/guide/technicalguide/454/270/index.html



技术实现要素:

发明要解决的问题

然而,与工业控制器连接的设备存在影响可执行程序的特性,程序员必须根据该特性创建源文件。

例如,在从设备a变更为设备b且设备a与设备b的特性不同的情况下,程序员必须进行从与设备a对应的源代码向与设备b对应的源代码的改写,并重新构建。

因此,本发明的目的是提供可执行程序的创建技术,使用对设备的特性的依赖性较低的源代码创建对应设备特性的可执行程序。

解决问题的手段

本发明的可执行程序创建装置具有存储部和运算部。在存储部中存储有源代码的编译程序。运算部能够执行编译程序,中间生成基于源代码的可重定位对象,进行可执行程序的创建。

运算部执行使用编译程序并根据源代码生成中间表示的词法分析及语法分析的处理。运算部执行提取中间表示中包含的function(函数)调用处理的处理。运算部执行针对提取的function调用处理评估根据由可执行程序控制的设备的特性而设定的function置换条件的处理。运算部在满足function置换条件的情况下,执行根据function置换规则置换function调用处理的处理。运算部执行使用置换后的function调用处理来中间生成可重定位对象的处理。

在该结构中,能自动创建包含对应设备的特性的适当的function的可执行程序。

发明效果

根据该发明,能够减轻程序员的负担,并且能够创建与设备的特性对应的可执行程序。

附图说明

图1是本发明的实施方式的执行可执行程序的系统的概略结构图。

图2是本发明的实施方式的可执行程序创建装置的结构图。

图3是示出设备变量表的数据结构的图。

图4是示出function置换规则表的数据结构的图。

图5是示出作为function置换规则表的基础的库的创建方法的流程图。

图6是示出本发明的实施方式的可执行程序的创建方法的主流程的流程图。

图7是示出附带function置换规则的编译处理的流程图。

图8是示出function调用的置换处理的流程图。

图9是示出个别处理的流程图。

图10示出数据型的置换处理的情况下的库的数据结构例子。

图11示出字节序的置换处理的情况下的库的数据结构例子。

具体实施方式

参照附图对本发明的实施方式的可执行程序的创建技术进行说明。图1是本发明的实施方式的执行可执行程序的系统的概略结构图。图2是本发明的实施方式的可执行程序创建装置的结构图。

首先,使用图1,对利用本实施方式的可执行程序的系统进行说明。具体而言,图1所示的系统90例如是fa(factoryautomation:工厂自动化)系统。系统90具有:工业控制器910、设备921、922以及网络900。

如图1所示,工业控制器910与设备921、设备922经由网络900连接。设备921、922例如具有电动机等动作设备以及控制该动作设备的动作的控制部。设备921、922并不限定于此,只要具有规定的动作部以及控制该动作部的动作的控制部即可。

另外,如图1所示,工业控制器910能够与个人计算机10连接。通过个人计算机10来创建由工业控制器910执行的可执行程序。工业控制器910通过下载来存储由个人计算机10创建的可执行程序。此外,工业控制器910存储后述的设备变量表。作为该设备变量表,工业控制器910和个人计算机10上存储相同的内容。

工业控制器910参照设备变量表执行可执行程序,从而控制经由网络900连接的设备921、922。设备变量表将在后面进行详细说明。

如图2所示,个人计算机10具有:可执行程序创建部11、操作输入部12、通信控制部13以及显示部14。操作输入部12例如为鼠标或键盘,显示部14例如为液晶显示器等。通信控制部13进行与工业控制器910之间的通信控制,经由该通信控制部13,将可执行程序下载到工业控制器910中。

可执行程序创建部11与本发明的可执行程序创建装置对应,并具有cpu111和存储部112。在存储部112中,存储有各种程序、表等。具体而言,在存储部112中,存储有编译器21、库管理器22、设备变量表23、程序编辑器24以及function置换规则编辑器25。编译器21存储词法分析及语法分析器211、function置换器212、代码生成器213、汇编器214以及function置换规则表215。

cpu111与本发明的运算部对应,执行存储在存储部112中的程序,并创建可执行程序。此时,cpu111参照需要的表,创建可执行程序。

程序编辑器24进行作为可执行程序的基础的源代码的记述内容、编辑等。程序编辑器24的编辑画面显示在显示部14上,例如,显示通过操作输入部12输入的源代码或各种命令等。

function置换规则编辑器25进行后述的检验function、置换后function以及function置换规则的编写、编集等。将这些检验function、置换后function以及function置换规则存储在存储部112内的库(未图示)中。库管理器22管理存储在库中的各种数据。检验function、置换后function以及function置换规则的存储信息被注册到库管理器22中。

需要说明的是,如作为可编程控制器的程序语言的标准的jis3503:2016(iec61131-3)所记载的,本申请所示的function是指“当执行时,通常返回一个数据元素结果以及附加的输出变量的语言元素”。function是程序的管理上的一种结构单位,包括记述用于构成该function的名称、自变量变量组、返回值变量以及函数或过程的处理的代码等信息。通过function调用,能够在程序的其他位置进行调用从而执行处理。

设备变量表23存储每个设备的变量、属性等。具体而言,由如图3所示的数据结构构成。图3是示出设备变量表的数据结构的图。设备变量表23将系统90中包含的各设备、各设备的变量以及属性关联存储。分别根据各个设备来设定设备数、变量数以及属性数。在属性中,存在数据类型、字节序等。例如,在图3的例子中,设备a具有变量a1、a2,变量a1将数据类型a11、字节序a12等作为属性进行存储。

概略地说,编译器21编译源代码,并创建可重定位对象。词法分析及语法分析器211根据源代码创建中间表示ir。function置换器212提取中间表示ir中包含的function调用处理。function置换器212参照function置换规则表215,判断是否满足function置换条件,在满足function置换条件的情况下,根据function置换规则置换function调用处理。

需要说明的是,在function置换规则表215中,基于中间表示ir存储有经由库管理器22存储在库中的function置换规则。图4是示出function置换规则表的数据结构的图。在function置换规则表215中,存储有从中间表示ir中提取的function调用处理以及function置换规则。例如,在图4的例子中,与作为function调用处理的对象的func1相关联地存储有func1置换规则1(置换规则11)和func2置换规则(置换规则12)。

代码生成器213使用包含置换后的function调用处理的中间表示ir来创建各代码。汇编器214根据生成的各代码创建可重定位对象。

其中,基于设备变量表23的内容即设备的变量的特性预先设定检验function、置换后function以及function置换规则。

由此,通过编译器21执行上述的处理,中间表示ir中包含的function调用被设置为调用与设备的特性对应的适当的置换后function。由此,即使程序员不留意设备的特性而创建源代码,可重定位对象也是与设备的特性对应的适当的对象。然后,能够通过使用该可重定位对象,创建与设备的特性对应的适当的可执行程序。另外,即使更换设备、设备特性变化,也能将与交换后的设备特性对应的控制命令从工业控制器910提供给设备。即,无需在更换设备时改写源代码。

接下来,对创建可执行程序的更具体的处理进行说明。

首先,对作为用于编译的function置换规则表的基础的库的创建处理进行说明。图5是示出作为function置换规则表的基础的库的创建方法的流程图。

如图5所示,可执行程序创建部11接收检验function的记述内容(s101)。可执行程序创建部11接收置换后function的记述内容(s102)。可执行程序创建部11接收function置换规则的记述内容(s103)。可执行程序创建部11将检验function、置换后function、function置换规则保存在库中,并注册到库管理器22中(s104)。

图6是示出本发明的实施方式的可执行程序的创建方法的主流程的流程图。

如图6所示,可执行程序创建部11接收源代码的记述内容(s11)。在接收源代码的记述内容后,可执行程序创建部11接收构建指令(s12)。

如果接收到构建指令,则可执行程序创建部11对源代码执行附带function置换规则的编译处理(s13)。由此,创建可重定位对象。

可执行程序创建部11对可重定位对象执行链接处理(s14)。由此,创建可执行程序。

接下来,对附带function置换规则的编译的具体的处理进行说明。图7是示出附带function置换规则的编译处理的流程图。

可执行程序创建部11对源代码进行词法分析及语法分析(s21)。程序员使用检验function记述源代码。通过执行词法分析及语法分析,创建中间表示ir。

可执行程序创建部11提取中间表示ir中包含的所有的function调用处理。可执行程序创建部11针对中间表示ir中包含的所有的function,检测是否存在function置换规则,提取存在的function置换规则,并注册在function置换规则表215中。此时,可执行程序创建部11将function置换规则与检验function以及置换后function一起注册到function置换规则表215中。

可执行程序创建部11执行function调用的置换(s23)。参考图8在后面对function调用的置换处理进行说明。

可执行程序创建部11使用进行了function调用的置换处理后的中间表示ir(使用置换后function的中间表示ir),创建代码(s24),并进行汇编(s25)。由此,创建可重定位对象。

接下来,对function调用的置换的具体处理进行说明。图8是示出function调用的置换处理的流程图。

如果对中间表示ir中包含的所有的function调用的处理没结束,则可执行程序创建部11更换作为置换处理对象的function调用(s31:否→s32)。

可执行程序创建部11对置换处理对象的function调用执行个别处理(s33)。参考图9在后面对个别处理进行说明。

如果对中间表示ir中包含的所有的function调用的处理结束,则可执行程序创建部11结束function调用的置换处理。

接下来,对个别处理的具体处理进行说明。图9是示出个别处理的流程图。

可执行程序创建部11检测作为处理对象的function调用的function(处理对象function)是否已经被注册在function置换规则表215中。具体而言,检测是否与图4中记载的func1、func2、····相符合。

如果处理对象function没被注册到function置换规则表215中(s41:否),则可执行程序创建部11不会对该function调用进行置换处理并结束。如果处理对象function被注册到function置换规则表215中(s41:是),则可执行程序创建部11移行到步骤s42。

作为步骤s42,可执行程序创建部11从function置换规则表215中获取与处理对象function对应的function置换条件组。例如,在图4的例子中,如果可执行程序创建部11检测到处理对象function是func1,则获取置换规则11、置换规则12。

接下来,可执行程序创建部11执行function置换条件的评估。具体而言,可执行程序创建部11检测是否满足function置换条件。

如果满足function置换条件(s43:是),则可执行程序创建部11执行function调用的置换(s44)。如果不满足function置换条件(s43:否),则可执行程序创建部11不会执行根据该条件的function调用的置换。

如果所有的function置换条件的评估未结束(s45:否),则可执行程序创建部11重复进行评估。另一方面,如果所有的function置换条件的评估结束(s45:是),则可执行程序创建部11结束个别处理。

如上所述,通过进行如上所述的处理,程序员在写源代码时无需特别关注,可自动地创建与设备的特性对应的适当的可执行程序。

接下来,使用图10、图11对具体的例子进行说明。图10示出数据型的置换处理的情况的库的数据结构例子。图11示出字节序的置换处理的情况的库的数据结构例子。需要说明的是,在图10、图11中,设备是电动机的控制设备。此外,图10、图11以梯形图方式示出各function的程序。

(数据型的例子)

如图10所示,在数据型的置换处理中,在库中存储有function(motor32)、function(motor64)、function(motor)(dummy)以及置换规则。存储function(motor32)的参数1为dword型,参数2为real型。存储function(motor64)的参数1为lword型,参数2为lreal型。function(motor)(dummy)虽然是与function(motor32)、function(motor64)相同的程序结构,但也可以不指定数据类型。

在置换规则中,function名与条件(置换条件)以及处理相关联。例如,在置换规则中记载了下述内容:作为针对function(motor)的置换条件以及处理,如果参数1=dword型并且参数2=real型,则被置换为function(motor32)。另外,在置换规则中还记载了下述内容:作为针对function(motor)的置换条件以及处理,如果参数1=lword型并且参数2=lreal型,则被置换为function(motor64)。

由此,可执行程序创建部11在中间表示ir中检测到function(motor)调用时,如果参数1=dword型并且参数2=real型,则创建执行function(motor32)调用的可重定位对象,如果参数1=lword型并且参数2=lreal型,则创建执行function(motor64)调用的可重定位对象。然后,通过工业控制器910执行由该可重定位对象组成的可执行程序。

(字节序的例子)

如图11所示,在字节序的置换处理中,在库中存储有function(swap)、function(move)、function(tle)(dummy)以及置换规则。function(swap)是所谓的swap函数,function(move)是所谓的move函数。function(tle)(dummy)是用于转换字节序的检验程序。

在置换规则中,function名与条件(置换条件)以及处理相关联。例如,在置换规则中记载了下述内容:作为针对function(tle)的置换条件以及处理,如果input=big,则置换为function(swap)。另外,在置换规则中还记载了下述内容:作为针对function(tle)的置换条件以及处理,如果input=little,则置换为function(move)。

由此,可执行程序创建部11在中间表示ir中检测到function(tle)调用时,如果input=big,则创建执行function(swap)调用的可重定位对象,如果input=little,则创建执行function(move)调用的可重定位对象。然后,通过工业控制器910执行由该可重定位对象组成的可执行程序。

这样,通过使用本实施方式的结构、方法以及程序,程序员在写源代码时,无需特别注意数据类型、字节序等设备特性,可针对由可执行程序控制的设备自动创建适当的可执行程序。

附图标记说明

10…个人计算机

11…可执行程序创建部

12…操作输入部

13…通信控制部

14…显示部

21…编译器

22…库管理器

23…设备变量表

24…程序编辑器

25…function置换规则编辑器

90…系统

111…cpu

112…存储部

211…语法分析器

212…function置换器

212…置换器

213…代码生成器

214…汇编器

215…function置换规则表

900…网络

910…工业控制器

921…设备

922…设备

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1