Programmable logic controller system, development assistance device, and development assistance program

WO2026163286A1PCT designated stage Publication Date: 2026-08-06MITSUBISHI ELECTRIC CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
MITSUBISHI ELECTRIC CORP
Filing Date
2025-01-29
Publication Date
2026-08-06

Smart Images

  • Figure JP2025002669_06082026_PF_FP_ABST
    Figure JP2025002669_06082026_PF_FP_ABST
Patent Text Reader

Abstract

A PLC system according to the present disclosure comprises a development assistance device (100) and a PLC (200). The development assistance device (100) has: a generation unit that generates a control program (123) and an add-on file (122) for extending the function of the control program (123) by using an add-on source code (121) created by a user of the PLC (200) in order to extend the function of the control program (123); and a writing unit that writes, into the PLC (200), the add-on file (122) and the control program (123) generated by the generation unit. The PLC (200) has an add-on process execution unit that executes an add-on process indicated by the add-on file (221) by using a control program (222) written by the development assistance device (100) and an add-on file (221) associated with the control program (222).
Need to check novelty before this filing date? Find Prior Art

Description

Programmable Logic Controller System, Development Support Device, and Development Support Program

[0001] The present disclosure relates to a programmable logic controller system, a development support device, and a development support program.

[0002] The function expansion of an electronic device can be realized, for example, by updating firmware, which is a control program for controlling the electronic device. Here, since the firmware is incorporated into the electronic device in a state where it is written in a non-volatile memory, it is not easy for the user of the electronic device to directly update it. Therefore, in order to update the firmware, the user needs to request, for example, the original developer of the electronic device, and a lot of labor, time, and cost are required for function expansion.

[0003] Therefore, for example, in Patent Document 1, a function expansion script that describes a processing procedure for realizing a new function to be imparted to an electronic device using a predetermined script language is executed together with the firmware incorporated in the electronic device, so that the function of the electronic device can be expanded without updating the firmware. And the user can perform, for example, the same function expansion as the latest one on the electronic device in use.

[0004] Japanese Patent Application Laid-Open No. 2014-59919

[0005] However, since the function expansion of Patent Document 1 assumes a mobile phone or so-called IT home appliances, for example, it reads and executes a function expansion script prepared in advance by the original developer. For example, it has a low degree of freedom when applied to the function expansion of a PLC in which a user freely creates various control programs and the created control programs are executed each time.

[0006] The present disclosure has been made in view of the above circumstances, and an object thereof is to provide a technology capable of easily and highly freely expanding the function of a PLC.

[0007] To achieve the above objective, the programmable logic controller system according to this disclosure comprises a development support device that assists in the development of a control program in the programmable logic controller, and the programmable logic controller. The development support device has a generation unit that generates a control program and an add-on file that extends the functionality of the control program using source code created by the user of the programmable logic controller in order to extend the functionality of the control program, and a writing unit that writes the control program and the add-on file generated by the generation unit to the programmable logic controller. The programmable logic controller has an add-on processing execution unit that, when executing the control program, uses the control program and the add-on file written by the development support device to call the processing of an add-on execution command pre-built into the firmware and executes the add-on processing contained in the add-on file.

[0008] According to this disclosure, it becomes possible to easily and flexibly extend the functionality of a PLC.

[0009] A diagram showing an example configuration of a programmable logic controller system according to Embodiment 1. A diagram showing an example of an LD language program used as a control program according to Embodiment 1. A diagram explaining the possibility of data tampering in an add-on file according to Embodiment 1. A diagram showing an example of operation of a programmable logic controller system according to Embodiment 1. A diagram showing an example of an add-on file generation process executed by a development support device according to Embodiment 1. A diagram showing an example of an add-on file writing process executed by a development support device according to Embodiment 1. A diagram showing an example of an add-on file execution process executed by a programmable logic controller according to Embodiment 1. A diagram showing an example of an add-on API header file description according to Embodiment 1. A diagram showing an example of an add-on source code description according to Embodiment 1. A diagram showing an example of an add-on information file description according to Embodiment 1. A diagram showing an example of an add-on file selection screen according to Embodiment 1. A diagram showing an example of a settings screen for specifying the add-on process that the user wants to execute on the control program in Embodiment 1. A diagram showing an example of source code showing the initialization process included in the object area of ​​an add-on file according to Embodiment 1. A diagram showing an example of the contents of an add-on management table according to Embodiment 1. A diagram showing an example of changes in device values ​​before and after execution of an add-on process according to Embodiment 1. A diagram showing an example of digital signature assignment performed by the development support device according to Embodiment 1. A diagram showing an example of digital signature verification performed by the programmable logic controller according to Embodiment 1. A diagram showing an example of the configuration of the programmable logic controller system according to Embodiment 2. A diagram explaining the possibility of data tampering in the add-on file according to Embodiment 2. A diagram showing an example of a settings screen for setting the arguments of an add-on execution command according to another embodiment. A diagram showing an example of the description of an add-on file according to another embodiment. A diagram showing an example of changes in device values ​​before and after the execution of an add-on process according to another embodiment. A diagram showing an example of the results of comparing the contents of the processing cycle depending on the complexity of the add-on process according to another embodiment. A diagram showing an example of the results of comparing the contents of the processing cycle depending on whether or not the add-on process is divided according to another embodiment. A diagram showing another example of a settings screen for setting the arguments of an add-on execution command according to another embodiment.

[0010] The programmable logic controller system according to Embodiment 1 will be described in detail below with reference to the drawings. However, this invention is not limited to these embodiments.

[0011] Embodiment 1. Figure 1 shows the configuration of a Programmable Logic Controller (PLC) system 1000 according to Embodiment 1. The PLC system 1000 shown in Figure 1 includes a development support device 100 that assists in the development of control programs for the programmable logic controller 200, and a PLC 200.

[0012] The development support device 100 is a general-purpose personal computer equipped with an engineering environment to support the development of control programs for the PLC 200. The development support device 100 generates control programs that run on the PLC 200. The development support device 100 also generates add-on files that extend the functionality of the control programs. The development support device 100 writes the generated control programs and add-on files to the PLC 200.

[0013] The PLC 200 is, for example, an industrial computer and a controller that controls industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. The PLC 200 executes, for example, a control program for controlling industrial machinery. When executing the control program, the PLC 200 uses the control program written by the development support device 100 and the add-on file associated with the control program to call the processing of add-on execution commands pre-installed in the firmware and execute the add-on processing contained in the add-on file.

