WO2023152890A1 - プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム - Google Patents

プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム Download PDF

Info

Publication number
WO2023152890A1
WO2023152890A1 PCT/JP2022/005418 JP2022005418W WO2023152890A1 WO 2023152890 A1 WO2023152890 A1 WO 2023152890A1 JP 2022005418 W JP2022005418 W JP 2022005418W WO 2023152890 A1 WO2023152890 A1 WO 2023152890A1
Authority
WO
WIPO (PCT)
Prior art keywords
variable
additional
variables
added
pou
Prior art date
Application number
PCT/JP2022/005418
Other languages
English (en)
French (fr)
Inventor
直哉 内山
潤 仲川
Original Assignee
三菱電機株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2022/005418 priority Critical patent/WO2023152890A1/ja
Priority to JP2022538050A priority patent/JP7130178B1/ja
Publication of WO2023152890A1 publication Critical patent/WO2023152890A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Definitions

  • the present disclosure relates to a programmable controller system, development support device, memory allocation method and program.
  • Programs for programmable controllers are generally created in functional units called POUs (Program Organization Units) that have variables.
  • POUs Program Organization Units
  • a POU variable that is first allocated to a memory area will be referred to as an initial variable
  • a variable that is added to the POU will be referred to as an additional variable.
  • Patent Document 1 discloses a programmable controller system that allocates an additional area in an empty area and stores the address of the additional area in the spare area when a variable exceeding the spare area is added.
  • the technique described in Patent Literature 1 discloses a technique of accessing an additional variable assigned to an additional area from a programmable controller program via an address in the spare area.
  • the additional variables allocated to the additional area are accessed from the address stored in the spare area, which takes longer processing time than initial variables.
  • the additional area is allocated in the free area, so the additional area becomes multistage, and the access to the additional variable goes through multiple addresses, resulting in longer processing time. become necessary.
  • the technique described in Patent Document 1 has a problem that the execution performance of the program deteriorates due to repeated addition of variables.
  • the present disclosure has been made in view of the problems described above, and aims to suppress deterioration in program execution performance due to repeated addition of variables to the POU.
  • the programmable controller system is a programmable controller system that compiles the source code of a program for a programmable controller to generate machine language objects and causes the programmable controller to execute the machine language objects.
  • a programmable controller system includes a compiler section and a variable addition support section.
  • the compiler unit stores the initial variables of the POUs included in the source code written in units of POUs having variables, and the additional variable storage destination address indicating the address of the additional variable storage area in which the variables added to the POU are stored.
  • variable addition support unit arranges or moves the additional variable storage area of the POU to which the variable has been added to an empty area of the memory area, and updates the additional variable storage destination address.
  • the added variable when a variable is added to the POU, the added variable is accessed by allocating or moving the additional variable storage area to the free area of the memory area and updating the additional variable storage destination address. is accessed at a relative position from a single address, and it is possible to suppress deterioration in program execution performance due to repeated addition of variables to the POU.
  • FIG. 1 is a block diagram showing a functional configuration example of a programmable controller system according to Embodiment 1;
  • FIG. 4 is a schematic diagram for explaining memory allocation when a variable is added to a POU in the programmable controller system according to the first embodiment;
  • a diagram showing an example of instance information and variable information according to Embodiment 1 A diagram showing an example of instance information, variable information, and additional variable information to which additional variables 1 to 3 are added according to the first embodiment.
  • FIG. 11 is a schematic diagram for explaining memory allocation when a variable is added to a POU in the programmable controller system according to the third embodiment;
  • FIG. 1 shows an example of a hardware configuration of a development support device according to Embodiments 1 to 3;
  • PLC Programmable Logic Controller
  • the source code of the PLC program is written in functional units called POUs having variables.
  • POU for example, three types of PROGRAM, FB (function block), and FUN (function) are defined.
  • An FB is activated by being called from a program or another FB.
  • An FB is a type definition, and when calling an FB, declare an instance and use that instance name.
  • the programmable controller system 100 includes a development support device 1 having functions of creating a program for the PLC 2 and writing the program to the PLC 2, and a PLC 2 executing the program created by the development support device 1.
  • the development support device 1 compiles the source code storage unit 11 that stores the source code of the program for the PLC 2, compiles the source code stored in the source code storage unit 11, and determines whether or not a variable has been added to the POU. , and a compiler unit 12 for generating machine language objects to be executed by the PLC 2 .
  • variable addition information for causing the PLC 2 to rearrange the variables in the memory area following the addition of the variable.
  • a generation unit 14 an instance information storage unit 15 storing instance information indicating allocation of POU instances to memory areas of the PLC 2; a variable information storage unit 16 storing variable information indicating variables included in the POU;
  • a machine language object storage unit 17 that stores the machine language object generated by the unit 12; a part 19;
  • Instance information is an example of memory allocation information.
  • the PLC 2 includes a communication unit 21 that transmits and receives information to and from the development support device 1, a machine language object storage unit 24 that stores machine language objects received from the development support device 1, and variable additional information received from the development support device 1. It has a variable addition information storage unit 25 for storing and an instance memory area 26 for arranging POU instances. In addition, the PLC 2 stores variables in the instance memory area 26 based on the program execution unit 27 that executes the machine language objects stored in the machine language object storage unit 24 and the variable addition information stored in the variable addition information storage unit 25. and a variable addition support unit 28 that rearranges the .
  • the source code storage unit 11 of the development support device 1 stores the source code of the program for the PLC 2.
  • the compiler unit 12 stores the initial variables of the POU included in the updated source code and the additional variable storage in which the variables added to the POU are stored.
  • the additional variable storage destination address indicating the address of the area is allocated to the initial variable storage area of the instance memory area 26, and the source code is compiled. As a result, instance information, variable information and machine language objects are generated.
  • the compiler unit 12 compares the instance information and variable information of the program before update stored in the instance information storage unit 15 and the variable information storage unit 16 with the generated instance information and variable information, and determines whether a variable has been added to the POU. determine whether When the compiler unit 12 determines that a variable has been added to the POU, the variable addition information generation unit 14 generates a variable addition including the source address and the destination address of the additional variable storage area of the instance of the POU to which the variable has been added. Generate information.
  • the compiler unit 12 updates the instance information stored in the instance information storage unit 15 to the generated instance information.
  • the compiler unit 12 updates the variable information stored in the variable information storage unit 16 to the generated variable information.
  • the machine language object storage unit 17 stores machine language objects generated by the compiler unit 12 .
  • the variable addition information storage unit 18 stores the variable addition information generated by the variable addition information generation unit 14 .
  • the communication unit 19 transmits the machine language object and the additional variable information to the PLC2.
  • the communication unit 21 of the PLC 2 stores the machine language object and the additional variable information received from the development support device 1 in the machine language object storage unit 24 and the additional variable information storage unit 25, respectively.
  • the program execution unit 27 places the instance of the POU included in the machine language object stored in the machine language object storage unit 24 in the instance memory area 26, and updates the machine language object to be executed.
  • the variable addition support unit 28 arranges or moves the additional variable storage area of the instance of the POU to which the variable is added to the free area of the instance memory area 26. and update the additional variable storage destination address to the destination address.
  • the program execution unit 27 allocates the additional variable to the placed or moved additional variable storage area and updates the machine language object to be executed.
  • Fig. 2 shows an example of adding variables to the POU.
  • the calling program calls instance 1 of type FB1, instance 2 of type FB2, and instance 3 of type FB1.
  • FB1's program has variables 1 and 2
  • FB2's program has variables 3 and 4.
  • Three variables are added to the program of FB1, and three variables (additional variables 4 to 6) are added.
  • FIG. 3 When the technique described in Patent Document 1 is applied, as shown in FIG. 3, when three variables (additional variables 1 to 3) are added to the program of FB1, a spare area (preliminary 1 ), the additional variable storage area A1 of the instance 1 is arranged in the free area, and the additional variables 2 and 3 are stored.
  • the address of the additional variable storage area A1 of the instance 1 is stored as the additional variable storage destination address of the instance 1.
  • FIG. The additional variable storage area A1 of instance 1 is newly provided with a spare area (preserve 1) and an additional variable storage address.
  • additional variables 1 to 3 are added to the FB1 program
  • the additional variable 1 is stored in the spare area (reserved 1) of the instance 3 of the FB1 type, and the instance 3 is added to the free area.
  • a variable storage area A2 is arranged and additional variables 2 and 3 are stored.
  • the address of the additional variable storage area A2 of the instance 3 is stored in the additional variable storage destination address of the instance 3.
  • FIG. The additional variable storage area A2 of instance 3 is newly provided with a spare area (preserve 1) and an additional variable storage destination address.
  • additional variables 4 to 6 are added to the program of FB1
  • the additional variable 4 is stored in the spare area (preliminary 1) of the additional variable storage area A1 of instance 1, and the free area of instance 1 is stored.
  • An additional variable storage area A3 is arranged, and additional variables 5 and 6 are stored.
  • the address of the additional variable storage area A3 of the instance 1 is stored in the additional variable storage destination address of the additional variable storage area A1.
  • a spare area (preliminary 1) and an additional variable storage address are newly provided in the additional variable storage area A3 of the instance 1 .
  • additional variables 4 to 6 are added to the program of FB1
  • the additional variable 4 is stored in the spare area (preliminary 1) of the additional variable storage area A2 of instance 3
  • the instance 3 additional variable storage area A4 is arranged, and additional variables 5 and 6 are stored.
  • the address of the additional variable storage area A4 of the instance 3 is stored in the additional variable storage destination address of the additional variable storage area A2 of the instance 3.
  • FIG. A spare area (preliminary 1) and an additional variable storage destination address are newly provided in the additional variable storage area A4 of the instance 3 .
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variable storage area A1 of instance 1 is arranged in the free area, and the additional variables 1 to 3 are stored. be.
  • the additional variable storage destination address of instance 1 is updated to the address of the additional variable storage area A1 of instance 1 .
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variable storage area A2 of instance 3 is arranged in the free area, and the additional variables 1 to 3 are stored.
  • the additional variable storage destination address of instance 3 is updated to the address of the additional variable storage area A2 of instance 3 .
  • additional variables 4 to 6 are added to the program of FB1
  • the additional variable storage area A3 of instance 1 is arranged in the free area, and the additional variables 1 to 6 are stored.
  • the additional variable storage destination address of instance 1 is updated to the address of the additional variable storage area A3 of instance 1 .
  • additional variables 4 to 6 are added to the program of FB1
  • the additional variable storage area A4 of instance 3 is arranged in the free area, and the additional variables 1 to 6 are stored.
  • the additional variable storage destination address of instance 3 is updated to the address of the additional variable storage area A4 of instance 3 .
  • the programmable controller system 100 when a variable is added to a POU, all the additional variables of the instance of the POU to which the variable was added are stored in the additional variable storage area moved to the free area of the instance memory area 26.
  • the additional variable storage destination address is updated to the destination address, even if the addition of the variable is repeated, the additional variable is accessed at the relative position from the single address. Therefore, the processing time can be shortened as compared with the case where the technology described in Patent Document 1 is applied.
  • the PLC repeatedly executes program operations and system processing during operation. In the programmable controller system 100, the process of relocating the additional variables to the instance memory area 26 is performed by system processing, so system processing time is extended.
  • program operation time is sufficiently long compared to system processing time, and the lengthening time is also temporary due to rearrangement of additional variables, so the effect on the effect of shortening processing time is less.
  • the compiler unit 12 If the source code calls an instance 1 of type FB1 having variables 1 and 2, an instance 2 of type FB2 having variables 3 and 4, and an instance 3 of type FB1, the compiler unit 12, for example, The instance information and variable information shown in FIG. 5A are generated.
  • the instance information includes an "instance number” that identifies the instance, a "POU type” that indicates the POU type of the instance, a "start address” that indicates the start address of the memory area to which the instance is allocated, and a size of the instance. , “additional variable storage address” indicating the additional variable storage address of the instance, and “additional variable storage size” indicating the size of the additional variable storage. Before the variable is added, the value of the "additional variable storage destination address" is NULL because the additional variable storage area is not allocated. In the example of FIG.
  • the variable information includes "POU type” indicating the POU type of the variable, "storage destination” indicating the type of the storage destination of the variable, "variable name” indicating the name of the variable, and data type of the variable. It includes “data type”, “size” indicating the size of the variable, and “relative address” indicating the relative address of the variable within the memory area where the instance is allocated.
  • variable additional information generation unit 14 generate, for example, instance information, variable information and variable additional information shown in FIG. 5B.
  • the variable addition information includes an "information number” that identifies the variable addition information, and a "source “address”, "destination address” indicating the destination address of the additional variable storage area of the instance moved by adding the additional variables 1 to 3, "size” indicating the total size of the additional variables 1 to 3, It includes a "head address” indicating the address where the additional variable storage destination address is stored.
  • the value of the "source address” is NULL because there is no additional variable storage area as the source.
  • the address of the additional variable storage area of the arranged instance is input to the "additional variable storage address" of the instance information.
  • the information of the additional variables 1 to 3 is input to the "variable name", “data type”, "size” and “relative address” of the variable information.
  • variable additional information generation unit 14 when additional variables 4 to 6 are added to the program of FB1, the compiler unit 12 and variable additional information generation unit 14 generate, for example, instance information and variable information shown in FIG. 5C, and generate variable additional information. .
  • the source address of the additional variable storage area of the instance to be moved by adding the additional variables 4 to 6 is input, and in the "destination address” , the destination address of the additional variable storage area of the instance to be moved by adding the additional variables 4 to 6 is input. Also, the "additional variable storage destination address" of the instance information is updated to the address of the additional variable storage area of the moved instance.
  • the information of the additional variables 4 to 6 is input to the "variable name", “data type”, "size” and "relative address” of the variable information.
  • FIG. 6 starts when the source code of the program for the PLC 2 stored in the source code storage unit 11 is updated.
  • the compiler unit 12 converts the initial variables of the POU included in the updated source code of the program for the PLC 2 and the additional variable storage address indicating the address of the additional variable storage area when the variable is added to the initial of the instance memory area 26. Allocate to the variable storage area and compile the source code (step S11). As a result, instance information, variable information and machine language objects are generated. If a variable is added to the POU, the compiler unit 12 allocates all additional variables related to the POU to which the variable has been added to the additional variable storage area of the instance memory area 26 and compiles the source code in step S11.
  • the compiler unit 12 compares the instance information and variable information of the program before update stored in the instance information storage unit 15 and the variable information storage unit 16 with the generated instance information and variable information, and compares the generated instance information and variable information to the POU included in the source code. It is determined whether or not a variable is added (step S12). If no variable is added to the POU included in the source code (step S12; NO), the process proceeds to step S15. If the POU included in the source code has a variable added (step S12; YES), the variable addition information generator 14 generates the source address and destination address of the additional variable storage area of the instance of the POU to which the variable has been added. The variable addition information including is generated (step S13).
  • variable addition information as shown in FIG. 5B is generated.
  • variable addition information as shown in FIG. 5C is generated.
  • the communication unit 19 of the development support device 1 transmits the variable addition information generated by the variable addition information generation unit 14 to the PLC 2 (step S14), and transmits the machine language object generated by the compiler unit 12 to the PLC 2. (step S15).
  • step S16 When the communication unit 21 of the PLC 2 has not received the variable addition information from the development support device 1 (step S16; NO), the process proceeds to step S19.
  • the variable addition support unit 28 adjusts the variable based on the variable addition information received by the communication unit 21 from the development support device 1.
  • the additional variable storage area of the added POU instance is moved (step S17), and the additional variable storage destination address is updated to the destination address (step S18).
  • step S16 when the communication unit 21 receives variable addition information as shown in FIG.
  • the additional variable storage area for instance 1 is arranged at address 1024 and the additional variable storage area for instance 3 of type FB1 is arranged at address 1030 .
  • the variable addition support unit 28 updates the additional variable storage destination address of the FB1 type instance 1 to 1024 and updates the additional variable storage destination address of the FB1 type instance 3 to 1030 in step S18.
  • step S16 when the communication unit 21 receives the variable addition information as shown in FIG. 5C from the development support device 1, the variable addition handling unit 28 performs the FB1 type
  • the additional variable storage area of instance 1 is moved from addresses 1024 to 1036, and the additional variable storage area of instance 3 of type FB1 is moved from addresses 1030 to 1048.
  • the variable addition support unit 28 updates the additional variable storage destination address of the FB1 type instance 1 to 1036, and updates the additional variable storage destination address of the FB1 type instance 3 to 1048 in step S18.
  • the program execution unit 27 of the PLC 2 is included in the machine language object received by the communication unit 21 from the development support device 1 based on the instance information and variable information received by the communication unit 21 from the development support device 1.
  • the POU instance is placed in the instance memory area 26, the machine language object to be executed is updated (step S19), and the process ends.
  • the program execution unit 27 stores the additional variable in the additional variable storage area moved in step S17, and updates the machine language object to be executed.
  • the additional variable storage area is arranged or moved to the free area of the memory area, and the additional variable storage destination address is updated.
  • the additional variables are accessed at relative positions from a single address, and it is possible to suppress deterioration in program execution performance due to repeated addition of variables to the FB.
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variables 1 and 2 are stored in the spare area of instance 1 of type FB1, and the additional variables exceeding the spare area are stored.
  • the variable 3 is stored in the additional variable storage area A1 of the instance 1 arranged in the free area.
  • the address of the additional variable storage area A1 of the instance 1 is stored in the additional variable storage destination address of the instance 1.
  • FIG. A spare area is newly provided in the additional variable storage area A1 of instance 1 .
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variables 1 and 2 are stored in the spare area of instance 3 of type FB1
  • the additional variable 3 exceeding the spare area is It is stored in the additional variable storage area A2 of instance 3 arranged in the free area.
  • the address of the additional variable storage area A2 of the instance 3 is stored in the additional variable storage destination address of the instance 3.
  • FIG. A spare area is newly provided in the additional variable storage area A2 of the instance 3 .
  • the additional variables 4 and 5 are stored in the spare area of instance 2 of type FB2. Furthermore, when two variables (additional variables 4 and 5) are added to the program of FB1, the additional variables 4 and 5 are stored in the spare area of the additional variable storage area A1 of instance 1, and the additional variables 4 and 5 are stored in the additional variable storage area A2 of instance 3. Additional variables 4 and 5 are stored in the reserved area of .
  • the spare areas of instances 1 to 3 are examples of the first spare area.
  • the spare areas provided in the additional variable storage areas A1 and A2 are examples of second spare areas.
  • the additional variable storage area is arranged or moved to the free area of the memory area, and the additional variable storage destination address is updated.
  • the additional variables are accessed at relative positions from a single address, and it is possible to suppress deterioration in program execution performance due to repeated addition of variables to the FB.
  • the variables can be allocated within the reserve area, and the additional variable storage area does not need to be moved, thereby suppressing the extension of the system processing time.
  • FIG. 8 shows an example of adding variables to a POU when calling another POU from one POU.
  • the calling program calls instance 1 of type FB1 and instance 3 of type FB1.
  • a program of FB1 has variables 1 and 2 and calls an instance of type FB2. For instance 1, call instance 2 of type FB2. For instance 3, call instance 4 of type FB2.
  • FB2's program has variables 3 and 4. Three variables (additional variables 1 to 3) are added to the FB1 program, three variables (additional variables 4 to 6) are added to the FB2 program, and three variables (additional variables 7 to 6) are added to the FB1 program. 9) is added.
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variable storage area A2 of instance 3 is arranged in the free area, and the additional variables 1 to 3 are stored.
  • the additional variable storage destination address common to instances 3 and 4 stores the address of the additional variable storage area A2 of instance 3 .
  • additional variables 4 to 6 are added to the program of FB2
  • the additional variable storage area A3 for instance 1 and the additional variable storage area A5 for instance 2 are arranged consecutively in the empty area.
  • Variables 1-6 are stored.
  • the additional variable storage destination address common to instances 1 and 2 is updated to the address of the additional variable storage area A3 of instance 1 .
  • additional variables 4 to 6 are added to the program of FB1
  • the additional variable storage area A4 for instance 3 and the additional variable storage area A6 for instance 4 are arranged consecutively in the empty area.
  • Variables 1-6 are stored.
  • the additional variable storage destination address common to instances 3 and 4 is updated to the address of the additional variable storage area A4 of instance 3.
  • additional variables 7 to 9 are added to the program of FB1
  • the additional variable storage area A7 of instance 1 the additional variable storage area A8 of instance 2
  • the additional variable storage area A9 of instance 1 are added to the free area. are arranged consecutively, and additional variables 1 to 9 are stored.
  • the additional variable storage destination address common to instances 1 and 2 stores the address of the additional variable storage area A7 of instance 1.
  • additional variables 7 to 9 are added to the program of FB1
  • the additional variable storage area A10 for instance 3 the additional variable storage area A11 for instance 4, and the additional variable storage area A11 for instance 3 are stored in the free space.
  • Area A12 is arranged continuously, and additional variables 1 to 9 are stored.
  • the additional variable storage destination address common to instances 3 and 4 stores the address of the additional variable storage area A10 of instance 3 .
  • the additional variable storage area A1 of instance 1 is arranged in the free area, and the additional variables 1 to 3 are stored. be.
  • the address of the additional variable storage area A1 of the instance 1 is stored in the additional variable storage destination address of the instance 1.
  • additional variables 1 to 3 are added to the program of FB1
  • the additional variable storage area A2 of instance 3 is arranged in the free area, and the additional variables 1 to 3 are stored.
  • the additional variable storage destination address common to instances 3 and 4 stores the address of the additional variable storage area A2 of instance 3 .
  • additional variables 4 to 6 are added to the program of FB2
  • the additional variable storage area A5 of instance 2 is arranged in the free area, and the additional variables 4 to 6 are stored.
  • the address of the additional variable storage area A5 of the instance 2 is stored in the additional variable storage destination address of the instance 2.
  • additional variables 4 to 6 are added to the program of FB2
  • the additional variable storage area A6 of instance 4 is arranged in the free area, and the additional variables 4 to 6 are stored.
  • the address of the additional variable storage area A5 of the instance 4 is stored in the additional variable storage destination address of the instance 4.
  • additional variables 7 to 9 are added to the program of FB1
  • the additional variable storage areas A7 and A9 of the instance 1 are arranged continuously in the free area, and the additional variables 1 to 3 and the additional variables 7 to 9 is stored.
  • the address of the additional variable storage area A7 of the instance 1 is stored in the additional variable storage destination address of the instance 1.
  • additional variables 7 to 9 are added to the program of FB1
  • the additional variable storage areas A10 and A12 of the instance 3 are arranged continuously in the free area, and the additional variables 1 to 3 and the additional variables 7 to 9 are stored.
  • the address of the additional variable storage area A10 of the instance 3 is stored in the additional variable storage destination address of the instance 3.
  • FIG. 1 in the programmable controller system 100 according to the third embodiment, extension of the program execution time can be suppressed to the extent that the additional variable storage areas A5 and A6 are not moved.
  • the additional variable storage area is arranged or moved to the free area of the memory area, and the additional variable storage destination address is updated.
  • the additional variables are accessed at relative positions from a single address, and it is possible to suppress deterioration in program execution performance due to repeated addition of variables to the FB.
  • the program execution time is reduced compared to the case where the calling FB and the called FB share the additional variable storage destination address. elongation can be suppressed.
  • the source code storage unit 11 of the development support device 1 is configured to store the source code of the program for the PLC 2, but the development support device 1 stores the source code of the program for the PLC 2. Code input may be accepted. In this case, the development support device 1 causes the source code storage unit 11 to store the input source code of the program for the PLC 2 .
  • the development support device 1 includes the source code storage unit 11, the instance information storage unit 15, the variable information storage unit 16, the machine language object storage unit 17, and the additional variable information storage unit 18.
  • the instance information storage unit 15, the variable information storage unit 16, the machine language object storage unit 17, and the additional variable information storage unit 18 may be provided in, for example, an external device or system.
  • the development support device 1 includes a temporary storage unit 111, a storage unit 112, a calculation unit 113, an input unit 114, a transmission/reception unit 115, and a display unit .
  • Temporary storage unit 111, storage unit 112, input unit 114, transmission/reception unit 115, and display unit 116 are all connected to calculation unit 113 via BUS.
  • the calculation unit 113 is, for example, a CPU (Central Processing Unit). Calculation unit 113 executes each process of compiler unit 12 and variable addition information generation unit 14 of development support device 1 according to the control program stored in storage unit 112 .
  • CPU Central Processing Unit
  • the temporary storage unit 111 is, for example, a RAM (Random-Access Memory). Temporary storage unit 111 loads a control program stored in storage unit 112 and is used as a work area for calculation unit 113 .
  • the storage unit 112 is a non-volatile memory such as flash memory, hard disk, DVD-RAM (Digital Versatile Disc-Random Access Memory), DVD-RW (Digital Versatile Disc-ReWritable).
  • the storage unit 112 stores in advance a program for causing the calculation unit 113 to perform processing of the development support apparatus 1, and according to instructions from the calculation unit 113, supplies data stored by this program to the calculation unit 113, and performs calculation.
  • the data supplied from the unit 113 is stored.
  • the instance information storage unit 15 , the variable information storage unit 16 , the machine language object storage unit 17 and the additional variable information storage unit 18 are configured in the storage unit 112 .
  • the input unit 114 is an interface device that connects an input device such as a keyboard and a pointing device, and an input device such as a keyboard and a pointing device to the BUS. Information input by the user is supplied to the calculation unit 113 via the input unit 114 .
  • the development support device 1 receives input of the source code of the program for the PLC 2
  • the user inputs the source code of the program for the PLC 2 to the input unit 114.
  • the transmitting/receiving unit 115 is a network terminal device or wireless communication device that connects to a network, and a serial interface or LAN (Local Area Network) interface that connects to them.
  • the transmitting/receiving unit 115 functions as the communication unit 19 .
  • the display unit 116 is a display device such as a CRT (Cathode Ray Tube) or an LCD (Liquid Crystal Display). For example, display unit 116 displays an operation screen for the user to input information. In a configuration in which the development support device 1 receives input of the source code of the program for the PLC 2, the display unit 116 displays a screen for the user to input the source code of the program for the PLC 2.
  • the development support device 1 receives input of the source code of the program for the PLC 2
  • the display unit 116 displays a screen for the user to input the source code of the program for the PLC 2.
  • Source code storage unit 11, compiler unit 12, additional variable information generation unit 14, instance information storage unit 15, variable information storage unit 16, machine language object storage unit 17, additional variable information storage unit of development support device 1 shown in FIG. 18 and communication unit 19 are executed by the control program using temporary storage unit 111, calculation unit 113, storage unit 112, input unit 114, transmission/reception unit 115, display unit 116, etc. as resources.
  • Calculation unit 113, temporary storage unit 111, storage unit 112, input unit 114, transmitting/receiving unit 115, display unit 116, and other parts that are central to the processing of development support apparatus 1 are not based on a dedicated system, but a normal computer. system.
  • a computer program for executing the above operations may be recorded on a computer-readable recording medium such as a flexible disk, CD-ROM (Compact Disc-Read Only Memory), DVD-ROM (Digital Versatile Disc-Read Only Memory).
  • the development support device 1 that executes the above processing may be configured by storing and distributing the program in a computer and installing the computer program in the computer.
  • the computer program may be stored in a storage device of a server device on a communication network such as the Internet, and the development support device 1 may be configured by downloading it to a normal computer system.
  • the functions of the development support device 1 are realized by dividing work between an OS (Operating System) and an application program, or by cooperation between the OS and an application program, only the application program portion is stored in a recording medium or storage device. You may
  • the computer program may be posted on a bulletin board system (BBS, Bulletin Board System) on the communication network, and the computer program may be provided via the communication network. Then, the computer program may be activated and executed in the same manner as other application programs under the control of the OS to execute the above processing.
  • BSS bulletin board System
  • 1 Development support device 2 PLC, 11 source code storage unit, 12 compiler unit, 14 additional variable information generation unit, 15 instance information storage unit, 16 variable information storage unit, 17 machine language object storage unit, 18 additional variable information storage unit , 19 Communication unit, 21 Communication unit, 24 Machine language object storage unit, 25 Additional variable information storage unit, 26 Instance memory area, 27 Program execution unit, 28 Variable addition support unit, 100 Programmable controller system, 111 Temporary storage unit, 112 Storage unit, 113 calculation unit, 114 input unit, 115 transmission/reception unit, 116 display unit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

