Patent Description:
In <CIT> AI, there is a described a system in which an industrial machine configured to control another industrial machine acquires collection target data relating to an operation of another industrial machine and transmits the collection target data to a higher-level device that is communicatively connected to the industrial machine. <CIT> relates to a multi-buffer-based controller that includes a CAN transceiver module having at least two CAN bus interfaces, which allows the controller to communicate with at least two external communication networks at the same time. When a CAN transceiver module receives data, it sends the data to a micro-processing unit that parses the received data. The parsed data is then stored in a physical buffer of the controller. The physical buffer may include a synchronous and an asynchronous data buffer, which are used to store different types of data. In addition, the first micro-processing unit can also read data from the physical buffer, and send the read data to a CAN transceiver module. Furthermore, a plurality of physical buffers may be arranged in the controller in sequence, and each physical buffer may have a corresponding area number. When writing data, physical buffers for which currently no reading is performed may be determined, and the data may be written in the first physical buffer from the found free physical buffers.

An object to be achieved by one aspect of the present disclosure is to reduce, for example, a processing load at a time of data collection.

Embodiments and examples not falling under the scope of the independent claims are for illustrational purposes only.

According to the present disclosure, it is possible to reduce, for example, the processing load at the time of data collection.

When data is collected by performing polling between an external device and an industrial machine, it is required to regularly monitor a synchronous area, and hence a processing load on the industrial machine and the external device may increase. As a result of extensive research and development for reducing the processing load on each of the industrial machine and the external device, the inventors have conceived of a novel and original production system and the like. A detailed description is now given of the production system and the like according to a first embodiment of the present disclosure.

<FIG> is a diagram for illustrating an example of an overall configuration of the production system. As illustrated in <FIG>, a production system <NUM> includes a data collection device <NUM>, a controller <NUM>, and a controlled device <NUM>. In the first embodiment, the data collection device <NUM> and the controller <NUM> are connected to each other through a general network, for example, an Ethernet (trademark). The controller <NUM> and the controlled device <NUM> are connected to each other through a network for industrial machines. The network for connecting machines to each other is not limited to the example of the first embodiment, and the controller <NUM> and the controlled device <NUM> can be connected through any network.

The data collection device <NUM> is an example of an external device. Accordingly, the term "data collection device <NUM>" as used in the first embodiment can be read as "external device. " The external device is a device different from an industrial machine described later. The external device is communicatively connected to the industrial machine through the network. For example, the external device is configured to collect data relating to the operation of the industrial machine. In addition, for example, the external device is configured to analyze the operation of the industrial machine and provide feedback of an analysis result to the industrial machine.

For example, the data collection device <NUM> is a personal computer, a server computer, a cellular phone (including a smartphone), or a mobile terminal (including a tablet terminal). The data collection device <NUM> may be a kind of the industrial machines. The data collection device <NUM> includes a CPU <NUM>, a storage <NUM>, a communicator <NUM>, an operation interface <NUM>, and a display <NUM>.

The CPU <NUM> includes at least one processor. The storage <NUM> includes a RAM or a hard disk drive, and is configured to store various programs and data. The CPU <NUM> is configured to execute various types of processing based on those programs and data. The communicator <NUM> includes a network card and a communication interface, for example, various types of communication connectors, and is configured to communicate to/from other devices. The operation interface <NUM> is an input device such as a mouse and a keyboard. The display <NUM> is a liquid crystal display, an organic EL display, or the like, and is configured to display various types of screens in accordance with an instruction from the CPU <NUM>.

The controller <NUM> is an example of the industrial machine (the first industrial machine). Accordingly, the term "controller <NUM>" as used in the first embodiment can be read as "industrial machine (the first industrial machine). " The industrial machine is a collective term for machines configured to assist or substitute human work and peripheral machines thereof. For example, in addition to the controller <NUM>, the controlled device <NUM> also corresponds to the industrial machine. For example, a programmable logic controller (PLC), a robot controller, an industrial robot, a motor controller, a servo amplifier, an inverter, a converter, a machine tool, a conveyance device, or a semiconductor manufacturing apparatus corresponds to the industrial machine. The controller <NUM> is configured to control at least one controlled device <NUM>. The production system <NUM> may be referred to as "cell," which is a unit smaller than a line. In this case, the controller <NUM> may be referred to as "cell controller.

The controller <NUM> includes a CPU <NUM>, an Internet-of-Things (IoT) unit <NUM>, a third storage <NUM>, and a second communicator <NUM>. The physical configuration of each of the CPU <NUM>, the third storage <NUM>, and the second communicator <NUM> may be the same as that of the CPU <NUM>, the storage <NUM>, and the communicator <NUM>, respectively. The CPU <NUM> may include at least one of a volatile memory or a nonvolatile memory. For example, the CPU <NUM> may include a memory called "cache memory. " The CPU <NUM> stores a variable described later.

The CPU <NUM> is an example of a first control circuit. Accordingly, the CPU <NUM> as used in the first embodiment can be read as "first control circuit. " The first control circuit is configured to control another industrial machine described later. The first control circuit is not limited to a general-purpose processor, and may be any circuit. For example, the first control circuit may be a circuit called "FPGA" or "ASIC. " The first control circuit is a kind of circuitry.

The IoT unit <NUM> is an example of a second control circuit. Accordingly, the IoT unit <NUM> as used in the first embodiment can be read as "second control circuit. " The second control circuit is a circuit configured to transmit data to the external device. The second control circuit is not limited to the circuit used for IoT, and may be any circuit. For example, the second control circuit may be a circuit called "FPGA" or "ASIC. " For example, the second control circuit may be a general-purpose processor. The second control circuit is a kind of circuitry.

The IoT unit <NUM> is configured to transmit data to another computer through the network. The IoT unit <NUM> includes a first storage 22A, and, for example, a second storage 22B, and a first communicator 22C. The first storage 22A and the second storage 22B may each be the same as the storage <NUM>. The first communicator 22C may be the same as the communicator <NUM>. For example, the first communicator 22C is mainly used for communication to/from the data collection device <NUM>, and the second communicator <NUM> is mainly used for controlling the controlled device <NUM>. The IoT unit <NUM> may include another configuration, for example, a CPU. When the CPU <NUM> is provided with a data collection function, the IoT unit <NUM> may be omitted.

The controlled device <NUM> is an example of another industrial machine (the second industrial machine). Accordingly, the controlled device <NUM> as used in the first embodiment can be read as "another industrial machine (the second industrial machine). " The term "industrial machine" has such a meaning as described above. The another industrial machine may be any kind of industrial machine described above. In the first embodiment, another industrial machine is controlled by the controller <NUM>. It suffices that another industrial machine is an industrial machine different from the controller <NUM>.

The controlled device <NUM> includes a CPU <NUM>, a storage <NUM>, and a communicator <NUM>. The physical configuration of each of the CPU <NUM>, the storage <NUM>, and the communicator <NUM> may be the same as that of each of the CPU <NUM>, the storage <NUM>, and the communicator <NUM>, respectively. The controlled device <NUM> may also include other physical components. For example, the controlled device <NUM> may include a circuit referred to as "FPGA" or "ASIC. " Further, for example, a machine to be controlled, such as a motor or the like, a sensor for detecting an operation of a motor, a camera for photographing a state of a workpiece to be processed, an input/output device, or another industrial machine may be connected to the controlled device <NUM>. The number of controlled devices <NUM> to be controlled by the controller <NUM> may be any number. For example, the controller <NUM> may control only one device, or may control two or more devices.