[0014] In Figure 1, the development support device 100 includes a processing circuit 11, a storage circuit 12, an input interface 13, an output interface 14, and a communication interface 15. The processing circuit 11 performs various processes to support the development of control programs for the PLC 200, for example. The storage circuit 12 stores various information necessary for the processes performed by the processing circuit 1. The input interface 13 and the output interface 14 are interfaces for input and output to the development support device 100. The communication interface 15 communicates data with the PLC 200.

[0015] The processing circuit 11 is a processor that functions as the central hub of the development support device 100. The processing circuit 11, for example, executes various programs stored in the memory circuit 12 to realize functions corresponding to the executed programs. The processing circuit 11 may also be equipped with a memory area that stores at least a portion of the data stored in the memory circuit 12.

[0016] The memory circuit 12 includes a magnetic or optical recording medium, or a semiconductor memory, or other recording medium that can be read by the processor. The memory circuit 12 may also be a drive device that reads and writes various information to and from portable storage media such as a CD-ROM drive, DVD drive, and flash memory. The memory circuit 12 does not necessarily have to be implemented by a single storage device. For example, the memory circuit 12 may be implemented by multiple storage devices.

[0017] As shown in Figure 1, the memory circuit 12 stores, for example, the add-on source code 121, the add-on file 122, the control program 123, the programming language standard library 124, the add-on API (Application Program Interface) header file 125, and the add-on information file 126.

[0018] The add-on source code 121 is, for example, source code for extending the functionality implemented by the control program 123. The add-on source code 121 is created, for example, by the user of the PLC 200.

[0019] The add-on file 122 is a file generated using the add-on source code 121, and is in a format that can be written to and executed on the PLC 200, for example. The add-on file 122 includes, for example, an information area, an object area, a digital signature area, and so on.

[0020] The control program 123 is a program for controlling industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. The control program 123 is, for example, a program created by the user of the PLC 200. The control program 123 is transmitted to the PLC 200 via the communication interface 15 and executed on the PLC 200. The control program 123 is created using, for example, a programming language defined in the IEC-61131 standard, specifically the LD (Ladder Diagram) language, FBD (Function Block Diagram) language, ST (Structured Text) language, IL (Instruction List) language, and SFC (Sequential Function Chart) language. An example of a program in the LD language is shown in Figure 2. The user of the PLC 200 writes the program according to the notation of the LD language as shown in Figure 2, and expresses the desired control by combining instructions such as MOV and DEC that the developer has incorporated into the firmware. The specifications of the programming language are determined by standards, and it is not possible to freely add functions. Therefore, if you wish to extend the functionality of the PLC200, you can create instructions and implement them in the PLC200, which can then be used when executing the control program 123.

[0021] The programming language standard library 124 is a library consisting of the basic types, macros, and functions of each programming language. If a function not included in the standard library is needed, the user can add a library containing the desired function.

[0022] The add-on API header file 125 is a file that describes functions provided by the add-on developer to the add-on creator, for example, to the user of the PLC200, such as initialization functions and device operation functions required when creating the add-on source.

[0023] The add-on information file 126 is a file used when generating the add-on file 122. The add-on information file 126 contains information to describe the add-on file 122, such as the add-on name, version information, add-on creator information, and a description.

[0024] The input interface 13 receives various operations from the operator to the development support device 100. The input interface 13 can be implemented, for example, by a mouse, keyboard, or touch panel on which instructions are input by touching the operating surface. The input interface 13 is connected to the processing circuit 11, converts the operation instructions input from the operator into electrical signals, and outputs the electrical signals to the processing circuit 11. In this specification, the input interface 13 is not limited to those equipped with physical operating components such as a mouse and keyboard. For example, an electrical signal processing circuit that receives electrical signals corresponding to operation instructions input from an external input device provided separately from the development support device 100 and outputs these electrical signals to the processing circuit 11 is also included as an example of the input interface 13.

[0025] The output interface 14 is connected to the processing circuit 11 and outputs signals supplied from the processing circuit 11. The output interface 14 is implemented by, for example, a display circuit and an audio device. The display circuit includes, for example, a CRT display, a liquid crystal display, an organic EL display, an LED display, and a plasma display. The audio device includes, for example, a speaker. The audio device may also include an output circuit that outputs audio signals to the outside. The output interface 14 may be implemented together with the input interface 13 as a touch panel or touch screen.

[0026] The communication interface 15 transmits and receives data with an external device. Any communication standard can be used between the communication interface 15 and the external device. Specifically, the communication interface 15 transmits and receives various types of data with, for example, the PLC 200.

[0027] The processing circuit 11 according to Embodiment 1 realizes various functions by executing the program according to this embodiment. Specifically, the processing circuit 11 realizes a generation function 111, a writing function 112, and a digital signature application function 113 by executing a program stored in the storage circuit 12, for example. The add-on file generation function 111 is an example of the generation unit in the claim. The writing function 112 is an example of the writing unit in the claim. The digital signature application function 113 is an example of the digital signature application unit in the claim.

[0028] The generation function 111 is a function for generating various programs and files. In the generation function 111, the processing circuit 11 generates, for example, a control program 123 that is executed by the PLC 200.

[0029] Furthermore, in the generation function 111, the processing circuit 11 generates an add-on file 122 using, for example, the add-on source code 121 created by the user of the PLC 200. Specifically, in the generation function 111, the processing circuit 11 first compiles using the add-on source code 121, the programming language standard library 124, and the add-on API header file 125 to generate an add-on object file. Then, the processing circuit 11 generates an add-on file 122 using the generated add-on object file and the add-on information file 126 corresponding to the add-on source code 121. At this time, the contents of the add-on information file 126 are stored in the information area of ​​the add-on file 122. Also, the contents of the add-on object file are stored in, for example, the object area of ​​the add-on file 122.

[0030] The writing function 112 is a function for writing the control program 123 generated by the generation function 111 and the add-on file 122 to the PLC 200. In the writing function 112, the processing circuit 11 writes the control program 123 and the add-on file 122 to the storage circuit 22 of the PLC 200, for example, by storing them in the storage circuit 22 via the communication interface 15.

[0031] The digital signature function 113 is a function that, for example, assigns a digital signature to various programs and files generated by the development support device 100. As shown in Figure 3, when an add-on file 122 generated by the development support device 100 is sent to the PLC 200, especially when transmitted over the internet, there is a possibility that a malicious third party may tamper with the data of the add-on file 122. If an add-on user installs such an add-on file directly into the PLC 200 and executes the add-on process, the PLC 200 used by the add-on user may behave unexpectedly, potentially causing significant damage to the add-on user. To prepare for such a situation, it is necessary for the development support device 100 to assign a digital signature, and for the PLC 200 to verify the assigned digital signature to confirm whether or not the data has been tampered with.

