Programmable logic controller systems and engineering tools
The programmable logic controller system efficiently associates and displays log data with user programs, enhancing program modification efficiency by synchronizing image and device values through an engineering tool.
Patent Information
- Application Number
- JP2025078167
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2025-05-08
- Publication Date
- 2026-07-13
- Estimated Expiration
- 2038-10-23
Smart Images

Figure 0007888807000001 
Figure 0007888807000002 
Figure 0007888807000003
Abstract
Description
Technical Field
[0004] , , , , ,
[0001] The present invention relates to an engineering tool for a programmable logic controller.
Background Art
[0002] A programmable logic controller (PLC) is a controller that controls manufacturing equipment, conveying devices, and inspection devices in factory automation. The PLC controls various expansion units and controlled devices by executing a user program such as a ladder program created by a user. When actually executing the user program on the PLC, events that were not assumed at the time of creating the user program may be found, and it may be necessary to modify the user program. The user not only reviews the user program to identify the modification points but also refers to the log data generated by the PLC. The log data stores the values of devices (device values) collected when the user program is being executed. In the field of PLCs, a device means a storage area that stores information. Examples of devices include relay devices that hold one-bit information and word devices that hold one-word information. According to Patent Document 1, it has been proposed to log device values.
Prior Art Documents
Patent Documents
[0003]
Patent Document 1
Summary of the Invention
Problems to be Solved by the Invention
[0004] Incidentally, the software for viewing user programs and the software for viewing log data are independent. Therefore, users had to manually find the device values at the time of the problem by looking at the log data, and then determine which part of the user program those device values were related to.
[0005] Therefore, the present invention is various data of Related Management, storage or The purpose is to display information. More specifically, the present invention aims to manage image data and device values in association. [Means for solving the problem]
[0006] The present invention, for example, A ladder execution engine that repeatedly executes a ladder program, and a device memory having a device which is a storage area referenced by the ladder execution engine based on the description of the ladder program. A function execution engine that performs functions involving the input of image data from a camera, and a memory that stores the image data input by the function execution engine. A programmable logic controller equipped with, Engineering tools for the aforementioned programmable logic controller, A programmable logic controller system having, The aforementioned engineering tool is Display unit and Based on user input via the display unit, before A configuration unit that creates log configuration data including a list of logging targets for multiple devices extracted from the ladder program, A communication unit that sends the log setting data created by the setting unit to the programmable logic controller, It has, The aforementioned programmable logic controller is The aforementioned A recording unit records device values stored in multiple devices specified by the logging target list in a time series, associated with time data related to the collection time. When predetermined storage conditions are met, the recording unit records the data. Of the time-series device values and associated time data, the time-series device values and associated time data for a predetermined target period, and the time-series of multiple image data for the target period and time data indicating the acquisition time of each image data. Read out 、 A storage unit for saving data as log data, having The engineering tool further obtains, from the log data, a Image data corresponding to the display target time based on the time data stored as the log data, before and sends it to the display unit table for display image display module, a device display module that obtains, from the log data, a device value corresponding to the display target time based on the time data stored as the log data and displays it on the display unit, and a playback control module that synchronizes the display target time in the image display module and the display target time in the device display module. A programmable logic controller system is provided, characterized by this.
Effect of the Invention
[0007] According to the present invention various data of can be associated and Management, storage or displayed. More specifically, according to the present invention, it becomes possible to manage image data and device values in association.
Brief Description of the Drawings
[0008] [Figure 1] Diagram showing a programmable logic controller system [Figure 2] Diagram explaining a ladder program [Figure 3] Diagram explaining a program creation support device [Figure 4] Diagram explaining a PLC [Figure 5] Diagram explaining the scan of a ladder program [Figure 6] Diagram explaining the function of a program creation support device [Figure 7] Flowchart explaining the logging setting method [Figure 8] Diagram explaining the method of selecting program parts [Figure 9] Figure for explaining the method of selecting functions [Figure 10A] Figure for explaining the unit monitor [Figure 10B] Figure for explaining the settings of the unit monitor [Figure 10C] Figure for explaining the extraction list [Figure 11] Figure for explaining the extraction list [Figure 12] Figure for explaining the merging of the extraction list [Figure 13] Figure for explaining the estimation result of the impact on the scan time [Figure 14] Figure for explaining the selection UI of the device type [Figure 15] Flowchart showing the extraction method of the device [Figure 16] Figure showing an example of the user program [Figure 17] Figure for explaining the functions of the basic unit [Figure 18] Figure for explaining the creation process of the configuration information [Figure 19] Figure for explaining the functions of the CPU of the basic unit [Figure 20] Figure for explaining the functions of the CPU of the expansion unit [Figure 21] Figure showing an example of the log data [Figure 22] Flowchart showing the logging process in the basic unit [Figure 23] Flowchart showing the logging process in the expansion unit [Figure 24] Figure showing the connection form of the PLC [Figure 25] Figure showing the connection form of the PLC [Figure 26] Figure for explaining the timing of logging [Figure 27] Figure for explaining the display of the log data [Figure 28] Figure for explaining the display UI of the log data [Figure 29] Figure for explaining the method of setting the collection time [Figure 30] Figure for explaining the method of setting the collection time [Figure 31] A flowchart illustrating the debugging process. [Figure 32] Diagram explaining the output section [Figure 33] Diagram explaining the project creation section. [Figure 34] Diagram explaining the log display section. [Figure 35A] Diagram illustrating the program display module. [Figure 35B] Diagram illustrating the user interface [Figure 35C] A diagram illustrating the module for displaying project data and log data. [Figure 35D] Diagram explaining the warning screen [Figure 36A] Diagram explaining the waveform display module [Figure 36B] Diagram illustrating the user interface [Figure 36C] Diagram explaining the real-time chart monitor. [Figure 37] Diagram illustrating the playback control module. [Figure 38] A diagram illustrating the UI for displaying user programs and device values. [Figure 39] Diagram illustrating the HMI emulator. [Figure 40] A flowchart illustrating the process of displaying user programs and device values. [Figure 41] A flowchart illustrating the process of displaying the waveform of device values. [Figure 42] Flowchart showing playback control [Figure 43] A diagram illustrating multiple interrelated program components. [Figure 44] This diagram illustrates the UI for displaying the extraction results of program components and devices. [Figure 45] Flowchart showing the extraction process of program components and devices. [Figure 46] A flowchart explaining the debugging process. [Figure 47] Diagram illustrating the modified program components. [Modes for carrying out the invention]
[0009] One embodiment of the present invention is shown below. The individual embodiments described below will be helpful in understanding various concepts, such as the higher, intermediate, and lower-level concepts of the present invention. Furthermore, the technical scope of the present invention is determined by the claims and is not limited by the individual embodiments described below.
[0010] <System Configuration> To begin, in order to help those skilled in the art better understand programmable logic controllers (PLCs, which may also be simply called programmable controllers), we will first describe the general configuration and operation of a PLC.
[0011] Figure 1 is a conceptual diagram showing an example configuration of a programmable logic controller system according to an embodiment of the present invention. As shown in Figure 1, this system comprises a PC 2 for editing user programs such as ladder programs, and a PLC (Programmable Logic Controller) 1 for comprehensively controlling various control devices installed in factories, etc. PC is an abbreviation for personal computer. User programs may be created using graphical programming languages such as ladder language or flowchart-type motion programs such as SFC (Sequential Function Chart), or they may be created using high-level programming languages such as C language. For the sake of explanation, the user program will be assumed to be a ladder program below. The PLC 1 comprises a basic unit 3 with a built-in CPU and one or more expansion units 4. One or more expansion units 4 are detachable from the basic unit 3. For example, expansion unit 4a may be a positioning unit that drives a motor (field device 10a) to position a workpiece, and expansion unit 4b may be a counter unit. The counter unit counts signals from an encoder (field device 10b) such as a manual pulser. Note that the letters a, b, c, etc., appended to the end of the reference code may be omitted. Basic unit 3 is sometimes called the CPU unit. The system including PLC1 and PC2 may also be called a programmable logic controller system.
[0012] The basic unit 3 is equipped with a display unit 5 and an operation unit 6. The display unit 5 can display the operating status of each expansion unit 4 attached to the basic unit 3. The display unit 5 switches the displayed content according to the operation of the operation unit 6. The display unit 5 usually displays the current value (device value) of devices in the PLC1 and error information that has occurred in the PLC1. A device is a name that refers to an area in memory provided for storing device values (device data), and may also be called device memory. Device values are information that indicates the input status from input devices, the output status to output devices, and the status of internal relays (auxiliary relays), timers, counters, data memory, etc. set in the user program. There are two types of device values: bit type and word type. A bit device stores a 1-bit device value. A word device stores a 1-word device value.
[0013] The expansion units 4 are provided to extend the functionality of the PLC1. Each expansion unit 4 is connected to a field device (controlled device) 10 corresponding to the function of that expansion unit 4, thereby connecting each field device 10 to the base unit 3 via the expansion unit 4. The field device 10 may be an input device such as a sensor or camera, or an output device such as an actuator. Furthermore, multiple field devices may be connected to a single expansion unit 4.
[0014] PC2 may also be called a program creation support device. PC2 is, for example, a portable notebook or tablet-type personal computer equipped with a display unit 7 and an operation unit 8. A ladder program, which is an example of a user program for controlling PLC1, is created using PC2. The created ladder program is converted into mnemonic code within PC2. PC2 is connected to the basic unit 3 of PLC1 via a communication cable 9 such as USB (Universal Serial Bus) and sends the ladder program converted into mnemonic code to the basic unit 3. The basic unit 3 converts the ladder program into machine code and stores it in the memory provided in the basic unit 3. Although mnemonic code is sent to the basic unit 3 here, the present invention is not limited to this. For example, PC2 may convert the mnemonic code into intermediate code and send the intermediate code to the basic unit 3.
[0015] Although not shown in Figure 1, the control panel 8 of the PC2 may include a pointing device such as a mouse connected to the PC2. Furthermore, the PC2 may be configured to be detachably connected to the PLC1's basic unit 3 via a communication cable 9 other than USB. Alternatively, the PC2 may be configured to be connected wirelessly to the PLC1's basic unit 3 without using the communication cable 9.
[0016] <Ladder Program> Figure 2 shows an example of a ladder diagram Ld displayed on the display unit 7 of the PC2 when a ladder program is created. The PC2 displays multiple cells arranged in a matrix on the display unit 7. A symbol of a virtual device is placed in each cell. The symbol represents input relays, output relays, etc. Multiple symbols form a relay circuit. The ladder diagram Ld has, for example, 10 columns × N rows (where N is any natural number) of cells. And, within the cells of each row, the symbols of virtual devices are appropriately placed.
[0017] The relay circuit shown in Figure 2 is constructed by appropriately combining symbols of three virtual devices (hereinafter referred to as "input devices") that are turned on / off based on input signals from an input device, and symbols of a virtual device (hereinafter referred to as "output device") that is turned on / off to control the operation of an output device.
[0018] The characters displayed above each input device symbol ("R0001", "R0002", and "R0003") represent the device name (address name) of that input device. The characters displayed below each input device symbol ("Flag 1", "Flag 2", and "Flag 3") represent the device comment associated with that input device. The characters displayed above the output device symbol ("Return to Home") are a label consisting of a string representing the function of that output device.
[0019] In the example shown in Figure 2, an AND gate is formed by connecting the symbols of two input devices corresponding to device names "R0001" and "R0002" in series. Furthermore, an OR gate is formed by connecting the symbol of the input device corresponding to device name "R0003" in parallel to the AND gate formed by these two input device symbols. In other words, in this relay circuit, the output device corresponding to the symbol in the first row turns on only when both input devices corresponding to the two symbols in the first row are turned on, or when the input device corresponding to the symbol in the second row is turned on.
[0020] <Program creation support device> Figure 3 is a block diagram illustrating the electrical configuration of PC2. As shown in Figure 3, PC2 comprises a CPU 21, a display unit 7, an operation unit 8, a storage device 22, and a communication unit 23. The display unit 7, the operation unit 8, the storage device 22, and the communication unit 23 are each electrically connected to the CPU 21. The storage device 22 includes RAM and ROM, and may also include a removable memory card. CPU is an abbreviation for Central Processing Unit. ROM is an abbreviation for Read-Only Memory. RAM is an abbreviation for Random Access Memory.
[0021] The user edits project data via the operation unit 8 by having the CPU 21 execute a computer program (editing software) stored in the storage device 22. The project data includes one or more user programs (e.g., ladder programs) and configuration information for the basic unit 3 and expansion unit 4. The configuration information includes information indicating the connection positions of multiple expansion units 4 to the basic unit 3, the functions provided in the basic unit 3 (e.g., communication function and positioning function), and the functions of the expansion unit 4 (e.g., shooting function). Here, editing project data includes creating and modifying project data. Project data created using the editing software is stored in the storage device 22. The user can also read project data stored in the storage device 22 as needed and modify that project data using the editing software. The communication unit 23 is for connecting the PC 2 to the basic unit 3 via the communication cable 9. The CPU 21 transfers project data to the basic unit 3 via the communication unit 23.
[0022] <plc> Figure 4 is a block diagram illustrating the electrical configuration of PLC1. As shown in Figure 4, the basic unit 3 comprises a CPU 31, a display unit 5, an operation unit 6, a storage device 32, and a communication unit 33. The display unit 5, the operation unit 6, the storage device 32, and the communication unit 33 are each electrically connected to the CPU 31. The storage device 32 may include RAM, ROM, a memory card, etc. The storage device 32 has multiple storage areas, such as a device unit 34, a project storage unit 35, and a removable memory card 36. The device unit 34 has bit devices, word devices, etc., and each device stores device values. The project storage unit 35 stores project data input from PC2. The storage device 32 also stores the control program for the basic unit 3. As shown in Figure 4, the basic unit 3 and the expansion unit 4 are connected via a unit internal bus 90, which is a type of expansion bus. Note that the communication function related to the unit internal bus 90 may be implemented as part of the communication unit 33. The communication unit 33 may have a network communication circuit. The CPU 31 may send log data and other information to the PC 2 or the cloud via the communication unit 33.
[0023] Here, we will provide some additional information about the unit's internal bus 90. This unit's internal bus 90 is the bus on which input / output refresh and other operations described below are performed, and communication control on the unit's internal bus 90 is realized by a so-called bus master 38 (the bus master may be provided as part of the communication unit 33, or as part of the CPU 31). The bus master 38 is a control circuit for controlling communication on the unit's internal bus 90, and in response to a communication request from the CPU 31, it communicates with the expansion unit 4, such as performing input / output refresh and other operations described later.
[0024] The expansion unit 4 includes a CPU 41 and memory 42. The CPU 41 controls the field device 10 according to instructions (device values) from the base unit 3 stored in the device. The CPU 41 also stores the control results of the field device 10 in a device called buffer memory. The control results stored in the device are transferred to the base unit 3 by I / O refresh. Furthermore, the control results stored in the device are also transferred to the base unit 3 according to read commands from the base unit 3, even at timings different from I / O refresh. Memory 42 includes RAM and ROM. In particular, the RAM has a storage area reserved for use as buffer memory. Memory 42 may have a buffer that temporarily holds data acquired by the field device 10 (e.g., still image data or video data).
[0025] Figure 5 is a schematic diagram showing the scan time of the basic unit 3. As shown in Figure 5, one scan time T consists of inter-unit communication 201 for refreshing input / output, program execution 202, and END processing 204. In inter-unit communication 201, the basic unit 3 executes a ladder program and sends the output data obtained from the storage device 32 within the basic unit 3 to an external device such as the expansion unit 4. Furthermore, the basic unit 3 takes in the input data received from an external device such as the expansion unit 4 into the storage device 32 within the basic unit 3. In other words, the device values stored in the devices of the basic unit 3 are reflected in the devices of the expansion unit 4 by output refresh. Similarly, the device values stored in the devices of the expansion unit 4 are reflected in the devices of the basic unit 3 by input refresh. In this way, the devices of the basic unit 3 and the devices of the expansion unit 4 are synchronized by input / output refresh. Note that a mechanism for updating device values between units at timings other than refresh (inter-unit synchronization) may be adopted. However, the devices of the basic unit 3 are rewritten by the basic unit 3 as needed, and similarly, the devices of the expansion unit 4 are rewritten by the expansion unit 4 as needed. In other words, the devices of the basic unit 3 are accessible at any time by the internal devices of the basic unit 3. Similarly, the devices of the expansion unit 4 are accessible at any time by the internal devices of the expansion unit 4. The basic unit 3 and the expansion unit 4 basically synchronize by mutually updating device values at refresh timings. In program execution 202, the basic unit 3 executes (calculates) the program using the updated input data. As shown in Figure 5, in program execution 202, multiple program modules or ladder programs may be executed sequentially according to the project data. The basic unit 3 processes the data through program execution. Note that END processing refers to all processing related to peripheral services such as data communication with external devices such as PC2 and displays (not shown) connected to the basic unit 3, and system error checking.
[0026] In this way, PC2 creates a ladder program in response to user operations and transfers the created ladder program to PLC1. PLC1 performs input / output refresh, ladder program execution, and END processing as one cycle (one scan), and repeats this cycle periodically, i.e., cyclically. This allows it to control various output devices (motors, etc.) based on timing signals from various input devices (sensors, etc.). In addition to the scan cycle, the basic unit 3 and expansion unit 4 each have their own internal control cycles. The basic unit 3 and expansion unit 4 control the functions of field devices 10 and other devices based on their internal control cycles.
[0027] <logging> When a user improves or modifies a user program, device values obtained while PLC1 is executing the user program can be useful. Therefore, PLC1 obtains pre-specified device values and creates log data. Here, the devices managed by PLC1 include not only those used by the user program, but also those not used by the user program. Furthermore, some devices are useful when improving or modifying the user program, while others are not. In general, the number of devices can reach several thousand, so specifying the necessary devices for the user was a significant burden. Therefore, PC2 analyzes the user program and extracts the devices used or described in the user program to be logged. This reduces the burden on the user.
[0028] If all devices managed by PLC1 are included in the logging process, the scan time will increase. This is because logging is performed as part of the user program or during I / O refresh. Sometimes, the delay caused by logging can prevent user programs from functioning as intended. Therefore, the number of devices included in the logging process should be kept appropriate.
[0029] A user program may consist of multiple program components (e.g., program modules (main ladder program and sub-ladder programs), function blocks). For some users, it may be sufficient if only the devices associated with the program component they wish to modify are logged. Furthermore, users may want to exclude or add specific program components from the logging target. Therefore, it would be convenient for users to be able to add or remove devices from the logging target on a program component basis.
[0030] As mentioned above, the basic unit 3 and expansion unit 4 each have one or more functions. Various devices are assigned to each function. Therefore, it would be convenient for the user if devices could be added or removed from the logging target on a unit basis. For example, if an undesirable event occurs related to the communication function of the basic unit 3, the user could easily resolve this event by referring to the device value of the device related to the communication function of the basic unit 3.
[0031] ● Logging settings (automatic extraction and addition / deletion) Figure 6 shows the functions realized by the CPU 21 of PC2 executing the editing software stored in the memory device 22. Some or all of these functions may be realized by hardware circuits such as ASICs or FPGAs. ASIC is an abbreviation for Application Integrated Circuit. FPGA is an abbreviation for Field Programmable Gate Array.
[0032] In this embodiment, the functions shown in Figure 6 are implemented on PC2, but the present invention is not limited to this and may also be implemented on PLC1.
[0033] The project creation unit 50 displays a UI for creating project data 71 on the display unit 7, creates the project data 71 according to user instructions input from the operation unit 8, and stores it in the storage device 22. UI is an abbreviation for user interface. The project data 71 includes the user program and configuration information of the PLC1. The program creation unit 63 creates multiple program components (each module) that make up the user program based on user operations via the UI. The function setting unit 62 performs settings related to the functions of the basic unit 3 and the expansion unit 4. For example, the function setting unit 62 assigns a device to a function provided in the basic unit 3, or assigns a device to a function provided in the expansion unit 4, and writes assignment information showing the relationship between the function and the device to the configuration information. The project creation unit 50 also stores program configuration information, which shows what program components the user program is composed of, as part of the project data 71. Unit configuration information, which shows what units the entire PLC1 is composed of, is also stored as part of the project data 71.
[0034] The log setting unit 51 analyzes the project data 71 to extract the devices described in the project data 71 and creates log setting data 72 to set the extracted devices as logging targets. The log setting unit 51 has various functions. The component specification unit 52 specifies the program components to be extracted as devices according to user instructions input from the operation unit 8. The component specification unit 52 also specifies the program components to be excluded from device extraction according to user instructions input from the operation unit 8.
[0035] The device extraction unit 53 analyzes the project data 71 to extract the devices described in the project data 71 and creates log setting data 72. The addition unit 54 analyzes the program components designated as extraction targets by the component designation unit 52, extracts the devices described in the program components, and adds them to the extraction list. The deletion unit 55 analyzes the program components designated as exclusion targets by the component designation unit 52, extracts the devices described in the program components, and deletes the extracted devices from the extraction list. Alternatively, the deletion unit 55 adds the extracted devices to the exclusion list. The merge unit 56 deletes duplicate devices extracted from multiple program components from the extraction list. The identification unit 57 detects instruction words for memory cards in the project data 71, identifies the devices targeted by those instruction words, and adds the identified devices to the extraction list.
[0036] In this embodiment, the component designation unit 52 designates a program component, and then the addition unit 54 analyzes the designated program component to extract and add devices to be logged. However, the present invention is not limited to this. For example, the addition unit 54 may first analyze one or more program components included in the project data 71 to extract devices, add the extracted devices to the extraction list, and then extract devices described in the program component designated by the component designation unit 52 and add them to the extraction list.
[0037] Similarly, the deletion unit 55 may first analyze one or more program components included in the project data 71 to create an extraction list, then extract the devices described in the program components specified by the component designation unit 52, and delete them from the extraction list.
[0038] In this embodiment, for the sake of explanation, the addition section 54 and the deletion section 55 are separated, but it goes without saying that they could be a single functional block.
[0039] The manual setting unit 58 adds a single device or a related series of devices to the extraction list according to user instructions input through the operation unit 8. The estimation unit 59 estimates the impact of recording device values by the PLC1 on the execution of the user program based on the number of devices extracted as recording targets by the device extraction unit 53. A delay time correlated with the number of device values is added to the scan time through logging. Therefore, the estimation unit 59 may calculate the delay time by multiplying the number of device values by a predetermined coefficient and display the delay time as the estimation result on the display unit 7. This delay time may be called the scan time extension.
[0040] The function designation unit 60 designates the functions of the basic unit 3 and expansion unit 4 that are to be extracted from the device, according to user instructions input from the operation unit 8. The function designation unit 60 also designates the functions of the basic unit 3 and expansion unit 4 that are to be excluded from the device extraction, according to user instructions input from the operation unit 8. The addition unit 54 analyzes the configuration information of the functions designated as extraction targets by the function designation unit 60, extracts the devices assigned to those functions based on the configuration information, and adds them to the extraction list. The deletion unit 55 analyzes the configuration information of the functions designated as exclusion targets by the function designation unit 60, extracts the devices assigned to those functions based on the configuration information, and deletes the extracted devices from the extraction list. The merge unit 56 deletes devices that have been extracted multiple times from the extraction list among the devices extracted for each of the multiple functions. The identification unit 57 detects command words for memory cards in the project data 71, identifies the devices targeted by those command words, and adds the identified devices to the extraction list.
[0041] The log display unit 61 reads the log data 73 generated in the PLC1 via the memory card 36 and displays the log data 73 on the display unit 7. For example, the log display unit 61 may associate the device values recorded in the log data 73 with the program components of the project data 71 and display them on the display unit 7. The log display unit 61 forms the core of the engineering tool for the programmable logic controller.
[0042] Figure 7 is a flowchart showing how to configure logging. Here, it is assumed that project data 71, which includes the user program, has already been completed.
[0043] In S1, the CPU 21 (component specification unit 52) accepts the specification of program components to be extracted from the device.
[0044] Figure 8 shows a UI 100 for accepting the selection of program components to be extracted from the device. When the logging configuration program is started, the log configuration unit 51 displays the UI 100 on the display unit 7. In the UI 100, multiple program components are shown in a tree structure based on their respective classifications (module / function block / macro). Each program component is also associated with a checkbox 102. When the pointer 101 checks a checkbox 102 in response to an operation on the operation unit 8, the add unit 54 adds the program component corresponding to the checked checkbox 102 to the extraction list. On the other hand, when the pointer 101 unchecks a checkbox 102 in response to an operation on the operation unit 8, the delete unit 55 deletes (excludes) the program component corresponding to the unchecked checkbox 102 from the extraction list.
[0045] In Figure 8, the per-scan module is a program component that is executed once each time the user program is scanned. In this example, the per-scan module has a main program and a submodule. The periodic module is a program component that is executed at regular intervals. The inter-unit synchronization module is a program component that is executed each time inter-unit synchronization is performed. The initialization module is not shown, but it is the module that is executed first when the user program is started. Therefore, the initialization module is less likely to cause problems and may be excluded from device extraction.
[0046] Function blocks (FBs) are called and used by user programs. Since function blocks are called from multiple modules, each module creates a separate instance. In this case, multiple instances may be selected individually as targets for device extraction, or all instances generated in relation to the original function block may be selected as targets for device extraction by selecting that function block.
[0047] Macros are a type of program, including macros used for data formatting and other similar tasks.
[0048] In S2, CPU21 (function specification unit 60) accepts the specification of the function to be extracted from the device.
[0049] Figure 9 shows a UI 110 for accepting the selection of functions to be extracted from the device. When the logging configuration program is started, the log configuration unit 51 displays the UI 110 on the display unit 7. Note that UI 100 and UI 110 may be displayed simultaneously, or they may be displayed selectively according to user operation. In UI 110, multiple functions are shown in a tree structure based on the unit to which they belong. In addition, each function is associated with a checkbox 102. When the pointer 101 checks a checkbox 102 in response to an operation on the operation unit 8, the addition unit 54 adds the function corresponding to the checked checkbox 102 to the extraction list. On the other hand, when the pointer 101 unchecks a checkbox 102 in response to an operation on the operation unit 8, the deletion unit 55 deletes (excludes) the function corresponding to the unchecked checkbox 102 from the extraction list.
[0050] In Figure 9, the communication error monitor, a function of the basic unit 3, monitors communication errors in the communication unit 33. The sensor I / O monitor monitors the input and output of sensors. The motion unit, also called the positioning unit, controls the position of the controlled object, called an axis. Generally, there is a drive source such as a motor for each axis. The analog input unit is a unit that samples the input analog signal and converts it into a digital signal. The unit monitor monitors the operation of expansion units 4, such as the motion unit and the analog input unit.
[0051] Here, as an example of a unit monitor, we will describe the unit monitor of a motion unit in more detail. Figure 10A is a schematic diagram of the screen of the unit monitor 440 for axis 1 of the motion unit. Figure 10B is a schematic diagram of the setting screen 441 for changing the target of monitoring by the unit monitor 440.
[0052] As shown in Figure 10A, the unit monitor 440 has set various items to be monitored, including current coordinates, command coordinates, current speed, command speed, feedback torque, load factor, and peak current. A buffer memory (UG) is assigned to each item. For example, UG4 and UG5 are assigned to the current coordinates. In this embodiment, 16 bits are allocated to one UG, and two UGs are allocated to represent the current coordinates in 32 bits. The device value of the UG is a numerical value such as 0PLS (pulse). In addition, UG8 and UG9 are assigned to the command coordinates. Two UGs are allocated for the same reason as above (to secure 32-bit representation). The allocation of UGs can be freely done by the unit designer, so there are also several unused UGs (UG6 and UG7). Similarly, UG10 and UG11 are assigned to the current speed, and UG12 and UG13 are assigned to the command speed. In addition, in Figure 10A, UGs are assigned to various items such as feedback torque, load factor, and peak current.
[0053] As shown in Figure 10B, the user can freely select (set) which items to monitor using the unit monitor 440. For example, by selecting an item from the "Hidden" column 442 shown in Figure 10B and clicking the right arrow button 443, that item moves to the "Displayed" column 444 and becomes subject to monitoring by the unit monitor 440. Clicking the OK button 445 confirms that the items listed in the "Displayed" column 444 are subject to monitoring. Note that while Figures 10A and 10B only describe the first axis of the motion unit, the process is similar for multiple axes such as axis 2 and axis 3. For each axis, the items selected by the user become subject to monitoring.
[0054] Generally, when a motion unit (expansion unit 4a) is used to drive a motor (field device 10a) and position a workpiece, the basic unit 3 sends an operation start command to the expansion unit 4a by turning on a relay device that indicates the motor positioning start trigger. After sending the operation start command, the basic unit 3 does not participate in the specific processing operations (workpiece positioning) of the expansion unit 4a. In other words, the basic unit 3 does not recognize the motor's current position or speed in real time, nor does it need to. Subsequently, when the processing operations of the expansion unit 4a are completed, the basic unit 3 recognizes the completion of motor positioning through the turning on of a relay device that indicates the motor positioning completion trigger. For this reason, devices (UGs) corresponding to the motor's current coordinates and current speed are basically not written in the ladder program (however, the user can write special commands in the ladder program to read a very small number of UGs).
[0055] However, when a problem occurs during PLC operation, it is sometimes necessary to know the motor's current coordinates and speed at the time the problem occurred in order to investigate the cause. In such cases, as mentioned above, the motor's current coordinates and speed are not basically written in the ladder program, so they are often not included in the list of data to be extracted for logging, making it difficult to investigate the cause.
[0056] Therefore, in this embodiment, the user can select the unit monitor of the motion unit through the UI 110 shown in Figure 9. As a result, the additional unit 54 can automatically add the UGs that are being monitored by the motion unit's unit monitor 440 to the extraction list, as explained using Figure 10B. The same applies to the communication error monitor and sensor I / O monitor of the basic unit 3, and the unit monitor of the analog input unit. Devices or parameters that are being monitored by each monitor can be automatically added to the extraction list.
[0057] While other monitors are not shown in the diagram, they will be briefly explained. The communication error monitor, a function of the basic unit 3, monitors, for example, the device assigned to the cyclic communication opening timeout error. The sensor I / O monitor, which monitors the input and output of sensors, monitors, for example, the device assigned to the output or error status of one or more sensors. The unit monitor of the analog input unit monitors, for example, the device (DM or R) assigned to various parameters such as AD conversion data, special data, offset value, zero shift, peak value, and bottom value. These devices are assigned in advance as defaults by the unit designer, but the monitored items may be changed by the user, as with the unit monitor of the motion unit described above. In short, the UI110 shown in Figure 9 is a setting screen that accepts function selection input from the user. For each selected function, a template (setting information) is associated with it that defines the monitoring items to be displayed on the display unit (monitor) (the template is stored in memory). The devices identified by the template may be those assigned in advance as defaults, as described above, or they may be those that have been added or removed (edited) by the user via the setting screen. When the function selection unit 60 selects one or more functions based on user operation, it adds the devices to be monitored to the extraction list according to the template associated with those functions.
[0058] In S3, the device extraction unit 53 analyzes the program component specified by the component specification unit 52 and extracts the devices described in the specified program component.
[0059] Figure 10C shows an example of devices extracted from a specified program component among multiple program components included in project data 71. Figure 10C shows the name of the program component from which the devices were extracted, the name (device number) of the first device, the number of devices extracted relative to the first device, and the names of the devices actually extracted for logging. Generally, a number of devices corresponding to the specified number are extracted relative to the first device. However, sometimes more devices than the specified number are extracted. R34000 is a relay device that holds 1 bit of information, but a series of 16 devices from R34000 to R34015 are extracted. This is because logging 16 bits of devices together is advantageous in terms of data processing speed. Note that in Figure 10C, the number of R34000 is "1," which represents 1 word (16 bits). Also, the number of CR4001s is listed as "1," which also indicates one word (16 bits consisting of CR4001, CR4002, ..., CR4015, CR4100). Global refers to a device that is commonly used by multiple program components. Main refers to the main program. first_operation is the name of the function block. Sub refers to a subprogram (submodule).
[0060] In S4, the device extraction unit 53 analyzes the configuration information of the function specified by the function designation unit 60 and extracts the devices associated with the function in the configuration information.
[0061] Figure 11 shows an example of devices extracted from a specified function (unit) among the multiple functions (basic unit 3 and expansion unit 4) provided in PLC1. In this example, several buffer memories (UGs) are extracted from the motion unit specified by the function designation unit 60. Figure 11 shows the name of the function from which the devices were extracted, the name (device number) of the first device, the number of devices extracted based on the first device, and the names of the devices actually extracted for logging. Here, devices that can be monitored by the motion unit's unit monitor are extracted. That is, as described above using Figure 10A, UG4-UG5 indicate the current coordinates of the motor, UG8-UG9 indicate the command coordinates of the motor, UG10-UG11 indicate the current speed of the motor, and UG12-UG13 indicate the command speed of the motor. Explanation of the other UGs is omitted.
[0062] In S5, the manual setting unit 58 adds the device manually specified by the user via the operation unit 8 to the extraction list. For example, the manual setting unit 58 may display a UI on the display unit 7 that allows the user to directly input the device number, etc., to assist the user in specifying the device.
[0063] In S6, the merge unit 56 merges devices extracted from program components, devices extracted from functions, and manually added devices to create a logging target list. The logging target list may also be called a device list.
[0064] Figure 12 illustrates the concept of the merge process. The device extraction unit 53 creates an extraction list L1 describing devices extracted from program components. The device extraction unit 53 creates an extraction list L2 describing devices extracted from functions. The device extraction unit 53 creates an extraction list L3 describing devices manually added by the user. The merge unit 56 merges the extraction lists L1 to L3 to create a logging target list L0. There is a possibility that devices extracted multiple times may be duplicated in the extraction lists L1 to L3. If the same device is logged multiple times, the log data will become bloated. Therefore, the merge process is performed to avoid duplicate logging of the same device. For example, the data memory DM0-DM100, which is a type of device, is registered in the extraction list L1. Also, the data memory DM50-DM200 is registered in the extraction list L3. In other words, DM50-DM100 is duplicated. The merge unit 56 merges DM0-DM100 and DM50-DM200 and describes DM0-DM200 in the logging target list L0.
[0065] In S7, the estimation unit 59 analyzes the logging target list L0, estimates the impact on the scan time, and displays the estimation result on the display unit 7.
[0066] Figure 13 shows a UI 140 for displaying the estimation results. The UI 140 displays the device size and the scan time extension. The device size refers to the total size of the devices described in the logging target list L0. The scan time extension is the delay time caused by logging. The estimation unit 59 analyzes the logging target list L0 and calculates the device size and the scan time extension. When the list button 141 is operated via the operation unit 8, the estimation unit 59 may display the logging target list L0 on the display unit 7. The user considers the estimation results and decides whether to finalize or adjust the logging target list L0. If the user decides to finalize the logging target list L0, the user may operate the button indicating their intention to finalize using the pointer 101.
[0067] In S8, the log setting unit 51 determines whether to confirm the logging targets. For example, if the button for confirming the logging target list L0 is operated, the log setting unit 51 determines to confirm the logging targets. On the other hand, if the button for modifying the logging target list L0 is operated, the log setting unit 51 determines to modify the logging targets. When modifying the logging targets, the log setting unit 51 repeats S3 to S8 to accept additions and deletions of program components and functions to be extracted from devices, and modifies the logging target list L0. For example, if the scan time increase exceeds an acceptable threshold, some devices will be deleted. If the scan time increase is less than the acceptable threshold, some devices may be added. Once the logging targets are confirmed, the CPU 21 proceeds to S9.
[0068] In S9, the log setting unit 51 creates log setting data 72, which includes the logging target list L0, and stores it in the storage device 22. The CPU 21 controls the communication unit 23 to send the log setting data 72 along with the project data 71 to the basic unit 3.
[0069] Here, devices such as data memory and buffer memory are primarily targeted for logging, but the operating status and configuration status of each function (e.g., IP address) may also be added to the logging targets.
[0070] Figure 14 shows the filter setting UI 120 used in the device extraction process. There are several types of devices associated with PLC1. Users may want to focus on a specific type of device and ignore other types. Therefore, the log setting unit 51 may display the filter setting UI 120 on the display unit 7 and accept the device types to be extracted and the device types to be excluded through checkboxes 102. For example, the device extraction unit 53 extracts device types that have been checked in checkbox 102 from program components and functions. The device extraction unit 53 does not extract device types that have been unchecked in checkbox 102 from program components and functions. This makes it possible to easily select devices to be logged according to the user's intentions.
[0071] Incidentally, the CPU 21 may re-execute the device extraction process when the project data 71 is modified by the project creation unit 50. This is because the device description in the user program may have been changed. The CPU 21 may also execute the device extraction process when the project creation unit 50 transfers the project data 71. Since the project data 71 is ultimately written to the PLC1, the number of times the device extraction process is executed can be reduced by triggering the device extraction process upon this write operation.
[0072] The device extraction unit 53 is implemented in PC2, but it may also be implemented in the basic unit 3. The CPU 31 extracts devices from the program components and functions specified by PC2 in the project data 71 and creates log setting data 72. In this case, the estimation unit 59 would also be implemented in the basic unit 3. ● Extracting devices Figure 15 is a flowchart showing the device extraction process from program components executed by the device extraction unit 53. Figure 16 shows an example of a ladder program. This ladder program is for controlling a motion unit that drives four axes as an expansion unit 4.
[0073] In S11, the device extraction unit 53 obtains the device number from the description of the i-th step of the program component designated as the extraction target. The initial value of i is 001. As shown in Figure 16, the step number is assigned to the left end of the ladder program. Step 001 describes that when the relay device MR000 is turned on, the relay device R34000, which gives permission for the motion unit to operate, is turned on, and the relay device R34305, which operates the servo of the first axis of the motion unit, is also turned on. Therefore, the device extraction unit 53 extracts MR000, R34000, and R34305 as device numbers. Note that device numbers may also be described by indirect reference or index reference. In this case, the device extraction unit 53 searches the program that has substituted the indirect reference target or index value and identifies the actual device number. Note that if the device extraction unit 53 fails to extract the actual device number, it may display a message indicating extraction failure on the display unit 7. Furthermore, the device extraction unit 53 may display a UI on the display unit 7 for the user to input the actual device number and accept user input. Moreover, considering the indirect and index references mentioned above, the device extraction unit 53 may extract not only specific devices directly described in the program, but also specific devices used in the program (such as devices identified by indirect or index references).
[0074] In S12, the device extraction unit 53 obtains the device range from the access range of the instruction. Some instruction takes the device number of the first device and the number of devices relative to the first device as arguments. For example, step 003 describes that when the relay device MR000 is turned on, the instruction FMOV is executed. In this example, FMOV is an instruction (an instruction for initializing related devices) that assigns a specified value (0) to a specified number of devices (10) relative to the first device (@EM0). In other words, the access range is defined by the starting address and the specified number. The device extraction unit 53 determines the range from @EM0 to @EM9 as the device range. Note that the access range may also be described by indirect reference or index reference. In this case, the device extraction unit 53 searches for the program that assigns the indirect reference target or index value and identifies the actual access range. Note that if the device extraction unit 53 fails to extract the actual access range, it may display a message indicating extraction failure on the display unit 7. Furthermore, the device extraction unit 53 may display a UI on the display unit 7 for the user to input the actual access range, and accept user input.
[0075] In S13, the device extraction unit 53 extracts devices based on the starting device number and device range, and adds the extracted devices to the extraction list. For example, from step 001, MR000, R34000, and R34005 are extracted and added to the extraction list. From step 003, @EM0 to @EM9 are extracted and added to the extraction list.
[0076] In S14, the device extraction unit 53 determines whether it has finished analyzing the device up to the end of the program for the specified program component. If it has not finished analyzing the device up to the end of the program, the device extraction unit 53 proceeds to S15. In S15, the device extraction unit 53 adds 1 to the variable i and returns to S11. If it has finished analyzing the device up to the end of the program, the device extraction unit 53 terminates the device extraction process.
[0077] Furthermore, the devices extracted from step 004 onwards in the ladder program shown in Figure 16 will be briefly explained below.
[0078] Steps 004 and 005 are requests for motor homing (operation), and R34310 is a relay device that indicates the trigger for starting motor homing. From this step, the devices MR001, R34310, R40905, R40910, and R34310 are extracted.
[0079] Steps 006 to 008 are processes that, when the motor's home position return is complete, read the home position return completion code from the motion unit and determine whether the home position return has been completed correctly. More specifically, R40910 is a relay device that indicates the motor's home position return completion trigger. Basic unit 3 does not recognize the specific processing operations of the home position return in the motion unit in real time, but rather determines whether the home position return has been completed by monitoring whether this flag R40910 is ON or OFF. When this flag R40910 is ON, the UREAD instruction is executed to directly read from the buffer memory. The UREAD instruction shown in Figure 16 is an instruction that reads from buffer memory 4060 in unit number 1 and assigns one word to device @EM0. Here, buffer memory 4060 stores the home position return completion code, which is 0 if the home position return is completed successfully, and a non-zero value (such as 1 or 2) if the home position return is completed abnormally. Then, as shown in step 007, if the device value of @EM0 is not 0, the base unit 3 sets device MR000 and recognizes that the home position return has terminated abnormally. On the other hand, as shown in step 008, if the device value of @EM0 is 0, the base unit 3 sets device MR001 and recognizes that the home position return has terminated successfully. From this step, the devices R40910, @EM0, @MR000, and @MR001 are extracted.
[0080] Step 009 is a process that waits for 1 second if the home position return is completed successfully. Device T0 has a set value of 10 (equivalent to 1 second, as it is in units of 100ms) and a current count value, and turns ON when the count value reaches the set value. From this step, devices MR001 and T0 are extracted.
[0081] Finally, in steps 010-011, when device T0 is turned ON, the function block "First_operation" is executed on unit number 1. The execution result is then stored in @MR002, and the completion code is stored in @EM1. From this step, devices @MR002 and @EM1 are extracted.
[0082] As detailed above using Figure 16, typical ladder programs only describe devices that correspond to the start of an operation, such as axis servo ON, home position return requests, and function block activation and results, or devices that correspond to the completion of an operation. However, in the event of a problem, information about the state during operation (such as the motor's current coordinates and current position) is useful for troubleshooting. Therefore, as mentioned above, UGs that are monitored by the unit monitor are also automatically added to the extraction list.
[0083] This extraction process is performed for each of the specified program components.
[0084] ● Execution of logging Figure 17 shows the functions of the CPU 31 of the basic unit 3. Some or all of these functions may be implemented by hardware circuits such as ASICs or FPGAs. ASIC stands for Application Integrated Circuit. FPGA stands for Field Programmable Gate Array.
[0085] The CPU 31 stores project data 71 and log setting data 72 received from the PC 2 in the storage device 32. The execution unit 80 has a ladder execution engine 80a that repeatedly executes the user program, and a unit control unit 80b that controls the ladder execution engine 80a and performs input / output refresh with the expansion unit 4. The ladder execution engine 80a of the execution unit 80 repeatedly executes the user program contained in the project data 71 and controls the expansion unit 4 according to the user program. The ladder execution engine 80a of the execution unit 80 also writes device values to output devices held in the basic unit device unit 34a of the device unit 34, and reads device values from input devices held in the basic unit device unit 34a, according to the user program.
[0086] On the other hand, the unit control unit 80b of the execution unit 80 reads and writes device values related to the expansion unit obtained by input / output refresh to the expansion unit device unit 34b. The basic unit and the expansion unit are electrically connected by an internal unit bus, and the unit control unit 80b has the function of controlling communication on this internal unit bus, a so-called bus master function. When the unit control unit 80b functions as a bus master, it performs refresh communication with each expansion unit based on the unit configuration information explained using Figure 6, that is, information indicating what kind of units make up the entire PLC1.
[0087] The recording unit 81 obtains device values from the device unit 34 (basic unit device unit 34a or expansion unit device unit 34b) or from the buffer memory of the expansion unit 4 according to the log setting data 72, and writes them to memory (for example, a ring buffer) as log data 73. As described above, the recording unit 81 performs logging processing when END processing is performed, etc.
[0088] The logging process in the END process will be explained in more detail. As explained using Figures 10C and 11, the log setting data 72 includes devices described in the program components specified by the component specification unit 52 and devices assigned to functions specified by the function specification unit 60 (for example, devices monitored by the unit monitor) as logging targets. For the former devices, they are written to the log data 73 during the END process, while for the latter devices, the device value of the target device (UG) is read from the expansion unit 4 during the END process and written to the log data 73.
[0089] Here, the update cycle for the motor's current coordinates and command coordinates (the so-called control cycle) is significantly shorter than the scan cycle of the ladder program. Therefore, in this embodiment, the device values of UG are read in synchronization with the scan cycle, so not all current coordinates and command coordinates are written to the log data 73. However, the present invention is not limited to this, and for example, it is also possible to configure the system to store the current coordinates and command coordinates in the memory of the expansion unit 4 for each control cycle, and to read out the multiple current coordinates and command coordinates stored up to that point at the timing of the scan cycle.
[0090] Furthermore, the recording unit 81 adds the time information held by the time management unit 83 to each record of the log data 73. As a result, the device values in the log data 73 are arranged in chronological order.
[0091] The devices to be logged are basically specified by the logging target list L0 in the log configuration data 72, but additional devices may be specified by the detection unit 82. The detection unit 82 may, for example, detect when an external device rewrites the device value of any of the devices included in the device unit 34. Generally, device values can be rewritten according to the user program or by an external device. Such rewriting cannot be predicted in advance by simply analyzing the user program. The recording unit 81 may add devices whose device value rewriting has been detected by the detection unit 82 to the logging targets. Generally, rewriting of device values from external devices tends to cause unexpected events for the user. Therefore, logging device values rewritten by external devices will be useful for the user to improve the program.
[0092] Incidentally, during END processing, a UG read command may be issued independently of the user program. UG is a device type that indicates a buffer memory. The detection unit 82 may detect a UG read command issued independently of the user program. The recording unit 81 may identify the buffer memory that is the target of the UG read command detected by the detection unit 82 and add the identified buffer memory as a recording target. If this expansion unit 4 is a motion unit, such a buffer memory stores torque values, current coordinate positions, etc.
[0093] The detection unit 82 may be implemented by an FPGA or the like. The execution unit 80 may be implemented by an ASIC. In this case, the execution unit 80 specifies the address of the device to be read / written to the storage device 32 using an address line. Therefore, the detection unit 82 may dynamically detect a device whose device value has been updated by monitoring this address line. This would be useful when adding a device to be recorded that is not described in the user program.
[0094] The detection unit 82 may be provided in the execution unit 80. In this case, the execution unit 80 may write a device value to a specific device of the device unit 34, and also write this device value and device name (device number) to the log data 73. This method would be useful when adding devices that are not described in the user program but are dynamically assigned to be recorded.
[0095] Thus, the recording unit 81 may record devices independently of the device list included in the log configuration data 72. In extreme cases, the user can obtain log data 73 without creating log configuration data 72. For example, when the execution unit 80 starts up, it obtains device values from all devices in the device unit 34. Since the detection unit 82 monitors the devices, it detects that the execution unit 80 has read a device value and transmits information (address information) about the device from which the device value was read to the recording unit 81. Based on the address information transmitted by the detection unit 82, the recording unit 81 reads device values from all devices included in the device unit 34 and writes them to log data 73. Thereafter, whenever the detection unit 82 detects access to the device unit 34, the recording unit 81 logs the device value.
[0096] Incidentally, the recording unit 81 may write the device value to the log data 73 at each scan cycle or at each predetermined collection cycle. For example, even if the detection unit 82 detects multiple accesses to the device within one cycle, the recording unit 81 may write only the device value at the time of the last detected access to the log data 73. This makes it possible to reduce the data size of the log data 73.
[0097] The execution unit 80 may have a cache for holding device data. In this case, the detection unit 82 may detect device writes by monitoring the cache.
[0098] The log configuration data 72 includes a device list indicating devices to be recorded, but may also include a device list indicating devices to be excluded from recording. In this case, if the detection unit 82 detects access to an excluded device, the recording unit 81 skips recording the device value for that device.
[0099] The detection unit 82 may detect the execution unit 80's access to the buffer memory of the expansion unit 4. In this case, the execution unit 80 writes the device value read from the buffer memory of the expansion unit 4 to a buffer or the like allocated in the storage device 32. The recording unit 81 reads the device value from the buffer and writes it to the log data 73.
[0100] The execution unit 80 repeatedly executes the user program and rewrites the device value according to the user program. If the detection unit 82 is implemented in the execution unit 80, when the execution unit 80 detects an instruction word to rewrite the device value, it outputs the instruction word along with the device value to the recording unit 81. The recording unit 81 may also write the instruction word, the device value, and the timestamp (the time the device value was acquired) to the log data 73.
[0101] Incidentally, the log configuration data 72 may include the data format of the log data 73 (e.g., binary format or text format). The data format may be set per device, and may include 16-bit decimal, 32-bit decimal, ±16-bit decimal, ±32-bit decimal, 16-bit hexadecimal, 32-bit hexadecimal, strings, float, double float, etc. Such data formats can be determined by analyzing the instruction words in the program components.
[0102] The output unit 84 writes project data 71, log data 73, and image data to the memory card 36 when predetermined output conditions are met, such as when the user program execution is completed or when the memory card save trigger relay is turned ON. Until the predetermined output conditions are met, log data 73 is recorded in memory (e.g., a ring buffer), and when the capacity is full, the oldest log data 73 is erased and new log data 73 is added (recorded in a so-called FIFO format). This memory card 36 is removed from the basic unit 3 and installed in the mounting section of the PC 2. As a result, the log data 73 is displayed on the display unit 7 of the PC 2. The output unit 84 may also transmit the log data 73 to the PC 2 or the cloud via the communication unit 33.
[0103] In this embodiment, log data 73 and the like are written to the memory card 36 when predetermined output conditions are met, but the present invention is not limited to this, and for example, they may be stored in internal memory 37 (non-volatile memory such as flash memory or hard disk). Furthermore, at least the log data 73 needs to be stored in the memory card 36 or internal memory 37 when predetermined output conditions are met, whereas the project data 71 is not limited to when predetermined output conditions are met. For example, it may be stored in advance in the memory card 36 or internal memory 37 when the PLC1 changes from setting mode (PROGRAM mode) to operation mode (RUN mode).
[0104] ● Creating configuration information Figure 18 illustrates the configuration information creation process (unit settings) performed by the function setting unit 62. The function setting unit 62 may also be called the unit editor. When the function setting unit 62 is instructed to start the unit editor, it displays the unit setting UI 150 on the display unit 7. The name field 151 is a field that displays the name of each unit (e.g., model number). Each unit is automatically assigned a unit number. In this example, the basic unit 3 is assigned the unit number "0". The input area field 152 is a field for assigning input system devices. In this example, devices R000 to R015 are assigned to the basic unit 3 as input system devices. The output area field 153 is a field for assigning output system devices. In this example, devices R500 to R507 are assigned to the basic unit 3 as output system devices. The occupied area field 154 is a field for assigning input / output mixed system devices. The end unit is the so-called termination unit. The user sets the type of expansion unit 4, the connection order, and the devices to be assigned through the operation unit 8. The function setting unit 62 stores information indicating the type of expansion unit 4, the connection order (unit number), and the devices assigned to the basic unit 3 and the expansion unit 4 in the configuration information. The configuration information may also be called unit setting information. Here, devices are assigned to each unit, but devices may also be assigned to each function of each unit. The function setting unit 62 manages the configuration information as part of the project data 71.
[0105] Thus, the configuration information includes information indicating the devices assigned to each unit and information indicating the devices assigned to each function. Therefore, the device extraction unit 53 can extract the devices assigned to each unit and devices assigned to each function by referring to the configuration information.
[0106] <Logging of large amounts of data> A camera exists as a field device 10. Users may want to acquire the state of a workpiece or controlled object using the camera and improve their user program by comparing the image with the device value. Therefore, the question arises as to how to manage the interrelated images and device values. This is because images are typically acquired by the expansion unit 4, and device values are typically acquired by the basic unit 3. Furthermore, the image acquisition cycle and the device value acquisition cycle are generally different. Given these circumstances, the question arises as to how to link and manage large-capacity data such as images with relatively small-capacity data such as device values.
[0107] Figure 19 shows the functions of the CPU 31 of the basic unit 3. The same reference numerals are used for parts that have already been described. In this example, the recording unit 81 has a data collection unit 92a. When predetermined data collection start conditions are met, the data collection unit 92a reads the device value specified by the log setting data 72 from the device value held in the device unit 34, and also obtains time information from the time management unit 83a. The data collection unit 92a associates the device value and time information and stores them in the ring buffer 91a. The data collection unit 92a also obtains the device value and time information at each collection cycle (e.g., scan cycle) specified by the log setting data 72 and stores them in the ring buffer 91a. The reason for using the ring buffer 91a is that not all data stored in the ring buffer 91a is saved to the memory card 36 as log data 73. For example, the storage unit 93 may read the device value and time information from the ring buffer 91a when predetermined storage conditions are met, create log data 73, and save it to the memory card 36. Similarly, when predetermined storage conditions are met, the storage unit 93 may read large-capacity data and time information from the expansion unit 4, create log data 73, and save it to the memory card 36. The storage unit 93 saves the device values and time information described above in association with the large-capacity data and time information described above. Here, "saving in association" means that the data is saved in a format that is easy to play back on the PC2, for example, file management that associates multiple files may be used. To explain in more detail, if the memory card 36 has a first subfolder where device values and time information are stored and a second subfolder where large-capacity data and time information are stored under a specific folder, the path to the specific folder (directory path) becomes a common flag, and using this common flag, it becomes possible to save the files in the first subfolder and the files in the second subfolder in association. Also, if there is another folder located at the same level (directory) as the specific folder described above, that other folder represents a data package saved at a different time. Of course, the same subfolders as described above are also placed under this other folder.Thus, the storage unit 93 may store the above-mentioned device values and time information, and the above-mentioned data (large-capacity data) and time information, in multiple files identified by a common flag (a predetermined directory path), and save these multiple files. Alternatively, for example, it is also possible to save them "associated" by using a file name as the common flag and generating files with the same or corresponding file names. Another example is to use time information as a key to associate device values and data (large-capacity data) and list them, and then combine these into a single file to save them "associated". In this embodiment, large-capacity data was considered as an example of data from a monitoring device, but it goes without saying that other continuous data such as motion data, communication data, or audio data may also be used. The transmission unit 94 may send the log data 73 to a PC2 or the cloud. When the ring buffer 91a is full, the collection unit 92a overwrites the oldest information held in the ring buffer 91a with the newest information.
[0108] Here, the ring buffer 91a is used as an example of a buffer, but this is just one example. A FIFO-type buffer would suffice.
[0109] Figure 20 is a diagram illustrating the functions of the CPU 41 of the expansion unit 4, which has a camera input function. The clock of the time management unit 83b is synchronized with the clock of the time management unit 83a of the basic unit 3. For example, the time management unit 83a transmits time information to the time management unit 83b during END processing. Based on the received time information, the time management unit 83b synchronizes its own clock with the clock of the time management unit 83a. The clock may be implemented by a counter that counts time based on the time information. The acquisition unit 92b outputs a trigger signal periodically, for example, when predetermined acquisition conditions (e.g., a predetermined relay device has been turned on) are met. The time management unit 83b acquires the time information from the clock when the trigger signal is input and stores it in the time information buffer 95. The memory 42 has a time information buffer 95 and a ring buffer 91a. The connection port 97 is an interface for connecting the camera 98 to the expansion unit 4. The connection port 97 periodically outputs trigger signals issued by the acquisition unit 92b to the camera 98, and outputs image data output by the camera 98 to the image receiving unit 96a. Image data is an example of large-capacity data. The connection port 97 is an example of a second external interface connected to a monitoring device such as the camera 98, and data (image data) is input from that monitoring device. The image receiving unit 96a is all or part of the function execution unit 96, which performs the imaging function with input of image data from the camera 98 via the connection port 97. In this embodiment, the function execution unit 96 (image receiving unit 96a) controls the camera 98 based on imaging parameters (an example of setting information) such as exposure time, gain, white balance, and contrast. Such imaging parameters are set in the PC2 with desired parameter values, and sent to the function execution unit 96 via the communication unit 33 and CPU 31 of the basic unit 3 shown in Figure 4. Therefore, the communication unit 33 shown in Figure 4 is an example of a first external interface that receives setting information from external setting devices such as the PC2 and a display. Furthermore, the communication unit 33, which serves as the first external interface, also accepts user programs created on the PC2, as described above. The camera 98 performs imaging according to the trigger signal and outputs image data. The image receiving unit 96a transfers the image data to the acquisition unit 92b.The acquisition unit 92b associates the time information held in the time information buffer 95 with the image data output from the image receiving unit 96a and stores it in the ring buffer 91a. When the ring buffer 91b is full, the acquisition unit 92b overwrites the oldest information held in the ring buffer 91b with the newest information. In this embodiment, the acquisition unit 92b automatically and periodically outputs an imaging trigger signal to the camera 98, but the present invention is not limited to this, and the acquisition unit 92b may output an imaging trigger signal to the camera 98 based on a command from, for example, a user program.
[0110] Incidentally, the basic unit 3 communicates with the expansion unit 4 using one of the following methods: refresh communication performed with each scan, direct communication that can be executed at any time, or message communication that is executed on an event basis. The storage unit 93, for example, reads image data and time information from the ring buffer 91b of the expansion unit 4 using direct communication and appends it to the log data 73. In addition, multiple direct communications with different priorities may be implemented. In this case, the priority of direct communications executed in relation to user programs may be set relatively high, and the priority of direct communications for logging may be set relatively low. This makes it possible to reduce the impact of logging on the execution of user programs.
[0111] <Logging using a ring buffer> Figure 21 shows the device value and time information held in the ring buffer 91a of the basic unit 3. Each record contains the acquired device value and time information indicating the time when this device value was acquired.
[0112] Figure 21 further shows the image data and time information held in the ring buffer 91b of the expansion unit 4. Each record contains the acquired image data and time information indicating the time when this image data was acquired.
[0113] Figure 22 shows logging using the ring buffer 91a in the basic unit 3.
[0114] In S21, the CPU 31 (data acquisition unit 92a) determines whether the conditions for acquiring the device value have been met. The acquisition conditions are the conditions for starting the storage of the device value and time information into the ring buffer 91a. The acquisition conditions may be described in the user program (e.g., the start relay has been turned on) or in the log setting data 72. If the acquisition conditions are met, the CPU 31 proceeds to S22.
[0115] In S22, the CPU 31 (data acquisition unit 92a) turns on the acquisition relay. The acquisition relay is a single-bit device and is a relay that instructs the expansion unit 4 to store data in the ring buffer 91b.
[0116] In S23, the CPU 31 (data acquisition unit 92a) determines whether it is time to acquire the device value. The acquisition timing is defined by the log setting data 72, for example, at each scan cycle (e.g., acquisition during the END processing of each scan). When the acquisition timing arrives, the CPU 31 proceeds to S24.
[0117] In S24, the CPU 31 (collection unit 92a) obtains the device value specified by the log setting data 72 from the device unit 34, and also obtains time information from the time management unit 83a, and writes these to the ring buffer 91a.
[0118] In S25, the CPU 31 (data collection unit 92a) determines whether the save timing has arrived. The save timing is the timing at which the information held in the ring buffer 91a is saved to the log data 73. The save timing may also be, for example, when a predetermined event (e.g., save trigger) occurs. The save timing is also defined by the log setting data 72. If the save timing has not arrived, the CPU 31 returns to S23. If the save timing has arrived, the CPU 31 proceeds to S26.
[0119] In S26, the CPU 31 (collection unit 92a) saves the information held in the ring buffer 91a to log data 73. Note that the information to be saved from the information held in the ring buffer 91a may be defined by the log setting data 72. For example, the information to be saved may be information acquired from the time an event occurs until a predetermined time has elapsed. Alternatively, the information to be saved may be information acquired from a start time, which is a predetermined time before an event occurs, to an end time, which is a predetermined time after the event occurs.
[0120] In S27, the collection unit 92a saves the information held in the ring buffer 91b of the expansion unit 4 to the log data 73. The collection unit 92a may also read the information held in the ring buffer 91b of the expansion unit 4 using direct communication. More specifically, the collection unit 92a may issue a command to read information from the buffer memory. The information to be saved among the information held in the ring buffer 91b may also be defined by the log setting data 72. For example, the information to be saved may be information acquired from the time an event occurs until a predetermined time has elapsed. Alternatively, the information to be saved may be information acquired from a start time, which is a predetermined time before an event occurs, to an end time, which is a predetermined time after the event occurs.
[0121] In S28, the data collection unit 92a determines whether the termination condition has been met. The termination condition is the logging termination condition. The termination condition may also be defined by the log configuration data 72. If the termination condition has not been met, the CPU 31 returns to S23. If the termination condition has been met, the CPU 31 terminates the logging process.
[0122] Figure 23 shows logging using the ring buffer 91b in the expansion unit 4.
[0123] In S31, the CPU 41 (acquisition unit 92b) determines whether the conditions for acquiring image data (e.g., the acquisition relay being turned ON) have been met. When the acquisition relay is turned ON, the CPU 41 proceeds to S32. In this embodiment, the acquisition conditions for image data are determined to be met when the acquisition relay is turned ON, but this is just one example. For example, the acquisition conditions for image data may also be determined to be met when the mode of PLC1 is switched to the operation mode. More specifically, PLC1 may be provided with a mode selector switch that switches between a setting mode (program mode) for making various settings and an operation mode (RUN mode) for performing actual operation by repeatedly executing a ladder program. In this case, the acquisition conditions for image data may be determined to be met when the user switches this mode selector switch from program mode to RUN mode.
[0124] In S32, the CPU 41 (acquisition unit 92b) determines whether it is time to acquire image data. The acquisition timing is, for example, every internal control cycle (imaging cycle) of the expansion unit 4. When the acquisition timing arrives, the CPU 41 proceeds to S33.
[0125] In S33, the CPU 41 (acquisition unit 92b) acquires large amounts of data and time information and stores it in the ring buffer 91b. For example, the acquisition unit 92b issues a trigger signal and outputs it to the camera 98 and the time management unit 83b. When the time management unit 83b receives the trigger signal, it reads the time information from its internal clock and writes it to the time information buffer 95. The camera 98 performs imaging according to pre-specified imaging conditions and outputs image data. The image receiving unit 96a outputs the image data to the acquisition unit 92b. The image receiving unit 96a may also write the image data directly to the ring buffer 91b. The acquisition unit 92b associates the time information read from the time information buffer 95 with the image data acquired by the camera 98 and writes it to the ring buffer 91b.
[0126] In S34, the CPU 41 (data acquisition unit 92b) determines whether a read request (read command) has been issued from the basic unit 3 to the ring buffer 91b. If a read request has been received, the CPU 41 proceeds to S35. If no read request has been issued, the CPU 41 returns to S32.
[0127] In S35, the CPU 41 (acquisition unit 92b) acquires large amounts of data, namely image data and time information, from the ring buffer 91b and transmits it to the basic unit 3.
[0128] In S36, the CPU 41 (data acquisition unit 92b) determines whether the termination condition has been met. For example, the data acquisition unit 92b determines whether the acquisition relay has been turned OFF. If the termination condition has not been met, the CPU 41 returns to S32. If the termination condition has been met, the CPU 41 terminates the logging process.
[0129] <Connection type> Figure 24 shows the connection configuration of a building block type PLC1. An IF99a is provided on the right side of the basic unit 3 for communication with the expansion unit 4. IF is an abbreviation for interface. In this example, the basic unit 3 is connected to the expansion unit 4a, and the expansion unit 4a is connected to the expansion unit 4b. The expansion unit 4 has IF99 on both its right and left sides. The right side of the basic unit 3 faces the left side of the expansion unit 4a. Therefore, the IF99a of the basic unit 3 connects to the IF99b provided on the left side of the expansion unit 4a. The right side of the expansion unit 4a faces the left side of the expansion unit 4b. Therefore, the IF99c of the expansion unit 4a connects to the IF99d provided on the left side of the expansion unit 4b. Note that the IF99e provided on the right side of the expansion unit 4b may be connected to an end unit. In this way, IF99a to IF99e form the unit's internal bus 90. For example, image data acquired by camera 98a connected to expansion unit 4a can be transferred to base unit 3 via the unit's internal bus 90. Image data acquired by camera 98b connected to expansion unit 4b can be transferred to base unit 3 via the unit's internal bus 90.
[0130] In this building block type PLC1, the side of each unit serves as the connection surface (linking surface). IF99, which forms part of the unit's internal bus 90, is also provided on the side of each unit. As mentioned above, communication on the unit's internal bus 90 is controlled by the bus master 38 shown in Figure 4.
[0131] Figure 25 shows the connection configuration of PLC1 having a backplane 200. The backplane 200 is connected to the bottom surface of the basic unit 3 and the bottom surface of the expansion unit 4, or to the back surface of the basic unit 3 and the back surface of the expansion unit 4. The backplane 200 functions as a support plate (base plate) that supports the basic unit 3 and the expansion unit 4. Here, the back surface is described as the connection surface as an example. The back surface of the basic unit 3 faces the front surface of the backplane 200. Therefore, IF99f provided on the back surface of the basic unit 3 is connected to IF99g provided on the front surface of the backplane 200. The back surface of the expansion unit 4 faces the front surface of the backplane 200. IF99h provided on the back surface of expansion unit 4a is connected to IF99i provided on the front surface of the backplane 200. IF99j provided on the back surface of expansion unit 4b is connected to IF99k provided on the front surface of the backplane 200. IF99f to IF99k form the unit internal bus 90.
[0132] The backplane 200 may also have a communication control unit 213 for controlling bus communication via the unit's internal bus 90. The backplane 200 may also have a CPU 211 and a memory 212. The memory 212 may have a memory card 36 in addition to RAM and ROM. In this case, the CPU 211 may function as an acquisition unit 92a and a storage unit 93. The memory 212 may also be provided with a ring buffer 91a. Alternatively, the CPU 211 may have a time management unit 83b and an acquisition unit 92. In this case, the memory 212 has a ring buffer 91b.
[0133] <Example of log display> Figure 26 shows an example of log data 73. In this example, the acquisition timing of device values d1 to d10, work images i1 to i3 acquired by camera 98a, and other images j1 to j3 acquired by camera 98b are shown. Device values d1 to d10 are acquired at each scan cycle. Work images i1 to i3 are acquired when the trigger signal is generated. Work images j1 to j3 are acquired when the trigger signal is generated. The position of each data indicates its respective time information. As shown in Figure 26, the acquisition times and acquisition cycles of each data do not coincide. Therefore, the log display unit 61 adjusts the display timing of each data based on the time information of each data.
[0134] Figure 27 illustrates the display timing and display duration of log data 73. The log display unit 61 displays each device value on the display unit 7 according to the time information of each device value. For example, the log display unit 61 determines the display duration of device value d1 as the difference time between the time information of device value d1 and the time information of device value d2. After the display duration has elapsed since the start of displaying device value d1, the log display unit 61 starts displaying device value d2. The display duration is determined similarly thereafter, and the displayed device values are switched according to the time information and display duration.
[0135] As already shown in Figure 26, the acquisition time of device value d1 and the acquisition time of work image i1 do not coincide. Therefore, the log display unit 61 compares the acquisition time of work image i1 with the acquisition times of device values d1 to d10 and finds the acquisition time of device value dx that is closest to the acquisition time of work image i1. In this example, the acquisition time of device value d1 is closest to the acquisition time of work image i1. Therefore, the log display unit 61 starts displaying device value d1 and work image i1. Next, the log display unit 61 finds the acquisition time of device value dx that is closest to the acquisition time of work image i2. In this example, the acquisition time of device value d4 is closest to the acquisition time of work image i2. Therefore, when the timing for displaying device value d4 arrives, the log display unit 61 starts displaying device value d4 and work image i2. The log display unit 61 finds the acquisition time of device value dx that is closest to the acquisition time of the other image j1. In this example, the acquisition time of device value d2 is closest to the acquisition time of other image j1. Therefore, when the timing for displaying device value d2 arrives, the log display unit 61 starts displaying device value d2 and simultaneously starts displaying other image j1.
[0136] In this way, the display timing of each data item may be adjusted based on the data item with the shortest logging cycle among the multiple data items included in the log data 73.
[0137] Figure 28 illustrates how log data 73 is displayed. In this example, the relay device R000 and data memory DM100 are obtained as device values dx (x takes values from 1 to 10). In this way, multiple device values are associated with a single work image ix according to time information. The log display unit 61 may display the device value dx, work image ix, and other images jx in a single window, or each may be displayed in separate windows. The log display unit 61 may also read the user program from the project data 71, map the device value dx to the user program, and display it. For example, the log display unit 61 may search for a step containing an instruction related to the device value dx to be displayed, display the found step, and display the device value below the instruction in that step. Note that the device to be displayed may also be a relay device. The log display unit 61 may change the display color or icon image (e.g., arrow) of the instruction depending on whether the relay device is on or off. There are icon images that indicate on and icons that indicate off. The log display unit 61 may also display the device values as a graph. In this case, the log display unit 61 always displays device values d1 to d10 in one window and displays work images in other windows. The log display unit 61 switches work images as time progresses. Here, the log display unit 61 may display a bar 103 that can move along the time axis. The bar 103 may also be called a timeline bar. The log display unit 61 may display the bar 103 so that it moves from left to right as time progresses. The bar 103 may be moved by the user. In this case, the log display unit 61 accepts movement operations of the bar 103 (e.g., drag operation with pointer 101) through the operation unit 8 and updates the display time according to the movement operation. The log display unit 61 may extract the device value, work image, and other images whose acquisition time is closest to the display time specified by the bar 103 from the log data 73 and display them on the display unit 7.
[0138] In this embodiment, a camera 98 is used as an example of monitoring equipment, and the imaging function of the camera 98 is used as an example of the function execution unit 96. The present invention is not limited to this, and the function execution unit 96 may also have motion functions or communication functions. First, to elaborate on the former motion function, consider the case where a motion unit is connected to the basic unit 3 as an expansion unit 4. In this case, the PC2 sets a program (motion flow program) and parameters (such as axis configuration and axis control setting parameters) that define the operation of the motion unit, and so-called setting information is created. Then, the setting information is sent to the function execution unit of the motion unit via the first external interface (communication unit 33) and reflected in the motion unit. The function execution unit of the motion unit transmits operation command values such as target coordinates and target speed to an externally connected motor amplifier according to the setting information. The motor amplifier receives motion data such as current coordinates and current speed via an encoder. The control period for receiving motion data such as current coordinates and current speed is shorter than the scan period of the ladder program and is asynchronous with the scan period of the ladder program. Therefore, the motion unit's data collection unit collects motion data at predetermined intervals and stores the motion data in the ring buffer 91b, associating it with information about the time the motion data was received. Then, similar to the process described using Figure 22, when it is time to save (similar to step S25 in Figure 22), the motion data (such as current coordinates and current velocity) and time information are obtained from the ring buffer 91b and appended to the log data. This makes it easy to identify which device value is associated with which motion data. On the other hand, to elaborate on the latter communication control, consider the case where the communication unit is connected to the basic unit 3 as an extension unit 4. In this case, the PC 2 sets the program (communication flow program) and parameters (such as communication cycle and transfer speed) that define the operation of the communication unit, and setting information is created. Then, similar to the motion control described above, the setting information is reflected in the communication unit via the communication unit 33.The function execution unit of the communication unit receives communication data, such as multiple sensor values, from an externally connected sensor group (such as a group of multiple photoelectric sensors linked together) according to the configuration information. The reception period of such communication data (cyclic communication period) is asynchronous with the scan period of the ladder program. Note that if the number of sensors constituting the sensor group is large, the communication data itself may constitute large-capacity data. The collection unit of the communication unit collects the communication data at a predetermined period (the so-called cyclic communication period), associates the communication data with information about the reception time, and stores it in the ring buffer 91b. Then, as in the process explained using Figure 22, when it is time to save (similar to step S25 in Figure 22), the communication data (sensor values, etc.) and time information are obtained from the ring buffer 91b and appended to the log data.
[0139] <Setting the collection period> The log setting unit 51 may accept a setting for the collection period of the log data 73.
[0140] Figure 29 shows UI160 for setting the collection period. Note that UI160, UI110, and UI100 can be switched by selecting the corresponding tab with pointer 101. UI160 has a pull-down menu 161 for specifying the collection method. The collection method is the method for collecting log data 73. In this example, two collection methods are described: one called "before and after save trigger" and another called "start relay". "Before and after save trigger" is a method of collecting log data 73 at a collection time Ta before the save trigger is turned on and at a collection time Tb after the save trigger is turned on. Text box 162 accepts input for collection time T. Collection time T is the sum of collection time Ta and collection time Tb. Text box 163 accepts input for collection time Tb after the trigger. The save trigger setting section 164 accepts the device name of the relay device used as the save trigger and the setting of the condition (e.g., switching from off to on). The upward arrow indicates that the relay device designated as the save trigger has switched from off to on. The guidance section 165 is a UI for explaining the collection period. In this example, it is shown that log data 73 is collected at the save trigger. The log setting section 51 may also display information about the device size and scan time increase in the UI 160.
[0141] In the collection method called "pre- and post-save trigger," device values and image data are constantly stored in the ring buffer 91. When the relay device R200, which is the save trigger, is turned on, the storage unit 93 creates log data 73 for 20 seconds, which is the collection time specified. The storage unit 93 reads data from the ring buffer 91, from data recorded 18 seconds before the relay device R200 was turned on to data recorded up to 2 seconds after that timing, and creates log data 73.
[0142] Figure 30 shows the UI 160 for setting the collection period. In this example, the start relay is selected as the collection method from the pull-down menu 161 by the pointer 101. The log setting unit 51 modifies the UI 160 according to the collection method selected by the user. The text box 166 accepts the device name of the relay device to be used as the start relay. As indicated by the guidance unit 165, in the collection method called start relay, the timing when the start relay is turned on becomes the starting point of the collection time. For example, suppose it takes 30 seconds to press one workpiece coming down the manufacturing line. Also, suppose that the time when problems may occur is the first 20 seconds of the 30-second processing time. Relay device R000 is a relay that defines the timing to start the press process. When relay device R000 is turned on, the collection unit 92 stores the device value and image data in the ring buffer 91 for 20 seconds. When the next workpiece arrives and relay device R000 is turned on again, the collection unit 92 stores the device value and image data in the ring buffer 91 for 20 seconds. When the relay device R200, which acts as a save trigger, is turned on, the storage unit 93 retrieves the latest device values and image data for the past 20 seconds stored in the ring buffer 91 and creates log data 73. The relay device R200, which acts as a save trigger, is a relay device that turns on when a problem occurs.
[0143] The log setting unit 51 stores the information configured via the UI 160 in the log setting data 72 and transfers it to the basic unit 3 along with the project data 71.
[0144] <Debug> Figure 31 is a flowchart illustrating the debugging process for user programs executed by the user.
[0145] In S41, the user operates PC2 to create a user program consisting of multiple program components and creates project data 71 containing the user program. The program creation unit 63 creates the user program according to the user input and stores it in the storage device 22. The project creation unit 50 creates project data 71 according to the user input and stores it in the storage device 22. The project data 71 includes identification information for identifying the project data 71 or the user program. The project creation unit 50 may perform calculations on the project data 71 or the user program to obtain a hash value or an error detection code, etc., and add these to the project data 71 as identification information. The identification information may also be a GUID (Globally Unique Identifier), etc.
[0146] In S42, the user operates PC2 and transfers project data 71 to PLC1. The project creation unit 50 reads the project data 71 from the storage device 22 and transmits it to PLC1 via the communication unit 23. When the basic unit 3 of PLC1 receives the project data 71, it writes it to the storage device 32.
[0147] In S43, the user operates the operation unit 6 of the basic unit 3 (for example, by operating the mode switching switch to switch from PROGRAM mode to RUN mode) to instruct the execution of the project. The execution unit 80 executes the user program contained in the project data 71. The recording unit 81 logs device values and stores (records) the logged device values in the ring buffer 91a. When predetermined output conditions are met, the storage unit 93 of the output unit 84 creates log data 73 by saving the device values recorded in the ring buffer 91a and the image data described above to the memory card 36 or internal memory 37.
[0148] Furthermore, as shown in Figure 19, the storage unit 93 saves project data 71 in memory in addition to log data 73. This allows PC2 to use the project data 71 from the time of the trouble to reproduce the behavior at the time of the trouble on the monitor. Details will be described later.
[0149] Furthermore, the storage unit 93 stores in memory not only the project data 71 but also identification information (such as a hash value) of the project data 71. This allows the PC2 to use this identification information to verify whether the current project data (to be replayed) matches the project data 71 at the time the actual trouble occurred. Details will be described later.
[0150] In this embodiment, project data 71 and its identification information are stored in memory in addition to log data 73 when predetermined output conditions are met, but the present invention is not limited to this. For example, project data 71 and its identification information may be stored in memory before, at the start of, or during operation of PLC1, and only log data 73 may be stored in memory when predetermined output conditions are met. In short, it is sufficient that log data 73, project data 71, and its identification information are stored in memory in an associated state when predetermined output conditions are met.
[0151] Furthermore, although the project data 71 is stored in memory in this embodiment, the present invention is not limited to this, and for example, instead of the project data 71, only the identification information of the project data 71 may be stored in memory. In this case, it is assumed that the current project data in PC2 matches the project data 71 at the time the actual trouble occurred. That is, it is assumed that the current project data has not been edited or modified after the project data was transferred to PLC1. If it is determined that the two data do not match, the user can perform a replay after recognizing that the current project data is different from the project data 71 at the time the actual trouble occurred, thus preventing the replay (inaccurate troubleshooting) from being performed without the user's awareness.
[0152] In S44, the user operates the control panel 6 of the basic unit 3 to instruct it to transfer project data 71 and log data 73 to PC2. Alternatively, the user may operate the control panel 8 of PC2 to read the project data 71, the identification information of project data 71, and the log data 73 written to the memory card 36. The output unit 84 transmits the project data 71 and log data 73 to PC2. The output unit 84 may also adopt a configuration in which, if it determines that the transfer of project data 71 is prohibited, it adds the identification information of project data 71 to the log data 73. The identification information of project data 71 and the log data 73 may be transmitted separately. The output unit 84 may, at the timing when predetermined conditions for writing to the memory card 36 are met, perform an operation (for example, using a hash function) on the project data 71 or user program to obtain a hash value or error detection code, and add these as identification information to the log data 73. Furthermore, any rules may be adopted as long as the rules for creating identification information executed by PC2 and the rules for creating identification information executed by basic unit 3 are consistent.
[0153] In S45, the user operates PC2 to investigate the cause of the trouble while replaying log data 73, and debug the user program that constitutes project data 71. Replaying log data 73 includes displaying time-series device values contained in log data 73 as waveforms on the display unit 7, displaying device values associated with user programs, and displaying time-series image data contained in log data 73 on the display unit 7. The log display unit 61 has an internal clock that measures a virtual time, and acquires device values from log data 73 in synchronization with the internal clock and displays them on the display unit 7. Project data 71 may not be transmitted from PLC1. In this case, the log display unit 61 may use the user program of project data 71 (master data) held in the storage device 22 to display device values associated with user programs. Details of investigating the cause of the trouble by replaying log data 73 will be described later.
[0154] One point to note here is that the version of project data 71 used to acquire log data 73 may differ from the version of project data 71 held on PC2. In this case, it may become impossible to associate the device value with the user program, or the association between the user program and the device value may be incorrect. In this case, the log display unit 61 may use the project data identification information to display a warning on the display unit 7 indicating that the version of project data 71 used to acquire log data 73 differs from the version of project data 71 held on PC2. The log display unit 61 may also ask the user whether they want to display the log data 73 acquired using the first version of project data 71 in association with the second version of project data 71 held on PC2. If the user requests such a display, the log display unit 61 will display the log data 73 acquired using the first version of project data 71 in association with the second version of project data 71 held on PC2 on the display unit 7. The version is managed by the identification information. Once the user confirms that there are no problems with the log data 73, debugging is unnecessary, and the subsequent steps S46 and S47 are also unnecessary. The user analyzes the log data 73, finds any bugs in the user program, and corrects the user program. The project creation unit 50 corrects (updates) the project data 71 according to the user input and stores it in the storage device 22.
[0155] In S46, the user operates PC2 and transfers project data 71 to PLC1. When the user program within project data 71 is modified, the identification information is updated. This makes it possible to distinguish between the original project data 71 and the modified project data 71.
[0156] In S47, the user operates the basic unit 3 and verifies the project data 71 by instructing it to execute the user program contained in the project data 71. The execution unit 80 executes the user program contained in the project data 71. If the PLC1 operates as expected by the user, the user determines that debugging of the project data 71 has been successful. If the PLC1 does not operate as expected by the user, the recording unit 81 logs device values and other information again, and the storage unit 93 creates log data 73. The user then executes S44 or S47 again.
[0157] In this way, users can debug project data 71 while referring to log data 73. Therefore, it is expected that debugging efficiency will improve.
[0158] The transfer of project data 71 may also be performed via memory card 36. That is, PC2 writes to memory card 36. The user removes memory card 36 from PC2 and installs it into basic unit 3. Basic unit 3 reads project data 71 from memory card 36 and writes it to storage device 32. Similarly, the transfer of log data 73 may also be performed via memory card 36.
[0159] <Output section> Figure 32 shows the output unit 84 implemented in the basic unit 3. In addition to the log data 73, the output unit 84 may also transfer the project data 71 used to acquire the log data 73 to the PC 2. However, to prevent information leakage of the project data 71, access permissions (protection) may be set on the project data 71 that prohibit writing to the memory card 36 or sending to the PC 2. Therefore, the determination unit 301 refers to the access permissions granted to the project data 71 and determines whether the output of the project data 71 is prohibited. If the output of the project data 71 is prohibited, the output unit 84 outputs the log data 73 but not the project data 71. On the other hand, if the output of the project data 71 is not prohibited, the output unit 84 outputs both the log data 73 and the project data 71. If the output of the project data 71 is prohibited, the add-on unit 302 may output the identification information of the project data 71 held in the storage device 32 along with the log data 73. This identification information may be part of the project data 71, or the arithmetic unit 303 may obtain the identification information by performing a predetermined operation on the project data 71 or the user program. The predetermined operation may be, for example, a hash operation or an error detection code operation. The real-time transmission unit 304 transmits the device value held in the device unit 34 in real time. This is useful when displaying the device value in real time on a display device such as a PC2 or an HMI (Human Interface).
[0160] <Project Creation Department 50> Figure 33 shows the details of the project creation unit 50. The function setting unit 62 sets the configuration information of the expansion unit 4, the functions of the basic unit 3, and the functions of the expansion unit 4 based on the information input from the operation unit 8, and creates configuration information that shows the settings. Settings for the functions of the basic unit 3 include setting the IP address, settings related to the FTP client, and settings for access rights to the project data 71. Settings for the functions of the expansion unit 4 include setting the input channel and settings related to communication between PLCs. The configuration information is part of the project data 71. The editing unit 311 (which may also serve as the program creation unit 63 shown in Figure 6) displays the user program editing UI on the display unit 7 and edits the user program based on the information input from the operation unit 8. The debugging unit 314 debugs the user program using the project data 71. The addition unit 312 adds identification information to the project data 71. The calculation unit 313 calculates the identification information (e.g., hash value or error detection code). Note that the output unit 84 may perform the same calculation (calculation) function of the identification information by the calculation unit 313.
[0161] <Log display section 61> Figure 34 shows details of the log display unit 61. The program display module 321 is a module that displays device values contained in log data 73 along with the user program contained in project data 71 on the display unit 7. In addition to the user program, the program display module 321 can also display various information for the user to visually confirm the settings of the project data 71, such as program configuration information, multiple program components, unit configuration, and function settings for each unit contained in the project data 71. The image display module 323 displays time-series image data contained in log data 73 on the display unit 7. The waveform display module 322 is a module that converts time-series device values contained in log data 73 into waveforms and displays them on the display unit 7. The playback control module 324 synchronizes the information displayed by the program display module 321 and the information displayed by the waveform display module 322 in time. These modules may also be called engineering software. Note that the image display module 323 may be implemented as a function (image display unit) of the program display module 321, or as a function (image display unit) of the waveform display module 322.
[0162] ● Program display module Figure 35A shows details of the program display module 321. The time UI 330a provides a UI (e.g., a slider bar or cursor) for manipulating the device acquisition time (display time) displayed along with the user program. The display time control unit 331a sends the display time specified by the time UI 330a to the playback control module 324, or sets the display time notified by the playback control module 324 to the time UI 330a. The program display unit 332 displays project data 71 on the display unit 7, or reads project data 71 corresponding to identification information from the storage device 22 and displays it on the display unit 7. The program display unit 332 also displays device values acquired by the device value acquisition unit 333a, associating them with devices used or described in the user program. The device value acquisition unit 333a has a real-time playback mode and a log playback mode. In real-time playback mode, the device value acquisition unit 333a accesses the real-time transmission unit 304 of the PLC1, acquires device values, and passes them to the program display unit 332. In log playback mode, the device value acquisition unit 333a accesses the playback control module 324, acquires the display time and device value, and passes them to the program display unit 332.
[0163] Figure 35B is a schematic diagram showing an example of a GUI displayed on the display unit 7 by the program display unit 332, etc.
[0164] In Figure 35B, the project display area 420 in the left column displays various information that constitutes the project data 71. From top to bottom, the unit configuration (basic unit, motion unit, analog input unit, camera unit) and program configuration (per scan module, fixed-period module, inter-unit synchronization module, function block, macro) are displayed. For the motion unit, the setting parameters for axis configuration and axis control are displayed as function settings. The user can check the settings of these setting parameters by double-clicking on the axis configuration or axis control on the GUI shown in Figure 35B. Also, in the project display area 420, Main and Sub are displayed for the per scan module. When the user clicks Main, the Main program is displayed in the program display area 410 of the ladder monitor 450 in the center. In this way, the program display module 321 shown in Figure 34 reads the project data 71 from the memory card 36 and displays various information in the project display area 420 and the desired program in the program display area 410.
[0165] Here, the program display area 410 is part of the so-called ladder monitor 450 and can be operated independently in real-time playback mode. It is also possible to hide only the ladder monitor 450 by clicking the × mark. On the other hand, in log playback mode, the program display unit 332 can reproduce the ladder program included in the project when the operation record was saved. In addition, in log playback mode, the program display unit 332 displays the device values included in the log data 73 via the device value acquisition unit 333a, associating them with the devices described in the Main program. The device values to be displayed are the device values corresponding to the time specified by the time specification cursor 404 (more details will be explained using Figure 38 below).
[0166] In Figure 35B, the device value associated with 18:52:54 on 20XX / 10 / 01, displayed in the time display area 409, is displayed in association with the device described in the Main program. The [35000 / 74286] displayed to the right of this date indicates the current scan count of 35000 out of a total scan count of 74286. The user can update the displayed time and scan count, as well as the device value, by dragging the time selection cursor 404. For example, in the updated display time, relay devices that are ON will be indicated with an ON indicator (e.g., filled with color), and relay devices that are OFF will be indicated with an OFF indicator (e.g., uncolored). Details of the functions of the play button 406 will be described later using Figure 38.
[0167] In Figure 35B, the upper right column shows the image display area of the camera monitor 430. The image display module 323 reads image data from log data 73 and displays it in the image display area of the camera monitor 430, synchronized with the display time shown on the ladder monitor 450 by the program display module 321. In Figure 35B, the image data associated with the display time, 20XX / 10 / 01, 18:52:54, is displayed on the camera monitor 430. To the right of this display time, "282 / 601" is displayed, which represents the current order of the image data (282nd out of a total of 601 images). The user can update the display time and the current image data order by dragging the time selection cursor 404a on the camera monitor 430.
[0168] At this time, as the time-specifying cursor 404a moves, the time-specifying cursor 404 in the ladder monitor 450 also moves in conjunction. For example, if the time-specifying cursor 404a is set to 19:00:00 on 20XX / 10 / 01, the time-specifying cursor 404 in the ladder monitor 450 also moves to the position of 19:00:00 on 20XX / 10 / 01. As the time-specifying cursor 404 moves, the device value in the ladder monitor 450 is also updated. Here, we moved the time-specifying cursor 404a, but the reverse is also true. For example, if the time-specifying cursor 404 in the ladder monitor 450 is moved, the time-specifying cursor 404a in the camera monitor 430 also moves accordingly. This type of processing is possible because the program display module 321 and the image display module 323 perform synchronous control regarding the display time via the playback control module 324.
[0169] Furthermore, in Figure 35B, the unit monitor 440 is displayed in the lower right column. For example, as explained using Figure 10A, the unit monitor 440 displays the device values of the buffer memory (UG) in the motion unit. More specifically, when the unit display module 325 of the log display unit 61 receives the display time to be played back from the playback control module 324, it reads the device value associated with that time from the memory card 36 and displays it on the unit monitor 440. Therefore, for example in Figure 35B, a list of device values associated with the display time 20XX / 10 / 01 at 18:52:54 is displayed on the unit monitor 440.
[0170] Figure 35C is a schematic diagram of the data source for displaying the GUI in log playback mode. As shown in Figure 35C, the project display area 420 reads the unit configuration, function settings, program configuration, and program components contained in the project data 71 from memory and displays them in a tree format. The ladder monitor 450 reads the program configuration (what program components it consists of) and program components from memory and displays the program components specified by the user, as well as reading and displaying device values corresponding to the display time from the log data 73. The camera monitor 430 reads and displays image data corresponding to the display time from the log data 73 based on information such as the unit configuration (whether or not there is a camera monitor) and function settings (the function of the camera monitor; for example, the port number if there are multiple ports, the imaging period, and the gain settings). The unit monitor 440 reads and displays device values corresponding to the display time from the log data 73 based on information such as the unit configuration (what units are present) and function settings (for motion units, such as the axis configuration and axis control).
[0171] As can be seen from Figures 35B and 35C, the playback control module 324 allows for the synchronized control and coordination of the program display module 321, image display module 323, and unit display module 325. Details of the coordination of the waveform display module 322 will be described later.
[0172] In this embodiment, it is possible to verify whether the current project data matches the project data 71 at the time of the actual trouble. More specifically, the matching unit 334 of the program display module 321 shown in Figure 35 matches the identification information of the project data 71 (user program) output from the PLC1 with the identification information of the project data 71 (user program) stored in the storage device 22, and outputs the matching result to the warning unit 335. The warning unit 335 displays a warning on the display unit 7 if there is a mismatch between the identification information of the project data 71 (user program) output from the PLC1 when the operation record was saved and the identification information of the project data (user program) stored in the storage device 22.
[0173] For example, the warning unit 335 displays a warning screen 470 on the display unit 7, as shown in Figure 35D. To give a specific example, let's assume that the identification information of the project data 71 when the operation record was saved does not match the identification information of the current project data (which is to be replayed). For example, this would occur if the user edited the project data (such as programs or function settings) after transferring the project data to the PLC1. In this case, when the system switches from real-time playback mode to log playback mode based on user operation, the warning screen 470 shown in Figure 35D is displayed.
[0174] The warning screen 470 shown in Figure 35D prompts the user to choose whether to use the current project data for log playback or to use the driving record project for log playback. In the former case, the user acknowledges that the current project data is different from the project data 71 at the time of the actual trouble and proceeds with log playback. In the latter case, the user can, for example, specify the path (folder or directory) in the storage device 22 where the driving record project is stored to use the driving record project for log playback.
[0175] In this embodiment, the identification information of two project data sets is compared to verify whether they match or not. More specifically, identification information is attached to the program configuration, multiple program components, unit configuration, and functional settings for each unit included in the project data, and verification is performed by checking whether all of these match or not. However, the present invention is not limited to this, and at a minimum, the identification information of a user program composed of multiple program components is compared to verify whether they match or not.
[0176] ● Waveform display module Figure 36A shows details of the waveform display module 322. The time UI 330b provides a UI (e.g., a slider bar) for manipulating the device acquisition time (display time) displayed along with the user program. As shown in Figure 28, the time UI 330b basically moves the bar 103 from left to right according to the display time provided by the playback control module 324. However, the time UI 330b accepts operation of the bar 103 through the operation unit 8 and passes the amount of operation of the bar 103 to the playback control module 324 via the display time control unit 331b. The display time control unit 331b sends the display time specified by the time UI 330b to the playback control module 324, or sets the display time notified by the playback control module 324 to the time UI 330b. The device value acquisition unit 333b has a real-time playback mode and a log playback mode. In real-time playback mode, the device value acquisition unit 333b accesses the real-time transmission unit 304 of the PLC1, acquires device values, and passes them to the waveform display unit 336. In log playback mode, the device value acquisition unit 333b accesses the playback control module 324, acquires the display time and device value, and passes them to the waveform display unit 336. As shown in Figure 28, the waveform display unit 336 converts the device value acquired by the device value acquisition unit 333b into a waveform and displays it on the display unit 7. Waveform conversion of the device value is not mandatory; the device value may be displayed as a numerical value. As shown in Figure 28, the image display module 323 displays the image data output from the playback control module 324 on the display unit 7. As mentioned above, the image display module 323 may be implemented as a function of the waveform display module 322, but as shown in Figure 34, it may also function as a separate image display module 323 (camera monitor).
[0177] Figure 36B is a schematic diagram showing an example of a GUI displayed on the display unit 7 by the waveform display module 322, etc. In particular, the GUI displayed by the waveform display module 322 is the so-called real-time chart monitor 460, which is displayed in the pop-up window in the lower right.
[0178] In Figure 36B, the project display area 420 in the left column, the program display area 410 (ladder monitor 450) in the center, and the image display area (camera monitor 430) in the upper right column are the same as those shown in Figure 35B. In other words, these displays are provided by the program display module 321 and the image display module 323. Note that in Figure 36B, the unit monitor 440 provided by the unit display module 325 is omitted from the display, but it may be displayed as well.
[0179] The real-time chart monitor 460 shown in Figure 36B has an overview as explained using Figure 28. In Figure 36B, the waveform data of the relay device R000 and the waveform data of the data memory DM100 are read from memory and displayed. The devices to be displayed on the real-time chart monitor 460 can be freely added or removed by the user through a settings screen (not shown).
[0180] Below the real-time chart monitor 460, a time-specifying cursor 404b (corresponding to bar 103 shown in Figure 28; may also be called the playback position cursor) is displayed, and the user can click to move the position of this time-specifying cursor 404b. When the position of the time-specifying cursor 404b moves, the playback control module 324 causes the time-specifying cursor 404 on the ladder monitor 450 and the time-specifying cursor 404a on the camera monitor 430 to move in conjunction. Specifically, in Figure 36B, the horizontal axis in the waveform display area of the real-time chart monitor 460 shows the number of scans (which may be switched to display as time), but when the user clicks and slides the time-specifying cursor 404b to a predetermined number of scans, the time-specifying cursor 404 on the ladder monitor 450 and the time-specifying cursor 404a on the camera monitor 430 move to the display time position corresponding to that number of scans, respectively. Then, the device value and image data corresponding to the display position after the move are displayed. Of course, the reverse is also true. In other words, when the time-specifying cursor 404 on the ladder monitor 450 or the time-specifying cursor 404a on the camera monitor 430 is clicked and slid to the desired position, the time-specifying cursor 404b also moves to the position corresponding to the scan count. At this time, if the time-specifying cursor 404 or the time-specifying cursor 404a is moved by a certain amount or more, the position indicated by the time-specifying cursor 404b will be outside the display range of the current real-time chart monitor 460. However, in this embodiment, the display range follows so that this position is always within the display range.
[0181] As shown in Figure 36B, in the real-time chart monitor 460, the time-specifying cursor 404b consists of a vertical line superimposed on the waveform display area and a triangular mark attached to the lower end of the vertical line. Furthermore, below this time-specifying cursor 404b, a display area bar 404c is displayed. In the center of the display area bar 404c, a square indicator is displayed to show the current position. The user can change the range displayed on the real-time chart monitor 460 by dragging this indicator left or right. The user can then effectively utilize this display area bar 404c to perform troubleshooting to investigate the cause of problems. This point will be explained in more detail using Figure 36C.
[0182] Figure 36C is an explanatory diagram illustrating the relationship between the display range shown on the real-time chart monitor 460 and the time-specifying cursor 404b.
[0183] In Figure 36C, the real-time chart monitor 460 displays relay devices R000 and R001, and data memories DM100 and DM101. For the sake of explanation, in Figure 36C, 15 device values (black circles) for each device are displayed on the real-time chart monitor 460. Of these device values, the device value corresponding to a specific time for each device is the device value specified by the time selection cursor 404b. In Figure 36C, this is the device value corresponding to the time in the center of the range displayed on the real-time chart monitor 460. When the user drags the time selection cursor 404b, for example to the right, the display range follows so that the time selection cursor 404b fits within the display range, similar to the time selection cursors 404 and 404a described above. On the other hand, if the user drags the square indicator of the display area bar 404c to the right, for example, the display range of the real-time chart monitor will shift to the right, and once it has moved a certain amount (equivalent to 8 device values to the right), the time specification cursor 404b will disappear. However, in this embodiment, even if the time specification cursor 404b disappears, to facilitate troubleshooting, the time specification cursor 404b will jump to the desired position by double-clicking the desired position in the waveform display area. In other words, the waveform display unit 336 shown in Figure 36A has the function of receiving a specified position from the user in the waveform display area and moving the time specification cursor 404b to the received specified position.
[0184] The troubleshooting procedure using the GUI shown in Figure 36C (an example) will be explained in more detail below.
[0185] (1) The user first drags the rectangular indicator left or right on the display area bar 404c of the real-time chart monitor 460, and while visually observing the device waveform displayed in the waveform display area, searches for a time that may be useful in investigating the cause of the problem. At this time, as described above, the time selection cursor 404b may be hidden from the display range of the real-time chart monitor 460.
[0186] (2) If an abnormal device value is found in the device waveform, double-click that time in the waveform display area. The time selection cursor 404b will jump to that time, and the time selection cursor 404 on the ladder monitor 450 and the time selection cursor 404a on the camera monitor 430 will also jump to that time.
[0187] (3) As a result, the playback control module 324 displays the device value corresponding to that time on the ladder monitor 450, and the camera monitor 430 displays the image data corresponding to that time. Therefore, the user can investigate the cause of the problem by visually checking these device values and image data.
[0188] ●Regeneration control module 324 Figure 37 shows details of the playback control module 324. The device value provision unit 341 provides the device values obtained from the log data 73 by the log data acquisition unit 344 to the program display module 321 and the waveform display module 322. The device value provision unit 341 also provides the device values obtained from the log data 73 to the unit display module 325. The device values obtained from the log data 73 may be temporarily stored in the log device 345. The device value acquisition units 333 of the program display module 321 and the waveform display module 322 request device values from the device value provision unit 341. The device value acquisition unit 333 obtains the device values from the log device 345 and transmits them to the device value acquisition unit 333. The time device 342 is a device that holds the display time set by the playback control unit 343. The device value provision unit 341 may also transmit the device values (time information) held in the time device 342 to the device value acquisition unit 333. Alternatively, the playback control unit 343 may provide time information to the display time control units 331a and 331b. The playback control unit 343 has a virtual internal clock for timing the display time and updates the time information held in the time device 342 according to this internal clock. The playback control unit 343 transmits the time information held in the time device 342 to the display time control units 331a and 331b. When the playback control unit 343 receives a display time specification from the display time control units 331a and 331b, it sets the received display time in its internal clock (time synchronization). Therefore, when a display time is specified by the display time control unit 331a, this display time is transmitted to the display time control unit 331b via the playback control unit 343. Similarly, when a display time is specified by the display time control unit 331b, this display time is transmitted to the display time control unit 331a via the playback control unit 343. This synchronizes the display time of the program display module 321 and the display time of the waveform display module 322. To enable slow playback, fast forward playback, rewind playback, etc., the playback control unit 343 changes the update speed of the internal clock according to user input from the operation unit 8. The playback control unit 343 may also set the time information of the oldest record included in the log data 73 to the initial value of the internal clock.The log data acquisition unit 344 obtains the device value associated with the displayed time held in the time device 342 from the log data 73 and passes it to the device value provision unit 341.
[0189] Similarly, the playback control unit 343 may synchronize the display time of the image display module 323 and the unit display module 325, in addition to the display time of the program display module 321 and the display time of the waveform display module 322.
[0190] In this embodiment, the display times of the program display module 321, waveform display module 322, image display module 323, and unit display module 325 are always synchronized in log playback mode. However, the present invention is not limited to this, and for example, the user may be able to choose whether or not to synchronize. For example, checkboxes for enabling or disabling synchronization may be provided on each monitor screen, and they may be checked by default. The user can then uncheck modules that they do not want to synchronize, thereby preventing synchronization for only those modules. Thus, the log display unit 61 may have a selection function that selects the modules to be synchronized (followed) by the playback control module.
[0191] <Program display UI> Figure 38 shows the display UI 400 provided by the program display module 321. The display UI 400 described in Figures 35B and 36A will be described in more detail from a different perspective. The program display area 410 is the area for displaying the user program of the project data 71. In this example, the program display area 410 displays a ladder program (ladder diagram). The program display unit 332 acquires the device values of devices used or described in the user program using the device value acquisition unit 333a and displays them together with the user program. For example, if the relay device is ON, the program display unit 332 may overlay an icon 401a indicating ON on the user program. If the relay device is OFF, the program display unit 332 may overlay an icon 401b indicating OFF on the user program. The program display unit 332 may acquire the device value of the output device DM100 using the device value acquisition unit 333a and display it overlaid with the description of DM100 in the user program. In this example, a display area 403 for the device value is provided below the description of DM100. The program display unit 332 displays the device value in the display area 403. Since the playback control module 324 updates the device value along with the display time, the program display unit 332 updates the device value displayed along with the user program. The time UI 330a moves the time specification cursor 404 from right to left according to the display time obtained from the time device 342. The time specification cursor 404 can be dragged using the pointer 101. When the time UI 330a detects that the time specification cursor 404 has been dragged using the pointer 101, the display time control unit 331a stops the display time update to the playback control unit 343 and notifies the playback control unit 343 of the amount the time specification cursor 404 has been dragged. The playback control unit 343 adjusts the count value (display time) of the internal clock according to the amount of drag. The time UI 330a may also display the display time update speed (e.g., ..., 2.0x, 1.0x, 0.5x, 0.1x, ...) in the speed specification unit 405. The speed selection unit 405 may also be implemented by a pull-down menu that displays a list of multiple update speeds and allows the user to select one of them.When the time UI 330a detects a click by the pointer 101 on the speed specification unit 405, it may display such a pull-down menu and accept the selection of the update speed. The play button 406 is a button for instructing the display of device values in chronological order. When the time UI 330a detects that the play button 406 has been clicked by the pointer 101, it instructs the display time control unit 331a to start updating the display time, and instructs the playback control unit 343 to start updating the display time. This instruction corresponds to an instruction to start displaying the device values or an instruction to resume displaying them. The one-step reverse playback button 407 is a button for instructing the display of device values in chronological order while updating (rewinding) the display time one step at a time. When the time UI 330a detects that the one-step reverse playback button 407 has been clicked by the pointer 101, it instructs the display time control unit 331a to rewind the display time by one step. The one-step playback button 408 is a button for instructing the display of device values in chronological order while updating the display time one step at a time. When the time UI 330a detects that the one-step playback button 408 has been clicked by the pointer 101, it instructs the display time control unit 331a to advance the display time by one step. Note that when one-step playback is being performed, the playback control unit 343 will not update the display time unless the one-step reverse playback button 407 or the one-step playback button 408 is operated. When the playback button 406 is operated while one-step playback is being performed, the playback control unit 343 resumes updating the display time at the update speed specified by the speed specification unit 405. The time display area 409 is an area that displays the display time held in the time device 342. The display time control unit 331a displays the display time obtained from the time device 342 in the time display area 409.
[0192] <HMIのエミュレータ> PLC1 can connect to an external display device called an HMI. The HMI may have a touch panel input device. The HMI reads device values held in the device unit 34 of PLC1 and displays them on the display device. The project creation unit 50 sets the UI to be displayed on the HMI and the device values to be displayed on the UI, and saves them in project data 71. The debug unit 314 has an HMI emulator and verifies the operation of the HMI by operating the emulator according to the project data 71. The log display unit 61 supplies the device values of log data 73 to the HMI emulator. The HMI emulator displays the provided device values in chronological order on the UI.
[0193] Figure 39 shows the UI490 of the HMI emulator. In this example, the HMI emulator is included in the program display module 321. The program display unit 332 reflects the device values provided by the playback control unit 343 in the display area of UI490. UI490 may have time control objects related to playback control included in UI400, such as a time selection cursor 404 and a playback button 406. Operations on time control objects in UI490 are reflected in UI400 and the UI shown in Figure 28 via the playback control unit 343. For example, when the time selection cursor 404 in UI490 is moved to the left, the time selection cursor 404 in UI400 also moves to the left in conjunction with the display time provided by the playback control unit 343, and the bar 103 shown in Figure 28 also moves to the left. Also, when the bar 103 shown in Figure 28 is moved to the left, the time selection cursors 404 in UI400 and 450 also move to the left in conjunction with the display time provided by the playback control unit 343. This is because all of these are synchronized to the same displayed time held in the time device 342.
[0194] <Flowchart related to log display> ● Program display module Figure 40 shows the display processing performed by the program display module 321. Note that S50, S51, and S60 may be executed only if project data 71 cannot be obtained from PLC1. If project data 71 can be obtained from PLC1, project data 71 from PLC1 is used. If project data 71 cannot be obtained from PLC1, project data 71 held in PC2 is used.
[0195] In S50, the CPU 21 (matching unit 334) acquires the identification information of the project data 71 held in PLC1 and the identification information of the project data 71 held in PC2.
[0196] In S51, the CPU 21 (matching unit 334) determines whether the identification information of the project data 71 held in PLC1 matches the identification information of the project data 71 held in PC2. If they do not match, the CPU 21 proceeds to S60. In S60, the CPU 21 (warning unit 335) displays a warning on the display unit 7 indicating that the identification information of the project data 71 held in PLC1 does not match the identification information of the project data 71 held in PC2. If they do match, the CPU 21 proceeds to S52.
[0197] In S52, the CPU 21 (program display unit 332) acquires project data 71 from the PLC 1 or storage device 22.
[0198] In S53, the CPU 21 (program display unit 332) determines whether log playback mode or real-time playback mode is selected based on the information input from the operation unit 8. If real-time playback mode is selected, the CPU 21 proceeds to S58. In S58, the CPU 21 (device value acquisition unit 333a) acquires device values from the real-time transmission unit 304 of the PLC1 without going through the playback control module 324. In S59, the CPU 21 (program display unit 332) displays the device values on the display unit 7 along with the user program included in the project data 71. If log playback mode is selected, the CPU 21 proceeds to S54.
[0199] At S54, the CPU 21 (device value acquisition unit 333a) starts the playback control module 324 and acquires the display time and the device value of the log data 73 from the playback control module 324.
[0200] At S55, the CPU 21 (program display unit 332) displays the device value and display time on the display unit 7 along with the user program included in the project data 71.
[0201] In S56, the CPU 21 (display time control unit 331a) determines whether a time specification has been detected by the time UI 330a. As described above, the time specification is performed by operating the time specification cursor 404. If no time specification has been detected, the CPU 21 returns to S54. If a time specification has been detected, the CPU 21 proceeds to S57.
[0202] In S57, the CPU 21 (display time control unit 331a) notifies the playback control unit 343 of the playback control module 324 of the specified time entered by the time specification cursor 404. The CPU 21 returns to S54.
[0203] ● Waveform display module Figure 41 shows the display process performed by the waveform display module 322.
[0204] In S61, the CPU 21 (waveform display unit 336) determines whether log playback mode or real-time playback mode is selected based on the information input from the operation unit 8. If real-time playback mode is selected, the CPU 21 proceeds to S66. In S66, the CPU 21 (device value acquisition unit 333b) acquires device values from the real-time transmission unit 304 of the PLC1 without going through the playback control module 324. In S67, the CPU 21 (waveform display unit 336) displays the device values on the display unit 7. If log playback mode is selected, the CPU 21 proceeds to S62.
[0205] In S62, the CPU 21 (device value acquisition unit 333b) activates the playback control module 324 and acquires the device value and display time from the playback control module 324.
[0206] In S63, the CPU 21 (waveform display unit 336) displays the device value and display time on the display unit 7.
[0207] In S64, the CPU 21 (display time control unit 331b) determines whether a time specification has been detected by the time UI 330b. As described above, the time specification is performed by bar 103. If no time specification has been detected, the CPU 21 returns to S62. If a time specification has been detected, the CPU 21 proceeds to S65.
[0208] In S65, the CPU 21 (display time control unit 331b) notifies the playback control unit 343 of the playback control module 324 of the specified time input by bar 103. The CPU 21 returns to S62.
[0209] ●Regeneration control module Figure 42 shows the playback control performed by the playback control module 324.
[0210] In step S71, the CPU 21 (log data acquisition unit 344) acquires log data 73 from the PLC 1 and stores it in the storage device 22.
[0211] In step S72, the CPU 21 (playback control unit 343) initializes the time of the internal clock.
[0212] In step S73, the CPU 21 (playback control unit 343) obtains the time from the internal clock and stores the time in the time device 342.
[0213] In S74, the CPU 21 (playback control unit 343) obtains the device value corresponding to the display time held in the time device 342 from the log data 73 and stores it in the log device 345. This allows the device value provision unit 341 to provide the device value and display time to the program display module 321 and the waveform display module 322.
[0214] In S75, the CPU 21 (playback control unit 343) determines whether it has received a time specification from the display time control unit 331. If a time specification has been received, the CPU 21 proceeds to S76. If a time specification has not been received, the CPU 21 proceeds to S77.
[0215] In S76, the CPU 21 (playback control unit 343) changes the time on the internal clock according to the time specified by the display time control unit 331.
[0216] In S77, the CPU 21 (playback control unit 343) determines whether it has received an instruction to change the update speed from the display time control unit 331. If it has received the instruction, the CPU 21 proceeds to S78. If it has not received the instruction, the CPU 21 proceeds to S73.
[0217] In S78, the CPU 21 (playback control unit 343) changes the update rate of the internal clock according to the update rate specified by the display time control unit 331. After that, the CPU 21 proceeds to S73.
[0218] <Narrowing down program components> When configuring logs, PC2 extracts the devices to be logged, and when displaying logs, it extracts other devices associated with a specific device. The following example is used to illustrate this extraction process.
[0219] Figure 43 shows multiple modules that make up a ladder program. In this example, the following PLC1 is assumed: A workpiece is transported by a conveyor belt. When a workpiece detection sensor detects a workpiece, a height sensor measures the height of the workpiece, and a depth sensor measures the depth of the workpiece. If the height of the workpiece is not within a predetermined range, the measurement is determined to be NG. Similarly, if the depth of the workpiece is not within a predetermined range, the measurement is determined to be NG. Figure 43 shows the program modules for realizing this series of processes. Each module includes contact system instructions (input system instructions) and output system instructions. Contact system instructions are the conditions for executing output system instructions.
[0220] In the work detection module B1, device MR000 is a relay device that turns ON when a workpiece is detected. Device MR0002 is a relay device that turns ON when PLC1 is in automatic operation mode. Device MR001 is a relay device for instructing expansion unit 4 to start measurement. Device MR000 turns ON when a workpiece is detected during automatic operation.
[0221] In measurement module B2, the contact system command is described as executing an output system command when MR001 is turned ON. In this example, the height measurement value acquired by expansion unit 4 is stored in device EM0 and is described as being copied to device TM100. Similarly, the depth measurement value acquired by expansion unit 4 is stored in device EM2 and is described as being copied to device TM101. Furthermore, device MR003, which manages the completion of measurement, is set to ON.
[0222] The judgment module B3 is executed when device MR003 is turned ON, that is, when the measurement is complete. Here, if the measurement result does not meet the passing conditions, device MR010 is turned ON. This means the measurement failed. More specifically, if the height measurement value stored in device TM100 is less than 95, MR010 is turned ON. If the height measurement value stored in device TM100 exceeds 105, MR010 is turned ON. If the depth measurement value stored in device TM101 is less than 35, MR010 is turned ON. If the depth measurement value stored in device TM100 exceeds 45, MR010 is turned ON.
[0223] Error handling module B4 is a module that stops the conveyor belt from moving when any error occurs. In this example, MR011 turns ON (conveyor stop) when MR010 turns ON (measurement NG), MR012 turns ON (forced stop), or MR013 turns ON (conveyor NG).
[0224] As can be seen from Figure 43, a device described in the contact system instructions of one module is described in the output system instructions of another module. Conversely, a device described in the output system instructions of one module is described in the contact system instructions of another module. For example, device MR001, described in the output system instructions of work detection module B1, is described in the contact system instructions of measurement module B2. Therefore, work detection module B1 and measurement module B2 are extracted as mutually related modules. Next, focusing on device MR003, described in the output system instructions of measurement module B2, we can see that MR003 is described in the contact system instructions of judgment module B3. Therefore, measurement module B2 and judgment module B3 are extracted as mutually related modules. Next, focusing on device MR010, described in the output system instructions of judgment module B3, we can see that MR010 is described in the contact system instructions of error handling module B4. Therefore, judgment module B3 and error handling module B4 are extracted as mutually related modules. In this way, multiple modules involved in a specific process and multiple devices described within those multiple modules are extracted. These extraction processes are performed by the device extraction unit 53. The device extraction unit 53 may be implemented in the log display unit 61. In other words, the log display unit 61 may extract multiple related modules, further extract multiple devices described in the extracted modules, obtain the device value of each of the extracted devices from the log data 73, and display it on the display unit 7.
[0225] Figure 44 shows a UI 500 that displays the extraction results. The log display unit 61 and the device extraction unit 53 may create a UI 500 that displays the devices and blocks (program components) extracted from the user program and display it on the display unit 7. The UI 500 can easily display the extraction results of devices and program components. Therefore, the user will be able to easily grasp the overall picture of the extraction results. When any block included in the UI 500 is clicked by the pointer 101, the log display unit 61 and the device extraction unit 53 may display the details of the clicked block on UI 501. This will allow the user to quickly access the details of the extracted blocks. The log display unit 61 and the device extraction unit 53 may display the extraction results using the UI exemplified in Figure 43.
[0226] <Block and device extraction process> Figure 45 shows the block and device extraction process performed by the device extraction unit 53. Here, the project data 71 contains multiple blocks (program components). Therefore, the device extraction unit 53 refers to the project data 71 and extracts blocks and devices.
[0227] In S81, the CPU 21 (device extraction unit 53) accepts a block selection via the operation unit 8. The device extraction unit 53 may also accept a device specification via the operation unit 8. In this case, the device extraction unit 53 may extract one or more blocks describing the specified device. If multiple blocks are extracted, the device extraction unit 53 may accept a user selection of one block from the multiple blocks. Such a device might be one that the user focuses on during debugging. The user sets conditions (e.g., save triggers) for outputting log data 73 to the output unit 84 of the PLC1 via the log setting unit 51. More specifically, the user might set a condition such as a specific relay device being turned on. Therefore, the device extraction unit 53 may specify the relay device set as the save trigger.
[0228] In S82, the CPU 21 (device extraction unit 53) extracts the devices described in the contact instructions of the selected block.
[0229] In S83, the CPU 21 (device extraction unit 53) searches for the extracted device in other blocks described in the output instructions.
[0230] In S84, the CPU 21 (device extraction unit 53) determines whether other blocks described in the output instructions for the extracted device have been found. If no other blocks are found, the CPU 21 terminates the extraction process. If other blocks are found, the CPU 21 proceeds to S85.
[0231] In S85, the CPU 21 (device extraction unit 53) extracts the discovered blocks as related blocks. For example, the device extraction unit 53 registers the identification information of the discovered blocks (e.g., name or file name) in a list for managing related blocks.
[0232] In S86, the CPU 21 (device extraction unit 53) selects related blocks as blocks from which devices will be extracted. Then, the CPU 21 returns to S82 to execute the extraction process on the newly selected blocks. The related blocks selected in S86 are blocks that have not yet been selected as targets for device extraction. If the device extraction process has been completed for all blocks registered in the list, the device extraction unit 53 terminates the extraction process. The CPU 21 (device extraction unit 53) may create a list showing the relationship between the extracted devices and the blocks from which those devices were extracted. The device extraction unit 53 or the log display unit 61 may refer to these lists and create the UI shown in Figure 43, or UIs 500 and 501 shown in Figure 44.
[0233] <Specific debugging examples> Figure 46 shows the debugging process performed by the user.
[0234] In S91, the user sets the NG determination as a storage condition of the log data 73 through the log setting unit 51. According to FIG. 43, it is determined that the device MR010 for managing the NG determination is turned on as a storage condition of the log data 73. The user transfers the project data 71 and the log setting data 72 to the PLC1.
[0235] In S92, the user operates the PLC1. The PLC1 executes the project data 71 and stores the log data 73 in the memory card 36 when the storage condition in the log setting data 72 is satisfied. In the example shown in FIG. 43, when the NG determination occurs, the conveyor belt stops, so the user knows that some error has occurred.
[0236] In S93, the user checks the workpiece and determines whether the NG determination is a false detection. For example, the user actually measures the height and depth of the workpiece and determines whether the pass condition is satisfied. If the workpiece does not satisfy the pass condition, the user determines that the NG determination is a false detection.
[0237] In S94, the user removes the memory card 36 from the PLC1, connects the memory card 36 to the PC2, and plays back the log data 73 stored on the memory card 36. The program display module 321 displays the device values included in the log data 73 in association with the user program. More specifically, the program display module 321 specifies the device MR010 adopted as the save condition, causes the device extraction unit 53 to perform block and device extraction processing, and displays the UI shown in Figure 43 and UI500 and 501 shown in Figure 44. Furthermore, the waveform display module 322 displays the device values displayed by the program display module 321 as waveforms. For example, the measured height of the workpiece held by EM0 and the depth of the workpiece held by EM2 are displayed as waveforms on the display unit 7. The device value of the device MR000, which manages workpiece detection, is also displayed as a waveform. The user observes these waveforms and determines that chattering of the workpiece detection sensor is the cause of the false detection. The user operates the editorial unit 311 to modify the workpiece detection module B1 as shown in Figure 47 in order to prevent chattering. With this modification, the device MR001 for starting measurement will turn on when the workpiece detection sensor continuously detects a workpiece for more than one second. The user transfers the updated project data 71 to the PLC1, starts the PLC1, and determines whether the chattering prevention was successful.
[0238] By displaying the user program and device value waveforms in sync in this way, users can efficiently identify the cause of false detections and debug the user program to resolve the issue.
[0239] <Summary> As shown in Figure 17, the execution unit 80 is an example of a program execution unit that repeatedly executes a user program. The device unit 34 is an example of a device storage unit that has multiple devices which are memory areas referenced by the program execution unit. The recording unit 81 is an example of a device recording unit that records device values stored in one of the multiple devices in chronological order. The PC2 is an example of a program creation support device connected to a programmable logic controller that assists in the creation of a user program.
[0240] As shown in Figure 6, the project creation unit 50 is an example of a program creation unit that creates program components that constitute a user program and include instruction words relating to one of several devices, based on user input via the display unit 7. The component specification unit 52 is an example of a program component specification unit that specifies a program component from which a specific device to be recorded by the device recording unit is extracted from among several program components. The device extraction unit 53 is an example of a device extraction unit that analyzes the program component specified by the program component specification unit and extracts the device described in that program component. The recording unit 81 of the basic unit 3 is configured to record device values stored in a specific device extracted as a recording target by the device extraction unit in chronological order.
[0241] In this way, users can specify program components, and devices will be extracted from those specified components. Users can also exclude specific program components from device extraction. Therefore, the burden on users to register devices to be logged in the PLC is reduced.
[0242] The extraction unit 53 may also analyze the program components created by the program creation unit 63 and extract the devices described in those program components. The component designation unit 52 may designate, on a program component basis (for each program component), the program components from among the multiple program components created by the program creation unit 63 that use or describe a specific device to be recorded by the recording unit 81. In this case, the recording unit 81 records the device values stored in the specific device that is extracted by the extraction unit 53 and used or described in the program component designated by the component designation unit 52, in chronological order.
[0243] The extraction unit 53 may analyze multiple program components created by the program creation unit 63 and extract the devices used or described for each program component. The component designation unit 52 may designate at least one program component from among the multiple program components created by the program creation unit 63. The recording unit 81 records, in chronological order, the device values stored in the devices used or described in the program component designated by the component designation unit 52 from among the multiple program components analyzed by the extraction unit 53. For example, multiple program components may be analyzed in advance, and multiple devices may be extracted. In other words, a list showing the extracted devices may be created for each program component. Furthermore, if a user designates any program component, the list for the designated program component may be read, and the devices listed in that list may be selected as recording targets.
[0244] The component designation unit 52 may be configured to designate at least one program component from among a plurality of program components created by the program creation unit 63. The extraction unit 53 may analyze the program components designated by the component designation unit 52 and extract the devices used or described for each program component. The recording unit 81 records the device values stored in the specific devices extracted by the extraction unit 53 in chronological order. In this way, device extraction may be performed after the program components have been designated. This should lighten the extraction process.
[0245] The extraction unit 53 may analyze the multiple program components created by the program creation unit 63 and extract the devices used or described for each program component. The component designation unit 52 may designate at least one program component from the multiple program components created by the program creation unit 63 to be recorded or excluded. The recording unit 81 may be configured to record, in chronological order, the device values stored in specific devices used or described in the program components designated as recording targets by the component designation unit 52 from among the devices extracted from the multiple program components by the extraction unit 53, and to record devices used in program components other than those designated as exclusion targets by the component designation unit 52. For example, if module A uses device memories DM0 and DM1, and module B uses device memories DM1 and DM2, device memories DM0, DM1, and DM2 are extracted from modules A and B. Here, if module B is designated as an exclusion target, DM2 is excluded, but DM1 remains as a recording target because DM1 is also used in module A. In this way, the addition and deletion of devices may be performed on a program component basis (i.e., for each program component). Furthermore, after the device has been extracted from all program components, the program components to be recorded and those to be excluded may be specified.
[0246] The component designation unit 52 may be configured to designate program components from among multiple program components that do not extract specific devices as exclusion targets. The device extraction unit 53 may be configured to analyze the program components designated as device extraction targets by the component designation unit 52, extract the devices used or described in those program components, and not extract devices from the program components designated as exclusion targets. In other words, the deletion unit 55 and the addition unit 54 may function as device addition / removal units that delete some specific devices from among the specific devices extracted by the device extraction unit for each program component, or add devices that were not extracted by the device extraction unit for each program component.
[0247] Program components may, for example, be reusable program modules. Multiple program components may be stored in separate files. Multiple program components may also have individual access permissions (editing permissions) set for each.
[0248] The user program may be, for example, a ladder program. In this case, the multiple program components may be multiple function blocks used or written within the ladder program.
[0249] The detection unit 82 is an example of a detection unit that detects when an external device rewrites the device value of one of several devices. The recording unit 81 may add the device whose device value has been detected to be rewritten by the detection unit 82 to the list of devices to be recorded.
[0250] PLC1 may further include a removable memory card 36 and an identification unit 57 that detects commands to the memory card 36 and identifies the device to which the command is directed. In Figure 6, the identification unit 57 is provided on PC2, but it may also be implemented on the CPU 31 of the basic unit 3. The recording unit 81 may add the devices identified by the identification unit 57 to the recording targets.
[0251] The expansion unit 4 of PLC1 may be a motion unit (positioning unit) that has a positioning function. The recording unit 81 or the device extraction unit 53 may add devices used for the positioning function that are not described in the user program (e.g., buffer memory in the motion unit) to the recording targets.
[0252] The estimation unit 59 is an example of an estimation unit that estimates the impact of recording device values by the recording unit 81 on the execution of the user program, based on the number of devices extracted as recording targets by the device extraction unit 53. The display unit 7 may be configured to display this impact. This allows the user to add or remove devices while taking into account the impact on scan time.
[0253] Figure 7 illustrates the extraction of devices from selected program components, the extraction of devices from selected functions, and the manual addition of devices by the user. However, not all of these are mandatory. It may suffice to employ two or more of them. Alternatively, only the extraction of devices from selected program components may be employed, or only the extraction of devices from selected functions may be employed.
[0254] CPU 31 and execution unit 80 are examples of program execution engines that repeatedly execute user programs. CPU 31, execution unit 80, and CPU 41 are examples of multiple function execution engines that each execute different functions (e.g., function programs) related to the user program based on instructions from the user program. This suggests that the basic unit 3 may contain the functions of the expansion unit 4. A function program is, for example, a motion control program. The program execution engine and multiple function execution engines may be executed by a single CPU, by multiple CPUs, or implemented by an ASIC or FPGA. Furthermore, a single CPU may have multiple cores, with each core handling a different function.
[0255] The device unit 34 is an example of a device storage unit having a plurality of devices which are storage areas referred to by a program execution engine and a plurality of function execution engines. The recording unit 81 is an example of a device recording unit that records device values stored in any of the plurality of devices in time series. The function setting unit 62 may function as an allocation unit that allocates a plurality of devices used in each of the plurality of function execution engines. The function designating unit 60 may function as a designation unit that designates one or more functions among the plurality of functions corresponding to the plurality of function execution engines. The device extraction unit 53 may extract, as a recording target of the device recording unit, devices used for one or more functions designated by the designation unit from the plurality of devices allocated by the allocation unit.
[0256] The program execution engine may be provided in the main unit. At least one of the plurality of function execution engines may be provided in a function expansion unit that is electrically connected to the main unit to expand the function of the main unit. All of the plurality of function execution engines may be provided in the main unit.
[0257] The basic unit 3 is an example of a main unit having a program execution unit, a device storage unit, and a device recording unit. The expansion unit 4 is an example of a function expansion unit that is electrically connected to the main unit to expand the function of the main unit.
[0258] The function setting unit 62 functions as an allocation unit that allocates devices used for the function of the main unit and devices used for the function of the function expansion unit based on user input via the display unit 7. The function setting unit 62 may display a UI for allocating devices to functions on the display unit 7.
[0259] The function designation unit 60 is an example of a designation unit that designates one or more functions from a plurality of functions, including functions provided in the main unit and functions provided in the function expansion unit. The addition unit 54 of the device extraction unit 53 extracts devices used for the functions designated by the designation unit as recording targets for the device recording unit. The deletion unit 55 of the device extraction unit 53 excludes devices used for the functions designated by the designation unit from the recording targets for the device recording unit. The communication unit 23 functions as a transmission unit that transmits setting data to the PLC1 for recording device values stored in a specific device extracted as a recording target in chronological order in the device recording unit. The recording unit 81 is configured to record device values stored in a device extracted as a recording target by the device extraction unit 53 in chronological order.
[0260] The project creation unit 50 functions as a program creation unit that creates a user program containing command words for one of several devices based on user input via the display unit 7. The device extraction unit 53 may analyze the user program, extract devices used or described in the user program, and create a device list (extraction list) containing the extracted devices. Furthermore, the device extraction unit 53 may add devices used for functions designated as recording targets (extraction targets) by the function designation unit 60 to the device list. The deletion unit 55 may also be configured to delete devices used for functions designated as exclusion targets by the function designation unit 60 from the device list. The device list is included in the log setting data 72. The recording unit 81 is configured to record device values stored in devices registered in the device list in chronological order.
[0261] The function designation unit 60 may also be configured to designate either a main unit or a function expansion unit. In other words, either a function or a unit may be selected. If a single unit has multiple functions, the user can select one function, and all functions included in that unit will be selected as targets for device extraction. The device extraction unit 53 may extract devices used for units designated as recording targets (extraction targets) by the function designation unit 60 as recording targets for the device recording unit. The device extraction unit 53 may also be configured to exclude devices used for units designated as exclusion targets by the function designation unit 60 from the recording targets of the device recording unit. In this way, extraction targets and exclusion targets may be specified on a unit basis, such as a main unit and a function expansion unit.
[0262] As shown in Figure 14, the function designation unit 60 may also be configured to specify the device type of devices to be recorded or the device type of devices to be excluded. The device extraction unit 53 extracts devices of the device type designated as recording targets by the function designation unit 60 to be recorded by the device recording unit. The device extraction unit 53 may also be configured to exclude devices of the device type designated as exclusion targets by the designation unit from being recorded by the device recording unit.
[0263] As explained with reference to Figure 19, the collection unit 92a is an example of a first collection unit that collects device values stored in one of several devices, associates the device value with information regarding the time of collection of the device value, and stores it in a first buffer. The device value to be collected may be pre-set by log setting data 72. The ring buffer 91a is an example of a first buffer. The information regarding the collection time may be, for example, time information supplied by the time management unit 83a. IF99a and 99f are examples of first interfaces that communicate with the expansion unit 4. The communication unit 33 is an example of a first external interface that receives user programs and setting information from an external setting device.
[0264] IF99b, 99d, 99h, 99j, etc., are examples of second interfaces that communicate with the main unit. The image receiving unit 96a and connection port 97 are examples of third interfaces (two-dimensional data receiving units) that are connected to monitoring equipment that acquires two-dimensional data and receive the two-dimensional data from the monitoring equipment. Connection port 97 may also function as a second external interface that is connected to monitoring equipment and receives data from the monitoring equipment. Camera 98 is an example of monitoring equipment. The monitoring equipment may also be a barcode reader. In this case, the barcode reading result is an example of two-dimensional data. The monitoring equipment may also be an image processing device that generates height images and distance images of a workpiece. Height images and distance images are examples of two-dimensional data. Two-dimensional data may also be video data. Large-capacity data that is larger in size compared to device values is also an example of two-dimensional data. For example, numerical data acquired by a high-speed analog input unit is also an example of two-dimensional data. The function execution unit 96 may function as a function execution unit that executes functions involving data input from monitoring equipment via the second external interface, based on the received setting information.
[0265] The collection unit 92b is an example of a second collection unit that collects two-dimensional data received via a third interface and stores the two-dimensional data in a second buffer, associating it with information about the acquisition time. The time information provided by the time management unit 83 is an example of information about the acquisition time. The ring buffer 91b is an example of a second buffer.
[0266] The storage unit 93 is an example of a storage unit that, when predetermined storage conditions are met, stores information about the device value and acquisition time stored in the first buffer, and information about the two-dimensional data and acquisition time stored in the second buffer.
[0267] In this way, information about the acquisition time is linked to both the device values and the two-dimensional data. Therefore, it becomes easier to identify the temporal relationship between relatively large amounts of data, such as two-dimensional data, and the device values.
[0268] The monitoring device may be a camera 98 that acquires still or video image data. The function execution unit 96 executes a function that involves inputting image data from the camera 98. The second collection unit, collection unit 92b, stores the image data in a second buffer, associating it with information about the time the image data was acquired. The storage unit 93 may store the device value, the information about the time of acquisition, the image data stored in the second buffer, and the information about the time of acquisition in association with each other. The function execution unit 96 may execute a function that involves inputting data from the monitoring device asynchronously with the execution cycle of the user program. The storage unit 93 may also store project data, including the user program and configuration information. The storage unit 93 may store the device value, the information about the time of acquisition, the data stored in the second buffer, and the information about the time of acquisition in a plurality of files identified by a common flag, and save the plurality of files.
[0269] Information regarding the collection time only needs to be information that allows the collection time to be identified for each of the multiple device values collected in a time series. The collection time may be associated with each of the multiple device values. Alternatively, for example, the collection time may be associated only with the first device value. In the latter case, the collection times for device values other than the first device value may be calculated based on other information (such as the number of scans or scan time). Since device values are recorded the same number of times as the number of scans, the collection time of any device value can be identified by storing the processing time (scan time) for each scan. For example, when trying to identify the collection time of a device value recorded in the 100th scan, assume that the collection time of the device value recorded in the first scan was 10:10:00, and each of the 2nd to 100th scans took 100 microseconds. In this case, the collection time of the device value recorded in the 100th scan is calculated as 100 microseconds × 99 elapsed from 10:10:00. Thus, it is not essential to associate and record the collection time with every device value.
[0270] Information regarding acquisition time only needs to be information that identifies the acquisition time for each of the multiple two-dimensional data acquired in time series. The acquisition time may be associated with each of the multiple two-dimensional data. Alternatively, for example, the acquisition time may be associated only with the first two-dimensional data. In the latter case, the acquisition times of the two-dimensional data other than the first two-dimensional data can be calculated based on other information (such as the number of images taken or the imaging period). Specifically, the acquisition time can be associated only with the first two-dimensional data among multiple two-dimensional data. The period for acquiring two-dimensional data (imaging period) is approximately constant. Therefore, the acquisition time of any two-dimensional data can be identified. For example, when trying to identify the acquisition time of image data recorded in the 10th imaging, assume that the acquisition time of the image data recorded in the 1st imaging was 10:10:00, and each of the 2nd to 10th imaging took 100 milliseconds. In this case, the acquisition time of the image data recorded in the 10th imaging is 100 milliseconds × 9 after 10:10:00. Thus, it is not essential to associate and record the acquisition time with all two-dimensional data.
[0271] The storage unit 93 may include a memory card 36 that is removable from the main unit. The storage unit 93 may store information about the device value and acquisition time stored in the first buffer, and information about the two-dimensional data and acquisition time stored in the second buffer, in the memory card 36. This makes it easier to transport the log data 73 to the PC2. As shown in Figure 19, the first buffer may be provided in the main unit. As shown in Figure 20, the second buffer may be provided in the expansion unit.
[0272] As shown in Figure 24, the first interface may be located on the side of the main unit, facing the side of the expansion unit. The second interface may be provided on the side of the expansion unit so as to connect to the first interface.
[0273] As shown in Figure 25, the backplane 200 is an example of a support plate that supports the main unit and the expansion unit. In this case, at least one of the first buffer, the second buffer, and the storage section may be provided on the support plate.
[0274] The transmission unit 94 is an example of a transmission unit that transmits device values, information regarding collection time, two-dimensional data, and information regarding acquisition time stored in the storage device 32 to an external device. The external device may be a cloud or a PC2. The PC2 may receive the log data 73 in real time and display the log data 73 on the display unit 7.
[0275] The first or second buffer may be configured to further store information that occurs at a shorter interval than the execution cycle of the user program (e.g., the scan cycle).
[0276] The storage unit 93 may be configured to read and store two-dimensional data and information regarding the acquisition time from the second buffer during the period when the end processing (END processing) related to the user program is being executed in the main unit.
[0277] As described with respect to the time management units 83a and 83b, the clock of the main unit that measures the collection time and the clock of the extension unit that measures the acquisition time are synchronized. This synchronization may be achieved, for example, by inter-unit synchronization.
[0278] As shown in Figure 29, the storage unit 93 may be configured to store device values, information about the collection time, two-dimensional data, and information about the acquisition time collected during a predetermined collection period before and after a preset storage trigger in the memory card 36.
[0279] As shown in Figure 30, the storage unit 93 may be configured to store device values, information regarding the collection time, two-dimensional data, and information regarding the acquisition time collected during a predetermined collection time starting from the timing when a preset start relay is turned on, in the memory card 36.
[0280] As explained in relation to Figure 32, when predetermined storage conditions are met, the storage unit 93 may associate the device value recorded in the device recording unit with the user program or user program identification information stored in the program storage unit and save it to memory (e.g., memory card 36 or internal memory 37). Also, when predetermined output conditions are met, the output unit 84 may output the device value recorded in the device recording unit with the user program or user program identification information stored in the program storage unit to external memory (e.g., memory card 36). As described above, it is important to know which project data 71 was used to obtain the log data 73. Therefore, the output unit 84 outputs the project data 71 itself used to obtain the log data 73, or its identification information. In other words, by outputting the log data 73 and the project data 71 or its identification information, it becomes easier to identify the relationship between the log data 73 and the project data 71. This allows the user to efficiently proceed with debugging the project data 71.
[0281] A user program consists of multiple program components. Project data manages multiple program components. The storage device 32 functions as a program storage unit that stores the user program as part of the project data 71. The output unit 84 may be configured to output the project data 71, including the user program, and also to output identification information of the project data 71 as identification information for the user program. This makes it easier to determine whether the project data 71 (master data) stored in PC2 matches the project data 71 stored in PLC1.
[0282] Project data 71 may include configuration information for expansion unit 4. This is because configuration information for expansion unit 4 may be needed when debugging project data 71. For example, if multiple expansion units 4 are connected to base unit 3, the connection order of the multiple expansion units 4 is included in the configuration information for expansion unit 4. This information regarding the connection order may be needed during debugging.
[0283] The determination unit 301 functions as a determination unit that determines whether the output of the user program (project data 71) is prohibited. If the determination unit 301 determines that the output of the user program is prohibited, the output unit 84 may output the device value recorded in the device recording unit and the user program identification information stored in the program storage unit to external memory. This protects the user program while making the master data of PC2 available based on the identification information.
[0284] As explained in relation to the add-on 312, the user program identification information is updated when the user program is modified. Therefore, a different version of the project data 71 held in PLC1 will not be mistakenly used for debugging.
[0285] As described in relation to the arithmetic unit 313, the user program identification information may be an error detection code or hash value calculated from the user program. Thus, a method of calculating the identification information may be employed such that the identification information is updated when the project data 71 is updated. The identification information may be a timestamp or the like.
[0286] The storage device 22 of PC2 is an example of a program memory that stores a user program and identification information of that user program. The matching unit 334 is an example of a matching unit that matches the identification information of the user program output from the programmable logic controller with the identification information of the user program stored in the program memory and displays the matching result on the display unit. The warning unit 335 outputs a warning if the two do not match, but if they match, it may display a message or image on the display unit 7 indicating that they match.
[0287] As shown in Figure 38, the display unit 7 may display the device value output from the programmable logic controller in association with the portion of the user program in which the instruction words related to that device value are written. This makes it easier for the user to understand the relationship between changes in the device value and the user program. This will improve the efficiency of debugging.
[0288] The storage device 22 and memory card 36 are examples of storage means for storing multiple time-series device values collected by the programmable logic controller, as well as time data indicating the time each device value was collected. The program display module 321 is an example of a first engineering software module that displays device values on a ladder diagram. The waveform display module 322 is an example of a second engineering software module that displays device values as a time-series waveform. The playback control module 324 is an example of a synchronization software module that synchronizes the display target time in the first engineering software module with the display target time in the second engineering software module. This makes it easier for the user to understand the relationship between changes in specific device values and the program.
[0289] The first engineering software module may have a first display control means that, in real-time playback mode, acquires device values from a programmable logic controller and displays those device values on a ladder diagram, and in history playback mode, acquires device values corresponding to the target time based on time data from a storage means and displays them on a ladder diagram. The program display unit 332, the display time control unit 331, and the device value acquisition unit 333 function as the first display control means. The log playback mode is an example of the history playback mode.
[0290] The second engineering software module may have a second display control means that, in real-time playback mode, acquires device values from a programmable logic controller and displays a time-series waveform, and in historical playback mode, acquires device values corresponding to the display target time from a storage means based on time data and displays a time-series waveform. The waveform display unit 336, the display time control unit 331, and the device value acquisition unit 333 are examples of the second display control means.
[0291] The synchronization software module may have synchronization means for synchronizing the display target time in the first engineering software module and the display target time in the second engineering software module in history playback mode. The playback control unit 343 is an example of a synchronization means.
[0292] The first engineering software module may further include a first update means for updating the time to be displayed in history playback mode. The time specification cursor 404, time UI 330, and display time control unit 331 are examples of the first update means. The playback control unit 343, which is a synchronization means, reflects the time to be displayed updated by the first update means to the time to be displayed in the second engineering software module.
[0293] The second engineering software module may further include a second update means for updating the time to be displayed in history playback mode. Bar 103, time UI 330, and display time control unit 331 are examples of the second update means. The playback control unit 343, which is a synchronization means, reflects the time to be displayed updated by the second update means to the time to be displayed in the first engineering software module.
[0294] As shown in Figure 43, the first display control means may search the ladder diagram for instruction words related to the device that is to be displayed in the second engineering software module among the multiple devices referenced in the programmable logic controller. For example, a device may be specified by specifying the device shown in Figure 28 (e.g., R000 or DM100) using the pointer 101. As shown in Figure 38, the first display control means may be configured to display the device value of the device along with the instruction words found in the ladder diagram. The pointer 101 is also an example of a specifying means for specifying an arbitrary device. The first display control means may search the ladder diagram for instruction words related to the device specified by the specifying means among the multiple devices referenced in the programmable logic controller, and display the device value of the device along with the instruction words found in the ladder diagram.
[0295] As shown in Figure 43, a ladder program in a programmable logic controller may consist of multiple program components. The first display control means (e.g., log display unit 61 or device extraction unit 53) may be configured to search for one or more blocks containing instruction words related to a device from among multiple program components and display the found blocks as a ladder diagram.
[0296] As shown in Figure 43, when the first display control means finds a plurality of blocks containing instruction words related to the device, it may display ladder diagrams corresponding to the plurality of blocks side by side.
[0297] As shown in Figure 43, the first display control means may, in the ladder program, when an instruction related to a first device (e.g., MR001) in the first block (e.g., measurement module B2) is an input instruction, identify a second device (e.g., MR003) that is the target of an output instruction described in correspondence with the input instruction, and identify a second block (e.g., determination module B3) in which an input instruction targeting the second device is described.
[0298] The first display control means may, in the ladder program, when an instruction related to a first device (e.g., MR010) in a first block (e.g., determination module B3) is an output instruction, identify a second device (e.g., MR001) that is the target of an input instruction described in correspondence with the output instruction, and identify a second block (e.g., measurement module B2) in which an output instruction targeting the second device is described.
[0299] The synchronization means may include a setting means for setting the update speed of the time to be displayed. The speed specification unit 405 is an example of a setting means. This may enable slow playback, fast forward playback, etc.
[0300] The first and second display control means may be configured to further display device values set based on user input received from a human interface (HMI) that displays information about a programmable logic controller. The HMI may be implemented by an emulator. As described in relation to Figure 39, the UI490 displays multiple device values. When any of the device values is clicked by the pointer 101, the log display unit 61 may add the clicked device value to the display target of the program display unit 332 or the display target of the waveform display unit 336. This makes it possible to display the waveforms of the HMI, user program, and device values in coordination and synchronization.
[0301] The storage means may further store multiple time-series image data acquired from the camera unit, as well as time data indicating the acquisition time of each image data. As shown in Figure 28, the second engineering software module may acquire device values from the programmable logic controller in real-time playback mode and display a time-series waveform, as well as image data acquired from the camera unit. Similarly, in history playback mode, the second engineering software module may acquire and display device values and image data corresponding to the display target time from the storage means. Image data contains more information than numerical data. Therefore, by displaying image data, users will be able to find problems early.
[0302] Furthermore, the first engineering software module may, in real-time playback mode, acquire device values from the programmable logic controller and display the device values on the ladder diagram, as well as display image data acquired from the camera unit. In history playback mode, the first engineering software module may acquire device values and image data corresponding to the display target time from the storage means and display them on the ladder diagram.
[0303] Each of the multiple expansion units 4 operates according to a different internal control cycle. Therefore, the acquisition times of device values and image data obtained from the multiple expansion units 4 often do not coincide. Thus, as explained in relation to Figures 26 to 28, the first display control means and the second display control means may be configured to read out the device value associated with the time data closest to the time to be displayed in the history playback mode.< / plc>
Claims
1. A programmable logic controller comprising a ladder execution engine that repeatedly executes a ladder program, a device memory having a device which is a storage area referenced by the ladder execution engine based on the description of the ladder program, a function execution engine that executes a function involving the input of image data from a camera, and a memory that stores the image data input by the function execution engine, Engineering tools for the aforementioned programmable logic controller, A programmable logic controller system having, The aforementioned engineering tool is Display unit and A setting unit creates log setting data that includes a list of logging targets for multiple devices extracted from the ladder program based on user input via the display unit, A communication unit that sends the log setting data created by the setting unit to the programmable logic controller, It has, The aforementioned programmable logic controller is A recording unit records device values stored in multiple devices specified by the logging target list in a time series, in association with time data related to the collection time. When predetermined storage conditions are met, the storage unit reads out the time-series device values and associated time data recorded by the recording unit for a predetermined target period, along with multiple time-series image data and time data indicating the acquisition time of each image data for that target period, and saves them as log data. It has, The aforementioned engineering tool further, An image display module that obtains image data corresponding to the time to be displayed from the log data based on the time data stored as log data and displays it on the display unit, A display module for a device that obtains a device value corresponding to the time to be displayed from the log data based on the time data stored as log data and displays it on the display unit, The device includes a playback control module that synchronizes the display target time in the image display module with the display target time in the display module for the device. A programmable logic controller system characterized by the following features.
2. The display module for the device consists of a program display module that displays the device values obtained from the log data on a ladder diagram. The aforementioned playback control module is The programmable logic controller system according to claim 1, characterized in that the display target time in the image display module and the display target time in the program display module are synchronized.
3. The display module for the device consists of a waveform display module that displays the device values obtained from the log data as a time-series waveform. The aforementioned playback control module is The programmable logic controller system according to claim 1, characterized in that the display target time in the image display module and the display target time in the waveform display module are synchronized.
4. The engineering tool further includes a program display module that displays the device values obtained from the log data on a ladder diagram, and a waveform display module that displays the device values obtained from the log data as a time-series waveform. The programmable logic controller system according to claim 1, characterized in that the playback control module synchronizes the display target time in the image display module, the display target time in the program display module, and the display target time in the waveform display module.
5. The image display module displays a first time-specifying cursor on the display unit for updating the time to be displayed in response to user operation. The program display module displays a second time-specifying cursor on the display unit for updating the time to be displayed in response to user operation. The waveform display module displays a third time-specifying cursor on the display unit for updating the time to be displayed in response to user operation. The programmable logic controller system according to claim 4, characterized in that the playback control module synchronizes the display target time in the image display module, the display target time in the program display module, and the display target time in the waveform display module when at least one of the first time specification cursor, the second time specification cursor, and the third time specification cursor is operated by a user on the display unit.
6. The aforementioned programmable logic controller is configured to have a removable external memory. The programmable logic controller system according to any one of claims 1 to 5, characterized in that when predetermined storage conditions are met, the storage unit reads out the time-series device values and associated time data recorded by the recording unit for a predetermined target period, along with a plurality of time-series image data for the target period and time data indicating the acquisition time of each image data, and stores them in the external memory as log data.
7. The programmable logic controller system according to claim 6, characterized in that the storage unit stores in the external memory, in association with a predetermined target period, a set of time-series device values and associated time data, and a set of time-series image data and time data indicating the acquisition time of each image data, so that file management is performed in which a set of multiple files are associated in the external memory.
8. The programmable logic controller system according to claim 6, characterized in that the storage unit stores in the external memory, in a format that can be associated and reproduced by the engineering tool, a plurality of time-series image data and associated time data for a predetermined target period, and a plurality of time-series image data and time data indicating the acquisition time of each image data for the target period.
9. The programmable logic controller system according to claim 7 or 8, characterized in that the storage unit stores time-series device values and associated time data for a predetermined target period, and multiple time-series image data for the target period and time data indicating the acquisition time of each image data in multiple files identified by a common flag.
10. The setting unit further sets the target period based on user input via the display unit and creates log setting data including the target period. The programmable logic controller system according to claim 1, characterized in that the storage unit reads out time-series device values and associated time data for a target period defined by the log setting data, and multiple time-series image data for the target period and time data indicating the acquisition time of each image data, and stores them as log data.
11. The setting unit further sets the save conditions based on user input via the display unit and creates log setting data including the save conditions. The programmable logic controller system according to claim 1, characterized in that when the storage conditions defined by the log setting data are met, the storage unit reads out the time-series device values and associated time data recorded by the recording unit for a predetermined target period, along with a plurality of time-series image data for the target period and time data indicating the acquisition time of each image data, and stores them as log data.
12. The setting unit further creates parameter values of imaging parameters for controlling the camera as setting information, The programmable logic controller system according to claim 1, characterized in that the communication unit sends the setting information created by the setting unit to the programmable logic controller.
Citation Information
Patent Citations
Magnetic head receding mechanism for magnetic recording and reproducing device
JP1989030079A
Event reproducing device
JP1994020180A
Sequence controller, data processor, data recording and reproducing method, and recording medium
JP1998011118A
Logging device
JP2000235412A
Trouble analysis supporting device and simulation system
JP2000250775A