The programs and data described as being stored in each of the data collection device <NUM>, the controller <NUM>, and the controlled device <NUM> may be supplied through the network. Moreover, the hardware configuration of each device is not limited to the above-mentioned example, and various types of hardware can be applied. For example, a reader (for example, optical disc drive or memory card slot) configured to read a computer-readable information storage medium and an input/output device (for example, USB terminal) configured to directly connect to an external device may be included. In this case, programs and data stored in the information storage medium may be supplied through the reader or the input/output device.

In the first embodiment, the controller <NUM> is configured to control the controlled device <NUM> based on each of the plurality of variables. The variable is referred to by a control program for controlling the controlled device <NUM>. The control program may also rewrite the variable. For example, the variable indicates a result of unfinished calculation or a physical quantity detected by a sensor (for example, a torque value detected by a torque sensor or a rotation speed of a motor detected by a motor encoder). The variable may be a value relating to an operation of the controlled device <NUM>, and may be a value of, for example, a position or a moving speed of a robot arm, a speed of the motor, or a waiting time for waiting for the operation.

For example, when the controlled device <NUM> executes a plurality of processes in a predetermined order, an execution order of the processes is described in the control program. The controller <NUM> sends an instruction to the controlled device <NUM> based on the control program. The variable may be used as an execution condition of the process. For example, the controlled device <NUM> stores a variable for starting the process, a variable for suspending the process, or a variable for ending the process. The variable may be referred to as "input/output variable. " The controller <NUM> may control the controlled device <NUM> without particularly using variables.

The "process" is a task or an operation to be performed by the controlled device <NUM>. The process may be composed of only one task, or may be composed of a combination of a plurality of tasks. The process may have any content in accordance with the use of the controlled device <NUM>. For example, the process is recognition of a workpiece, gripping of a workpiece, opening/closing of a door, setting of a workpiece, or machining using a machine tool. The controlled device <NUM> performs at least one process. The number of processes to be performed by the controlled device <NUM> may be any number. The controlled device <NUM> may perform only one process, or may perform a plurality of processes. The controlled device <NUM> performs the process based on the instruction received from the controller <NUM> and a device program stored in the controlled device <NUM> itself.

The device program is a program defining an operation of the controlled device <NUM>. In the device program, each procedure of each process is defined. The device program can be created in any language in accordance with the controlled device <NUM>, and is created through use of, for example, a ladder language or a robot language. In the first embodiment, a device program is prepared for each process. Accordingly, when a certain controlled device <NUM> is to perform "n" processes ("n" is a natural number), the controlled device <NUM> stores at least "n" device programs.

In the first embodiment, data relating to the operation of at least one of the controller <NUM> or the controlled device <NUM> is collected by the control program. The data is hereinafter referred to as "collection target data. " The collection target data may be data relating to the operation of both the controller <NUM> and the controlled device <NUM>, or may be data relating to the operation of any one thereof. In the first embodiment, a case in which the collection target data is data relating to the operation of the controlled device <NUM> is described.

For example, the collection target data is generated based on a detection signal from a sensor for detecting the operation of the controlled device <NUM>. The collection target data includes a physical quantity detected by a sensor. The collection target data may indicate an operation at only one time point, or may indicate operations at a plurality of time points in chronological order. The collection target data may have any contents, and examples thereof include a torque value detected by the torque sensor, a speed and a position of the motor detected by the motor encoder, a position and a posture of the robot arm detected by a motion sensor or a gyro sensor, and a temperature detected by a temperature sensor. The collection target data may be internal information of the controlled device <NUM>, and examples thereof may include the load on the CPU <NUM>, the consumption amount of the storage <NUM>, and the communication amount of the communicator <NUM>. The collection target data may indicate a calculation result when the CPU <NUM> performs a predetermined calculation, or may indicate an intermediate result thereof.

In the first embodiment, at least one piece of collection target data is collected by at least one application included in the control program. The control program may include a plurality of applications, and the collection target data to be collected by the applications may be different among the applications. The application itself may be referred to as "control program. " The application may be provided separately from the control program.

The application can collect the collection target data from the controlled device <NUM> by any method. For example, so-called message communication (non-fixed-cycle communication or asynchronous communication) may be used, or a file transfer protocol (FTP) or the like may be used. When there are a plurality of controlled devices <NUM>, the communication method for transmitting the collection target data may be different between one controlled device <NUM> and another controlled device <NUM>. In the first embodiment, the application is described as being created by the same user as a user of the control program, but may be created by a user different from the user of the control program.

<FIG> is a diagram for illustrating a flow of processing for collecting the collection target data. As illustrated in <FIG>, the control program includes a plurality of applications. In the example of <FIG>, the control program includes three applications, namely, a message receiving application A, a message receiving application B, and a file reading application C. Those applications are hereinafter referred to simply as "applications" unless specifically distinguished.

For example, the message receiving application A is an application for collecting first collection target data (for example, a torque value) through use of the message communication. The message receiving application B is an application for collecting second collection target data (for example, a speed of the motor) through use of message communication. The file reading application C is an application for collecting third collection target data (for example, a posture of the robot arm) through use of the FTP.

In the first embodiment, the data collection device <NUM> selects the collection target data, and performs a data collection setting on each of the controller <NUM> and the controlled device <NUM>. For example, as the data collection setting, a type of the collection target data and a collection condition for the collection target data are set. Examples of the collection condition may be a trigger for starting the collection of the collection target data, a sampling period, a scale of the data, and a period for collecting the collection target data. Each of the controller <NUM> and the controlled device <NUM> collects the collection target data based on the data collection setting.

For example, the CPU <NUM> executes the control program to transmit a command for control to the controlled device <NUM>. The command for control is a command for controlling the operation of the controlled device <NUM>, and includes, for example, output to a motor, a position and a speed of the robot arm, and other information. In the first embodiment, the controlled device <NUM> operates based on the command for control, and simultaneously during the operation, generates collection target data to transmit the collection target data to the controller <NUM>. The collection target data may be generated and transmitted by other methods in the same manner as in a second embodiment of the present disclosure and a third embodiment of the present disclosure which are described later.

When the CPU <NUM> receives the collection target data from the controlled device <NUM>, the CPU <NUM> transfers the received collection target data to the IoT unit <NUM>. The collection target data is transferred to the IoT unit <NUM> after being accumulated in the storage included in the CPU <NUM>.

The IoT unit <NUM> records the transferred collection target data in the first storage 22A.

In the first embodiment, the first storage 22A is divided into a synchronous area and an asynchronous area. That is, the controller <NUM> includes the synchronous area regularly subjected to synchronization and the asynchronous area different from the synchronous area. The synchronous area is an area in which synchronization is performed between the CPU <NUM> and the IoT unit <NUM>. The synchronization as used herein is to regularly (periodically) perform the matching of the data. The synchronization is to cause any one of the value stored in the CPU <NUM> and the value stored in the synchronous area of the IoT unit <NUM> to agree with the other (to copy one value to the other).