[0032] In the digital signature function 113, the processing circuit 11 uses the add-on information file 126 and the add-on object file to generate a unique hash value based on a predetermined hash value generation algorithm. Next, the processing circuit 11 uses the hash value and the secret key for digital signature to generate a cryptographic hash value using a predetermined encryption script file. The generated cryptographic hash value is stored, for example, in the digital signature area of ​​the add-on file 122.

[0033] In Figure 1, the PLC 200 includes a processing circuit 21, a memory circuit 22, and a communication interface 23. The processing circuit 21 performs various processes for controlling industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. The memory circuit 22 stores various information necessary for the processes performed by the processing circuit 21. The communication interface 23 communicates data with the development support device 100.

[0034] The processing circuit 21 is a processor that functions as the central hub of the PLC 200. The processing circuit 21, for example, executes various programs stored in the memory circuit 22, thereby realizing functions corresponding to the executed programs. The processing circuit 21 may also be equipped with a memory area that stores at least a portion of the data stored in the memory circuit 22.

[0035] The memory circuit 22 includes a magnetic or optical recording medium, or a semiconductor memory, or other recording medium that can be read by the processor. The memory circuit 22 may also be a drive device that reads and writes various information to and from portable storage media such as a CD-ROM drive, DVD drive, and flash memory. The memory circuit 22 does not necessarily have to be implemented by a single storage device. For example, the memory circuit 22 may be implemented by multiple storage devices.

[0036] As shown in Figure 1, the memory circuit 22 stores, for example, an add-on file 221, a control program 222, firmware 223, and an add-on management table 224.

[0037] Add-on file 221 is, for example, a file that is received by the PLC 200 via the communication interface 23 and written to by the add-on file 122 generated by the development support device 100.

[0038] The control program 222 is, for example, a file in which the control program 123 generated by the development support device 100 is received by the PLC 200 via the communication interface 23 and written.

[0039] Firmware 223 is a control program for controlling industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. Firmware 223 is incorporated into the PLC 200, for example, by being written to non-volatile memory. Furthermore, firmware 223 has pre-programmed functionality for processing add-on execution instructions.

[0040] The add-on management table 224 is, for example, a table that manages add-on information. The add-on management table 224 registers information such as the add-on ID, add-on name, memory size, and add-on processing body address.

[0041] The processing circuit 21 according to Embodiment 1 realizes various functions by executing the program according to this embodiment. Specifically, the processing circuit 21 realizes an add-on processing execution function 211, an add-on management function 212, and a digital signature verification function 213 by executing a program stored in the storage circuit 22, for example. The add-on processing execution function 211 is an example of an add-on processing execution unit according to the claim. The add-on management function 212 is an example of an add-on management unit according to the claim. The digital signature verification function 213 is an example of a digital signature verification unit according to the claim.

[0042] The add-on processing execution function 211 is a function that executes add-on processing contained in, for example, the add-on file 221. In the add-on processing execution function 211, when executing the control program 222, the processing circuit 21 uses the control program 222 written by the development support device 100 and the add-on file 221 to call the processing of add-on execution commands pre-installed in the firmware 223 and executes the add-on processing contained in the add-on file 221.

[0043] The add-on management function 212 is a function that manages add-ons, for example, those indicated by an add-on file 221. In the add-on management function 212, the processing circuit 21 reads the add-on file 221 stored in the memory circuit 22, for example, when the PLC 200 is started. At this time, for example, the add-on file 221 contains multiple files corresponding to multiple add-on processes. Next, the processing circuit 21 identifies and executes the initialization process contained in the object area of ​​the add-on file 221. The initialization process is included with the name, for example, "add-on name__InitialMain", and the function corresponding to this name is executed. When the initialization process is executed, the specification of the memory usage and the specification of the add-on process body described in the initialization process are executed, and for example, the "add-on name", "memory size", and "add-on process body address" are registered in the add-on management table 224. At this time, the processing circuit 21 assigns an "add-on ID" to each add-on.

[0044] The digital signature verification function 213 is a function that verifies, for example, whether or not various programs and files received from the development support device 100 have been tampered with. In the digital signature verification function 213, the processing circuit 21 uses, for example, the information contained in the information area and object area of ​​the add-on file 122 received from the development support device 100, and generates a unique hash value using the same algorithm as the add-on development support device. On the other hand, the processing circuit 21 uses the public key provided in advance by the add-on developer and the digital signature area of ​​the add-on file 122, and generates a decrypted hash value using a decryption script file. The processing circuit 21 compares the hash value obtained in this way with the decrypted hash value, and if they do not match, it determines that the data has been tampered with. The processing circuit 21 compares the hash value and the decrypted hash value, and if they match, it determines that the data has not been tampered with. If the processing circuit 21 determines that the data has been tampered with, it can display this information, for example, on the engineering tool of the development support device 100, so that the add-on user can find out whether or not the add-on file has been tampered with. Then, it becomes possible to delete the tampered add-on file 221 and replace it with an untampered add-on file.

[0045] The operation of the PLC system 1000 configured as described above will be described according to the processing procedures of the processing circuit 11 of the development support device 100 and the processing procedure of the processing circuit 21 of the PLC 200.

[0046] FIG. 4 is a diagram showing an operation example of the PLC system 1000 according to Embodiment 1. FIG. 5 is a diagram showing an example of add-on file generation processing executed by the development support device 100 according to Embodiment 1. FIG. 6 is a diagram showing an example of add-on file writing processing executed by the development support device 100 according to Embodiment 1. FIG. 7 is a diagram showing an example of add-on file execution processing executed by the PLC 200 according to Embodiment 1.

[0047] Hereinafter, the description will be made while referring to the flowcharts of FIGS. 4 to 7. In this operation example, it is assumed that the add-on processing is executed for each control cycle of the program. The control cycle is, for example, one scan when creating a control program in ladder language.

[0048] In FIG. 4, the processing circuit 11 of the development support device 100 executes the generation function 111 to generate an add-on file 122 (step S1). Hereinafter, the specific flow of this add-on file generation processing will be described while referring to FIG. 5.

[0049] In FIG. 5, the processing circuit 11 of the development support device 100 first acquires an add-on development support tool (step S11). The add-on development tool includes a programming language standard library 124, an add-on API header file 125, a script file for generating an add-on file, and the like. The script file for generating an add-on file is, for example, a script file for generating an add-on file 122 using the generated object file and an add-on information file 126. Here, an example described in the C language for the add-on API header file 125 is shown in FIG. 8, an example described in the C language for the add-on source code 121 is shown in FIG. 9, and an example described in the JSON (JavaScript Object Notation) format for the add-on information file 126 is shown in FIG. 10, respectively.