プログラマブルコントローラシステム(100)は、変数を有するPOU単位で記述されたプログラマブルコントローラ用のプログラムのソースコードに含まれるPOUの初期変数、ならびに、POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、POUに変数の追加があった場合は、変数が追加されたPOUに係わるすべての追加変数をメモリ領域の追加変数格納領域に割り振り、POUに変数が追加されたか否かを判定し、ソースコードをコンパイルして機械語オブジェクトを生成するコンパイラ部(12)と、POUに変数が追加されたと判定された場合に、追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新する変数追加対応部(28)と、を備える。

Description

プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム
 本開示は、プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラムに関する。
 一般的にプログラマブルコントローラのプログラムは、変数を有するPOU(Program Organization Unit)と呼ばれる機能単位で作成される。稼働中のプログラマブルコントローラのプログラムを変更する場合、プログラマブルコントローラ内のメモリ領域に最初に割り当てたPOUの変数のアドレスを変更することは原則としてできない。なぜなら、変数のアドレスの変更前後で異なるメモリにアクセスしてしまうと、プログラマブルコントローラが誤動作するからである。そのため、予備領域を設けて、POUに追加された変数をこの予備領域に割り当てることが行われている。ただし予備領域は変数を追加しなければ無駄な領域であるため、予備領域を予め大きく確保することはできない。以下、メモリ領域に最初に割り当てられるPOUの変数を初期変数といい、POUに追加された変数を追加変数という。
 特許文献1には、予備領域を超える変数の追加があった場合、空き領域に追加領域を配置し、予備領域には追加領域のアドレスを格納するプログラマブルコントローラシステムが開示されている。特許文献1に記載の技術では、プログラマブルコントローラのプログラムから追加領域に割り当てた追加変数にアクセスする際、予備領域内のアドレス経由でアクセスする技術が開示されている。