For example, changing the value stored in the CPU <NUM> to the value stored in the synchronous area of the IoT unit <NUM> for a given variable corresponds to the synchronization. Further, for example, changing the value stored in the synchronous area of the IoT unit <NUM> to the value stored in the CPU <NUM> for a given variable corresponds to the synchronization. The synchronization may be executed mainly by the CPU <NUM> or may be executed mainly by the IoT unit <NUM>. The CPU <NUM> or the IoT unit <NUM> is subjected to the synchronization for each given fixed cycle period.

In the first embodiment, variables stored in the synchronous area are regularly transmitted to the data collection device <NUM>. For example, polling is performed between the data collection device <NUM> and the IoT unit <NUM>, and the data collection device <NUM> regularly collects the variables stored in the synchronous area. The data collection device <NUM> may collect all the variables, but in the first embodiment, it is assumed that only a part of variables are collected. For example, when a user of the data collection device <NUM> and a user of the controller <NUM> are different from each other, a part or all of the variables allowed to be disclosed to the user of the data collection device <NUM> are collected by the data collection device <NUM>.

The asynchronous area is an area that is not a synchronous area. The asynchronous area is an area that is not subjected to the synchronization between the CPU <NUM> and the IoT unit <NUM>. However, the asynchronous area may have data synchronized irregularly (non-periodically). For example, the CPU <NUM> transfers collection target data collected from the controlled device <NUM> to the IoT unit <NUM>, and writes the collection target data into the asynchronous area of the first storage 22A.

In the first embodiment, the asynchronous area is divided into a plurality of channels. The channel is a storage area provided in an asynchronous area. The channel may be formed of serial addresses, or may be formed of non-serial discontinuous addresses. The number of channels provided in the asynchronous area may be freely set, and for example, about several channels may be provided, or ten or more channels may be provided. The channel to be used by each application may be fixed, but in the first embodiment, each application can use any channel.

For example, when all the channels in the asynchronous area are free, the channels are used in order of addresses. In the example of <FIG>, when the message receiving application A first receives the collection target data, the CPU <NUM> writes the collection target data into the first channel <NUM>. When the message receiving application B secondly receives the collection target data, the CPU <NUM> writes the collection target data into the second channel <NUM>. When the file reading application C thirdly receives the collection target data, the CPU <NUM> writes the collection target data into the third channel <NUM>.

The IoT unit <NUM> writes the collection target data written in each channel of the asynchronous area into the second storage 22B. The second storage 22B may also be divided into a plurality of channels. In the first embodiment, the second storage 22B includes at least one buffer area, and the collection target data is written into the buffer area. When the writing of the collection target data into the buffer area is completed, the IoT unit <NUM> transmits a completion notification indicating that the writing of the collection target data is completed to the data collection device <NUM>. When the data collection device <NUM> receives the completion notification, the data collection device <NUM> requests the IoT unit <NUM> for the collection target data that has been written. The IoT unit <NUM> transmits the collection target data to the data collection device <NUM> in response to the request from the data collection device <NUM>.

As described above, the production system <NUM> writes the collection target data into the asynchronous area instead of the synchronous area regularly subjected to the synchronization, and transmits the collection target data to the data collection device <NUM>, to thereby, for example, eliminate the requirement for the polling between the data collection device <NUM> and the controller <NUM>, and reduce the processing load at the time of the data collection. This configuration is described below in detail.

<FIG> is a functional block diagram for illustrating functions to be implemented in the production system <NUM>. In the first embodiment, functions to be implemented in each of the data collection device <NUM>, the controller <NUM>, and the controlled device <NUM> are described.

As illustrated in <FIG>, the data collection device <NUM> includes a data storage <NUM> and a collection module <NUM>.

The data storage <NUM> is mainly implemented by the storage <NUM>. The data storage <NUM> is configured to store data relating to data collection. For example, the data storage <NUM> stores variable data which stores variables collected from the synchronous area of the controller <NUM>. The variable data is regularly collected. The variable data may store the value of a variable at a certain time point, or may store a chronological change of the value of the variable. In addition, the variable data may store only the value of one variable, or may store the values of a plurality of variables. In another example, the variable data may store values calculated based on the values of a plurality of variables. In the first embodiment, the variables included in the variable data are recorded in the synchronous area of the first storage 22A.

Further, for example, the data storage <NUM> stores the collection target data collected from the asynchronous area of the controller <NUM>. The collection target data is data collected irregularly. Further, for example, the data storage <NUM> stores an application for analyzing the operation of the controller <NUM> or the controlled device <NUM>. For example, this application handles the variable data or the collection target data as input, and handles the analysis result as output. In the application, a relationship between the variable data or the collection target data and the analysis result is defined. Feedback may be provided to the controller <NUM> based on the analysis result.

The collection module <NUM> is mainly implemented by the CPU <NUM>. The collection module <NUM> is configured to collect the collection target data from the controller <NUM>. The collection as used herein has the same meaning as that of reception or acquisition. In the first embodiment, the collection module <NUM> transmits a predetermined request to the controller <NUM> when the collection module <NUM> receives the completion notification transmitted by a notification transmission module <NUM> described later. This request is a request for transmission of the collection target data, and is issued by transmitting data having a predetermined format. This request is hereinafter referred to as "data transmission request. " The data transmission request may include information for identifying the collection target data to be transmitted.

The collection module <NUM> determines whether or not the completion notification has been received from the controller <NUM>. When the collection module <NUM> determines that the completion notification has been received, the collection module <NUM> transmits the data transmission request to the controller <NUM>. The collection module <NUM> transmits the data transmission request to the controller <NUM> in response to the reception of the completion notification (on condition that the completion notification has been received). The collection target data is transmitted by a data transmission module <NUM> described later, and the collection module <NUM> collects the transmitted collection target data.

The controller <NUM> may spontaneously transmit the collection target data to the data collection device <NUM>. In this case, the collection module <NUM> receives the collection target data spontaneously transmitted by the controller <NUM>. In another example, the collection module <NUM> may inquire the controller <NUM> about whether or not there is collection target data in the buffer area when the analysis result of the variable data is fed back. In this case, the controller <NUM> may refer to the buffer area in response to the inquiry to transmit the collection target data to the data collection device <NUM>.

As illustrated in <FIG>, in the controller <NUM>, a first data storage <NUM>, a second data storage <NUM>, a third data storage <NUM>, an operation control module <NUM>, an acquisition module <NUM>, a first writing module <NUM>, a first determination module <NUM>, the notification transmission module <NUM>, a second writing module <NUM>, a second determination module <NUM>, a first erasing module <NUM>, a third determination module <NUM>, a second erasing module <NUM>, and the data transmission module <NUM> are implemented.

The first data storage <NUM> is mainly implemented by the first storage 22A. The first data storage <NUM> is configured to store data to be collected by the data collection device <NUM>. In the first embodiment, the first data storage <NUM> has a synchronous area and an asynchronous area. That is, the first data storage <NUM> is divided into a synchronous area and an asynchronous area. The synchronous area is an area in a first address region, and the asynchronous area is an area in a second address region. The first data storage <NUM> may have a plurality of synchronous areas. The first data storage <NUM> may have a plurality of asynchronous areas. Each of the synchronous area and the asynchronous area is a storage area in a predetermined address range.