[0050] Next, the processing circuit 11 of the development support device 100 generates the add-on source code 121 (step S12). The processing circuit 11 receives input from the user, for example, via the input interface 13, such as the source code of the initialization function and the source code of the main processing function. The processing circuit 11 generates the add-on source code 121 based on the input source code. At this time, the function name indicating the initialization process is, for example, a name that can identify that the firmware 223 implemented in the PLC 200 is the initialization process, and in this embodiment, it is in the format "add-on name__InitialMain". The user of the PLC 200 can specify the memory size to be used by the add-on during initialization in the development support device 100, for example, to avoid the firmware 223 implemented in the PLC 200 becoming unexecutable due to excessive memory usage by the add-on. The memory size can be specified, for example, within a range less than or equal to the maximum memory capacity reserved for the add-on. Alternatively, the processing circuit 11 may retrieve add-on source code 121 that was previously generated based on user input, instead of generating new add-on source code 121.

[0051] When the add-on source code 121 is generated, the processing circuit 11 of the development support device 100 compiles the generated add-on source code 121 (step S13). The processing circuit 11 performs compilation using, for example, the programming language standard library 124, the API header file 125, and the add-on source code 121. This generates an add-on object file.

[0052] When the compilation of the add-on source code 121 is complete, the processing circuit 11 of the development support device 100 creates an add-on information file 126 (step S14). The processing circuit 11 creates the add-on information file 126, which describes add-on-related information such as the add-on name and information about the add-on creator, according to user input via the input interface 13, for example.

[0053] The processing circuit 11 of the development support device 100 generates an add-on file 122 once the creation of the add-on information file 126 is complete (step S15). The processing circuit 11 generates the add-on file 122 using, for example, the add-on file generation script file obtained in step S11, the add-on object file generated in step S13, and the add-on information file 126 created in step S14.

[0054] Returning to Figure 4, after step S1, the processing circuit 11 of the development support device 100 executes the writing function 112 once the add-on file generation is complete, and writes the add-on file 122 to the PLC 200 (step S2). The specific flow of this writing process will be explained below with reference to Figure 6.

[0055] In Figure 6, the processing circuit 11 of the development support device 100 first sets the method of communication connection with the PLC 200 (step S21). The processing circuit 11 sets the communication connection method selected from Ethernet communication, USB communication, etc., according to user input via the input interface 13, for example.

[0056] Once the settings for the communication connection method are complete, the processing circuit 11 of the development support device 100 accepts the selection of an add-on file (step S22). At this time, the processing circuit 11 displays a selection screen for accepting the selection of an add-on file 122, for example, via the output interface 14. The processing circuit 11 then accepts the user's selection of an add-on file 122, for example, via the input interface 13. An example of the add-on file selection screen is shown in Figure 11. According to Figure 11, in the output interface 14, the explorer window W1 for selecting files displays "myAddonName1.apk", "myAddonName2.apk", "myAddonName3.apk", "myAddonName4.apk", and "myAddonName5.apk". The user can select the desired add-on file from among these. It is also possible to verify whether the selected add-on file has been tampered with.

[0057] When the processing circuit 11 of the development support device 100 receives the selection of an add-on file 122, it installs the received add-on file 123 into the PLC 200 (step S23). As a result, the selected add-on file 122 is written to the PLC 200 as add-on file 221, stored, for example, in the memory of the PLC 200's memory circuit 22, and becomes executable on the PLC 200. Note that the installation of the selected add-on file 122 may also be triggered, for example, by receiving an installation instruction from the user via the input interface 13.

[0058] Returning to Figure 4, after step S2, the processing circuit 21 of the PLC 200 performs add-on processing in step S3. The processing circuit 21 performs add-on processing using, for example, the add-on file 221 written to the PLC 200 in step 2. Hereafter, the specific flow of this add-on processing will be explained with reference to Figure 7.

[0059] In Figure 7, first, the processing circuit 11 of the development support device 100 generates a control program (step S31). At this time, the processing circuit 11 of the development support device 100 receives, for example, the input interface 13 to receive the specification of an add-on name indicating the add-on process that the user wants to execute in the arguments of the add-on execution command described in the control program to be generated. The processing circuit 11 then associates the add-on file indicated by the received add-on name with the control program. In this way, a control program is generated that is associated with the add-on file that the user wants to execute. Figure 12 is a diagram showing an example of a setting screen for specifying the add-on process that the user wants to execute on the control program. Figure 12 shows, for example, a setting screen output to the output interface 14 of the development support device 100 shown in Figure 1. In the setting screen shown in Figure 12, the user can set various arguments of the add-on execution command "ADDONEXE" via the input interface 13 of the development support device 100, for example, when the control program generated in step S31 is written in ladder language. Specifically, in area R1, the user can set a variable "myAddonName" that indicates the name of an add-on, for example, via the input interface 13 of the development support device 100. Note that the specification method does not necessarily have to be an add-on name; it may also be numerical data such as an ID assigned to each add-on by the PLC.

[0060] Next, the processing circuit 11 of the development support device 100 writes the control program generated in step S31 to the PLC 200 (step S32). The processing circuit 11 receives a writing instruction to the PLC from the user, for example, via the input interface 13 of the development support device 100, and registers the control program generated in step S31 as a control program to be executed on the PLC 200. As a result, the control program generated in step S31 is stored as the control program 222 in the memory circuit 22 on the PLC 200.

[0061] Next, the processing circuit 21 of the PLC 200 executes initialization processing (step S33). For example, when the PLC 200 is restarted, the processing circuit 21 reads the three control programs 222 that were written in step S32 when the PLC 200 starts up. At this time, the processing circuit 21 identifies and executes the initialization processing contained in the object area of ​​the add-on file 221 associated with the control file 222. An example of source code showing the initialization processing contained in the object area of ​​the add-on file 221 is shown in Figure 13. As shown in Figure 13, the object area contained in the add-on file 221 stored in the memory circuit 22 stores information indicating the initialization processing and the main body of the add-on processing, along with information indicating the storage address in the memory of the memory circuit 22. At this time, it can be seen that the address indicating the beginning of the initialization processing is "0x5000". It can also be seen that the address indicating the beginning of the main body of the add-on processing is "0x10000". Furthermore, the initialization process shown in Figure 13 is included under the name "myAddonName__InitialMain" because the addon name is "myAddonName", and is implemented by executing the corresponding function. When the initialization process is executed, the specification of the memory usage and the specification of the addon processing body described in the initialization process are executed, and for example, the "addon name", "memory size", and "addon processing body address" are registered in the addon management table 224. At this time, the processing circuit 21 assigns an "addon ID" to each addon. Figure 14 is a diagram showing an example of the contents of the addon management table 224 in which a series of information about the addon has been registered by the initialization process. According to Figure 14, for example, an addon processing with addon name "myAddonName", addon ID "1", memory size "1024", and addon processing body address "0x10000" is registered.