特開2012-234272号公報
 特許文献1に記載の技術では、追加領域に割り当てた追加変数へは、予備領域に格納したアドレスを読み出し、そのアドレスからアクセスすることになるため、初期変数に比べて処理時間が長い。追加領域内を超えて変数を追加する場合、さらに空き領域に追加領域を配置するため、追加領域が多段になってしまい、追加変数へのアクセスが複数のアドレス経由になってより長い処理時間が必要になってしまう。このため、特許文献1に記載の技術は、変数の追加を繰り返すことによってプログラムの実行性能が低下する問題がある。
 本開示は、上記のような問題点に鑑みてなされたものであり、POUへの変数の追加を繰り返すことによるプログラムの実行性能の低下を抑制することを目的とする。
 上記目的を達成するため、本開示に係るプログラマブルコントローラシステムは、プログラマブルコントローラ用のプログラムのソースコードをコンパイルして機械語オブジェクトを生成し、プログラマブルコントローラに機械語オブジェクトを実行させるプログラマブルコントローラシステムである。本開示に係るプログラマブルコントローラシステムは、コンパイラ部と、変数追加対応部とを備える。コンパイラ部は、変数を有するPOU単位で記述されたソースコードに含まれるPOUの初期変数、ならびに、POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、POUに変数の追加があった場合は、変数が追加されたPOUに係わるすべての追加変数をメモリ領域の追加変数格納領域に割り振り、POUに変数が追加されたか否かを判定し、ソースコードをコンパイルして機械語オブジェクトを生成する。変数追加対応部は、POUに変数が追加されたと判定された場合に、変数が追加されたPOUの追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新する。
 本開示によれば、POUに変数が追加された場合に、追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新することで、追加された変数へのアクセスは単一のアドレスからの相対位置でアクセスすることになり、POUへの変数の追加を繰り返すことによるプログラムの実行性能の低下を抑制することが可能になる。