For example, the first data storage <NUM> is configured to store a current value of each of a plurality of variables in the synchronous area. The current value of the variable stored in the first data storage <NUM> and the current value of the variable stored in the third data storage <NUM> are matched with each other. As described above, the matching of those values is regularly performed. It suffices that data to be synchronized is stored in the synchronous area, and data other than variables may be stored therein. It suffices that the synchronous area stores data to be synchronized.

<FIG> is a table for showing an example of the data stored in the asynchronous area. As shown in <FIG>, the first data storage <NUM> stores at least one piece of collection target data in the asynchronous area. In the first embodiment, the asynchronous area is divided into a plurality of channels, and, for example, at least one piece of collection target data is stored in each individual channel. When the collection target data has a large size, the collection target data may be divided to be stored in a plurality of channels. When the collection target data has a small size, a plurality of pieces of collection target data may be stored in one channel.

The channel is a storage area in a fixed address range provided in the asynchronous area. The channel is an example of the small area included in the asynchronous area. Accordingly, the channel as used in the first embodiment can be read as "small area. " It suffices that the small area is a fixed storage area, and the small area may be referred to as any name other than "channel. " The small area may be associated with the application for collecting the collection target data, or may not particularly be associated with the application. That is, the small area may be an area dedicated to a specific application or an area shared by a plurality of applications.

The second data storage <NUM> is mainly implemented by the second storage 22B. The second data storage <NUM> is configured to store the collection target data transferred from the first data storage <NUM>. In the first embodiment, the second data storage <NUM> has a buffer area. The buffer area is an area for temporarily storing the collection target data to be transmitted to the data collection device <NUM>. The buffer area can also be said to be an area to be referred to by the data collection device <NUM>. The second data storage <NUM> may have a plurality of buffer areas. The buffer area is a storage area in a predetermined address range.

In the first embodiment, a case in which the first data storage <NUM> has the synchronous area and the asynchronous area and the second data storage <NUM> has the buffer area is described. However, the synchronous area, the asynchronous area, and the buffer area may be present in one storage (physically one piece of hardware). In this case, the IoT unit <NUM> may include only one storage in place of the plurality of storages. Further, for example, the synchronous area and the asynchronous area may be present in separate storages. Further, for example, the synchronous area and the buffer area may be present in one storage while the asynchronous area may be present in another storage. Further, for example, the asynchronous area and the buffer area may be present in one storage while the synchronous area may be present in another storage.

The second data storage <NUM> may store all the pieces of collection target data stored in the first data storage <NUM>, or may store only a part of the collection target data. For example, when the second data storage <NUM> has a memory capacity larger than that of the asynchronous area of the first data storage <NUM>, the second data storage <NUM> may store all the pieces of collection target data stored in the asynchronous area of the first data storage <NUM>. Meanwhile, for example, when the second data storage <NUM> has a memory capacity smaller than that of the asynchronous area of the first data storage <NUM>, the second data storage <NUM> may store a part of the collection target data stored in the asynchronous area of the first data storage <NUM>.

The third data storage <NUM> is mainly implemented by at least one of the storage in the CPU <NUM> or the third storage <NUM>. The third data storage <NUM> is configured to store data required for controlling the controlled device <NUM>. For example, the third data storage <NUM> stores the current value of each of the plurality of variables. The third data storage <NUM> stores the current value of each variable. Each variable is stored in a specific register. It is assumed that a relationship between each variable and each register (which variable is stored in which register) is specified in advance by, for example, a creator of the control program. The variables stored in the register can be referred to as appropriate by another device.

Further, for example, the third data storage <NUM> stores a control program (including the application for collecting the collection target data) and parameters. In addition, for example, the third data storage <NUM> may store another program, for example, firmware, or may store a program for transmitting variable data to the data collection device <NUM>. Further, for example, the third data storage <NUM> may store a variable definition indicating a definition of the variables disclosed to the user of the data collection device <NUM>. All or a part of the variables indicated in the variable definition are subjected to the data collection. In addition, for example, the third data storage <NUM> stores a setting for the collection target data.

The data stored in the controller <NUM> is not limited to the above-mentioned example. For example, the controller <NUM> may store data for defining a register corresponding to each variable. Further, for example, the controller <NUM> may store information enabling identification of the controlled device <NUM> to be controlled by the controller <NUM> itself. Further, for example, the controller <NUM> may store information enabling identification of the data collection device <NUM>. Those pieces of data may be stored in any one of the first data storage <NUM>, the second data storage <NUM>, and the third data storage <NUM>.

The operation control module <NUM> is mainly implemented by the CPU <NUM>. The operation control module <NUM> is configured to control the operation of the controlled device <NUM> based on the control program. For example, the operation control module <NUM> sends a command to the controlled device <NUM>, and the controlled device <NUM> operates based on the command. In the first embodiment, the collection target data is collected in response to the command for control, and hence this command can also be said to be a command for collecting the collection target data. The operation control module <NUM> periodically updates each of the plurality of variables to control the controlled device <NUM>. For example, when the controlled device <NUM> operates based on the value of the variables associated with the device program, the operation control module <NUM> sends, to the controlled device <NUM>, an instruction to change the value of the variable for starting the device program. The controlled device <NUM> executes the device program by changing the value of the variable based on the instruction. When the variable is not particularly used for controlling the operation of the controlled device <NUM>, the operation control module <NUM> may control the operation of the controlled device <NUM> by transmitting a command indicating the operation to be executed by the controlled device <NUM>.

The acquisition module <NUM> is mainly implemented by the CPU <NUM>. The acquisition module <NUM> is configured to acquire collection target data relating to the operation of at least one of the controller <NUM> or the controlled device <NUM>. In the first embodiment, the collection target data is generated by a generation module <NUM> described later, and hence the acquisition module <NUM> acquires the collection target data generated by the generation module <NUM>. For example, the acquisition module <NUM> acquires the collection target data based on the application for collecting the collection target data.

The first writing module <NUM> is implemented by the CPU <NUM>. The first writing module <NUM> is configured to write the collection target data into an asynchronous area, which is one of a synchronous area regularly subjected to synchronization and the asynchronous area different from the synchronous area. The writing as used herein has the same meaning as that of storing, recording, or transferring. This point is the same for the writing performed by the second writing module <NUM> described later.

The first writing module <NUM> writes the collection target data acquired by the acquisition module <NUM> into the asynchronous area. The collection target data may be written into the asynchronous area after being temporarily written into the storage area of, for example, the third data storage <NUM>, or may be written into the asynchronous area immediately after the collection target data is acquired without such temporary writing. In the first embodiment, the controller <NUM> includes a first control circuit (the CPU <NUM>) and a second control circuit (the IoT unit <NUM>), and hence the first writing module <NUM> of the first control circuit writes the collection target data into the asynchronous area of the second control circuit.

