CN110720081A - 编译器及编程辅助装置 - Google Patents
编译器及编程辅助装置 Download PDFInfo
- Publication number
- CN110720081A CN110720081A CN201880004856.2A CN201880004856A CN110720081A CN 110720081 A CN110720081 A CN 110720081A CN 201880004856 A CN201880004856 A CN 201880004856A CN 110720081 A CN110720081 A CN 110720081A
- Authority
- CN
- China
- Prior art keywords
- global variable
- program
- memory address
- editing
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/458—Synchronisation, e.g. post-wait, barriers, locks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- 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
- G06F8/00—Arrangements for software engineering
-
- 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13119—Compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种编译器(11X),其使计算机执行对包含全局变量的声明的定序程序(P、Q)进行编译而生成由PLC(20)执行的执行程序(31)的处理,在全局变量的声明的编辑前后,针对全局变量分配的PLC(20)内的存储器地址发生了变化的情况下,将执行代码赋予给与参照编辑后的全局变量的定序程序(P)对应的执行程序,该执行代码使第1值、第2值同步,该第1值储存于编辑前的全局变量被分配的存储器地址,该第2值储存于编辑后的全局变量被分配的存储器地址。
Description
技术领域
本发明涉及对包含全局变量的声明的定序程序进行编译的编译器及编程辅助装置。
背景技术
控制装置即PLC(Programmable Logic Controller:可编程逻辑控制器)使用定序程序而执行定序控制。该定序程序在通过编程装置进行了创建及编译后,写入PLC。
在定序程序中有时包含能够从全部定序程序参照的全局变量。该全局变量通过编译而分配于PLC的存储区域。在定序程序访问全局变量时,参照全局变量的分配目标的存储器地址。
专利文献1所记载的信息处理装置为了防止仅更新多个全局变量中的一部分的状况,因此预先将全局变量分配至公开区域和工作区域这2处,上位优先级的任务使用工作区域而对全局变量进行更新,下位优先级的任务使用公开区域而参照全局变量。该信息处理装置如果完成由下位优先级的任务引起的全局变量的参照,则通过切换工作区域和公开区域,从而确保全局变量参照时的同时性(也称为一贯性或一致性)。
专利文献1:日本特开2002-149421号公报
发明内容
但是,包含上述专利文献1的技术,当前,通常在对全局变量的声明进行编辑而全局变量被分配的存储器地址发生变化的情况下,要重新对参照全局变量的全部定序程序执行编译。因此,存在编译所需要的时间变长的问题。
本发明就是鉴于上述问题而提出的,其目的在于得到能够抑制编译所需要的时间的编译器。
为了解决上述课题,达成目的,本发明为编译器,其使计算机执行对包含全局变量的声明的定序程序进行编译而生成由控制装置执行的执行程序的处理,该编译器的特征在于,在全局变量的声明的编辑前后,针对全局变量分配的控制装置内的存储器地址发生了变化的情况下,使计算机执行将执行代码赋予给与参照编辑后的全局变量的定序程序对应的执行程序的处理,该执行代码使第1值、第2值同步,该第1值储存于编辑前的全局变量被分配的存储器地址,该第2值储存于编辑后的全局变量被分配的存储器地址。
发明的效果
本发明涉及的编译器取得能够抑制编译所需要的时间的效果。
附图说明
图1是表示本发明的实施方式1涉及的编程装置的结构的框图。
图2是表示实施方式1涉及的编程装置的动作顺序的概略的流程图。
图3是用于说明实施方式1涉及的全局变量的声明的图。
图4是表示参照图3的全局变量的定序程序的例子的图。
图5是表示实施方式1涉及的存储器分配信息的更新前的结构的图。
图6是表示对全局变量进行编辑前的实施方式1涉及的执行程序与参照目标的存储器地址的关系的图。
图7是用于说明对图3所示的全局变量进行了编辑后的实施方式1涉及的全局变量声明的例子的图。
图8是用于说明对图4所示的定序程序进行了编辑后的定序程序的例子的图。
图9是表示实施方式1涉及的存储器分配信息的更新后的结构的图。
图10是表示由实施方式1涉及的编程装置进行的全局变量的分配处理顺序的流程图。
图11是表示对全局变量进行了编辑后的实施方式1涉及的执行程序与参照目标的存储器地址的关系的图。
图12是表示由实施方式1涉及的编程装置进行的执行程序的生成处理顺序的流程图。
图13是表示实施方式2涉及的编程装置的结构的框图。
图14是用于说明对图3所示的全局变量进行了编辑后的实施方式2涉及的全局变量声明的例子的图。
图15是表示对全局变量进行了编辑后的实施方式2涉及的执行程序与参照目标的存储器地址的关系的图。
图16是表示实施方式3涉及的编程***的结构的框图。
图17是表示实施方式1至3涉及的编程装置的硬件结构例的图。
具体实施方式
下面,基于附图对本发明的实施方式涉及的编译器及编程辅助装置进行详细说明。此外,并不是利用这些实施方式对本发明进行限定。
实施方式1.
图1是表示本发明的实施方式1涉及的编程装置的结构的框图。编程辅助装置即编程装置10X是对定序程序组35X所包含的定序程序的创建进行辅助的计算机。编程装置10X使用编译器11X,对定序程序组35X所包含的定序程序进行编译。
编程装置10X连接于控制装置即PLC 20。编程装置10X具有对定序程序组35X及全局变量组36X进行创建的功能、对定序程序组35X所包含的定序程序进行编辑的功能、对全局变量组36X所包含的全局变量的声明进行编辑的功能。另外,编程装置10X具有通过对定序程序组35X及全局变量组36X进行编译而生成能够由PLC 20执行的执行程序31的功能。此外,本实施方式中的全局变量的编辑不是对全局变量的值进行变更的处理,而是全局变量的声明的编辑。在声明全局变量的信息中包含后述的数据类型或属性等。
编程装置10X具备编译器11X、编辑装置30、通信部32、程序储存部310。编辑装置30按照来自用户的指示,对定序程序组35X及全局变量组36X进行创建,按照来自用户的指示,对定序程序组35X及全局变量组36X进行编辑。编辑装置30预先对创建或编辑出的定序程序组35X及全局变量组36X进行存储。此外,编辑装置30也可以是独立于编程装置10X的结构。在该情况下,编辑装置30与编程装置10X连接。
在定序程序组35X中包含如定序程序P、Q那样的多个定序程序。另外,全局变量组36X是由定序程序组35X使用的全局变量的集合。在全局变量组36X中包含如后述的gVar1~gVar4那样的多个全局变量。全局变量组36X内的各全局变量为具有广域范围的变量,能够被定序程序组35X内的多个定序程序进行参照。因此,全局变量组36X内的各全局变量能够从写入PLC 20内的多个执行程序31参照。
定序程序组35X的编程语言规格例如通过国际电气标准会议标准化为IEC(International Electro technical Commission)61131-3,定序程序组35X能够使用保存数据的变量。作为记述定序程序组35X的编程语言,例如在IEC61131-3标准中,规定了指令列表、结构化文本、梯形图、功能框图、定序功能图,但在本实施方式中并不限于这些。
编译器11X是生成能够由PLC 20执行的执行程序31的程序。编译器11X通过对定序程序组35X及全局变量组36X进行编译,从而将定序程序组35X及全局变量组36X转换为执行程序31。编译器11X也能够仅对定序程序组35X所包含的一部分定序程序进行编译。
编译器11X具备参照关系管理部12、存储器分配部14、程序选择部17、执行程序生成部16。参照关系管理部12对定序程序与全局变量的参照关系进行管理。参照关系管理部12对表示定序程序与全局变量的参照关系的参照关系信息13进行创建。具体而言,参照关系管理部12将定序程序组35X所包含的全部定序程序与全局变量组36X所包含的全部全局变量之间的参照关系登记于参照关系信息13。
在对定序程序组35X或全局变量组36X进行编辑,变更了定序程序组35X所包含的定序程序与全局变量组36X所包含的全局变量的参照关系的情况下,参照关系管理部12对参照关系信息13进行更新。
在参照关系信息13中,附加有表示变更或追加了任意定序程序及全局变量的变更有无信息。另外,在参照关系信息13中,附加有表示定序程序及全局变量的变更内容的变更内容信息。变更内容信息是例如将全局变量、全局变量变更后的属性相关联的信息。后面对属性进行叙述。参照关系管理部12针对编译完成后的定序程序及全局变量,从参照关系信息13内删除变更有无信息及变更内容信息。
存储器分配部14针对全局变量组36X所包含的全部全局变量,基于参照关系信息13,执行向PLC 20的数据存储器24或非易失性数据存储器25的分配,对分配的结果即存储器分配信息15进行创建。分配的结果是数据存储器24或非易失性数据存储器25的存储器地址。因此,存储器分配部14将数据存储器24或非易失性数据存储器25的存储器地址登记于存储器分配信息15。这样,存储器分配部14对全局变量设定存储器地址而登记于存储器分配信息15。
在对全局变量组36X进行编辑,全局变量被分配的存储器地址发生了变化的情况下,存储器分配部14基于参照关系信息13对存储器分配信息15进行更新。存储器分配部14例如设定全局变量的属性所允许的存储器地址。
程序选择部17基于附加于参照关系信息13的变更有无信息,从定序程序组35X内对作为编译对象的定序程序进行选择。此外,编辑装置30也可以按照来自用户的指示对作为编译对象的定序程序进行选择。
程序选择部17在最初对定序程序组35X进行创建时,将定序程序组35X所包含的全部定序程序选择为编译对象。
执行程序生成部16使用存储器分配信息15、由程序选择部17从定序程序组35X内选择出的定序程序,生成通过PLC 20进行动作的执行程序31。执行程序31由PLC 20能够解释及执行的命令序列即执行代码构成。此外,如果执行程序31的命令序列与PLC 20的架构对应,则也可以是任意形式的命令序列。
执行程序生成部16将创建出的执行程序31储存于程序储存部310。程序储存部310是对执行程序31进行存储的存储器。通信部32将由执行程序生成部16生成的执行程序31发送至PLC 20。
PLC 20使用由编程装置10X生成的执行程序31而执行定序控制。PLC 20具备程序存储器21、通信部22、程序执行部23、数据存储器24、非易失性数据存储器25。数据存储器24及非易失性数据存储器25是对包含全局变量的由执行程序31参照的变量进行存储的存储器。数据存储器24为易失性存储器,非易失性数据存储器25为非易失性存储器。
通信部22接收从编程装置10X的通信部32发送来的执行程序31,储存于程序存储器21。程序存储器21是对执行程序31进行存储的存储器。
程序执行部23从程序存储器21读出执行程序31,执行构成执行程序31的命令。数据存储器24是由定序程序组35X使用的全局变量中没有停电保存属性的全局变量被分配的存储器。非易失性数据存储器25是由定序程序组35X使用的全局变量中具有停电保存属性的全局变量被分配的非易失性存储器。停电保存属性是用于对在发生了停电时也不消失而使数据保存进行指定的属性。因此,被设定了停电保存属性的全局变量是在发生了停电时也不消失而保存数据的全局变量。具有停电保存属性的全局变量是例如具有IEC61131-3标准中的RETAIN属性的全局变量,但停电保存属性的表现并不限于RETAIN属性。
这里,执行程序31所包含的、用于参照数据存储器24及非易失性数据存储器25的存储器访问命令表达如下。
write(X,Ax):将“X”的值写入存储器地址Ax的区域。
read(Ay,Y):读出存储器地址Ay的区域的值而写入“Y”的区域。
这样,“X”表示通过write命令(写入命令)而写入存储器地址Ax的区域的值,“Y”表示将通过read命令(读出命令)从存储器地址Ay的区域读出的值写入的区域。这里,如果“X”及“Y”与PLC 20的架构对应,则也可以是由任意形式表示的值。
对数据存储器24的参照,在存储器地址Ax或存储器地址Ay为数据存储器24的存储器地址范围的情况下,是通过write命令或read命令的执行而实现的。另外,对非易失性数据存储器25的参照,在存储器地址Ax或存储器地址Ay为非易失性数据存储器25的存储器地址范围的情况下,是通过write命令或read命令的执行而实现的。这里,如果存储器地址Ax及存储器地址Ay与PLC 20的架构对应,则也可以是任意形式的存储器地址。
接着,对编程装置10X的动作顺序进行说明。图2是表示实施方式1涉及的编程装置的动作顺序概略的流程图。在编程装置10X中,按照来自用户的指示,编辑装置30对定序程序组35X及全局变量组36X进行创建(步骤S10)。在编译器11X中,参照关系管理部12对表示定序程序组35X内的定序程序与全局变量组36X内的全局变量的参照关系的参照关系信息13进行创建。另外,存储器分配部14将存储器地址分配给全局变量组36X的全局变量。并且,存储器分配部14基于分配给全局变量的存储器地址、参照关系信息13,对存储器分配信息15进行创建(步骤S20)。
执行程序生成部16针对定序程序组35X所包含的全部定序程序生成执行程序31(步骤S30)。具体而言,执行程序生成部16使用创建出的定序程序组35X及全局变量组36X,生成执行程序31。而且,通信部32将生成的执行程序31发送至PLC 20(步骤S40)。由此,PLC20能够执行执行程序31。
之后,在编程装置10X中,按照来自用户的指示,编辑装置30对全局变量组36X的一部分及定序程序组35X的一部分进行编辑。即,编辑装置30按照来自用户的指示,进行定序程序及全局变量的声明的编辑(步骤S50)。这里,对编辑全局变量组36X中的一部分全局变量,变更向数据存储器24或非易失性数据存储器25的存储器地址的分配目标的情况进行说明。在本实施方式中,全局变量包含gVar1、gVar2、gVar3、gVar4,通过编辑对它们中的gVar1的属性等进行变更,不对gVar2、gVar3、gVar4进行变更。另外,在本实施方式中,定序程序组35X为定序程序P、Q,在编辑gVar1的同时对定序程序P进行编辑而将gVar1的写入目标及读出源的存储器地址进行变更,不对定序程序Q进行变更。
在对gVar1及定序程序P进行了编辑后,参照关系管理部12对参照关系信息13进行更新,存储器分配部14对存储器分配信息15进行更新(步骤S60)。具体而言,参照关系管理部12对参照关系信息13内的变更有无信息及变更内容信息进行更新。另外,存储器分配部14基于参照关系信息13,针对存储器分配信息15内的定序程序P的gVar1,重新分配参照目标的存储器地址。
程序选择部17基于参照关系信息13,从定序程序组35X内对作为编译对象的定序程序P进行选择。由程序选择部17选择的定序程序P是参照分配目标的存储器地址被变更的全局变量的定序程序。因此,执行程序生成部16针对参照分配目标的存储器地址被变更的全局变量的定序程序,生成执行程序(步骤S70)。下面,将使用定序程序P生成的执行程序称为执行程序EP。这样,本实施方式的执行程序生成部16仅针对包含多个定序程序P、Q的定序程序组35X中所参照的全局变量的分配目标的存储器地址被变更的定序程序P进行编译。而且,通信部32将生成的执行程序EP发送至PLC 20(步骤S80)。由此,PLC 20利用接收到的执行程序EP,对与执行程序EP对应的旧的执行程序31进行置换。
接着,对由编程装置10X执行的具体的处理进行说明。图3是用于说明实施方式1涉及的全局变量的声明的图。在图3中示出遵照IEC61131-3标准中的全局变量的声明方法的全局变量的声明例子。全局变量声明361相当于编程装置10X中的全局变量组36X。这里,示出如下情况,即,将gVar1声明为INT型的全局变量,将gVar2声明为初始值为10.0的REAL型的全局变量,将gVar3声明为具有停电保存属性的INT型的全局变量,将gVar4声明为具有停电保存属性的WORD型的全局变量。数据类型即INT型、REAL型、WORD型例如表示全局变量的数据大小等含义。在本实施方式中,对在编辑前的全局变量、编辑后的全局变量中数据类型相同,能够设定于全局变量的数据大小在编辑前后相同的情况进行说明。此外,本实施方式中的全局变量的声明方法并不限于图3的形式。
图4是表示参照图3的全局变量的定序程序的例子的图。在图4中示出由IEC61131-3标准中的结构化文本规定的定序程序的例子。图4所示的定序程序组35X包含定序程序111P、111Q。定序程序111P为变更前的定序程序P的例子,图4所示的定序程序111Q为变更前的定序程序Q的例子。
在定序程序111P中,将“P1”写入全局变量gVar1,之后将全局变量gVar1的值读出为“P2”。同样地,定序程序111Q将“Q1”写入全局变量gVar1,之后将全局变量gVar1的值读出为“Q2”。此外,在图4中省略了向gVar1之外的全局变量的参照。此外,向全局变量的参照并不限于图4的形式。
如果在全局变量声明361内声明的全局变量通过存储器分配部14而分配于数据存储器24或非易失性数据存储器25的存储器地址,通过编译而生成执行程序31,则在执行执行程序31时,参照分配目标的存储器地址。这里,存储器分配部14基于全局变量声明361,将gVar1及gVar2分配于数据存储器24,将gVar3及gVar4分配于非易失性数据存储器25。
图5是表示实施方式1涉及的存储器分配信息更新前的结构的图。在图5中示出存储器分配部14基于全局变量声明361创建出的存储器分配信息151的结构例。存储器分配信息151为存储器分配信息15的一个例子。存储器分配信息151对分配于数据存储器24或非易失性数据存储器25的存储器地址进行保存。
存储器分配信息151是表示全局变量组36X内的全局变量、全局变量的分配目标的存储器地址、参照该存储器地址的定序程序的对应关系的信息。
在存储器分配信息151中,作为全局变量的变量名称登记了gVar1、gVar2、gVar3、gVar4。另外,在存储器分配信息151中,针对各全局变量,将数据类型、种类、属性、初始值、存储器地址、参照程序相关联。
数据类型表示INT型、REAL型、WORD型等全局变量的数据的类型,种类表示变量的范围或使用方法,属性表示变量的停电保存或常数这样的性质。这里,将表示全局变量的VAR_GLOBAL登记于各全局变量,将RETAIN登记于具有停电保存属性的全局变量。初始值为全局变量的初始值。
存储器地址表示分配给全局变量的存储器地址,参照程序表示参照存储器地址的定序程序。这里,示出在存储器地址登记了表示存储器地址Aa、Ab、Ac、Ad的“Aa”、“Ab”、“Ac”、“Ad”的情况。另外,参照程序中的“P”表示定序程序P,“Q”表示定序程序Q。这里的参照程序是定序程序111P、定序程序111Q。
这里,示出将gVar1分配于数据存储器24的存储器地址Aa,将gVar2分配于数据存储器24的存储器地址Ab,将gVar3分配于非易失性数据存储器25的存储器地址Ac,将gVar4分配于非易失性数据存储器25的存储器地址Ad。此外,存储器分配信息15的形式并不限于图5所示的形式。
在参照关系信息13中,示出gVar1、gVar2、gVar3、gVar4分别被定序程序111P、111Q参照。在该情况下,使用参照关系信息13创建的存储器分配信息151中也示出gVar1、gVar2、gVar3、gVar4被定序程序111P及定序程序111Q参照。
这里,对从定序程序111P、111Q生成的执行程序与由这些执行程序参照的存储器地址的关系进行说明。图6是表示对全局变量进行编辑前的实施方式1涉及的执行程序与参照目标的存储器地址的关系的图。在图6中示出将编辑前的全局变量分配给数据存储器24或非易失性数据存储器25的示意图。
这里,示出对定序程序111P进行编译而生成的执行程序EP51、对定序程序111Q进行编译而生成的执行程序EQ51、数据存储器24、非易失性数据存储器25的关系。
执行程序EP51的write是执行将“P1”写入gVar1被分配的存储器地址Aa的命令,read是执行读出gVar1被分配的存储器地址Aa的值并向“P2”写入的命令。它们分别表示执行程序EP51的源程序即定序程序111P中的向gVar1写入“P1”、将从gVar1读出的值向“P2”写入。
同样地,执行程序EQ51的write是执行将“Q1”写入gVar1被分配的存储器地址Aa的命令,read是执行读出gVar1被分配的存储器地址Aa的值并向“Q2”写入的命令。它们分别表示执行程序EQ51的源程序即定序程序111Q中的向gVar1写入“Q1”、将从gVar1读出的值向“Q2”的写入。此外,在图6中省略了gVar1之外的全局变量的参照。
图7是用于说明对图3所示的全局变量进行了编辑后的实施方式1涉及的全局变量声明的例子的图。这里,示出相对于图3所示的全局变量声明361,以gVar1具有停电保存属性的方式进行了变更的情况下的全局变量声明362。在全局变量声明362中,通过将在图3中声明的gVar1处理为注释而删除,将gVar1声明为具有停电保存属性的全局变量。
图8是用于说明对图4所示的定序程序进行了编辑后的定序程序的例子的图。图8所示的定序程序组35X包含定序程序112P、111Q。图8所示的定序程序112P为变更后的定序程序P的例子。
在上述gVar1的编辑的同时,将图4所示的定序程序111P变更为图8所示的定序程序112P。即,将写入gVar1的值从“P1”变更为“P3”,将读出gVar1的值然后写入的区域从“P2”变更为“P4”。此外,没有变更图8所示的定序程序111Q。
图9是表示实施方式1涉及的存储器分配信息更新后的结构的图。在图9中示出存储器分配部14基于全局变量声明362创建出的存储器分配信息152的结构例。存储器分配信息152为存储器分配信息15的一个例子。在将全局变量声明361变更为全局变量声明362,并且将定序程序111P变更为定序程序112P的情况下,通过存储器分配部14对存储器分配信息151进行更新而对存储器分配信息152进行创建。因此,这里的参照程序是定序程序112P、定序程序111Q。存储器分配信息152与存储器分配信息151同样地,对分配于数据存储器24或非易失性数据存储器25的存储器地址进行保存。
由于在全局变量声明362及定序程序112P中,对gVar1的位置进行了编辑,因此在存储器分配信息152中,与存储器分配信息151相比,对与gVar1对应的项目进行更新。这里,说明存储器分配部14针对gVar1重新分配存储器地址Ae的情况。
与gVar1对应的项目中的分配目标的存储器地址的项目登记有对gVar1进行编辑前的存储器地址和对gVar1进行了编辑后的存储器地址。具体而言,在与gVar1对应的存储器地址的位置处,登记有对gVar1进行编辑前的存储器地址即存储器地址Aa和对gVar1进行了编辑后的存储器地址即存储器地址Ae。而且,在gVar1的参照程序的位置处,登记有与对gVar1进行编辑前的存储器地址Aa相关联的第1程序即定序程序Q、与对gVar1进行了编辑后的存储器地址Ae相关联的第2程序即定序程序P。
另外,在存储器分配信息152中,针对gVar1,登记有表示被定序程序Q参照的存储器地址Aa变更为存储器地址Ae的信息。该信息表示需要将存储器地址Aa的值和存储器地址Ae的值同步。
接着,对由编程装置10X进行的全局变量的分配处理顺序进行说明。图10是表示由实施方式1涉及的编程装置进行的全局变量的分配处理顺序的流程图。
这里,对存储器分配部14的动作顺序进行说明。存储器分配部14对在编辑后的全局变量组36X中是否存在全局变量进行判定(步骤S100)。换言之,存储器分配部14对是否声明了全局变量进行判定。
在存在全局变量的情况下(步骤S100,Yes),存储器分配部14取得成为存储器地址的分配对象的全局变量(步骤S110)。该处理为从全局变量组36X取得成为分配对象的全局变量,即在编译前编辑的全局变量的处理。具体而言,存储器分配部14从全局变量组36X中,取得需要通过编辑而进行存储器地址的重新分配的全局变量。
接着,存储器分配部14对是否已将分配目标的存储器地址设定于取得的全局变量进行判定。在已设定了存储器地址的情况下(步骤S120,Yes),设定了该存储器地址的全局变量是现有的。成为存储器地址的分配对象的全局变量是对现有的全局变量进行了编辑的全局变量。因此,存储器分配部14以原状态维持现有的分配目标的存储器地址,并新分配存储器地址,因此在存储器分配信息152中创建用于登记新的存储器地址的登记目标即登记区域(步骤S130)。此外,存储器分配信息15中的登记区域只要对应于存储器分配信息15则可以是任意区域。
存储器分配部14针对新创建出的登记区域,对参照程序进行登记(步骤S140)。这里的存储器分配部14通过参照参照关系信息13而对参照程序进行确定,将确定出的参照程序登记于存储器分配信息152。
并且,存储器分配部14决定编译对象即全局变量的分配目标的存储器地址,登记于已经创建的登记区域。
另一方面,在步骤S120中,在没有设定存储器地址的情况下(步骤S120,No),由存储器分配部14取得的全局变量为初次成为存储器地址的分配对象的全局变量。在该情况下,存储器分配部14决定分配目标的存储器地址,登记于存储器分配信息152(步骤S150)。此外,分配目标的存储器地址的决定方法只要是与PLC 20的架构对应的方法,则可以是任意的方法。
之后,存储器分配部14对在全局变量组36X中是否残留全局变量,即是否存在需要分配处理的全局变量进行判定(步骤S100)。
在存在全局变量的情况下(步骤S100,Yes),重复上述步骤S110至S150及步骤S100的处理。另一方面,在不存在全局变量的情况下(步骤S100,No),存储器分配部14结束分配处理。即,在针对全部全局变量完成了存储器地址的分配的情况下,存储器分配部14结束分配处理。通过上述全局变量的分配处理,能够针对全部全局变量,对分配目标的存储器地址进行设定。另外,能够针对进行了编辑的全局变量,对成为分配目标的多个存储器地址进行设定。
通过该图10中说明过的处理,在本实施方式中,针对存储器分配信息152的gVar1,登记存储器地址Ae和参照程序即定序程序P。之后,执行程序生成部16针对从定序程序111P编辑出的定序程序112P,使用存储器分配信息152而对执行程序EP进行创建。
这里,对在编辑了定序程序组35X及全局变量组36X后生成的执行程序与由这些执行程序参照的存储器地址的关系进行说明。图11是表示对全局变量进行了编辑后的实施方式1涉及的执行程序与参照目标的存储器地址的关系的图。在图11中示出将编辑后的全局变量分配给数据存储器24或非易失性数据存储器25的示意图。这里,示出对定序程序112P进行编译而生成的执行程序EP52、已经创建的执行程序EQ51、数据存储器24、非易失性数据存储器25的关系。此外,在图11中省略了gVar1之外的全局变量的参照。
在本实施方式中,对定序程序111P进行编辑而创建了定序程序112P,但没有对定序程序111Q进行编辑。因此,进行编译的是定序程序112P,不需要对定序程序111Q进行编译。
在图11中,执行程序EP52的write是执行将“P3”写入使gVar1被分配的存储器地址Ae的命令,read是执行读出gVar1被分配的存储器地址Ae的值并向“P4”写入的命令。它们分别表示执行程序EP52的源程序即定序程序112P中的向gVar1写入“P3”、将从gVar1读出的值向“P4”写入。由于执行程序EQ51没有被编辑,因此与图6中说明过的同样。
如图11所示,由通过编辑更新过的执行程序EP52参照的gVar1分配于非易失性数据存储器25内的存储器地址Ae,由没有编辑的执行程序EQ51参照的gVar1维持向数据存储器24内的存储器地址Aa的分配。这样,以原状态维持了编辑前的全局变量的分配目标,执行编辑后的全局变量的分配。
成为编译对象的定序程序112P对gVar1的参照,是通过对新分配于gVar1的非易失性数据存储器25内的存储器地址Ae进行参照而实现的。即,在执行程序EP52中,将向gVar1的写入作为向存储器地址Ae的write,将从gVar1的读出作为向存储器地址Ae的read而赋予给执行代码。
另外,本实施方式的执行程序生成部16针对参照新分配的全局变量的命令,***用于使变更前的存储器地址Aa所储存的值、变更后的存储器地址Ae所储存的值同步的命令。具体而言,执行程序生成部16在write之后及read之前,立刻***copy(Bc,Bd)的命令(复制命令)。
copy(Bc,Bd):将存储器地址Bc的值写入存储器地址Bd的区域。
在图11中示出Bc及Bd的一者为Ae,另一者为Aa的情况。此外,将这里***的copy设为与之前的write、或之后的read不可分地进行动作的命令。在图11的执行程序EP52中,在write(P3,Ae)之后立刻***copy(Ae,Aa)的命令。如果执行该copy(Ae,Aa),则对分配于非易失性数据存储器25的存储器地址Ae的gVar1的值进行复制,写入分配于数据存储器24的存储器地址Aa的gVar1(s1)。
同样地,在图11的执行程序EP52中,在read(Ae,P4)之前立刻***copy(Aa,Ae)的命令。如果执行该copy(Aa,Ae),则对分配于数据存储器24的存储器地址Aa的gVar1的值进行复制,写入分配于非易失性数据存储器25的存储器地址Ae的gVar1(s2)。
由此,由定序程序112P参照的gVar1的值与由定序程序111Q参照的gVar1的值为相同值。其结果,即使在存在对gVar1编辑的情况下,也能够由编辑后的执行程序EP52和编辑前的执行程序EQ51参照相同值的gVar1。
这里,对执行程序EP52的生成处理顺序进行说明。图12是表示由实施方式1涉及的编程装置进行的执行程序生成处理顺序的流程图。
这里,对执行程序生成部16从定序程序112P生成执行程序EP52的处理进行说明。执行程序生成部16针对编译对象的定序程序112P,以特定单位执行步骤S200至S280的处理。这里,定序程序112P的特定单位只要与记述定序程序112P的编程语言对应,则可以是任意单位。特定单位的例子为定序程序112P的1行。
执行程序生成部16针对定序程序112P的特定单位,生成能够由PLC 20执行的执行代码(步骤S200)。在生成该执行代码时出现了全局变量的情况下,执行程序生成部16将分配目标即存储器地址设为任意值。
接着,执行程序生成部16对编译对象的特定单位是否包含全局变量进行判定(步骤S210)。具体而言,执行程序生成部16对在步骤S200中使用的特定单位是否包含全局变量进行判定。
在编译对象包含全局变量的情况下(步骤S210,Yes),执行程序生成部16取得与编译对象的参照程序吻合的存储器地址而决定执行代码(步骤S220)。这里的执行程序生成部16基于存储器分配信息152,取得成为编译对象的gVar1的分配目标的存储器地址Aa、Ae中的与成为编译对象的定序程序P相关联的存储器地址Ae。换言之,执行程序生成部16从分配于成为编译对象的全局变量的存储器地址中,取得成为编译对象的参照程序所相关联的存储器地址。而且,执行程序生成部16将在步骤S200中设为任意值的全局变量的分配目标的存储器地址置换为取得的存储器地址,并且决定与置换的存储器地址对应的执行代码。由此,即使在将全局变量分配于多个存储器地址的情况下,也能够对编译对象的定序程序所参照的存储器地址进行设定。
接着,执行程序生成部16对是否将多个存储器地址分配于编译对象的全局变量进行判定(步骤S230)。在如存储器地址Aa、Ae那样分配了多个存储器地址的情况下(步骤S230,Yes),为了在存储器地址Aa、Ae之间储存相同值,执行程序生成部16在执行程序EP52内创建copy命令。
执行程序生成部16对在执行程序EP52内已经生成的命令是否为write进行判定(步骤S240)。在执行程序EP52内已经生成的命令为write的情况下(步骤S240,Yes),执行程序生成部16在write之后立刻***copy(步骤S250)。这里,执行程序生成部16将copy的值取得源存储器地址设为在步骤S220中取得的存储器地址Ae,基于存储器分配信息152对copy的值写入目标存储器地址进行设定。此时,执行程序生成部16将在步骤S230中判定为分配了多个存储器地址的存储器地址Aa、Ae中的、在步骤S220中取得的存储器地址Ae之外的存储器地址Aa设定为copy的值写入目标。这样,在存在多个存储器地址的情况下,执行程序生成部16将存储器地址数量的copy***于执行程序EP52内。
在执行程序EP52内已经生成的命令不是write的情况下(步骤S240,No),执行程序生成部16对在执行程序EP52内已经生成的命令是否为read进行判定(步骤S260)。在执行程序EP52内已经生成的命令为read的情况下(步骤S260,Yes),执行程序生成部16在read之前立刻***copy(步骤S270)。
这里,执行程序生成部16通过与步骤S250同样的方法,对copy的值取得源存储器地址Aa、copy的值写入目标存储器地址Ae进行设定。执行程序生成部16在步骤S250或步骤S270的处理后进行步骤S280的处理。
另外,在步骤S260中,在执行程序EP52内已经生成的命令不是read的情况下(步骤S260,No),不需要copy命令。在该情况下,执行程序生成部16不***copy命令,进行步骤S280的处理。
另外,在步骤S230中,在没有分配多个存储器地址的情况下(步骤S230,No),由于编译对象的全局变量被分配于唯一的存储器地址,因此不需要copy命令。在该情况下,执行程序生成部16不***copy命令,进行步骤S280的处理。
另外,在步骤S210中,在编译对象不包含全局变量的情况下(步骤S210,No),执行程序生成部16不***copy命令,进行步骤S280的处理。
在步骤S250后、步骤S270后、步骤S260中No的情况下、步骤S230中No的情况下、或步骤S210中No的情况下,执行程序生成部16对是否残留编译对象进行判定(步骤S280)。执行程序生成部16由于以定序程序112P的特定单位重复步骤S200至S280的处理,因此对成为编译对象的特定单位是否残留于定序程序112P内进行判定。即,执行程序生成部16对编译对象中是否存在没有进行步骤S200至S280的处理的特定单位进行判定。
在残留了编译对象的情况下(步骤S280,Yes),执行程序生成部16针对残留的编译对象中的特定单位重复步骤S200至S280的处理。在没有残留编译对象的情况下(步骤S280,No),执行程序生成部16结束执行程序EP52的生成处理。
这样,由于执行程序生成部16通过copy使由多个存储器地址保存的值在存储器地址之间同步,因此能够将多个定序程序112P、111Q所参照的全局变量的值设为唯一的值。
在不通过copy使由多个存储器地址保存的值在存储器地址之间同步的情况下,如果对全局变量进行更新,则由于全局变量被分配的存储器地址发生变更,因此需要对参照全局变量的全部定序程序进行编译。
特别地,在定序程序个数多的大规模***中,在编辑了特定的全局变量的情况下,编译的对象及向PLC的写入对象为参照全局变量的全部定序程序。因此,在大规模***中,编译及向PLC的写入所需要的时间变长。
另外,在使用定序程序的***中,为了进行启动由PLC控制的装置时的动作调整或调试,会频繁地重复编译及向PLC的写入。因此,在调试或调整时编译及向PLC的写入时间变长。
相对于此,本实施方式的编程装置10X能够将编译对象限定为变更了分配目标的存储器地址的定序程序112P。此外,在本实施方式中,对通过在write之后立刻***copy而以多个命令进行全局变量的同步的情况进行了说明,但也可以替代copy及write,***用于使copy及write执行的单一命令。同样地,在本实施方式中,对通过在read之前立刻***copy而以多个命令进行全局变量的同步的情况进行了说明,但也可以替代read及copy,***用于使read及copy执行的单一命令。这样,编程装置10X可以以单一命令构成执行代码,也可以以多个命令构成。
这样,在实施方式1中,在全局变量的声明的编辑前后,分配于全局变量的存储器地址发生了变化的情况下,通过copy命令使由来自编辑前的分配目标即存储器地址Aa保存的值、由编辑后的分配目标即存储器地址Ae保存的值同步。由此,能够从编译对象中除去向编辑全局变量前的存储器地址Aa分配的未编辑的定序程序111Q。因此,能够抑制定序程序的编译的处理时间。
另外,PLC 20能够直接使用与未编辑的定序程序111Q对应的执行程序EQ51而执行定序控制。因此,在将执行程序EP52写入PLC20时,能够省略执行程序EQ51向PLC 20的写入。
实施方式2.
接着,使用图13至图15对本发明的实施方式2进行说明。在实施方式2中,利用由用户设定的编译方法,对定序程序进行编译。另外,在选择了特定编译方法的情况下,即使在编辑前后能够设定于全局变量的数据大小不同,也会使用执行数据类型转换的命令,如实施方式1那样将全局变量分配于多个存储器地址。
图13是表示实施方式2涉及的编程装置的结构的框图。对图13的各结构要素中实现与图1所示的实施方式1的编程装置10X相同功能的结构要素标注相同标号,省略重复的说明。
编程辅助装置即编程装置10Y与编程装置10X相比,在具备基于编译选择41对编译方法进行选择的编译选择判定部18这一点上不同。具体而言,编程装置10Y具备编译器11Y、编辑装置30、通信部32、程序储存部310。编译器11Y除了编译器11X的结构要素之外,具备编译选择判定部18。
编译选择41是用于对编译方法进行选择的信息。在编译选择41中,对第1选择和第2选择的任意者进行设定。第1选择是由表示将唯一的存储器地址分配于各全局变量的编译方法的值表示的,第2选择是由表示将多个存储器地址分配于各全局变量的编译方法的值表示的。因此,在编译选择41中,用户预先对表示第1选择的值或表示第2选择的值进行储存。
在由第1选择表示的编译中,将唯一的存储器地址分配于各全局变量,因此变更了分配目标的存储器地址的全部定序程序成为编译对象。
在由第2选择表示的编译中,与实施方式1同样地,能够将全局变量分配于多个存储器地址,对成为编译对象的定序程序进行限定。此外,有时分配于多个存储器地址的全局变量的值在参照这些值的定序程序之间不一致。
编译选择判定部18基于编译选择41,对以由第1选择指定出的方法执行编译、或以由第2选择指定出的方法执行编译进行判定。作为判定结果,编译选择判定部18将指定了第1选择的第1指示信息或指定了第2选择的第2指示信息发送至存储器分配部14、程序选择部17、及执行程序生成部16。
存储器分配部14、程序选择部17、及执行程序生成部16按照来自编译选择判定部18的第1指示信息或第2指示信息执行处理。具体而言,存储器分配部14如果从编译选择判定部18接收到第1指示信息,则将唯一的存储器地址分配于各全局变量。另外,存储器分配部14如果从编译选择判定部18接收到第2指示信息,则通过与实施方式1同样的方法将存储器地址分配于全局变量。
另外,程序选择部17如果从编译选择判定部18接收到第1指示信息,则对参照变更了分配目标的存储器地址的全局变量的全部定序程序进行选择。另外,程序选择部17如果从编译选择判定部18接收到第2指示信息,则通过与实施方式1同样的方法对定序程序进行选择。
另外,执行程序生成部16如果从编译选择判定部18接收到第1指示信息,则针对参照变更了分配目标的存储器地址的全局变量的全部定序程序执行编译。
另外,执行程序生成部16如果从编译选择判定部18接收到第2指示信息,则通过与实施方式1同样的方法对定序程序进行编译。
执行程序生成部16在第1选择的情况下,生成不***实施方式1中的copy的执行程序,在第2选择的情况下,替代在实施方式1中生成的copy命令,生成执行数据类型转换的命令。
图14是用于说明对图3所示的全局变量进行了编辑后的实施方式2涉及的全局变量声明的例子的图。这里,示出针对图3所示的全局变量声明361,变更了gVar1的数据类型的情况下的全局变量声明363。在全局变量声明363中,通过将在图3中声明的gVar1处理为注释而作为命令删除,将gVar1声明为数据类型为REAL型的全局变量。在IEC61131-3标准中,INT型为16位附带标号的整数,REAL型为32位单精度浮点数。此外,这里示出的数据类型只是一个例子,也可以应用其它数据类型。
由于各数据类型所要求的数据大小如IEC61131-3标准的INT型及REAL型那样,根据数据类型而不同,因此分配于全局变量的存储器量因各个数据类型而不同。因此,在本实施方式中,在全局变量由于数据类型的编辑而变为具有多个分配目标的情况下,有时各自的分配目标的数据大小不同。
在该情况下,与在实施方式1中说明过的复制相当的处理必须是能够使适合的数据类型的值同步的处理。但是,在不同的数据大小即数据类型的值的复制中,有时复制源的值与复制目标的值不一定一致。例如,在将数据大小大的数据类型的值复制为数据大小小的数据类型的情况下,在超过由数据大小小的数据类型能够取的范围的值的情况下,不能够正确地复制为数据大小小的数据类型。因此,在本实施方式中,通过将表示第1选择的值、表示第2选择的值的任意者预先储存于编译选择41,从而以用户所期望的编译方法执行编译。
这里,对第2选择进行详细说明。如上所述,数据大小不同的数据类型彼此即使执行值的复制,有时该值也不一定一致。但是,在特定的种类的数据类型,例如表示数值的数据类型中,即使是不同的数据类型,在特定的范围内也能够表现相同值。在本实施方式中,着眼于该点,由于不保证全局变量在各个定序程序中为相同值,因此不将未编辑的定序程序作为编译对象。
如图14所示,在将gVar1的数据类型从INT型编辑为REAL型的情况下,执行程序生成部16在图11所示的执行程序EP52中,替代write之后的copy,***将REAL型转换为INT型的下面的REAL2INT(Cc,Cd)的命令。
REAL2INT(Cc,Cd)):将存储器地址Cc的REAL型的值作为INT型而写入存储器地址Cd的区域。
同样地,执行程序生成部16在图11所示的执行程序EP52中,替代read之前的copy,***将INT型转换为REAL型的下面的INT2REAL(Cc,Cd)的命令。
INT2REAL(Cc,Cd)):将存储器地址Cc的INT型的值作为REAL型而写入存储器地址Cd的区域。
这样,执行程序生成部16在转换了数据类型之后使用写入值的命令,使由来自编辑前的分配目标即存储器地址保存的值、由编辑后的分配目标即存储器地址保存的值同步。
上述REAL2INT及INT2REAL是按照PLC 20的架构,通过单一命令或由多个命令构成的命令组的任意者实现的。但是,将这些命令设为与REAL2INT之前的write、或INT2REAL之后的read不可分地执行的命令。
图15是表示对全局变量进行了编辑后的实施方式2涉及的执行程序与参照目标的存储器地址的关系的图。在图15中示出将全局变量通过第2选择而分配给数据存储器24或非易失性数据存储器25的示意图。
本实施方式也与实施方式1同样地,对定序程序111P进行编辑而创建定序程序112P,但没有对定序程序111Q进行编辑。在使用第2选择的情况下,进行编译的是定序程序112P,不需要对定序程序111Q进行编译。
如图15所示,通过编辑而更新的执行程序EP53的gVar1分配于数据存储器24内的存储器地址Ae,没有编辑的执行程序EQ51的gVar1维持向数据存储器24内的存储器地址Aa的分配。这样,在本实施方式也与实施方式1同样地,以原状态维持了编辑前的全局变量的分配目标,执行编辑后的全局变量的分配。
实施方式1中的图11的write之后的copy在本实施方式中变为REAL2INT,实施方式1中的图11的read之前的copy在本实施方式中变为INT2REAL。
利用REAL2INT,将通过write作为REAL型而写入由执行程序EP53参照的存储器地址Ae的值,作为INT型而同步至由执行程序EQ51参照的存储器地址Aa(s3)。即,通过REAL2INT,在复制了存储器地址Ae的值之后对数据类型进行转换,写入存储器地址Aa。
另外,利用INT2REAL,将通过read作为INT型而读出至由执行程序EQ51参照的存储器地址Aa的值,作为REAL型而同步至由执行程序EP53参照的存储器地址Ae(s4)。即,通过INT2REAL,在复制了存储器地址Aa的值之后对数据类型进行转换,写入存储器地址Ae。
此外,在本实施方式中例示出的执行数据类型转换的命令即REAL2INT及INT2REAL,如果是与能够在定序程序中使用的数据类型及PLC 20的架构对应的命令,则可以是任意的命令。
这样,在实施方式2中,用户能够通过编译选择41对第1选择和第2选择进行选择。另外,在通过第2选择执行编译的情况下,通过执行数据类型转换的命令,使由来自编辑前的分配目标即存储器地址Aa保存的值、由编辑后的分配目标即存储器地址Ae保存的值同步。由此,即使在编辑前后数据类型的数据大小不同的情况下,也能够从编译对象中除去没有编辑的定序程序111Q。因此,能够抑制定序程序的编译的处理时间。
实施方式3.
下面,使用图16对本发明的实施方式3进行说明。在实施方式3中,在多个编程装置连接于PLC 20的情况下,特定的编程装置针对特定的定序程序执行编译。
图16是表示实施方式3涉及的编程***的结构的框图。对图16的各结构要素中实现与图1所示的实施方式1的编程装置10X相同功能的结构要素标注相同标号,省略重复的说明。
编程辅助***即编程***1具备编程装置10A、10B、PLC 20。编程装置10A、10B具有与编程装置10X同样的功能。此外,也可以是编程装置10A、10B的至少一者为具有与编程装置10Y同样的功能的装置。编程装置10A、10B连接于PLC 20,由此编程装置10A、10B能够经由PLC 20进行信息的收发。此外,编程装置10A、10B可以直接连接,也可以经由PLC 20之外的装置连接。
在编程***1中,以下面(1-a)或(1-b)的方法将由编程装置10A创建出的全局变量组36X、存储器分配信息15复制于编程装置10B。从编程装置10A复制到编程装置10B的全局变量组36X的例子为全局变量声明361。另外,在从编程装置10A复制到编程装置10B的存储器分配信息15中,包含分配目标的存储器地址、表示参照程序的信息。另外,在存储器分配信息15内,除了在图5说明过的项目之外,编程装置10A还预先将表示由编程装置10A创建了存储器分配信息15的信息与全局变量相关联地进行储存。
(1-a)
编程装置10A将储存了全局变量组36X及存储器分配信息15的文件发送至编程装置10B。在编程装置10B中,取得部即通信部32接收来自编程装置10A的文件。此时,编程装置10A、10B也可以以在网络上复制、通过邮件发送等任意方法对全局变量组36X及存储器分配信息15进行收发。
(1-b)
编程装置10A将全局变量组36X及存储器分配信息15写入PLC20。在编程装置10B中,取得部即通信部32从PLC 20读出编程装置10A写入PLC 20的全局变量组36X及存储器分配信息15。在该情况下,PLC 20在编程装置10B读出了写入的全局变量组36X及存储器分配信息15后,也对全局变量组36X及存储器分配信息15进行存储。
编程装置10B使用以上述(1-a)或(1-b)的方法复制的全局变量组36X,以下面的(2-a)或(2-b)的方法对定序程序进行创建,并且对全局变量声明361进行变更。
(2-a)
编程装置10B通过编辑装置30对由编程装置10A创建出的定序程序组35X的至少一部分进行更新,由此对定序程序进行创建。在该情况下,编程装置10A、10B通过与上述(1-a)或(1-b)同样的方法,将由编程装置10A创建出的定序程序组35X复制到编程装置10B。
(2-b)
编程装置10B通过编辑装置30重新对定序程序进行创建。
编程装置10B的编辑装置30基于通过(2-a)或(2-b)的方法创建出的定序程序,对全局变量声明361进行变更。编程装置10B的执行程序生成部16对以(2-a)或(2-b)的方法创建出的定序程序、及变更后的全局变量进行编译。此时,如果是现有的全局变量的成为分配目标的存储器地址发生变更,则编程装置10B的执行程序生成部16通过与实施方式1或实施方式2同样的方法执行编译。即,编程装置10B的执行程序生成部16对原本的存储器地址进行保存,并且***在与新的存储器地址之间进行全局变量的值的同步的命令,生成执行程序EP。此时,编程装置10B的存储器分配部14预先进行存储器分配信息15的更新。
在编程***1中,通过执行上述处理,能够执行由编程装置10B进行的处理,而不会对编程装置10A造成影响。具体而言,编程装置10B能够执行定序程序的变更或创建等处理,而不会对编程装置10A造成影响。由此,由于在编程装置10A中不需要编译,因此编程***1能够抑制编译的处理时间。例如,与通过编程装置10A及编程装置10B执行编译的情况相比,仅通过编程装置10B执行编译的编译的合计时间短。
对编程***1的动作例进行说明。设想图3所示的全局变量声明361存在于编程装置10A、10B这两者,图4所示的定序程序111P仅存在于编程装置10B,图4所示的定序程序111Q仅存在于编程装置10A的状态。在该状态下,有时仅编程装置10B将全局变量声明361变更为图7所示的全局变量声明362,并且将定序程序111P变更为图8所示的定序程序112P。在该情况下,仅编程装置10B执行编译及向PLC 20的写入,编程装置10A不执行编译及向PLC20的写入,由此PLC 20内的状态变为如图11那样。
这样,在实施方式3中,由于编程装置10B执行定序程序的变更或创建等处理,而不会对编程装置10A造成影响,因此不需要通过编程装置10A的编译。其结果,编程***1能够抑制编译的处理时间。
这里,对编程装置10X、10Y的硬件结构进行说明。此外,由于编程装置10X、10Y具有同样的硬件结构,因此这里对编程装置10X的硬件结构进行说明。
图17是表示实施方式1至3涉及的编程装置的硬件结构例的图。编程装置10X能够通过图17所示的控制电路300,即处理器301、存储器302、通信装置304及输入装置303实现。
处理器301的例子是CPU(Central Processing Unit、也称为中央处理装置、处理装置、运算装置、微处理器、微型计算机、处理器、DSP)或***LSI(Large ScaleIntegration)。存储器302的例子为RAM(Random Access Memory)、或ROM(Read OnlyMemory)。输入装置303的例子为键盘、鼠标、或触摸面板。通信装置304实现通信部32的功能。
编程装置10X是通过处理器301从存储器302读出并执行用于执行编辑装置30的动作的编辑程序而实现的。也可以说编译程序即编译器11X使计算机执行参照关系管理部12、存储器分配部14、程序选择部17、及执行程序生成部16的顺序或方法。另外,可以说编辑程序使计算机执行编辑装置30的顺序或方法。存储器302也用作处理器301执行各种处理时的暂存器。
由处理器301执行的编译器11X也可以通过储存有编译器11X的记录介质即计算机程序产品实现。在该情况下的记录介质的例子为储存有编译器11X的非暂时性(non-transitory)计算机可读介质。另外,由处理器301执行的编辑程序也可以通过储存有编辑程序的记录介质即计算机程序产品实现。在该情况下的记录介质的例子为储存有编辑程序的非暂时性计算机可读介质。
此外,关于编程装置10X的功能,也可以由专用的硬件实现一部分,由软件或固件实现一部分。
以上的实施方式所示的结构表示的是本发明的内容的一个例子,也可以与其它的公知技术组合,在不脱离本发明主旨的范围,也可以对结构的一部分进行省略、变更。
标号的说明
1编程***,10A、10B、10X、10Y编程装置,11X、11Y编译器,12参照关系管理部,13参照关系信息,14存储器分配部,15存储器分配信息,16执行程序生成部,17程序选择部,18编译选择判定部,20PLC,21程序存储器,22通信部,23程序执行部,24数据存储器,25非易失性数据存储器,30编辑装置,31执行程序,32通信部,35X定序程序组,36X全局变量组,41编译选择,111P、111Q、112P、P、Q定序程序,151、152存储器分配信息,310程序储存部,361~363全局变量声明,Aa、Ab、Ac、Ad、Ae存储器地址,EP51~EP53、EQ51执行程序。
Claims (10)
1.一种编译器,其使计算机执行对包含全局变量的声明的定序程序进行编译而生成由控制装置执行的执行程序的处理,该编译器的特征在于,
在所述全局变量的声明的编辑前后,针对所述全局变量分配的所述控制装置内的存储器地址发生了变化的情况下,使所述计算机执行将执行代码赋予给与参照编辑后的全局变量的定序程序对应的执行程序的处理,该执行代码使第1值、第2值同步,该第1值储存于编辑前的全局变量被分配的存储器地址,该第2值储存于所述编辑后的全局变量被分配的存储器地址。
2.根据权利要求1所述的编译器,其特征在于,
能够基于表示变更或追加了所述全局变量及包含所述全局变量的声明的定序程序的变更有无信息,从包含多个定序程序的定序程序组中选择成为赋予所述执行代码的对象的、参照所述编辑后的全局变量的定序程序。
3.根据权利要求1或2所述的编译器,其特征在于,
所述执行代码由单一命令构成。
4.根据权利要求1或2所述的编译器,其特征在于,
所述执行代码由多个命令构成。
5.根据权利要求1至4中任一项所述的编译器,其特征在于,
在所述编辑前的全局变量、所述编辑后的全局变量中数据类型相同的情况下,通过在所述执行代码中使用复制命令,从而对所述第2值进行复制而写入所述编辑前的全局变量被分配的存储器地址、或对所述第1值进行复制而写入所述编辑后的全局变量被分配的存储器地址,由此使所述第2值、所述第1值同步。
6.根据权利要求1至4中任一项所述的编译器,其特征在于,
在所述编辑前的全局变量、所述编辑后的全局变量中数据类型不同的情况下,通过在所述执行代码中使用将数据类型转换而写入值的命令,从而在对所述第2值进行了复制之后转换数据类型,写入所述编辑前的全局变量被分配的存储器地址,或者在对所述第1值进行了复制之后转换数据类型,写入所述编辑后的全局变量被分配的存储器地址,由此使所述第2值、所述第1值同步。
7.一种编程辅助装置,其特征在于具备:
权利要求1所述的编译器;以及
编辑装置,其能够按照来自用户的指示,对所述全局变量及包含所述全局变量的声明的定序程序进行编辑,并且按照来自用户的指示,从包含多个定序程序的定序程序组中选择成为赋予所述执行代码的对象的、参照所述编辑后的全局变量的定序程序。
8.一种编程辅助装置,其具备编译器,该编译器对包含全局变量的声明的定序程序进行编译而生成由控制装置执行的执行程序,该编程辅助装置的特征在于,
具备取得部,该取得部取得由该编程辅助装置之外的另一编程辅助装置声明的所述全局变量、针对所述全局变量分配的所述控制装置内的存储器地址分配的所述控制装置内的存储器地址,
所述编译器在所述全局变量的声明的编辑前后,针对所述全局变量分配的所述控制装置内的存储器地址发生了变化的情况下,将执行代码赋予给与参照编辑后的全局变量的定序程序对应的执行程序,该执行代码使第1值、第2值同步,该第1值储存于编辑前的全局变量被分配的存储器地址,该第2值储存于所述编辑后的全局变量被分配的存储器地址。
9.根据权利要求8所述的编程辅助装置,其特征在于,
所述取得部从所述另一编程辅助装置接收所述全局变量、针对所述全局变量分配的所述控制装置内的存储器地址。
10.根据权利要求8所述的编程辅助装置,其特征在于,
所述取得部从被写入由所述另一编程辅助装置生成的执行程序的所述控制装置,读出所述全局变量、针对所述全局变量分配的所述控制装置内的存储器地址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/018352 WO2019215919A1 (ja) | 2018-05-11 | 2018-05-11 | コンパイラおよびプログラミング支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110720081A true CN110720081A (zh) | 2020-01-21 |
CN110720081B CN110720081B (zh) | 2022-05-03 |
Family
ID=65020495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880004856.2A Active CN110720081B (zh) | 2018-05-11 | 2018-05-11 | 编译器及编程辅助装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10802808B2 (zh) |
JP (1) | JP6452924B1 (zh) |
CN (1) | CN110720081B (zh) |
DE (1) | DE112018000198T5 (zh) |
WO (1) | WO2019215919A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101365994A (zh) * | 2007-02-19 | 2009-02-11 | 三菱电机株式会社 | 可编程控制器的***装置、置换方法和程序 |
CN103403684A (zh) * | 2011-03-15 | 2013-11-20 | 欧姆龙株式会社 | 可编程逻辑控制器的cpu单元、可编程逻辑控制器用的***程序以及存储了可编程逻辑控制器用的***程序的记录介质 |
CN104204975A (zh) * | 2012-03-26 | 2014-12-10 | 三菱电机株式会社 | 定序程序调试辅助装置 |
JP2017142767A (ja) * | 2016-02-09 | 2017-08-17 | 富士電機株式会社 | コントローラシステム、変数連携支援装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790861A (en) | 1995-07-07 | 1998-08-04 | Sun Microsystems, Inc. | Method and apparatus for generating executable code from object-oriented C++ source code |
JP2000284815A (ja) | 1999-03-30 | 2000-10-13 | Fuji Electric Co Ltd | プログラム作成装置 |
JP2001290656A (ja) | 2000-04-07 | 2001-10-19 | Hitachi Ltd | 差分コンパイル方式 |
CA2321016A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Interprocedural dead store elimination |
JP3783553B2 (ja) | 2000-11-15 | 2006-06-07 | 株式会社デンソー | 情報処理装置 |
US8381174B2 (en) * | 2007-10-31 | 2013-02-19 | National Instruments Corporation | Global variable structure in a graphical program |
JP5099251B1 (ja) | 2011-07-15 | 2012-12-19 | オムロン株式会社 | Plcのcpuユニット、plc用のシステムプログラム、plc用のシステムプログラムを格納した記録媒体、plcシステム、plcサポート装置、plcサポートプログラム、および、plcサポートプログラムを格納した記録媒体 |
JP6205934B2 (ja) | 2013-07-18 | 2017-10-04 | 富士電機株式会社 | プログラマブルコントローラシステム、その支援装置、プログラム |
JP6292096B2 (ja) | 2014-04-24 | 2018-03-14 | 富士電機株式会社 | プログラマブルコントローラシステム、その支援装置 |
US10353679B2 (en) * | 2014-10-31 | 2019-07-16 | Microsoft Technology Licensing, Llc. | Collecting profile data for modified global variables |
-
2018
- 2018-05-11 CN CN201880004856.2A patent/CN110720081B/zh active Active
- 2018-05-11 WO PCT/JP2018/018352 patent/WO2019215919A1/ja active Application Filing
- 2018-05-11 US US16/346,546 patent/US10802808B2/en active Active
- 2018-05-11 DE DE112018000198.9T patent/DE112018000198T5/de active Pending
- 2018-05-11 JP JP2018552266A patent/JP6452924B1/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101365994A (zh) * | 2007-02-19 | 2009-02-11 | 三菱电机株式会社 | 可编程控制器的***装置、置换方法和程序 |
US20100161085A1 (en) * | 2007-02-19 | 2010-06-24 | Mitsubishi Electric Corporation | Peripheral device of programmable controller, method of variable substitution, and computer program product thereof |
CN103403684A (zh) * | 2011-03-15 | 2013-11-20 | 欧姆龙株式会社 | 可编程逻辑控制器的cpu单元、可编程逻辑控制器用的***程序以及存储了可编程逻辑控制器用的***程序的记录介质 |
CN104204975A (zh) * | 2012-03-26 | 2014-12-10 | 三菱电机株式会社 | 定序程序调试辅助装置 |
JP2017142767A (ja) * | 2016-02-09 | 2017-08-17 | 富士電機株式会社 | コントローラシステム、変数連携支援装置 |
Non-Patent Citations (1)
Title |
---|
熊安萍等: "《一种非阻塞读文件***的实现方法》", 《计算机工程》 * |
Also Published As
Publication number | Publication date |
---|---|
DE112018000198T5 (de) | 2019-12-24 |
US10802808B2 (en) | 2020-10-13 |
CN110720081B (zh) | 2022-05-03 |
US20200264854A1 (en) | 2020-08-20 |
WO2019215919A1 (ja) | 2019-11-14 |
JPWO2019215919A1 (ja) | 2020-05-28 |
JP6452924B1 (ja) | 2019-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005032259A (ja) | 共有ライブラリーシステム及び前記システム構築方法 | |
JP5790128B2 (ja) | プログラマブルコントローラ・システム、その支援装置 | |
US20100161085A1 (en) | Peripheral device of programmable controller, method of variable substitution, and computer program product thereof | |
US8464236B2 (en) | Data consistency in data processing systems | |
CN103645888A (zh) | 一种自动构建操作***的***及方法 | |
CN110720081B (zh) | 编译器及编程辅助装置 | |
JP4319082B2 (ja) | プログラミングシステム | |
US10048953B2 (en) | Compiler program, compiling method, and compiling device | |
JP6299095B2 (ja) | 共有データ定義支援システム、そのマスタ装置、ローカル端末、プログラム | |
JP6292096B2 (ja) | プログラマブルコントローラシステム、その支援装置 | |
JP2015125713A (ja) | プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム | |
JP2008198143A (ja) | プログラマブルコントローラ用プログラム作成支援装置およびプログラム作成支援方法 | |
JP6455096B2 (ja) | コントロールシステム、その支援装置、プログラマブルコントロール装置 | |
JP6205934B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラム | |
JP7499966B2 (ja) | 制御装置、及び、アドレス管理方法 | |
JP2017102528A (ja) | プログラマブルコントローラ | |
JP2006277047A (ja) | データ処理装置およびマルチスレッドシステムにおけるアプリケーションプログラムの動的置換方法 | |
JP2009098963A (ja) | モジュール自動生成システム | |
US20220155746A1 (en) | Program creation support device, program creation support method, and storage medium | |
JP2004192604A (ja) | 組込みソフトウェア開発装置及び組込みソフトウェア開発方法 | |
JP2016151973A (ja) | 制御コントロールシステム、その開発支援装置、制御装置 | |
KR20070081868A (ko) | 이동통신시스템에서 효율적으로 소프트웨어를 업데이트하는방법 | |
CN117348886A (zh) | 在OpenEuler***上实现原生编译向下兼容的方法 | |
JPS6310239A (ja) | 高級言語のパツチ生成方式 | |
JP2024042506A (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 |