実施の形態1に係るプログラマブルコントローラシステムの機能構成例を示すブロック図 POUへの変数の追加の一例を示す図 従来技術を適用した場合のPOUへ変数を追加した際のメモリの割当を説明する模式図 実施の形態1に係るプログラマブルコントローラシステムにおいてPOUへ変数を追加した際のメモリの割当を説明する模式図 実施の形態1に係るインスタンス情報および変数情報の例を示す図 実施の形態1に係る追加変数1~3を追加したインスタンス情報、変数情報および変数追加情報の例を示す図 実施の形態1に係る追加変数4~6を追加したインスタンス情報、変数情報および変数追加情報の例を示す図 実施の形態1に係るメモリ割当処理を示すフローチャート 実施の形態2に係るPOUへ変数を追加した際のメモリの割当を説明する模式図 POUから別のPOUを呼び出す場合のPOUへの変数の追加の一例を示す模式図 追加変数格納先アドレスを共有する場合のPOUへ変数を追加した際のメモリの割当を説明する模式図 実施の形態3に係るプログラマブルコントローラシステムにおいてPOUへ変数を追加した際のメモリの割当を説明する模式図 実施の形態1~3に係る開発支援装置のハードウェア構成の一例を示す図
 以下に、本実施の形態に係るプログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラムについて図面を参照して詳細に説明する。なお、図中同一または相当する部分には同じ符号を付す。以下の説明では、プログラマブルコントローラをPLC(Programmable Logic Controller)と記載する。本実施の形態では、PLC用のプログラムのソースコードは、変数を有するPOUと呼ばれる機能単位で記述される。POUには、例えば、PROGRAM、FB(ファンクションブロック)、FUN(ファンクション)の3種類が規定されている。以下の実施の形態では、FBに変数を追加する例について説明する。FBは、プログラムまたは別のFBから呼び出されることによって起動する。FBは型の定義であって、FBを呼び出す場合、インスタンスを宣言して、そのインスタンス名を使用する。