In the first embodiment, the asynchronous area has a plurality of channels, and hence the first writing module <NUM> selects at least one usable channel from the plurality of channels to write the collection target data. The usable channel is a channel into which the collection target data can be written. For example, a channel storing no collection target data, a channel having an unused capacity larger than the size of the collection target data, or a channel storing the collection target data that has been transmitted to the data collection device <NUM> is the usable channel.

For example, the first writing module <NUM> inquires the IoT unit <NUM> about whether or not there is a usable channel. The inquiry to be made may include a storage size (data size of the collection target data) to be used for writing the collection target data. When the IoT unit <NUM> receives the inquiry, the IoT unit <NUM> refers to the asynchronous area of the second storage 22B to determine whether or not there is a usable channel. At that time, the IoT unit <NUM> may determine whether or not there is a channel having a storage size equal to or larger than the storage size included in the inquiry.

The IoT unit <NUM> transmits the determination result to the first writing module <NUM>. When there are usable channels, the determination result may indicate a part or all of the usable channels. The first writing module <NUM> selects any channel indicated in the determination result. The channel can be selected by any method, for example, the channel having the lowest-numbered address may be selected, or the channel may be randomly selected. The first writing module <NUM> requests the IoT unit <NUM> to write the collection target data into the selected channel.

The first determination module <NUM> is mainly implemented by the IoT unit <NUM>. The first determination module <NUM> is configured to determine whether or not the writing of the collection target data is completed. The first determination module <NUM> can determine whether or not the writing of the collection target data into a freely-selected storage is completed. In the first embodiment, a case in which the first determination module <NUM> determines whether or not the writing of the collection target data into the buffer area of the second data storage <NUM> is completed is described. However, when the buffer area is not particularly provided, the first determination module <NUM> may determine whether or not the writing of the collection target data into the asynchronous area of the first data storage <NUM> is completed. The first determination module <NUM> determines whether or not the writing of up to the last data section of the collection target data is completed.

The notification transmission module <NUM> is mainly implemented by the IoT unit <NUM>. The notification transmission module <NUM> is configured to transmit a predetermined completion notification to the data collection device <NUM> when the first determination module <NUM> determines that the writing of the collection target data is completed. The notification transmission module <NUM> transmits the predetermined completion notification to the data collection device <NUM> in response to the determination by the first determination module <NUM> that the writing of the collection target data is completed (on condition that it is determined that the writing is completed). It suffices that the completion notification has a predetermined format, and may include, for example, the type of collection target data, an address in the buffer area at which the collection target data is stored, and other information.

The second writing module <NUM> is mainly implemented by the IoT unit <NUM>. The second writing module <NUM> is configured to write the collection target data written in the asynchronous area into a buffer area different from the synchronous area and the asynchronous area. The second writing module <NUM> may start to write the collection target data into the buffer area when the writing of the collection target data into the asynchronous area is completed, or may start to write the collection target data into the buffer area during the writing of the collection target data into the asynchronous area.

The second writing module <NUM> may determine whether or not the buffer area is usable. For example, no collection target data being written in the buffer area, the buffer area having an unused capacity equal to or larger the size of the collection target data, or the buffer area storing only the transmitted collection target data corresponds to the buffer area being usable. When it is determined that the buffer area is usable, the second writing module <NUM> writes the collection target data in the asynchronous area into the buffer area. When it is not determined that the buffer area is usable, the second writing module <NUM> waits to write the collection target data from the asynchronous area into the buffer area until it is determined that the buffer area is usable.

The second determination module <NUM> is mainly implemented by the IoT unit <NUM>. The second determination module <NUM> is configured to determine whether or not the writing of the collection target data from the asynchronous area into the buffer area is completed. The second determination module <NUM> determines whether or not the writing of the collection target data up to the last data section of the collection target data which has been written into the asynchronous area into the buffer area is completed.

The first erasing module <NUM> is mainly implemented by the IoT unit <NUM>. The first erasing module <NUM> is configured to erase the collection target data written in the asynchronous area when it is determined that the writing of the data from the asynchronous area into the buffer area is completed. The first erasing module <NUM> erases the collection target data written in the asynchronous area in response to the determination that the writing of the collection target data from the asynchronous area into the buffer area is completed (on condition that it is determined that the writing is completed).

The third determination module <NUM> is mainly implemented by the CPU <NUM>. The third determination module <NUM> is configured to determine whether or not the transmission of the collection target data to the data collection device <NUM> is completed. The third determination module <NUM> determines whether or not the transmission of the collection target data up to the last data section of the collection target data which has been written into the buffer area to the data collection device <NUM> is completed.

The second erasing module <NUM> is mainly implemented by the CPU <NUM>. The second erasing module <NUM> is configured to erase the collection target data written in the buffer area when it is determined that the transmission of the collection target data to the data collection device <NUM> is completed. The second erasing module <NUM> erases the collection target data written in the buffer area in response to the determination that the transmission of the collection target data to the data collection device <NUM> is completed (on condition that it is determined that the transmission is completed).

The data transmission module <NUM> is implemented by the IoT unit <NUM>. The data transmission module <NUM> is configured to transmit the collection target data written in the asynchronous area to the data collection device <NUM>. In the first embodiment, the data collection device <NUM> transmits a predetermined request to the controller <NUM> when the data collection device <NUM> receives the completion notification, and the data transmission module <NUM> transmits the data to the external device when the data transmission module <NUM> receives the request. The data transmission module <NUM> transmits the collection target data written in the asynchronous area in response to the reception of the request (on condition that the request has been received).

In the first embodiment, the collection target data is written into the channel of the asynchronous area, and hence the data transmission module <NUM> transmits the collection target data written in at least one channel to the data collection device <NUM>. When no channel is particularly provided, the data transmission module <NUM> transmits the collection target data in the asynchronous area irrespective of the channel.

Further, in the first embodiment, the collection target data is written into the buffer area, and hence the data transmission module <NUM> transmits the data written in the buffer area to the data collection device <NUM>. When any buffer area is not particularly provided, the data transmission module <NUM> directly transmits the collection target data in the asynchronous area.

As illustrated in <FIG>, in the controlled device <NUM>, a data storage <NUM>, a process execution module <NUM>, and the generation module <NUM> are implemented.

The data storage <NUM> is mainly implemented by the storage <NUM>. The data storage <NUM> is configured to store the data required for the controlled device <NUM> to execute a process. For example, the data storage <NUM> stores the device program and current values of the variables. The current values of the variables stored in the data storage <NUM> is regularly matched with the current values of the variables stored in the first data storage <NUM>. The value of each variable is stored in a predetermined register. In addition, for example, the data storage <NUM> stores the setting for the collection target data.

The process execution module <NUM> is mainly implemented by the CPU <NUM>. The process execution module <NUM> is configured to execute a predetermined process based on the device program stored in the data storage <NUM> and an instruction received from the controller <NUM>. For example, when the controller <NUM> is to start a certain device program, the controller <NUM> transmits to the controlled device <NUM> an instruction to set a variable associated with the device program to a predetermined value. When the controlled device <NUM> receives the instruction, the controlled device <NUM> changes the variable to a predetermined value. When the process execution module <NUM> detects that the variable has been changed to the predetermined value, the process execution module <NUM> executes the device program associated with the variable.