[0062] Once the initialization process is complete, the processing circuit 21 of the PLC 200 executes the control program (step S34). Specifically, the processing circuit 21 receives an instruction to execute the control program, for example. At this time, the user changes a switch that manages the operating state on the PLC 200 to the RUN state. As a result, the PLC 200 enters the RUN state, and the processing circuit 21 starts executing the control program.

[0063] In step S34, after the execution of the control program 222 is started, the processing circuit 21 of the PLC 200 executes the add-on processing indicated by the add-on file 221 associated with the control program 222 (step S35). In this embodiment, the contents of the add-on processing described in the add-on processing body shown in Figure 13 are to be executed.

[0064] Specifically, the processing circuit 21 of the PLC 200 calls the processing of the add-on execution instruction contained in the firmware 223 of the PLC 200, for example, based on the arguments of the add-on execution instruction contained in the control program 222. The processing circuit 21 searches the add-on management table 224 using "myAddonName" specified in the arguments of the add-on execution instruction as the search key. The processing circuit 21 then obtains the address of the add-on main processing that contains the content of the add-on processing that is being requested to be executed. The processing circuit 21 executes the instruction of the add-on main processing stored at the obtained address. As a result, for example, "myAddonName_Main" described in the source code stored at address "0x10000" as shown in Figure 13 is executed. When this instruction of the add-on main processing is executed, in this embodiment, for example, as shown in Figure 15, the values ​​of devices D0 and D10 in the device memory that stores information about the devices are changed from the initial value of 0 to 5 and 10.

[0065] Next, the operation of the PLC system 1000 related to digital authentication will be explained according to the processing procedure of the processing circuit 11 of the development support device 100 and the processing procedure of the processing circuit 21 of the PLC 200.

[0066] Figure 16 shows an example of digital signature application performed by the development support device 100 according to Embodiment 1. Figure 17 shows an example of digital signature verification performed by the PLC 200 according to Embodiment 1.

[0067] In Figure 16, the processing circuit 11 of the development support device 100 executes the digital signature assignment function 113 and generates a hash value based on the contents of various files used when the add-on file 122 is generated (step 161). For example, the processing circuit 11 generates a unique hash value based on the contents of the add-on information file 126 stored in the storage circuit 11 shown in Figure 1 and the add-on object file generated in step S13 of Figure 5.

[0068] Next, the processing circuit 11 of the development support device 100 encrypts the hash value generated in step S161 (step S162). The processing circuit 11 generates an encrypted hash value, which is the encrypted hash value, by executing a predetermined encryption script, for example, using the hash value generated in step S161 and a pre-prepared secret key for digital signature.

[0069] Finally, the processing circuit 11 of the development support device 100 stores the cryptographic hash value generated in step S162 in the digital signature area of ​​the add-on file 122 to be digitally signed (step 163). This digitally signs the add-on file 122. The digitally signed add-on file 122 is received by the PLC 200 and stored as add-on file 221 in the PLC 200's storage circuit 22. The following describes the process of verifying the add-on file 221 stored in the PLC 200's storage circuit 22.

[0070] In Figure 17, the processing circuit 21 of the PLC 200 generates a hash value based on the contents of the digitally signed add-on file 221 stored in the storage circuit 22 (step S171). For example, the processing circuit 21 generates a unique hash value using the same algorithm as in step S161 of Figure 16, based on the contents of the information area and object area contained in the digitally signed add-on file 221 stored in the storage circuit 21 shown in Figure 1.

[0071] Next, the processing circuit 21 of the PLC 200 generates a decrypted hash value (step S172). The processing circuit 21 uses, for example, the cryptographic hash value stored in the digital signature area included in the add-on file 221 and a pre-prepared public key for digital signature, and executes a predetermined decryption script to generate a decrypted hash value, which is the result of decrypting the cryptographic hash value.

[0072] Finally, the processing circuit 21 of the PLC 200 performs a comparison verification between the hash value generated in step S171 and the decrypted hash value generated in step S172 (step S173). Specifically, the processing circuit 21 first compares the hash value generated in step S171 with the decrypted hash value generated in step S172. If the comparison results do not match, the processing circuit 21 may output a message indicating that the data has been tampered with via the output interface 14 of the development support device 100. This allows the user to know that the data in the add-on file has been tampered with.

[0073] According to Embodiment 1 described above, in the PLC system 1000, the processing circuit 11 of the development support device 100 generates a control program 123 and an add-on file 122 that extends the functionality of the control program 123 using add-on source code 121 created by the user of the PLC 200 in order to extend the functionality of the control program 123. The processing circuit 11 writes the control program 123 and the add-on file 122 generated by the execution of the generation function 111 to the PLC 200. When executing the control program 222, the processing circuit 21 of the PLC 200 uses the control program 222 written by the development support device 100 and the add-on file 221 associated with the control program 222 to execute the add-on processing contained in the add-on file 221.

[0074] As a result, in the PLC system 1000 according to Embodiment 1, it becomes possible for the user to execute add-on processing on the PLC 200 at the timing the user wishes to execute it.

[0075] Therefore, according to Embodiment 1, it becomes possible to easily and freely expand the functionality of the PLC.

[0076] Embodiment 2. Embodiment 1 described a case in which development support for control programs and development support for add-on files are performed by a single development support device 100. Embodiment 2 describes a case in which development support for control programs and development support for add-on files are performed by two separate devices.

[0077] Figure 18 shows the configuration of the PLC system 1000A according to Embodiment 2. The PLC system 1000A shown in Figure 18 includes a first development support device 100A that assists in the development of control programs for the PLC 200, a second development support device 100B that assists in the development of add-on files, and the PLC 200. In the following, parts with the same reference numerals are assumed to perform similar operations, and redundant explanations will be omitted as appropriate.

[0078] The first development support device 100A is a general-purpose personal computer equipped with an engineering environment for supporting the development of control programs for the PLC 200. The first development support device 100A generates control programs that run on the PLC 200. The second development support device 100B is a general-purpose personal computer equipped with an environment for supporting the development of add-on files that are added to and executed by the control program in the PLC 200. The second development support device 100B generates add-on files that extend the functionality of the control program. The second development support device 100B also writes the control program generated by the first development support device 100A and the add-on files it has generated to the PLC 200.