(実施の形態1)
 図1に示すように、プログラマブルコントローラシステム100は、PLC2のプログラムの作成およびPLC2へのプログラム書き込み機能を有する開発支援装置1と、開発支援装置1で作成されたプログラムを実行するPLC2とを備える。
 開発支援装置1は、PLC2用のプログラムのソースコードを記憶するソースコード記憶部11と、ソースコード記憶部11に記憶されたソースコードをコンパイルし、POUに変数の追加があったか否かを判定し、PLC2で実行するための機械語オブジェクトを生成するコンパイラ部12とを備える。
 また、開発支援装置1は、POUに変数の追加があったと判定された場合に、PLC2に変数追加に伴うメモリ領域への変数の再配置を実行させるための変数追加情報を生成する変数追加情報生成部14と、POUのインスタンスについてPLC2のメモリ領域への割り振りを示すインスタンス情報を記憶するインスタンス情報記憶部15と、POUに含まれる変数を示す変数情報を記憶する変数情報記憶部16と、コンパイラ部12が生成した機械語オブジェクトを記憶する機械語オブジェクト記憶部17と、変数追加情報生成部14が生成した変数追加情報を記憶する変数追加情報記憶部18と、PLC2と情報の送受信を行う通信部19とを備える。インスタンス情報は、メモリ割当情報の例である。
 PLC2は、開発支援装置1と情報の送受信を行う通信部21と、開発支援装置1から受信した機械語オブジェクトを記憶する機械語オブジェクト記憶部24と、開発支援装置1から受信した変数追加情報を記憶する変数追加情報記憶部25と、POUのインスタンスを配置するインスタンスメモリ領域26とを備える。また、PLC2は、機械語オブジェクト記憶部24に記憶された機械語オブジェクトを実行するプログラム実行部27と、変数追加情報記憶部25に記憶された変数追加情報に基づいてインスタンスメモリ領域26への変数の再配置を行う変数追加対応部28とを備える。
 開発支援装置1のソースコード記憶部11には、PLC2用のプログラムのソースコードが記憶されている。コンパイラ部12は、ソースコード記憶部11に記憶されたソースコードが更新されると、更新されたソースコードに含まれるPOUの初期変数、および、POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、インスタンスメモリ領域26の初期変数格納領域に割り振り、ソースコードをコンパイルする。これにより、インスタンス情報、変数情報および機械語オブジェクトが生成される。
 コンパイラ部12は、インスタンス情報記憶部15および変数情報記憶部16が記憶する更新前のプログラムのインスタンス情報および変数情報と生成したインスタンス情報および変数情報とを比較し、POUに変数の追加があったか否かを判定する。コンパイラ部12が、POUに変数の追加があったと判定した場合、変数追加情報生成部14は、変数が追加されたPOUのインスタンスの追加変数格納領域の移動元アドレスおよび移動先アドレスを含む変数追加情報を生成する。
 コンパイラ部12は、インスタンス情報記憶部15が記憶するインスタンス情報を生成したインスタンス情報に更新する。コンパイラ部12は、変数情報記憶部16が記憶する変数情報を生成した変数情報に更新する。機械語オブジェクト記憶部17は、コンパイラ部12が生成した機械語オブジェクトを記憶する。変数追加情報記憶部18は、変数追加情報生成部14が生成した変数追加情報を記憶する。通信部19は、機械語オブジェクトおよび変数追加情報をPLC2に送信する。
 PLC2の通信部21は、開発支援装置1から受信した機械語オブジェクトおよび変数追加情報をそれぞれ、機械語オブジェクト記憶部24および変数追加情報記憶部25に記憶する。プログラム実行部27は、機械語オブジェクト記憶部24が記憶する機械語オブジェクトに含まれるPOUのインスタンスをインスタンスメモリ領域26に配置し、実行する機械語オブジェクトを更新する。変数追加対応部28は、変数追加情報記憶部25に記憶されている変数追加情報に基づいて、変数が追加されたPOUのインスタンスの追加変数格納領域をインスタンスメモリ領域26の空き領域に配置または移動し、追加変数格納先アドレスを移動先のアドレスに更新する。POUに変数が追加された場合、プログラム実行部27は、配置または移動された追加変数格納領域に追加変数を割り当て、実行する機械語オブジェクトを更新する。
 図2に、POUへの変数の追加の一例を示す。図2の例では、呼び出し元のプログラムが、FB1型のインスタンス1を呼び出し、FB2型のインスタンス2を呼び出し、FB1型のインスタンス3を呼び出す。FB1のプログラムは、変数1および変数2を有し、FB2のプログラムは、変数3および変数4を有する。FB1のプログラムに3つの変数(追加変数1~3)が追加され、さらに、3つの変数(追加変数4~6)が追加される。
 まず、図2に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加され、さらに、3つの変数(追加変数4~6)が追加された際に、特許文献1に記載の技術を適用した場合のインスタンスメモリ領域26への割り当てについて、図3を用いて説明する。
 特許文献1に記載の技術を適用した場合、図3に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、FB1型のインスタンス1の予備領域(予備1)に追加変数1が格納され、空き領域にインスタンス1の追加変数格納領域A1が配置され、追加変数2および3が格納される。インスタンス1の追加変数格納先アドレスはインスタンス1の追加変数格納領域A1のアドレスが格納される。インスタンス1の追加変数格納領域A1には、新たに予備領域(予備1)と追加変数格納先アドレスとが設けられる。
 同様に、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、FB1型のインスタンス3の予備領域(予備1)に追加変数1が格納され、空き領域にインスタンス3の追加変数格納領域A2が配置され、追加変数2および3が格納される。インスタンス3の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A2のアドレスが格納される。インスタンス3の追加変数格納領域A2には、新たに予備領域(予備1)と追加変数格納先アドレスとが設けられる。
 さらにFB1のプログラムに3つの変数(追加変数4~6)が追加されると、インスタンス1の追加変数格納領域A1の予備領域(予備1)に追加変数4が格納され、空き領域にインスタンス1の追加変数格納領域A3が配置され、追加変数5および6が格納される。追加変数格納領域A1の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A3のアドレスが格納される。インスタンス1の追加変数格納領域A3には、新たに予備領域(予備1)と追加変数格納先アドレスとが設けられる。
 同様に、FB1のプログラムに3つの変数(追加変数4~6)が追加されると、インスタンス3の追加変数格納領域A2の予備領域(予備1)に追加変数4が格納され、空き領域にインスタンス3の追加変数格納領域A4が配置され、追加変数5および6が格納される。インスタンス3の追加変数格納領域A2の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A4のアドレスが格納される。インスタンス3の追加変数格納領域A4には、新たに予備領域(予備1)と追加変数格納先アドレスとが設けられる。
 このように、特許文献1に記載の技術を適用した場合、変数の追加を繰り返すほど、追加領域が多段になってしまい、追加した変数へのアクセス時に経由するアドレス数が増加するため、処理時間が長くなる。
 続いて、実施の形態1に係るプログラマブルコントローラシステム100において、図2に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加され、さらに、3つの変数(追加変数4~6)が追加された場合のインスタンスメモリ領域26への割り当てについて、図4を用いて説明する。
 図4に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス1の追加変数格納領域A1が配置され、追加変数1~3が格納される。インスタンス1の追加変数格納先アドレスはインスタンス1の追加変数格納領域A1のアドレスに更新される。
 同様に、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス3の追加変数格納領域A2が配置され、追加変数1~3が格納される。インスタンス3の追加変数格納先アドレスはインスタンス3の追加変数格納領域A2のアドレスに更新される。
 さらにFB1のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス1の追加変数格納領域A3が配置され、追加変数1~6が格納される。インスタンス1の追加変数格納先アドレスは、インスタンス1の追加変数格納領域A3のアドレスに更新される。
 同様に、FB1のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス3の追加変数格納領域A4が配置され、追加変数1~6が格納される。インスタンス3の追加変数格納先アドレスは、インスタンス3の追加変数格納領域A4のアドレスに更新される。
 このように、プログラマブルコントローラシステム100では、POUに変数が追加された場合に、変数が追加されたPOUのインスタンスのすべての追加変数をインスタンスメモリ領域26の空き領域に移動した追加変数格納領域に格納し、追加変数格納先アドレスを移動先のアドレスに更新するので、変数の追加を繰り返した場合でも、追加変数へのアクセスは単一のアドレスからの相対位置でアクセスすることになる。従って、特許文献1に記載の技術を適用した場合よりも処理時間を短縮することができる。一方で、PLCは稼働中にプログラムの演算とシステム処理を繰り返し実行する。プログラマブルコントローラシステム100では、インスタンスメモリ領域26への追加変数の再配置を行う処理はシステム処理で行うため、システム処理時間の延びが発生する。ただし一般的にはプログラムの演算時間の方がシステム処理時間に対して十分長く、延びが発生する時間も追加変数の再配置を実施する一時的なものであるので、処理時間の短縮効果に対する影響は少ない。
 ここで、図4に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加され、さらに、3つの変数(追加変数4~6)が追加された場合に生成されるインスタンス情報、変数情報および変数追加情報について、図5A~図5Cを用いて説明する。
 変数1および変数2を有するFB1型のインスタンス1を呼び出し、変数3および変数4を有するFB2型のインスタンス2を呼び出し、FB1型のインスタンス3を呼び出すソースコードである場合、コンパイラ部12は、例えば、図5Aに示すインスタンス情報および変数情報を生成する。
 図5Aの例では、インスタンス情報は、インスタンスを識別する「インスタンス番号」、インスタンスのPOU型を示す「POU型」、インスタンスが割り振られたメモリ領域の先頭アドレスを示す「先頭アドレス」、インスタンスのサイズを示す「インスタンスサイズ」、インスタンスの追加変数格納先アドレスを示す「追加変数格納先アドレス」および追加変数格納先のサイズを示す「追加変数格納先サイズ」を含む。変数を追加する前は、追加変数格納領域が配置されていないため「追加変数格納先アドレス」の値はNULLである。図5Aの例では、変数情報は、変数のPOU型を示す「POU型」、変数の格納先の種別を示す「格納先」、変数の名称を示す「変数名」、変数のデータ型を示す「データ型」、変数のサイズを示す「サイズ」およびインスタンスが配置されたメモリ領域内での変数の相対アドレスを示す「相対アドレス」を含む。
 続いて、FB1のプログラムに追加変数1~3が追加されると、コンパイラ部12および変数追加情報生成部14は、例えば、図5Bに示すインスタンス情報、変数情報および変数追加情報を生成する。
 図5Bの例では、変数追加情報は、変数追加情報を識別する「情報番号」と、追加変数1~3を追加したことによって移動するインスタンスの追加変数格納領域の移動元アドレスを示す「移動元アドレス」と、追加変数1~3を追加したことによって移動するインスタンスの追加変数格納領域の移動先アドレスを示す「移動先アドレス」と、追加変数1~3の合計サイズを示す「サイズ」と、追加変数格納先アドレスが格納されているアドレスを示す「先頭アドレス」とを含む。初めて空き領域に追加変数格納領域を配置する場合には、移動元の追加変数格納領域がないため「移動元アドレス」の値はNULLである。また、インスタンス情報の「追加変数格納先アドレス」には、配置されたインスタンスの追加変数格納領域のアドレスが入力される。また、変数情報の「変数名」、「データ型」、「サイズ」および「相対アドレス」に追加変数1~3の情報が入力される。
 さらに、FB1のプログラムに追加変数4~6が追加されると、コンパイラ部12および変数追加情報生成部14は、例えば、図5Cに示すインスタンス情報および変数情報を生成し、変数追加情報を生成する。
 図5Cの例では、変数追加情報の「移動元アドレス」には、追加変数4~6を追加したことによって移動するインスタンスの追加変数格納領域の移動元アドレスが入力され、「移動先アドレス」には、追加変数4~6を追加したことによって移動するインスタンスの追加変数格納領域の移動先アドレスが入力されている。また、インスタンス情報の「追加変数格納先アドレス」は、移動されたインスタンスの追加変数格納領域のアドレスに更新される。また、変数情報の「変数名」、「データ型」、「サイズ」および「相対アドレス」に追加変数4~6の情報が入力される。
 ここで、プログラマブルコントローラシステム100が実行するメモリ割当処理の流れについて、図6を用いて説明する。図6に示すメモリ割当処理は、ソースコード記憶部11に記憶されたPLC2用のプログラムのソースコードが更新されたときに開始する。
 コンパイラ部12は、更新されたPLC2用のプログラムのソースコードに含まれるPOUの初期変数、および、変数追加時の追加変数格納領域のアドレスを示す追加変数格納先アドレスを、インスタンスメモリ領域26の初期変数格納領域に割り振り、ソースコードをコンパイルする(ステップS11)。これにより、インスタンス情報、変数情報および機械語オブジェクトが生成される。POUに変数の追加があった場合は、ステップS11でコンパイラ部12は、変数が追加されたPOUに係わるすべての追加変数をインスタンスメモリ領域26の追加変数格納領域に割り振り、ソースコードをコンパイルする。
 コンパイラ部12は、インスタンス情報記憶部15および変数情報記憶部16が記憶する更新前のプログラムのインスタンス情報および変数情報と生成したインスタンス情報および変数情報とを比較し、ソースコードに含まれるPOUへの変数の追加の有無を判定する(ステップS12)。ソースコードに含まれるPOUに変数の追加がない場合(ステップS12;NO)、処理はステップS15に移行する。ソースコードに含まれるPOUに変数の追加がある場合(ステップS12;YES)、変数追加情報生成部14は、変数が追加されたPOUのインスタンスの追加変数格納領域の移動元アドレスおよび移動先アドレスを含む変数追加情報を生成する(ステップS13)。
 例えば、図4に示すように、FB1のプログラムに追加変数1~3が追加されると、ステップS13では、例えば、図5Bに示すような変数追加情報が生成される。さらに、FB1のプログラムに追加変数4~6が追加されると、ステップS13では、例えば、図5C示すような変数追加情報が生成される。
 図6に戻り、開発支援装置1の通信部19は、変数追加情報生成部14が生成した変数追加情報をPLC2に送信し(ステップS14)、コンパイラ部12が生成した機械語オブジェクトをPLC2に送信する(ステップS15)。
 PLC2の通信部21が開発支援装置1から変数追加情報を受信していない場合(ステップS16;NO)、処理はステップS19に移行する。通信部21が開発支援装置1から変数追加情報を受信した場合(ステップS16;YES)、変数追加対応部28は、通信部21が開発支援装置1から受信した変数追加情報に基づいて、変数が追加されたPOUのインスタンスの追加変数格納領域を移動し(ステップS17)、追加変数格納先アドレスを移動先のアドレスに更新する(ステップS18)。
 例えば、ステップS16で、通信部21が開発支援装置1から図5Bに示すような変数追加情報を受信した場合、変数追加対応部28は、ステップS17で、変数追加情報に基づいて、FB1型のインスタンス1の追加変数格納領域をアドレス1024に配置し、FB1型のインスタンス3の追加変数格納領域をアドレス1030に配置する。変数追加対応部28は、ステップS18でFB1型のインスタンス1の追加変数格納先アドレスを1024に更新し、FB1型のインスタンス3の追加変数格納先アドレスを1030に更新する。
 さらに、ステップS16で、通信部21が開発支援装置1から図5Cに示すような変数追加情報を受信した場合、変数追加対応部28は、ステップS17で、変数追加情報に基づいて、FB1型のインスタンス1の追加変数格納領域をアドレス1024から1036に移動し、FB1型のインスタンス3の追加変数格納領域をアドレス1030から1048に移動する。変数追加対応部28は、ステップS18でFB1型のインスタンス1の追加変数格納先アドレスを1036に更新し、FB1型のインスタンス3の追加変数格納先アドレスを1048に更新する。
 図6に戻り、PLC2のプログラム実行部27は、通信部21が開発支援装置1から受信したインスタンス情報および変数情報に基づいて、通信部21が開発支援装置1から受信した機械語オブジェクトに含まれるPOUのインスタンスをインスタンスメモリ領域26に配置し、実行する機械語オブジェクトを更新し(ステップS19)、処理を終了する。POUに変数が追加された場合、ステップS19でプログラム実行部27は、ステップS17で移動された追加変数格納領域に追加変数を格納し、実行する機械語オブジェクトを更新する。
 実施の形態1に係るプログラマブルコントローラシステム100によれば、FBに変数が追加されたと判定された場合に、追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新することで、追加変数へのアクセスは単一のアドレスからの相対位置でアクセスすることになり、FBへの変数の追加を繰り返すことによるプログラムの実行性能の低下を抑制することが可能になる。