When the process indicated by the device program ends, the process execution module <NUM> changes the variable associated with the device program to a predetermined value, and transmits the fact to the controller <NUM>. Then, when executing another device program, the controller <NUM> transmits to the controlled device <NUM> an instruction to set the variable associated with the another device program to a predetermined value, and the process execution module <NUM> executes the another device program. When the execution order of a plurality of device programs is defined in the controlled device <NUM>, it is not required to transmit the end of the device program to the controller <NUM>, and the process execution module <NUM> may execute the plurality of device programs one after another.

The generation module <NUM> is mainly implemented by the CPU <NUM>. The generation module <NUM> is configured to generate collection target data. For example, the generation module <NUM> generates collection target data based on variables stored in the data storage <NUM>, a detection signal from the sensor connected to the controlled device <NUM>, or internal information of the controlled device <NUM>. In the first embodiment, the data collection device <NUM> performs a setting for the collection target data, and hence the generation module <NUM> generates the collection target data based on this setting. For example, the generation module <NUM> determines whether or not a set collection condition is satisfied. When the generation module <NUM> determines that the collection condition is satisfied, the generation module <NUM> generates collection target data of the type included in the command.

<FIG> and <FIG> are each a flowchart for illustrating an example of processing to be executed in the production system <NUM> according to the first embodiment. The processing illustrated in <FIG> and <FIG> is an example of the processing to be executed by the functional blocks illustrated in <FIG>.

As illustrated in <FIG>, the data collection device <NUM> selects the collection target data to perform a setting for the collection target data on each of the controller <NUM> and the controlled device <NUM> (Step S1). For example, setting contents are specified by the user of the data collection device <NUM>. The data collection device <NUM> transmits the setting contents specified by the user to each of the controller <NUM> and the controlled device <NUM>. Each of the controller <NUM> and the controlled device <NUM> receives and stores the setting contents of the collection target data. The controlled device <NUM> may receive the setting contents via the controller <NUM>, or may be directly and communicatively connected to the data collection device <NUM>.

The CPU <NUM> of the controller <NUM> transmits a command for control to the controlled device <NUM> (Step S2). In Step S2, the CPU <NUM> executes the control program to generate and transmit a command for control including the contents of the operation of the controlled device <NUM>. When the controlled device <NUM> receives the command for control (Step S3), the controlled device <NUM> operates based on the command to generate operation data (Step S4). The operation data is included in the collection target data. For example, the operation data may indicate information other than the contents specified as collection targets. The operation data may indicate a response to the command for control (a response to be transmitted every cycle period).

In Step S4, the collection target data may be generated as well. For example, the controlled device <NUM> determines whether or not the collection condition is satisfied based on the variables stored in the storage <NUM>. The collection condition is not required to be a condition relating to the variables, and the determination may be performed based on, for example, the physical quantity detected by the sensor connected to the controlled device <NUM>, the calculation result of the CPU <NUM>, or the presence or absence of an alarm. When the collection condition is satisfied, the controlled device <NUM> generates the collection target data selected by the data collection device <NUM> based on, for example, the variables or the detection signal from the sensor.

The controlled device <NUM> transmits the collection target data to the controller <NUM> (Step S5). The collection target data transmitted in Step S5 includes the operation data. When a transmission method for the collection target data is specified in advance, the controlled device <NUM> transmits the collection target data generated in Step S4 by the specified transmission method. When a plurality of transmission methods are not provided and only a single transmission method is used, the transmission method may not be specified.

When the controller <NUM> receives the collection target data (Step S6), the CPU <NUM> selects a usable channel from a plurality of channels in the asynchronous area (Step S7). In Step S7, the CPU <NUM> inquires the IoT unit <NUM> about whether or not there are usable channels. The IoT unit <NUM> refers to the asynchronous area of the first storage 22A to determine whether or not there are usable channels. The IoT unit <NUM> transmits the determination result to the CPU <NUM>. The CPU <NUM> receives the determination result. When the determination result indicates that there are usable channels, the CPU <NUM> selects at least one of the usable channels as the usable channel. When the determination result indicates that there are no usable channels, the CPU <NUM> temporarily writes the collection target data into the third storage <NUM>, and waits until a usable channel is provided.

The CPU <NUM> writes the collection target data into the channel selected in Step S7 (Step S8). In Step S8, the CPU <NUM> specifies the channel selected in Step S4 to request the IoT unit <NUM> to write the collection target data. When the IoT unit <NUM> receives the request, the IoT unit <NUM> writes the collection target data into the channel specified by the CPU <NUM>.

Referring next to <FIG>, when the collection target data is written into the selected channel, the IoT unit <NUM> writes the collection target data into the buffer area of the second storage 22B (Step S9). The IoT unit <NUM> determines whether or not the writing of the collection target data from the selected channel into the buffer area is completed (Step S10). When it is not determined that the writing of the collection target data is completed (N in Step S10), the processing returns to the processing of Step S9 to continue the writing of the collection target data. Meanwhile, when it is determined that the writing of the collection target data is completed (Y in Step S10), the IoT unit <NUM> erases the collection target data from the channel into which the writing of the collection target data is completed (Step S11), and transmits the completion notification to the data collection device <NUM> (Step S12). Any one of the processing of Step S11 and the processing of Step S12 may be executed first.

When the data collection device <NUM> receives the completion notification (Step S13), the data collection device <NUM> transmits a data transmission request to the controller <NUM> (Step S14). When the IoT unit <NUM> of the controller <NUM> receives the data transmission request (Step S15), the IoT unit <NUM> transmits the collection target data written in the buffer area to the controller <NUM> (Step S16). The data collection device <NUM> receives the collection target data, and records the collection target data in the storage <NUM> (Step S17).

The IoT unit <NUM> determines whether or not the transmission of the collection target data written in the buffer area is completed (Step S18). When it is not determined that the transmission of the collection target data is completed (N in Step S18), the processing returns to the processing of Step S16 to continue the transmission of the collection target data. Meanwhile, when it is determined that the transmission of the collection target data is completed (Y in Step S18), the IoT unit <NUM> erases the transmitted collection target data written in the buffer area (Step S19), and this processing ends.

With the production system <NUM> described above, data is transmitted to the data collection device <NUM> after being written into the asynchronous area of the first storage 22A including the synchronous area regularly subjected to the synchronization and the asynchronous area different from the synchronous area, to thereby eliminate the requirement for the polling between the data collection device <NUM> and the controller <NUM>. As a result, it is possible to reduce the processing load on each of the data collection device <NUM> and the controller <NUM>.

The production system <NUM> also transmits a notification to the data collection device <NUM> when the writing of the collection target data is completed, and transmits the data written in the asynchronous area when the controller <NUM> receives a request from the external device, to thereby eliminate the requirement for the polling between the data collection device <NUM> and the controller <NUM>. As a result, it is possible to reduce the processing load on each of the data collection device <NUM> and the controller <NUM>.

Further, the production system <NUM> is provided separately with the CPU <NUM> being the first control circuit for controlling the controlled device <NUM> and the IoT unit <NUM> being the second control circuit for transmitting data to the data collection device <NUM>, to thereby distribute the processing load. Accordingly, it is possible to prevent problems from occurring in the control of the controlled device <NUM> and the data transmission. As a result, accuracy of the control can be improved, and the collection target data can be transmitted quickly and accurately.