[0079] The PLC 200 is, for example, an industrial computer and a controller that controls industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. The PLC 200 executes, for example, a control program for controlling industrial machinery. When executing the control program, the PLC 200 uses the control program written by the second development support device 100B and the add-on file to call the processing of add-on execution commands pre-installed in the firmware and execute the add-on processing contained in the add-on file.

[0080] In Figure 18, the first development support device 100A includes a processing circuit 11A, a storage circuit 12A, an input interface 13A, an output interface 14A, and a communication interface 15A. The processing circuit 11A performs various processes to support the development of control programs for the PLC 200, for example. The storage circuit 12A stores various information necessary for the processes performed by the processing circuit 1A. The input interface 13A and the output interface 14A are interfaces for input and output to the first development support device 100A. The communication interface 15A communicates data with the second development support device 100B.

[0081] The processing circuit 11A is a processor that functions as the central hub of the first development support device 100A. The processing circuit 11A, for example, executes various programs stored in the memory circuit 12A to realize functions corresponding to the executed programs. The processing circuit 11A may also be equipped with a memory area that stores at least a portion of the data stored in the memory circuit 12A.

[0082] The memory circuit 12A includes a magnetic or optical recording medium, or a semiconductor memory, or other recording medium that can be read by the processor. The memory circuit 12A may also be a drive device that reads and writes various information to and from a portable storage medium such as a CD-ROM drive, DVD drive, and flash memory. The memory circuit 12A does not necessarily have to be implemented by a single storage device. For example, the memory circuit 12A may be implemented by multiple storage devices.

[0083] As shown in Figure 18, the memory circuit 12A stores, for example, the add-on source code 121A, the add-on file 122A, the programming language standard library 123A, the add-on API header file 124A, and the add-on information file 125A.

[0084] The contents of the add-on source code 121A, add-on file 122A, programming language standard library 123A, add-on API header file 124A, and add-on information file 125A are the same as the contents of the add-on source code 121, add-on file 122, programming language standard library 124, add-on API header file 125, and add-on information file 126 shown in Figure 1.

[0085] The input interface 13A receives various operations from the operator to the first development support device 100A. The form and function of the input interface 13A are the same as those of the input interface 13 shown in Figure 1.

[0086] The output interface 14A is connected to the processing circuit 11A and outputs signals supplied from the processing circuit 11A. The form and function of the output interface 14A are the same as those of the output interface 14 shown in Figure 1.

[0087] The communication interface 15A transmits and receives data with an external device. Any communication standard can be used between the communication interface 15A and the external device. Specifically, the communication interface 15A transmits and receives various types of data with, for example, the second development support device 100B.

[0088] The processing circuit 11A of the first development support device 100A according to Embodiment 2 realizes various functions by executing the program according to this embodiment. Specifically, the processing circuit 11A realizes the generation function 111A and the digital signature application function 112A by executing the program stored in the storage circuit 12A, for example. The generation function 111A is an example of the generation unit in the claim. The digital signature application function 112A is an example of the digital signature application unit in the claim.

[0089] The generation function 111A is a function for generating various programs and files. In the generation function 111A, the processing circuit 11A generates an add-on file 122A using, for example, the add-on source code 121A created by the user of the PLC 200.

[0090] The digital signature function 112A is a function that, for example, assigns a digital signature to various programs and files generated by the development support device 100. As shown in Figure 19, when an add-on file 122A generated by the first development support device 100A is sent to the PLC 200, there is a possibility that a malicious third party may tamper with the data of the add-on file 122A, especially when it is transmitted via the internet. If an add-on user installs such an add-on file directly into the PLC 200 and executes the add-on process, the PLC 200 used by the add-on user may behave unexpectedly, potentially causing significant damage to the add-on user. To prepare for such a situation, it is necessary for the first development support device 100A to assign a digital signature, and for the second development support device 100B and the PLC 200 to verify the digital signature assigned by the first development support device 100A to confirm whether or not it has been tampered with.

[0091] The function of the digital signature assignment function 112A is the same as that of the digital signature assignment function 113 shown in Figure 1.

[0092] In Figure 18, the second development support device 100B includes a processing circuit 11B, a storage circuit 12B, an input interface 13B, an output interface 14B, and a communication interface 15B. The processing circuit 11B performs various processes to support the development of control programs for the PLC 200, for example. The storage circuit 12B stores various information necessary for the processes performed by the processing circuit 1B. The input interface 13B and the output interface 14B are interfaces for input and output to the second development support device 100B. The communication interface 15B communicates data with the PLC 200.

[0093] The processing circuit 11B is a processor that functions as the central hub of the second development support device 100B. The processing circuit 11B, for example, executes various programs stored in the memory circuit 12B to realize functions corresponding to the executed programs. The processing circuit 11B may also be equipped with a memory area that stores at least a portion of the data stored in the memory circuit 12B.

[0094] The memory circuit 12B includes a magnetic or optical recording medium, or a semiconductor memory, or other recording medium that can be read by the processor. The memory circuit 12B may also be a drive device that reads and writes various information to and from a portable storage medium such as a CD-ROM drive, DVD drive, and flash memory. The memory circuit 12B does not necessarily have to be implemented by a single storage device. For example, the memory circuit 12B may be implemented by multiple storage devices.

[0095] As shown in Figure 18, the memory circuit 12B stores, for example, the control program 121B. The contents of the control program 121B are the same as those of the control program 123 shown in Figure 1.

[0096] The input interface 13B receives various operations from the operator to the second development support device 100B. The form and function of the input interface 13B are the same as those of the input interface 13 shown in Figure 1.

[0097] The output interface 14B is connected to the processing circuit 11B and outputs signals supplied from the processing circuit 11B. The form and function of the output interface 14B are the same as those of the output interface 14 shown in Figure 1.

[0098] The communication interface 15B transmits and receives data to and from external devices. Any communication standard can be used between the communication interface 15B and the external devices. Specifically, the communication interface 15B transmits and receives various types of data, for example, between the first development support device 100A and the PLC 200.

[0099] The processing circuit 11B of the second development support device 100B according to Embodiment 2 realizes various functions by executing the program according to this embodiment. Specifically, the processing circuit 11B realizes a generation function 111B, a writing function 112B, and a digital signature verification function 113B by executing a program stored in the storage circuit 12B, for example. The generation function 111B is an example of a generation unit in the claim. The writing function 112B is an example of a writing unit in the claim. The digital signature verification function 113B is an example of a digital signature verification unit in the claim.

[0100] The generation function 111B is a function for generating various programs and files. In the generation function 111B, the processing circuit 11B generates, for example, a control program 123 that is executed by the PLC 200.