(実施の形態2)
 実施の形態2では、インスタンス毎に予備領域を設け、追加変数の合計サイズが予備領域を超える場合に、空き領域に追加変数格納領域が配置され、追加変数が格納される。
 実施の形態2に係るプログラマブルコントローラシステム100において、FB1のプログラムに3つの変数(追加変数1~3)が追加され、FB2のプログラムに2つの変数(追加変数4および5)が追加され、さらに、FB1のプログラムに2つの変数(追加変数6および7)が追加された場合のインスタンスメモリ領域26への割り当てについて、図7を用いて説明する。
 図7に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、FB1型のインスタンス1の予備領域に追加変数1および2が格納され、予備領域を超える追加変数3は、空き領域に配置されたインスタンス1の追加変数格納領域A1に格納される。インスタンス1の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A1のアドレスが格納される。インスタンス1の追加変数格納領域A1には、新たに予備領域が設けられる。
 同様に、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、FB1型のインスタンス3の予備領域に追加変数1および2が格納され、予備領域を超える追加変数3は、空き領域に配置されたインスタンス3の追加変数格納領域A2に格納される。インスタンス3の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A2のアドレスが格納される。インスタンス3の追加変数格納領域A2には、新たに予備領域が設けられる。
 FB2のプログラムに2つの変数(追加変数4および5)が追加されると、FB2型のインスタンス2の予備領域に追加変数4および5が格納される。さらにFB1のプログラムに2つの変数(追加変数4および5)が追加されると、インスタンス1の追加変数格納領域A1の予備領域に追加変数4および5が格納され、インスタンス3の追加変数格納領域A2の予備領域に追加変数4および5が格納される。インスタンス1~3の予備領域は、第1予備領域の例である。追加変数格納領域A1およびA2に設けられた予備領域は第2予備領域の例である。
 実施の形態2に係るプログラマブルコントローラシステム100によれば、FBに変数が追加されたと判定された場合に、追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新することで、追加変数へのアクセスは単一のアドレスからの相対位置でアクセスすることになり、FBへの変数の追加を繰り返すことによるプログラムの実行性能の低下を抑制することが可能になる。また、追加する変数が予備領域を超えない場合は、予備領域内に変数を割り当てることができ、追加変数格納領域の移動が不要になるので、システム処理時間の延びを抑制できる。