Further, in the production system <NUM>, the asynchronous area is divided into a plurality of channels. The production system <NUM> writes the collection target data into at least one channel, and transmits the collection target data written in the at least one channel to the data collection device <NUM>, to thereby be able to prevent other pieces of collection target data from being unable to be transmitted until the transmission of a given piece of collection target data is completed. As a result, the asynchronous area can be effectively utilized, and the collection target data can be efficiently transmitted.

Further, the production system <NUM> writes the collection target data written in the asynchronous area into the buffer area, and transmits the collection target data written in the buffer area to the data collection device <NUM>. This enables, for example, the asynchronous area to be utilized for other purposes after the collection target data is written into the buffer area, to thereby be able to effectively utilize the asynchronous area.

Further, the production system <NUM> erases the collection target data written in the asynchronous area when it is determined that the writing of the collection target data from the asynchronous area into the buffer area is completed, to thereby be able to reduce a memory consumption amount and effectively utilize the asynchronous area.

Further, the production system <NUM> erases the data written in the buffer area when it is determined that the transmission of the data to the data collection device <NUM> is completed, to thereby be able to reduce the memory consumption amount and effectively utilize the buffer area.

In the first embodiment, the case in which the controlled device <NUM> operates in accordance with the command received from the controller <NUM> and transmits the collection target data generated during the operation has been described. The controlled device <NUM> may generate and transmit the collection target data based on its own setting irrespective of the command received from the controller <NUM>. Now, the production system <NUM> according to the second embodiment is described. In the second embodiment, an overall configuration and functional blocks of the production system <NUM> are the same as those in the first embodiment. In the second embodiment, a processing flow described with reference to <FIG> and <FIG> is different from that in the first embodiment.

<FIG> is a flowchart for illustrating an example of processing to be executed in the production system <NUM> according to the second embodiment. In the second embodiment as well, a command for control is transmitted from the controller <NUM> to the controlled device <NUM>, but is omitted in <FIG>. As illustrated in <FIG>, the processing of Step S21 is the same as the processing of Step S1. The controlled device <NUM> generates collection target data based on the setting from the data collection device <NUM> (Step S22), and transmits the collection target data to the controller <NUM> (Step S23).

In Step S22, the controlled device <NUM> determines whether or not the collection condition is satisfied irrespective of the command for control (without the command for control). The controlled device <NUM> generates collection target data when it is determined that the collection conditions is satisfied. The controlled device <NUM> transmits the collection target data separately from the response to a command for control. In the second embodiment as well, the collection target data may include operation data. The following processing from Step S24 to Step S26 is the same as the processing from Step S6 to Step S8. After Step S26, the same processing as the processing of Step S9 and the subsequent steps is executed.

According to the second embodiment, the controlled device <NUM> is enabled to generate collection target data without a command for control from the controller <NUM>.

In the second embodiment, the case in which the controlled device <NUM> spontaneously transmits the collection target data has been described, but the controlled device <NUM> may be configured to store the collection target data, and the controller <NUM> may be configured to acquire the collection target data stored in the controlled device <NUM>. That is, the collection target data stored in the controlled device <NUM> may be read out at a timing of the controller <NUM>. Now, the production system <NUM> according to the third embodiment is described.

<FIG> is a flowchart for illustrating an example of processing to be executed in the production system <NUM> according to the third embodiment. In the third embodiment as well, a command for control is transmitted from the controller <NUM> to the controlled device <NUM>, but is omitted in <FIG>. As illustrated in <FIG>, the processing of Step S31 and Step S32 is the same as the processing of Step S21 and Step S22, respectively. The controlled device <NUM> stores, in the storage <NUM>, the collection target data generated irrespective of the command for control (without the command for control), and the controller <NUM> acquires the stored collection target data (Step S33).

In Step S33, the controlled device <NUM> accumulates the collection target data until an acquisition request is received from the controller <NUM> instead of generating and immediately transmitting the collection target data. In the third embodiment, it is assumed that the operation data is not included in the collection target data, but when a transmission timing of the collection target data happens to be simultaneous with a transmission timing of the operation data, the operation data may be included in the collection target data. The controller <NUM> executes an application for collecting the collection target data, and transmits an acquisition request for the collection target data to the controlled device <NUM> at any timing. When the controlled device <NUM> receives the acquisition request, the controlled device <NUM> transmits the stored collection target data to the controller <NUM>. The following processing from Step S34 to Step S36 is the same as the processing from Step S24 to Step S26. After Step S34, the same processing as the processing of Step S9 and the subsequent steps is executed.

The present disclosure is not limited to the embodiments described above, and can be modified suitably without departing from the spirit of the present disclosure.

The acquisition module <NUM> in Modification Example (<NUM>) acquires the collection target data having a data structure defined in advance. The data structure refers to information indicating what is stored in which part of the collection target data. For example, the format, type, contents, or extension of the collection target data corresponds to an example of the data structure. It is assumed that the data structure of the collection target data is stored in the third data storage <NUM>. For example, a definition of the data structure of the collection target data may be described in the control program or the application in the control program. The acquisition module <NUM> acquires the data structure stored in the third data storage <NUM>.

The operation control module <NUM> controls the controlled device <NUM> through use of all or a part of the collection target data based on the data structure defined in advance. The operation control module <NUM> identifies the data structure of the collection target data acquired by the acquisition module <NUM> based on the data structure acquired by the acquisition module <NUM>. The operation control module <NUM> controls the controlled device <NUM> through use of all or a part of the collection target data based on the identified data structure. The controlled device <NUM> is controlled based on the collection target data acquired from the controlled device <NUM>, and hence this control can be referred to as "feedback.

It is assumed that a relationship between the collection target data and control contents is described in an application for feedback. The application for feedback may be a part of the control program, or may be a program provided separately from the control program. For example, the operation control module <NUM> inputs the identified data structure and all or a part of the collection target data into the application for feedback, and determines the control contents in the feedback. When an application is to be prepared for each data structure of the collection target data (for each type of collection target data), the operation control module <NUM> inputs the collection target data to the application corresponding to the identified data structure, and determines the control contents in the feedback.

For example, when the operation control module <NUM> identifies that the collection target data is data relating to the torque value based on the data structure defined in advance, the operation control module <NUM> inputs all or a part of the collection target data to an application for correcting an abnormality of the torque value. The application determines a correction amount of a command relating to a torque directed to the controlled device <NUM> based on the value of the input collection target data. In addition, for example, when the operation control module <NUM> identifies that the collection target data is data relating to the position of the motor based on the data structure defined in advance, the operation control module <NUM> inputs all or a part of the collection target data to an application for correcting an abnormality of the position of the motor. The application determines a correction amount of a command relating to the position of the motor with respect to the controlled device <NUM> based on the value of the input collection target data. Similarly for another data structure, the feedback corresponding to the identified data structure and the collection target data may be performed.