[0101] The writing function 112B is a function for writing, for example, the control program 121B generated by the generation function 111B and the add-on file 122A generated by the generation function 111A of the first development support device 100A to the PLC 200. In the writing function 112B, the processing circuit 11B writes the control program 121B and the add-on file 122A to, for example, the memory circuit 22 of the PLC 200 via the communication interface 15B.

[0102] The digital signature verification function 113B is a function that verifies whether or not various programs and files received from the first development support device 100A have been tampered with. The function of the digital signature verification function 113B is the same as that of the digital signature verification function 213 of the PLC 200 shown in Figure 1.

[0103] In Figure 18, the PLC 200 includes a processing circuit 21, a storage circuit 22, and a communication interface 23. The processing circuit 21 performs various processes for controlling industrial machinery such as manufacturing equipment, conveying equipment, and inspection equipment in factory automation. The storage circuit 22 stores various information necessary for the processes performed by the processing circuit 21. The communication interface 23 communicates data with the second development support device 100B. The configuration and functions of the processing circuit 21, storage circuit 22, and communication interface 23 are the same as those of the PLC 200 shown in Figure 1.

[0104] Next, the operation of the PLC system 1000A will be explained, focusing on the differences from Embodiment 1. In the PLC system 1000A, development support for add-on files is provided by the first development support device 100A, and development support for control programs is provided by the second development support device 100B. First, the add-on file generated by the first development support device 100A is sent to the second development support device 100B. The second development support device 100B writes the control program it generated and the add-on file received from the first development support device 100A together to the PLC 200. Furthermore, for add-on files to which a digital signature has been added by the first development support device 100A, verification of the digital signature can be performed by at least one or both of the second development support device 100B and the PLC 200. By separating the functions of add-on file generation and control program generation into two devices, the add-on file developer can operate the first development support device 100A, and the add-on file user can operate the second development support device 100B, allowing them to work separately.

[0105] Other Embodiments. In the above embodiment, the argument of the add-on execution instruction included in the control program 222 was assumed to include the add-on name, but this is not limited to this. For example, the argument of the add-on execution instruction included in the control program 222 may include, in addition to the add-on name, information indicating the starting address of the request data and information indicating the starting address of the response data.

[0106] Figure 20 shows an example of a settings screen for setting the arguments of an add-on execution command. Figure 20 shows, for example, a settings screen output to the output interface 14 of the development support device 100 shown in Figure 1. In the settings screen shown in Figure 20, the user can set various arguments of the add-on execution command "ADDONEXE" via the input interface 13 of the development support device 100 when creating a control program in ladder language. Specifically, in area R1, the user can set a variable "myAddonName" that indicates the name of the add-on via the input interface 13 of the development support device 100. In area R2, the user can set a variable "D0" that indicates the device where request data for add-on processing from the control program is stored via the input interface 13 of the development support device 100. In area R3, the user can set a variable "D100" that indicates the device where response data from add-on processing to the control program is stored via the input interface 13 of the development support device 100. This makes it possible to exchange data between the control program and the add-on processing.

[0107] Figure 21 is an example of an add-on file that describes the add-on processing that is executed after the various arguments of the add-on execution command are set in Figure 20. In Figure 21, it is assumed that before the add-on processing is executed, the variable "D0" is set to "10" and the variable "D100" is set to "0". When the add-on processing in Figure 21 is executed, the calculation result "20" is stored in "D100".

[0108] Figure 22 shows an example of how the value of a variable indicating a device changes before and after the execution of an add-on process. According to Figure 22, the value of "D100" changes from "0" to "20" before and after the execution of the add-on process shown in Figure 21.

[0109] In this way, by enabling data exchange between the control program and the add-on processing using the arguments of the add-on execution command, the add-on processing can be made variable rather than fixed, and the results of the add-on processing can be received by the control program and reflected in the control. Therefore, it is possible to increase the degree of freedom and flexibility of PLC control.

[0110] Furthermore, in the above embodiment, the add-on processing was executed at each control cycle of the program, but is not limited to this. The add-on processing may be divided and executed over multiple control cycles. Figure 23 is a diagram showing an example of the results of comparing the contents of processing cycles depending on the complexity of the add-on processing. The greater the complexity of the add-on processing, the longer the processing time. In Figure 23, the control cycle is represented by a "scan" when executing a control program using ladder language. In this case, the time required for one scan is called, for example, the scan time. In Figure 23, one scan includes I / O refresh processing, program calculation processing, and END processing. I / O refresh processing, for example, involves acquiring input data from sensors, etc., and transmitting output data to drive equipment, etc. Program calculation processing includes control program processing and add-on processing. END processing, for example, involves self-diagnosis processing and firmware system processing. In the processing cycle shown in Figure 23, in the case where the complexity of the add-on processing is small, the processing time for add-on processing is 5 ms compared to the processing time for program calculation processing, which is 10 ms. On the other hand, in a processing cycle that shows a high complexity of add-on processing, the processing time for add-on processing accounts for 20 ms compared to the processing time for program calculation processing, which is 25 ms. In this case, as can be seen in Figure 23, the refresh interval, which is the interval at which I / O refresh processing is executed, is increased by 15 ms in the case of high complexity of add-on processing compared to the case of low complexity of add-on processing.

[0111] Add-on processing is called and executed by an add-on execution instruction included in the control program, and therefore runs within the program's calculation process. If the add-on processing is not complex and the processing time is short, the impact on scan time is small. However, if the add-on processing is complex and the processing time is long, it leads to an increase in scan time. As a result, the I / O refresh interval is extended, which can lead to problems such as missing input data from sensors, etc., and delays in reflecting input data in the control, potentially negatively impacting the performance and operation of the user's device. Therefore, if the add-on processing is complex and the processing time is long, for example, the add-on processing can be divided and executed in multiple control cycles.

[0112] Figure 24 shows an example of a comparison of the processing cycle content depending on whether or not the add-on processing is divided. Figure 24 shows a comparison of the processing cycle when the add-on processing is not divided and when the add-on processing is divided. In the processing cycle shown in Figure 24, the processing time for program calculations, excluding add-on processing or add-on division processing registration, is assumed to be 5 ms.

[0113] The processing cycle shown in Figure 24, where an add-on process takes 20ms, illustrates an example where the add-on process is divided into four processes of 5ms each for execution. In this case, during the program calculation of the first scan, the add-on division process is registered at the time the add-on execution instruction is executed. Since this is a registration-only process, the processing time is short. Due to this registration process, the add-on process is divided into four parts and executed in the subsequent END process. In the processing cycle shown in Figure 24, where an add-on process takes 2ms, the four divided add-on processes 1, 2, 3, and 4 are each executed for 5ms in the END process of the first, second, third, and fourth scans, respectively.