(実施の形態3)
 実施の形態3では、FBから別のFBを呼び出す場合、インスタンスごとに追加変数格納先アドレスを配置する。
 図8に、POUから別のPOUを呼び出す場合のPOUへの変数の追加の一例を示す。図8の例では、呼び出し元のプログラムが、FB1型のインスタンス1を呼び出し、FB1型のインスタンス3を呼び出す。FB1のプログラムは、変数1および変数2を有し、FB2型のインスタンスを呼び出す。インスタンス1の場合、FB2型のインスタンス2を呼び出す。インスタンス3の場合、FB2型のインスタンス4を呼び出す。FB2のプログラムは、変数3および変数4を有する。FB1のプログラムに3つの変数(追加変数1~3)が追加され、FB2のプログラムに3つの変数(追加変数4~6)が追加され、さらに、FB1のプログラムに3つの変数(追加変数7~9)が追加される。
 まず、図8に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加され、FB2のプログラムに2つの変数(追加変数4および5)が追加され、さらに、FB1のプログラムに2つの変数(追加変数6および7)が追加された際に、呼び出し元のFBと呼び出されるFBとで追加変数格納先アドレスを共有する場合のインスタンスメモリ領域26への割り当てについて、図9を用いて説明する。
 呼び出し元のFBと呼び出されるFBとで追加変数格納先アドレスを共有する場合、図9に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス1の追加変数格納領域A1が配置され、追加変数1~3が格納される。インスタンス1および2共通の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A1のアドレスが格納される。
 同様に、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス3の追加変数格納領域A2が配置され、追加変数1~3が格納される。インスタンス3および4共通の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A2のアドレスが格納される。
 次に、FB2のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス1の追加変数格納領域A3およびインスタンス2の追加変数格納領域A5が連続で配置され、追加変数1~6が格納される。インスタンス1および2共通の追加変数格納先アドレスは、インスタンス1の追加変数格納領域A3のアドレスに更新される。
 同様に、FB1のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス3の追加変数格納領域A4およびインスタンス4の追加変数格納領域A6が連続で配置され、追加変数1~6が格納される。インスタンス3および4共通の追加変数格納先アドレスは、インスタンス3の追加変数格納領域A4のアドレスに更新される。
 さらにFB1のプログラムに3つの変数(追加変数7~9)が追加されると、空き領域にインスタンス1の追加変数格納領域A7、インスタンス2の追加変数格納領域A8およびインスタンス1の追加変数格納領域A9が連続で配置され、追加変数1~9が格納される。インスタンス1および2共通の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A7のアドレスが格納される。
 同様に、FB1のプログラムに3つの変数(追加変数7~9)が追加されると、空き領域にインスタンス3の追加変数格納領域A10、インスタンス4の追加変数格納領域A11およびインスタンス3の追加変数格納領域A12が連続で配置され、追加変数1~9が格納される。インスタンス3および4共通の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A10のアドレスが格納される。
 このように、呼び出し元のFBと呼び出されるFBとで追加変数格納先アドレスを共有する場合、呼び出し元のFBへの変数追加時に、呼び出し元の追加変数だけでなく、呼び出されるFBの追加変数の移動が発生する。PLCはプログラム実行を繰り返し行うが,追加変数の移動は稼働中の動作に影響しないよう、プログラム実行を中断(END処理)して行う必要がある。そのため移動する追加変数が多いほど、移動に要する時間が長くなり、結果としてプログラム実行時間(スキャンタイム)の延びが発生する。
 続いて、実施の形態3に係るプログラマブルコントローラシステム100において、図8に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加され、FB2のプログラムに2つの変数(追加変数4および5)が追加され、さらに、FB1のプログラムに2つの変数(追加変数6および7)が追加された場合のインスタンスメモリ領域26への割り当てについて、図10を用いて説明する。
 図10に示すように、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス1の追加変数格納領域A1が配置され、追加変数1~3が格納される。インスタンス1の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A1のアドレスが格納される。
 同様に、FB1のプログラムに3つの変数(追加変数1~3)が追加されると、空き領域にインスタンス3の追加変数格納領域A2が配置され、追加変数1~3が格納される。インスタンス3および4共通の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A2のアドレスが格納される。
 次に、FB2のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス2の追加変数格納領域A5が配置され、追加変数4~6が格納される。インスタンス2の追加変数格納先アドレスには、インスタンス2の追加変数格納領域A5のアドレスが格納される。
 同様に、FB2のプログラムに3つの変数(追加変数4~6)が追加されると、空き領域にインスタンス4の追加変数格納領域A6が配置され、追加変数4~6が格納される。インスタンス4の追加変数格納先アドレスには、インスタンス4の追加変数格納領域A5のアドレスが格納される。
 さらにFB1のプログラムに3つの変数(追加変数7~9)が追加されると、空き領域にインスタンス1の追加変数格納領域A7およびA9が連続で配置され、追加変数1~3および追加変数7~9が格納される。インスタンス1の追加変数格納先アドレスにはインスタンス1の追加変数格納領域A7のアドレスが格納される。
 同様に、FB1のプログラムに3つの変数(追加変数7~9)が追加されると、空き領域にインスタンス3の追加変数格納領域A10およびA12が連続で配置され、追加変数1~3および追加変数7~9が格納される。インスタンス3の追加変数格納先アドレスにはインスタンス3の追加変数格納領域A10のアドレスが格納される。つまり、実施の形態3に係るプログラマブルコントローラシステム100では、追加変数格納領域A5およびA6が移動しない分、プログラム実行時間の延びを抑制できる。
 実施の形態3に係るプログラマブルコントローラシステム100によれば、FBに変数が追加されたと判定された場合に、追加変数格納領域をメモリ領域の空き領域に配置または移動し、追加変数格納先アドレスを更新することで、追加変数へのアクセスは単一のアドレスからの相対位置でアクセスすることになり、FBへの変数の追加を繰り返すことによるプログラムの実行性能の低下を抑制することが可能になる。また、FBから別のFBを呼び出す場合、インスタンスごとに追加変数格納先アドレスを配置することで、呼び出し元のFBと呼び出されるFBとで追加変数格納先アドレスを共有する場合と比べてプログラム実行時間の延びを抑制できる。
 上記の実施の形態1~3では、開発支援装置1のソースコード記憶部11がPLC2用のプログラムのソースコードを記憶する構成になっているが、開発支援装置1は、PLC2用のプログラムのソースコードの入力を受け付けてもよい。この場合、開発支援装置1は、入力されたPLC2用のプログラムのソースコードをソースコード記憶部11に記憶させる。
 上記の実施の形態1~3では、開発支援装置1がソースコード記憶部11、インスタンス情報記憶部15、変数情報記憶部16、機械語オブジェクト記憶部17および変数追加情報記憶部18を備えるが、これに限らず、インスタンス情報記憶部15、変数情報記憶部16、機械語オブジェクト記憶部17および変数追加情報記憶部18を例えば外部の装置またはシステムが備えてもよい。
 開発支援装置1のハードウェア構成について図11を用いて説明する。図11に示すように、開発支援装置1は、一時記憶部111、記憶部112、計算部113、入力部114、送受信部115および表示部116を備える。一時記憶部111、記憶部112、入力部114、送受信部115および表示部116はいずれもBUSを介して計算部113に接続されている。
 計算部113は、例えばCPU(Central Processing Unit)である。計算部113は、記憶部112に記憶されている制御プログラムに従って、開発支援装置1のコンパイラ部12および変数追加情報生成部14の各処理を実行する。
 一時記憶部111は、例えばRAM(Random-Access Memory)である。一時記憶部111は、記憶部112に記憶されている制御プログラムをロードし、計算部113の作業領域として用いられる。
 記憶部112は、フラッシュメモリ、ハードディスク、DVD-RAM(Digital Versatile Disc - Random Access Memory)、DVD-RW(Digital Versatile Disc - ReWritable)などの不揮発性メモリである。記憶部112は、開発支援装置1の処理を計算部113に行わせるためのプログラムを予め記憶し、また、計算部113の指示に従って、このプログラムが記憶するデータを計算部113に供給し、計算部113から供給されたデータを記憶する。インスタンス情報記憶部15、変数情報記憶部16、機械語オブジェクト記憶部17および変数追加情報記憶部18は、記憶部112に構成される。
 入力部114は、キーボード、ポインティングデバイスなどの入力装置と、キーボード、ポインティングデバイスなどの入力装置をBUSに接続するインタフェース装置である。入力部114を介して、ユーザが入力した情報が計算部113に供給される。開発支援装置1がPLC2用のプログラムのソースコードの入力を受け付ける構成では、ユーザは入力部114にPLC2用のプログラムのソースコードを入力する。
 送受信部115は、ネットワークに接続する網終端装置または無線通信装置、およびそれらと接続するシリアルインタフェースまたはLAN(Local Area Network)インタフェースである。送受信部115は、通信部19として機能する。
 表示部116は、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)などの表示装置である。例えば、表示部116は、ユーザが情報を入力する操作画面を表示する。開発支援装置1がPLC2用のプログラムのソースコードの入力を受け付ける構成では、表示部116は、ユーザがPLC2用のプログラムのソースコードを入力する画面を表示する。
 図1に示す開発支援装置1のソースコード記憶部11、コンパイラ部12、変数追加情報生成部14、インスタンス情報記憶部15、変数情報記憶部16、機械語オブジェクト記憶部17、変数追加情報記憶部18および通信部19の処理は、制御プログラムが、一時記憶部111、計算部113、記憶部112、入力部114、送受信部115および表示部116などを資源として用いて処理することによって実行する。
 その他、前記のハードウェア構成およびフローチャートは一例であり、任意に変更および修正が可能である。
 計算部113、一時記憶部111、記憶部112、入力部114、送受信部115、表示部116などの開発支援装置1の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、前記の動作を実行するためのコンピュータプログラムを、フレキシブルディスク、CD-ROM(Compact Disc - Read Only Memory)、DVD-ROM(Digital Versatile Disc - Read Only Memory)などのコンピュータが読み取り可能な記録媒体に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する開発支援装置1を構成してもよい。また、インターネットに代表される通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロードすることで開発支援装置1を構成してもよい。
 また、開発支援装置1の機能を、OS(Operating System)とアプリケーションプログラムの分担、またはOSとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体、記憶装置に格納してもよい。
 また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して提供することも可能である。例えば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、通信ネットワークを介して前記コンピュータプログラムを提供してもよい。そして、このコンピュータプログラムを起動し、OSの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できる構成にしてもよい。
 なお、本開示は、本開示の広義の精神と範囲を逸脱することなく、様々な実施の形態及び変形が可能とされるものである。また、上述した実施の形態は、この開示を説明するためのものであり、本開示の範囲を限定するものではない。即ち、本開示の範囲は、実施の形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の開示の意義の範囲内で施される様々な変形が、この開示の範囲内とみなされる。
 1 開発支援装置、2 PLC、11 ソースコード記憶部、12 コンパイラ部、14 変数追加情報生成部、15 インスタンス情報記憶部、16 変数情報記憶部、17 機械語オブジェクト記憶部、18 変数追加情報記憶部、19 通信部、21 通信部、24 機械語オブジェクト記憶部、25 変数追加情報記憶部、26 インスタンスメモリ領域、27 プログラム実行部、28 変数追加対応部、100 プログラマブルコントローラシステム、111 一時記憶部、112 記憶部、113 計算部、114 入力部、115 送受信部、116 表示部。