According to Modification Example (<NUM>), the collection target data is generated based on the data structure defined in advance, and the controlled device <NUM> is controlled through use of all or a part of the collection target data, to thereby be able to utilize the collection target data for controlling the controlled device <NUM> while transmitting the data to the data collection device <NUM>. For example, the collection target data is immediately utilized for the control on the controller <NUM> side closer to the controlled device <NUM> to be controlled, to thereby be able to perform the feedback corresponding to the acquired collection target data more quickly than by causing the data collection device <NUM> to analyze the collection target data and feeding back the analysis result to the controlled device <NUM>.

(<NUM>) Further, for example, the application on the controlled device <NUM> side may determine the collection target data without causing the controller <NUM> to identify the data structure of the collection target data. In this case, the application on the controller <NUM> transfers the collection target data to the data collection device <NUM> without identifying the data structure of the collection target data, and hence information for identifying which controlled device <NUM> the collection target data is for may be added to the collection target data. The data structure of the collection target data is identified by the data collection device <NUM>.

The data transmission module <NUM> adds the identification information relating to the controlled device <NUM> to the collection target data, and transmits, to the data collection device <NUM>, the collection target data to which the identification information is added. The identification information may be any information that can uniquely identify the controlled device <NUM>, and is, for example, a name, an IP address, an ID, or other information on the controlled device <NUM>. In Modification Example (<NUM>) of the present disclosure, a case in which the identification information is stored in the third data storage <NUM> is described, but the identification information may be stored in another storage. For example, the command for control includes identification information on the controlled device <NUM> to which the command is to be transmitted. The data transmission module <NUM> adds this identification information to the collection target data acquired from the controlled device <NUM>.

According to Modification Example (<NUM>), the collection target data to which the identification information relating to the controlled device <NUM> is added is transmitted, to thereby enable the controller <NUM> to identify which controlled device <NUM> the collection target data relating to the operation has been received for. As a result, for example, the operation of the controlled device <NUM> can be accurately analyzed.

(<NUM>) Further, for example, when the collection target data has a large size, the collection target data may be divided and written into a plurality of channels. <FIG> is a functional block diagram in Modification Example (<NUM>) of the present disclosure. As illustrated in <FIG>, in Modification Example (<NUM>), in addition to the functions described in the embodiments, a division module <NUM> is implemented on the controller <NUM>. The division module <NUM> is mainly implemented by the CPU <NUM>. The division unit <NUM> is configured to divide the collection target data into a plurality of pieces of data. For example, the division unit <NUM> divides the collection target data into a plurality of pieces of data so that the size of each individual piece of data is equal to or smaller than the size of a channel. The sizes of the individual pieces of data obtained through the division of the collection target data may be equal to or different from one another.

The first writing module <NUM> writes the divided individual pieces of data into the asynchronous area. For example, the first writing module <NUM> writes the individual pieces of data into the asynchronous area by assigning the individual pieces of data to channels different from one another. It may be freely set which data is to be written into which channel. For example, individual pieces of data are stored in channels so that an order of the pieces of data in the collection target data matches an order of the channels.

The data transmission module <NUM> transmits the individual pieces of data written in the asynchronous area to the data collection device <NUM>. The data transmission module <NUM> may combine the divided individual pieces of data into one and then transmit the data, or may transmit the individual pieces of data in a divided state. When the data is transmitted in the divided state, the data is combined on the data collection device <NUM> side. It is assumed that information for identifying that the data belongs to the same collection target data is added to the individual pieces of data when the individual pieces of data in the divided state are sequentially transmitted by the data transmission module <NUM> and combined on the data collection device <NUM> side. The data collection device <NUM> combines the individual pieces of data based on this information, to thereby acquire the collection target data.

According to Modification Example (<NUM>), the collection target data can be efficiently transmitted by dividing the collection target data into a plurality of pieces of data, writing the divided individual pieces of data into the asynchronous area, and transmitting the individual pieces of data written in the asynchronous area.

(<NUM>) Further, for example, the above-mentioned modification examples may be combined.

Further, for example, in the embodiments, the case in which the collection target data is the data relating to the operation of the controlled device <NUM> has been described, but the collection target data may be the data relating to the operation of the controller <NUM>. In this case, the generation module <NUM> is implemented by the CPU <NUM> of the controller <NUM>. The generation module <NUM> generates collection target data relating to the operation of the controller <NUM> based on a detection signal from the sensor connected to the controller <NUM> and internal information of the controller <NUM>. A flow of processing in which the collection target data is transmitted to the data collection device <NUM> is as described in the embodiments. Further, for example, in the first embodiment, the case in which the collection target data is generated and transmitted based on the command for control has been described, but the collection target data may be generated and transmitted based on a command for collection separately from the command for control.

Further, for example, when the writing of the collection target data from the asynchronous area into the buffer area is completed, the collection target data written in the asynchronous area is not particularly required to be erased. In this case, it suffices that, when new collection target data is acquired, the transmitted collection target data stored in the asynchronous area is overwritten. Further, for example, when the transmission of the collection target data to the data collection device <NUM> is completed, the collection target data written in the buffer area is not particularly required to be erased. In this case, it suffices that, when new collection target data is acquired, the transmitted collection target data stored in the buffer area is overwritten.

Further, for example, each of the functions described above may be implemented by any device included in the production system <NUM>. For example, the function described as being implemented by the data collection device <NUM> may be implemented by the controller <NUM> or the controlled device <NUM>. Further, for example, the function described as being implemented by the controller <NUM> may be implemented by the data collection device <NUM> or the controlled device <NUM>. Further, for example, each of the functions may be implemented by one computer instead of being shared by a plurality of computers.

Claim 1:
A production system (<NUM>), comprising a first industrial machine (<NUM>),
wherein the first industrial machine (<NUM>) comprises:
a CPU (<NUM>) configured to control a second industrial machine (<NUM>);
an IoT unit (<NUM>) configured to communicate with an external device (<NUM>), wherein the IoT unit (<NUM>) comprises a first storage unit (22A); and
an acquisition module (<NUM>) configured to acquire data relating to an operation of the second industrial machine (<NUM>);
the CPU (<NUM>) stores the data,
the first storage unit (22A) comprises a synchronous area in which synchronization is regularly performed between the CPU (<NUM>) and the IoT unit (<NUM>),
the first storage unit (22A) comprises an asynchronous area;
the CPU (<NUM>) comprises a writing module (<NUM>) configured to write the data into the asynchronous area of the first storage unit (22A); and
the IoT unit (<NUM>) comprises a data transmission module (<NUM>) configured to transmit the data written in the asynchronous area to the external device (<NUM>);
characterized in that
in the asynchronous area, synchronization is not regularly performed between the CPU (<NUM>) and the IoT unit (<NUM>),
the first industrial machine (<NUM>) includes:
a first determination module (<NUM>) configured to determine whether the writing of the data is completed; and
a notification transmission module (<NUM>) configured to transmit a predetermined notification to the external device (<NUM>) when it is determined that the writing of the data is completed,
wherein the external device (<NUM>) is configured to transmit a predetermined request to the first industrial machine (<NUM>) when the external device (<NUM>) receives the predetermined notification, and
wherein the data transmission module (<NUM>) is configured to transmit the data to the external device (<NUM>) when the predetermined request is received.