[0114] Specifically, for example, during the add-on processing of the first scan, in this embodiment, the add-on processing is interrupted after 5 ms. At this time, for example, the firmware 223 shown in Figure 1 saves the necessary information so that the add-on processing can be resumed in the END processing of the next scan, the second scan. In the END processing after the I / O refresh processing and program calculation processing of the second scan are executed, the add-on processing that was interrupted in the first scan is resumed, and the add-on processing is interrupted after 5 ms, just as in the first scan. The same processing is performed for the third and fourth scans, and the add-on processing is completed in the END processing of the fourth scan. As a result, the refresh interval between the first and second scans is shortened by 14 ms compared to when the scans are not split.

[0115] In this embodiment, for example, the processing circuit 22 of the PLC 200 shown in Figure 1 changes the state of the completed device specified in the add-on execution command from OFF to ON at the timing when the add-on processing is completed, so that the control program can recognize that the add-on processing is complete. The state of the completed device, which has been changed to ON, is changed back to OFF in the END processing of the 5th scan, which is the next scan. Figure 25 shows another example of a setting screen for setting the arguments of the add-on execution command. Figure 25 shows, for example, a setting screen output to the output interface 14 of the development support device 100 shown in Figure 1. In the setting screen shown in Figure 25, in addition to the areas R1, R2, and R3 that were included in the setting screen shown in Figure 20, there is an area R4 in which a variable "M2" that indicates the device used in the command executed when the add-on execution is completed can be set. In this case, "M2" indicates, for example, the add-on execution completed device. As shown in Figure 25, in area R4, the user can set the add-on completion execution device, for example, via the input interface 13 of the development support device 100. Then, by using the configured add-on completion execution device, the user can create an arbitrary control program "BMOV" that uses the results of the add-on processing at the time the add-on processing is completed, as shown in Figure 25. When the control program "BMOV" is executed, for example, the response data, which is the result of the add-on processing, is input into the argument variable "D100" of "BMOV", and this value is copied to the argument variable "D200", which is the storage location for the add-on processing results.

[0116] This disclosure allows for various embodiments and modifications without departing from the broad spirit and scope of this disclosure. Furthermore, the embodiments described above are for illustrative purposes only and do not limit the scope of this disclosure. In other words, the scope of this disclosure is indicated by the claims, not by the embodiments. Various modifications made within the scope of the claims and the equivalent significance of the disclosure are considered to be within the scope of this disclosure.

[0117] According to this disclosure, it is possible to provide a programmable logic controller system, a development support device, and a development support program that enable easy and highly flexible functional expansion of a PLC.

[0118] 1000, 1000A Programmable logic controller system, 100 Development support device, 100A First development support device, 100B Second development support device, 200 Programmable logic controller, 11, 11A, 11B Processing circuit, 12, 12A, 12B Memory circuit, 13, 13A, 13B Input interface, 14, 14A, 14B Output interface, 15, 15A, 15B, 23 Communication interface, 111, 111A, 111B Generation function, 112, 112B Writing function, 113, 112A Digital signature assignment function, 211 Add-on processing execution function, 212 Add-on management function, 213, 113B Digital signature verification function, 121, 121A Add-on source code, 122, 122A, 221 Add-on files, 123, 222, 121B; control programs, 124, 123A; programming language standard libraries, 125, 124A; add-on API header files, 126, 125A; add-on information files, 223; firmware, 224; add-on management table.

Claims

1. A programmable logic controller system comprising a development support device for assisting in the development of a control program for a programmable logic controller, and the programmable logic controller, wherein the development support device includes a generation unit that generates the control program and an add-on file that extends the functionality of the control program using source code created by a user of the programmable logic controller in order to extend the functionality of the control program, and a writing unit that writes the control program and the add-on file generated by the generation unit to the programmable logic controller, and the programmable logic controller includes an add-on processing execution unit that executes the add-on processing indicated by the add-on file using the control program written by the development support device and the add-on file associated with the control program, the programmable logic controller system.

2. A programmable logic controller system comprising: a first development support device for supporting the development of a control program for a programmable logic controller; a second development support device for supporting the development of an add-on file for extending the functionality of the control program; and the programmable logic controller, wherein the first development support device has a generation unit that generates the control program and an add-on file for extending the functionality of the control program using source code created by a user of the programmable logic controller in order to extend the functionality of the control program; the second development support device has a writing unit that writes the control program and the add-on file generated by the generation unit to the programmable logic controller; and the programmable logic controller has an add-on processing execution unit that executes the add-on processing indicated by the add-on file using the control program written by the first development support device and the add-on file associated with the control program and written by the second development support device.

3. The programmable logic controller system according to claim 1, wherein the development support device further comprises a digital signature granting unit that grants a digital signature to the add-on file when the add-on file is generated, and the programmable logic controller further comprises a digital signature verification unit that verifies whether or not the digitally signed add-on file has been tampered with.

4. The programmable logic controller system according to claim 2, wherein the first development support device further includes a digital signature granting unit that grants a digital signature to the add-on file when the add-on file is generated, and at least one of the second development support device and the programmable logic controller further includes a digital signature verification unit that verifies whether the digitally signed add-on file has been tampered with.

5. The programmable logic controller system according to any one of claims 1 to 4, wherein the control program includes information indicating the storage location of request data for the add-on processing from the control program, and information indicating the storage location of response data from the add-on processing to the control program, and the add-on processing execution unit executes the add-on processing using the information indicating the storage location of the request data and the information indicating the storage location of the response data.

6. The programmable logic controller system according to any one of claims 1 to 5, wherein the add-on processing execution unit divides the add-on processing into a plurality of add-on processing and executes the divided add-on processing sequentially.

7. The programmable logic controller system according to claim 6, wherein the add-on processing execution unit, when executing the divided plurality of add-on processing, uses a completion device for passing processing result data from the previous processing to the subsequent processing in the plurality of add-on processing.

8. A development support device for assisting the development of a control program in a programmable logic controller, comprising: a generation unit that generates the control program and an add-on file that extends the functionality of the control program using source code created by a user of the programmable logic controller in order to extend the functionality of the control program; and a writing unit that writes the control program and the add-on file generated by the generation unit to the programmable logic controller.

9. A development support program that enables a computer connected to a programmable logic controller and supporting the development of a control program for the programmable logic controller to implement: a generation function that generates the control program and an add-on file that extends the functionality of the control program using source code created by the user of the programmable logic controller in order to extend the functionality of the control program; and a writing function that writes the control program and the add-on file generated by the generation function to the programmable logic controller.