Claims (6)

  1.  プログラマブルコントローラ用のプログラムのソースコードをコンパイルして機械語オブジェクトを生成し、前記プログラマブルコントローラに前記機械語オブジェクトを実行させるプログラマブルコントローラシステムであって、
     変数を有するPOU(Program Organization Unit)単位で記述された前記ソースコードに含まれる前記POUの初期変数、ならびに、前記POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、前記プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、前記POUに変数が追加されたか否かを判定し、前記POUに変数の追加があった場合は、変数が追加された前記POUに係わるすべての追加変数を前記メモリ領域の前記追加変数格納領域に割り振り、前記ソースコードをコンパイルして前記機械語オブジェクトを生成するコンパイラ部と、
     前記POUに変数が追加されたと判定された場合に、変数が追加された前記POUの前記追加変数格納領域を前記メモリ領域の空き領域に配置または移動し、前記追加変数格納先アドレスを更新する変数追加対応部と、
     を備える、プログラマブルコントローラシステム。
  2.  前記コンパイラ部は、
     前記ソースコードのコンパイルの際に、前記初期変数格納領域に第1予備領域を配置し、前記追加変数格納領域に第2予備領域を配置し、前記POUに変数の追加があった場合は、変数が追加された前記POUに係わる追加変数を前記第1予備領域に割り振り、追加変数の合計サイズが前記第1予備領域のサイズを超える場合は、前記第1予備領域に割り振れなかった追加変数を前記追加変数格納領域に割り振り、
     前記変数追加対応部は、
     前記コンパイラ部により前記POUに係わる変数が追加されたと判定された場合に、変数が追加された前記POUに係わる追加変数の合計サイズが前記第1予備領域を超える場合に、前記追加変数格納領域を前記メモリ領域の空き領域に配置し、変数が追加された前記POUに係わる追加変数の合計サイズが前記第2予備領域を超える場合に、前記追加変数格納領域を前記メモリ領域の空き領域に移動し、前記追加変数格納先アドレスを更新する、
     請求項1に記載のプログラマブルコントローラシステム。
  3.  前記コンパイラ部は、
     前記ソースコードのコンパイルの際に、前記POUの一種であるファンクションブロックから別のファンクションブロックの呼び出しがある場合に、ファンクションブロックごとに前記初期変数格納領域に前記追加変数格納先アドレスを割り振る、
     請求項1または2に記載のプログラマブルコントローラシステム。
  4.  プログラマブルコントローラ用のプログラムのソースコードをコンパイルして機械語オブジェクトを生成する開発支援装置であって、
     変数を有するPOU単位で記述された前記ソースコードに含まれる前記POUの初期変数、ならびに、前記POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、前記プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、前記POUに変数が追加されたか否かを判定し、前記POUに変数の追加があった場合は、変数が追加された前記POUに係わるすべての追加変数を前記メモリ領域の前記追加変数格納領域に割り振り、前記ソースコードをコンパイルし、前記機械語オブジェクトを生成するコンパイラ部と、
     前記POUに変数が追加されたと判定された場合に、変数が追加された前記POUの前記追加変数格納領域の移動元アドレスおよび移動先アドレスを含む変数追加情報生成部と、
     前記プログラマブルコントローラに、前記機械語オブジェクトおよび前記変数追加情報を送信する通信部と、
     を備え、
     前記コンパイラ部は、前記ソースコードをコンパイルした際に、前記POUの前記メモリ領域への割り振りを示すメモリ割当情報、および、前記POUに含まれる変数を示す変数情報を生成し、更新前のプログラムの前記メモリ割当情報および前記変数情報と、生成した前記メモリ割当情報および前記変数情報を比較して、前記POUに変数が追加されたか否かを判定する開発支援装置。
  5.  プログラマブルコントローラが、
     変数を有するPOU単位で記述されたソースコードがコンパイルされた機械語オブジェクトに含まれる前記POUの変数、ならびに、前記POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、前記プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、前記POUに変数の追加があった場合は、変数が追加された前記POUに係わるすべての追加変数を前記メモリ領域の前記追加変数格納領域に割り当て、
     前記プログラマブルコントローラ用の機械語オブジェクトのPOUに変数が追加された場合に、追加変数を割り当てる追加変数格納領域を前記メモリ領域の空き領域に配置または移動し、前記追加変数格納先アドレスを更新する、
     メモリ割当方法。
  6.  コンピュータを、
     変数を有するPOU単位で記述されたプログラマブルコントローラ用のプログラムのソースコードに含まれる前記POUの初期変数、ならびに、前記POUに追加された変数が格納される追加変数格納領域のアドレスを示す追加変数格納先アドレスを、前記プログラマブルコントローラのメモリ領域の初期変数格納領域に割り振り、前記POUに変数が追加されたか否かを判定し、前記POUに変数の追加があった場合は、変数が追加された前記POUに係わるすべての追加変数を前記メモリ領域の前記追加変数格納領域に割り振り、前記ソースコードをコンパイルし、機械語オブジェクトを生成するコンパイラ部、
     前記POUに変数が追加されたと判定された場合に、変数が追加された前記POUの前記追加変数格納領域の移動元アドレスおよび移動先アドレスを含む変数追加情報生成部、および、
     前記プログラマブルコントローラに、前記機械語オブジェクトおよび前記変数追加情報を送信する通信部、
     として機能させ、
     前記コンパイラ部は、前記ソースコードをコンパイルした際に、前記POUの前記メモリ領域への割り振りを示すメモリ割当情報、および、前記POUに含まれる変数を示す変数情報を生成し、更新前のプログラムの前記メモリ割当情報および前記変数情報と、生成した前記メモリ割当情報および前記変数情報を比較して、前記POUに変数が追加されたか否かを判定するプログラム。
PCT/JP2022/005418 2022-02-10 2022-02-10 プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム WO2023152890A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2022/005418 WO2023152890A1 (ja) 2022-02-10 2022-02-10 プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム
JP2022538050A JP7130178B1 (ja) 2022-02-10 2022-02-10 プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/005418 WO2023152890A1 (ja) 2022-02-10 2022-02-10 プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム

Publications (1)

Publication Number Publication Date
WO2023152890A1 true WO2023152890A1 (ja) 2023-08-17

Family

ID=83148911

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/005418 WO2023152890A1 (ja) 2022-02-10 2022-02-10 プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム

Country Status (2)

Country Link
JP (1) JP7130178B1 (ja)
WO (1) WO2023152890A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301520A (ja) * 2004-04-08 2005-10-27 Mitsubishi Electric Corp プログラミングシステム
JP2012216150A (ja) * 2011-04-01 2012-11-08 Mitsubishi Electric Corp プログラマブルコントローラシステムおよびメモリ整理方法
JP2012234272A (ja) * 2011-04-28 2012-11-29 Fuji Electric Co Ltd プログラマブルコントローラ・システム、その支援装置
JP2015022511A (ja) * 2013-07-18 2015-02-02 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラム
JP2015125713A (ja) * 2013-12-27 2015-07-06 富士電機株式会社 プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301520A (ja) * 2004-04-08 2005-10-27 Mitsubishi Electric Corp プログラミングシステム
JP2012216150A (ja) * 2011-04-01 2012-11-08 Mitsubishi Electric Corp プログラマブルコントローラシステムおよびメモリ整理方法
JP2012234272A (ja) * 2011-04-28 2012-11-29 Fuji Electric Co Ltd プログラマブルコントローラ・システム、その支援装置
JP2015022511A (ja) * 2013-07-18 2015-02-02 富士電機株式会社 プログラマブルコントローラシステム、その支援装置、プログラム
JP2015125713A (ja) * 2013-12-27 2015-07-06 富士電機株式会社 プログラマブルコントローラ・システム、その支援装置、プログラマブルコントローラ、プログラム

Also Published As

Publication number Publication date
JP7130178B1 (ja) 2022-09-02
JPWO2023152890A1 (ja) 2023-08-17

Similar Documents

Publication Publication Date Title
CN103218245B (zh) 选择要在计算系统中执行的优化代码的方法和系统
JP7090657B2 (ja) アプリケーションをアップグレードするための方法、装置、デバイスならびに記憶媒体
KR101213275B1 (ko) 무선 장치에서 사용할모놀리식(monolithic)이미지를 제공하기 위한시스템 및 방법
CN110892378B (zh) 在多版本异步动态软件更新期间通过虚拟存储器覆盖技术进行的全局变量迁移
US7107579B2 (en) Preserving program context when adding probe routine calls for program instrumentation
CN108121594B (zh) 一种进程管理方法及装置
US9235433B2 (en) Speculative object representation
JP2006092544A (ja) プリオペレーティングシステム環境におけるモジュールの動的リンク
CN111736913B (zh) 类加载方法和装置
US20190138438A1 (en) Conditional stack frame allocation
CN106445656B (zh) 一种实现线程本地存储的方法及装置
JP2004220583A (ja) アセンブラにおいて大域的プロセッサ資源割当てを実行するための方法およびシステム
US6438621B1 (en) In-memory modification of computer programs
WO2023152890A1 (ja) プログラマブルコントローラシステム、開発支援装置、メモリ割当方法およびプログラム
JP6292096B2 (ja) プログラマブルコントローラシステム、その支援装置
JP2011141676A (ja) 言語処理装置、言語処理方法およびコンピュータプログラムプロダクト
US6275985B1 (en) Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
US20160132428A1 (en) Assigning home memory addresses to function call parameters
KR20100110710A (ko) 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품
JP6245028B2 (ja) 実行制御方法、実行制御プログラムおよび実行制御装置
CN117056031B (zh) 一种基于虚拟进程的跨容器动态库共享方法
JP6020071B2 (ja) プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ
CN108008981A (zh) 一种片上系统SoC中进行程序初始化的方法和装置
CN114035866A (zh) 合约动态库的配置及加载方法、计算机设备和存储介质
EP1793311A2 (en) System and method for a patch minimization tool

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2022538050

Country of ref document: JP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22925911

Country of ref document: EP

Kind code of ref document: A1