WO2015008367A1 - 分散処理方法、システム、および分散処理プログラム - Google Patents

分散処理方法、システム、および分散処理プログラム Download PDF

Info

Publication number
WO2015008367A1
WO2015008367A1 PCT/JP2013/069567 JP2013069567W WO2015008367A1 WO 2015008367 A1 WO2015008367 A1 WO 2015008367A1 JP 2013069567 W JP2013069567 W JP 2013069567W WO 2015008367 A1 WO2015008367 A1 WO 2015008367A1
Authority
WO
WIPO (PCT)
Prior art keywords
communication device
result
job
communication
master
Prior art date
Application number
PCT/JP2013/069567
Other languages
English (en)
French (fr)
Inventor
俊也 大友
浩一郎 山下
鈴木 貴久
宏真 山内
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2015527115A priority Critical patent/JPWO2015008367A1/ja
Priority to PCT/JP2013/069567 priority patent/WO2015008367A1/ja
Priority to TW103119498A priority patent/TWI526973B/zh
Publication of WO2015008367A1 publication Critical patent/WO2015008367A1/ja
Priority to US14/997,545 priority patent/US9996132B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/266Arrangements to supply power to external peripherals either directly from the computer or under computer control, e.g. supply of power through the communication port, computer controlled power-strips
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a distributed processing method, system, and distributed processing program.
  • the present invention provides a distributed processing method and system capable of efficiently performing distributed processing using a plurality of communication devices that operate using electric power generated using energy obtained according to an environment. It is an object to provide a distributed processing program.
  • a specific communication device among the plurality of communication devices is a plurality of communication devices. From a communication device capable of directly communicating with a specific communication device that operates using power charged in a charging unit that charges power generated using energy obtained according to the environment in which the device is installed
  • a predetermined process is executed based on the result of the first process, and a predetermined time elapses after receiving the result of the first process
  • a distributed processing method, system, and distributed processing program for transmitting a result of a predetermined process to a communication device when it is determined whether or not a predetermined time has elapsed are proposed.
  • FIG. 1 is an explanatory diagram of an operation example of the distributed processing method of the system according to the first embodiment.
  • FIG. 2 is a block diagram illustrating a hardware configuration example of the node.
  • FIG. 3 is a block diagram illustrating a hardware configuration example of the inspector terminal.
  • FIG. 4 is a block diagram of an example of functions of the system according to the first embodiment.
  • FIG. 5 is an explanatory diagram of a distributed processing sequence of each node according to the first embodiment.
  • FIG. 6 is an explanatory diagram of an example of a job structure according to the first embodiment.
  • FIG. 7 is a flowchart of an example of a job assignment processing procedure according to the first embodiment.
  • FIG. 8 is a flowchart of an example of a job execution process procedure according to the first embodiment.
  • FIG. 1 is an explanatory diagram of an operation example of the distributed processing method of the system according to the first embodiment.
  • FIG. 2 is a block diagram illustrating a hardware configuration example of the node.
  • FIG. 9 is a flowchart of an example of a job aggregation and reassignment processing procedure according to the first embodiment.
  • FIG. 10 is a flowchart illustrating an example of a job aggregation processing procedure.
  • FIG. 11 is an explanatory diagram of an operation example of the distributed processing method according to the second embodiment.
  • FIG. 12 is a block diagram of a function example of the system according to the second embodiment.
  • FIG. 13 is an explanatory diagram of a distributed processing sequence of each node according to the second embodiment.
  • FIG. 14 is an explanatory diagram of an example of a job structure according to the second embodiment.
  • FIG. 15 is a flowchart of an example of a job assignment processing procedure according to the second embodiment.
  • FIG. 16 is a flowchart of an example of a job execution processing procedure according to the second embodiment.
  • FIG. 17 is a flowchart of an example of a job aggregation and reassignment processing procedure according to the second embodiment.
  • FIG. 1 is an explanatory diagram of an operation example of the distributed processing method of the system according to the first embodiment.
  • the system 100 includes an inspector terminal 101 and a plurality of communication devices.
  • the communication device is referred to as a “node”.
  • the nodes included in the system 100 include a master node that is a specific node and a slave node that is a node other than the specific node.
  • the master node is simply referred to as “master”.
  • the slave node is simply referred to as “slave”.
  • masters include masters # 0 and # 1.
  • Slaves include slaves # a_0 to #a_N, # b_0 to #b_N, # c_0 to #c_N, # d_0 to #d_N, and # e_0 to #e_N.
  • each slave the slaves # a_0 to #a_N, # b_0 to #b_N, # c_0 to #c_N, # d_0 to #d_N, and slaves # e_0 to #e_N are referred to as “each slave”. Further, when referring to the masters # 0 and # 1 and each slave, they are referred to as “each node”.
  • Each node has an energy harvesting element that generates power using energy obtained according to the environment in which each node is installed, and operates using the power charged in the charging unit that charges the power generated by the energy harvesting element Communication device.
  • Each node is arranged in the predetermined region R.
  • the predetermined region R is a region filled with a substance such as concrete, soil, water, air, for example.
  • Each node is activated when it is sufficiently charged, and performs an intermittent operation of transmitting data and sleeping. Further, since the power generated by the energy harvesting element is limited, each node has a short-range radio with low power consumption, and transmits and receives data by multi-hop communication.
  • Each node transmits and receives data by multi-hop communication according to a specific communication path.
  • the specific communication path starts at master # 0 and ends at master # 1. Further, when there are a plurality of specific communication paths in the system 100, each specific communication path shares master # 0 and master # 1, and each slave does not share.
  • the specific communication path may be determined by, for example, an algorithm for determining the communication path, or may be determined by an instruction from the inspector terminal 101.
  • a signal provided with identification information of its own node is transmitted to a node that can be directly communicated by master # 0. If the slave that has received the signal with the identification information of master # 0 does not transmit the signal and there is no identification information of the own node in the received signal, the identification information of the own node is added to the received signal. Then, the data is transmitted to a node capable of direct communication.
  • the content of the signal received by master # 1 is information indicating the communication path.
  • Master # 1 notifies each slave of identification information of a node next to each slave of each slave on the communication path by multi-hop communication. Each slave stores the identification information of the node adjacent to each slave of each slave on the communication path in the storage device.
  • the first communication path is a communication path formed from master # 0, slaves # a_0 to #a_N, and master # 1.
  • the second communication path is a communication path formed from master # 0, slaves # b_0 to #b_N, and master # 1.
  • the third communication path is a communication path formed from master # 0, slaves # c_0 to #c_N, and master # 1.
  • the fourth communication path is a communication path formed from master # 0, slaves # d_0 to #d_N, and master # 1.
  • the fifth communication path is a communication path formed from master # 0, slaves # e_0 to #e_N, and master # 1.
  • Each node may have a sensor. Each node detects data such as temperature, humidity, and stress in the predetermined region R from a sensor included in each node.
  • the inspector terminal 101 collects data detected by each node. The collected data is collected on a server and used for analysis processing. At this time, when data is collected, since the data exists for each node, the amount of data increases, and thus the inspector terminal 101 is loaded. Therefore, the system 100 according to the first embodiment reduces the load applied when the inspector terminal 101 collects data by performing the analysis processing in a distributed manner using the computing ability of each node. Plan.
  • each node when distributed processing is performed at each node, each node operates intermittently. It is difficult to assign processing.
  • the master transmits a signal for inquiring whether or not the slave is operating, the signal is transmitted many times, and the power consumed by the master increases.
  • the remaining power of each node of the plurality of nodes is sufficient, each node can perform the distributed processing once. If you want to distribute more than the number of nodes, it is difficult to assign processing.
  • the master transmits the processing result by the master to a certain slave after a predetermined time has elapsed after receiving the processing result from the certain slave.
  • the system 100 can pass the processing result during the operation of the slave, so that the slave can execute a new process using the processing result.
  • master # 0 assigns processing to each slave. Each slave executes processing, and master # 1 collects processing results. Furthermore, master # 1 assigns a process using the aggregation result to each slave. Each slave executes processing, and master # 0 collects processing results.
  • FIG. 1B shows a communication sequence between master # 1 and slave #a_N that can directly communicate with master # 1 after master # 0 assigns processing to each slave.
  • the rectangle 111 of the slave #a_N indicates the remaining amount of power at each time of the charging unit of the slave #a_N. For example, at time t0, slave #a_N is sufficiently charged.
  • slave #a_N executes the first process and transmits the result of the first process to master # 1.
  • the first process is a process assigned from the master # 0.
  • the program describing the contents of the first processing may be stored in the storage area of the corresponding node by operating the inspector terminal 101 by the administrator of the system 100 after node arrangement or after determining a specific communication path.
  • Master # 0 may transmit a program capable of executing processing contents.
  • the content of the first processing may be any content, for example, the addition processing of the data received by the slave #a_N and the data acquired from the sensor of the slave #a_N, and the hop of the data received by the slave #a_N This is a process for incrementing the number.
  • slave #a_N transmits the result of the first processing to master # 1, and stops operating because the remaining power is exhausted.
  • the result of the first process is, for example, the addition result and the incremented hop number.
  • master # 1 executes a predetermined process based on the result of the first process.
  • the predetermined process is a process related to the first process.
  • the program describing the contents of the predetermined processing is stored in the storage area of the corresponding node by operating the inspector terminal 101 by the administrator of the system 100 after, for example, node arrangement or determination of a specific communication path.
  • the predetermined process is, for example, a process of calculating an average value from the data of the first process and the number of hops.
  • master # 1 determines whether or not a predetermined time has elapsed after receiving the result of the first process.
  • the master # 1 stores the number of clock pulses of the processor in the master # 1 when the result of the first processing is received, and the clock pulse is periodically updated. With reference to the number, it is determined whether or not a predetermined time has elapsed.
  • Specified time is the time to charge the power until the remaining power becomes operable after each slave has no remaining power.
  • the length of the predetermined time may be determined based on a result measured at the time of manufacturing the node, or may be determined based on a power generation amount of the energy harvesting element when the node is arranged. For example, the predetermined time is about 1 minute if it is short and about 10 minutes if it is long.
  • master # 1 transmits the result of the predetermined process to slave #a_N. Thereby, the slave #a_N executes the process again using the result of the predetermined process.
  • the system 100 according to the first embodiment will be described below with reference to FIGS.
  • FIG. 2 is a block diagram illustrating a hardware configuration example of the node.
  • the hardware configuration of the slave # a_0 is shown by taking the slave # a_0 as an example.
  • Other nodes such as master # 0, # 1, slave # a_1 to slave #a_N, slave # b_0 to #b_N, slave # c_0 to #c_N, slave # d_0 to #d_N, slave # e_0 to #e_N, slave #
  • the hardware configuration is the same as that of a_0.
  • the slave # a_0 includes a microprocessor (hereinafter, referred to as “MCU (Micro Control Unit)”) 201, a sensor 202, a wireless communication circuit 203, a RAM (Random Access Memory) 204, and a ROM (Read Only Memory). 205, a nonvolatile memory 206, an antenna 207, a harvester 208, a battery 209, and a PMU (Power Management Unit) 210.
  • the slave # a_0 includes a bus 211 that connects the MCU 201, the sensor 202, the wireless communication circuit 203, the RAM 204, the ROM 205, and the nonvolatile memory 206.
  • the MCU 201 is an arithmetic processing unit that controls the entire slave # a_0.
  • the MCU 201 processes data detected by the sensor 202.
  • the sensor 202 is a device that detects a predetermined amount of displacement at the installation location.
  • a piezoelectric element that detects a pressure at an installation location, an element that detects temperature, a photoelectric element that detects light, or the like can be used.
  • the antenna 207 transmits and receives radio waves for wireless communication with the inspector terminal and other nodes.
  • a radio communication circuit 203 (RF (Radio Frequency)) outputs a received radio wave as a reception signal, and transmits a transmission signal as a radio wave via the antenna 207.
  • the wireless communication circuit 203 may be a communication circuit that adopts short-range wireless that enables communication with other nodes in the vicinity of several tens of centimeters.
  • the RAM 204 is a storage device that stores temporary data for processing in the MCU 201.
  • the ROM 205 is a storage device that stores a processing program executed by the MCU 201.
  • the nonvolatile memory 206 is a writable storage device, and holds predetermined data that is written even when power supply is interrupted.
  • the nonvolatile memory 206 is a flash memory or the like.
  • the harvester 208 is the energy harvesting element described with reference to FIG. 1, and is a device that generates electricity based on the external environment at the installation location of the slave # a_0, for example, energy changes such as light, vibration, temperature, and radio waves (received radio waves). .
  • the harvester 208 may generate power according to the amount of displacement detected by the sensor 202.
  • the battery 209 is a device that stores electric power generated by the harvester 208. That is, the slave # a_0 does not require an external power supply or the like, and generates the power required for the operation in its own device.
  • the PMU 210 is a device that performs control to supply the power stored by the battery 209 to each part of the node as a drive power source.
  • FIG. 3 is a block diagram illustrating a hardware configuration example of the inspector terminal.
  • the inspector terminal 101 includes a processor (CPU (Central Processing Unit)) 301, a large-capacity ROM 302, a RAM 303, a nonvolatile memory 304, an interface (I / O (Input / Output)) circuit 305, and a wireless communication circuit. 311, an antenna 312, and a network I / F 313.
  • the CPU 301 may have higher performance than the MCU 201 of the node.
  • the inspector terminal 101 includes a bus 306 that connects the CPU 301, the ROM 302, the RAM 303, the nonvolatile memory 304, and the I / O circuit 305. Unlike the node, the inspector terminal 101 may operate based on an external power source or may operate based on an internal power source.
  • the nonvolatile memory 304 stores a list of node identification information in the system 100.
  • the I / O circuit 305 is connected to a wireless communication circuit 311, an antenna 312, and a network I / F 313.
  • the inspector terminal 101 can wirelessly communicate with the node via the wireless communication circuit 311 and the antenna 312.
  • the wireless communication circuit 311 may be a communication circuit that employs a short-range radio that enables communication with a node located in the vicinity of several tens of centimeters, or a communication that employs a medium and long-range radio that enables communication with a node located far away. It may be a circuit.
  • the inspector terminal 101 can communicate with an external device such as a server via the network 314 such as the Internet by the IP (Internet Protocol) protocol processing via the network I / F 313.
  • FIG. 4 is a block diagram of an example of functions of the system according to the first embodiment.
  • System 100 includes a charging unit 401, a receiving unit 411, an executing unit 412, a determining unit 413, and a transmitting unit 414.
  • the reception unit 411 to the transmission unit 414 serving as the control unit realize the functions of the reception unit 411 to the transmission unit 414 by causing the MCU 201 to execute the program stored in the storage device.
  • the storage device is, for example, the ROM 205, the RAM 204, the nonvolatile memory 206, or the like shown in FIG.
  • Charging unit 401 is included in slave #a_N and slave #b_N.
  • the charging unit 401 corresponds to the battery 209 described with reference to FIG.
  • Reception unit 411 to transmission unit 414 are included in master # 1.
  • the receiving unit 411 receives the result of the first process executed by the slave #a_N from the slave #a_N that can directly communicate with the master # 1.
  • the reception unit 411 receives the result of the second process executed by the slave #b_N from the slave #b_N that can directly communicate with the master # 1. Similar to the first process, the second process is a process assigned from the master # 0.
  • the received result is stored in a storage area such as the master 204 RAM 204 and the nonvolatile memory 206.
  • the execution unit 412 executes a predetermined process based on the result of the first process received by the reception unit 411.
  • the execution unit 412 receives the result of the second process from the slave #b_N before determining that the predetermined time has elapsed, the execution unit 412 is based on the result of the first process and the result of the second process. Then, a predetermined process may be executed.
  • the result of the predetermined process is stored in a storage area such as the master 204 RAM 204 and the nonvolatile memory 206.
  • the determination unit 413 determines whether a predetermined time has elapsed since the reception unit 411 received the result of the first process.
  • the determination unit 413 may determine whether or not a predetermined time has elapsed since the reception unit 411 received the result of the second process.
  • the determination result is stored in a storage area such as the master 204 RAM 204 and the nonvolatile memory 206.
  • the transmission unit 414 transmits the result of the predetermined process to the slave #a_N when the determination unit 413 determines that a predetermined time has elapsed after receiving the result of the first process. Also, the transmission unit 414 may transmit the result of the predetermined process to the slaves #a_N and #b_N when the determination unit 413 determines that the predetermined time has elapsed since the reception of the result of the second process. Good. Further, the result of the predetermined process may include a request for executing a new process for the slave #a_N.
  • FIG. 5 is an explanatory diagram of a distributed processing sequence of each node according to the first embodiment.
  • distributed processing in a communication path formed by master # 0, slave # a_0, slave # a_1,..., Slave # a_N ⁇ 1, slave #a_N, and master # 1 will be described.
  • Master # 0 executes job assignment processing according to the first embodiment (step S501). Details of the job assignment processing according to the first embodiment will be described later with reference to FIG. Hereinafter, a process assigned to each node is referred to as a job.
  • the job assignment process is a process for creating a job and assigning the job to a plurality of slaves. Information included in the job will be described later with reference to FIG.
  • master # 0 transmits the job to a plurality of slaves including slave # a_0. Specifically, the plurality of slaves are slaves # a_0, # b_0, # c_0, # d_0, and # e_0. After transmission, master # 0 consumes power and stops until charging is completed.
  • Slave # a_0 that has received the job executes job execution processing (step S502). Details of the job execution process will be described later with reference to FIG.
  • slave # a_0 transfers the job to the next node. In this way, jobs are transferred one after another. After the transfer, slave # a_0 consumes power and stops until charging is completed.
  • the system 100 has a data communication path between slaves, and each slave stores identification information of two nodes that transmit and receive data in a storage device such as a nonvolatile memory 206. .
  • a storage device such as a nonvolatile memory 206.
  • the slave transfers the job to the other node as the next node.
  • step S503 Slave #a_N that received the job executes job execution processing.
  • slave #a_N transfers the job to master # 1.
  • slave #a_N consumes power and stops until charging is completed.
  • Master # 1 which has received the job, executes job aggregation and reassignment processing (step S504).
  • Master # 1 receives jobs from a plurality of slaves including slave #a_N.
  • the plurality of slaves are slaves #a_N, #b_N, #c_N, #d_N, and #e_N. Details of the job aggregation and reassignment processing will be described later with reference to FIG.
  • the job aggregation and reassignment process is a process for generating a new job after waiting for the slave #a_N to be charged and assigning a new job to a plurality of slaves.
  • slave #a_N When charging of slave #a_N is completed, it is highly likely that charging of master # 0, slave # a_0,..., Slave # a_N-1 is also completed.
  • master # 1 transmits a new job to a plurality of slaves including slave #a_N. After transmission, master # 1 consumes power and stops until charging is completed.
  • step S505 Slave #a_N that has received the new job executes the job execution process.
  • slave #a_N transfers a new job to the next slave. In this way, new jobs are transferred one after another.
  • the slave # a_0 that has received the new job executes job execution processing (step S506).
  • slave # a_0 transfers a new job to master # 0. After the transfer, slave # a_0 consumes power and stops until charging is completed.
  • the master # 0 that has received the new job executes job aggregation processing (step S507).
  • Master # 0 receives a new job from a plurality of slaves including slave # a_0. Details of the job aggregation process will be described later with reference to FIG.
  • the job aggregation process is a process of waiting until a new job is received from a plurality of slaves and collecting new jobs received from the plurality of slaves.
  • the system 100 according to the first and second embodiments is capable of executing a job for calculating the distribution of sensor data in the system 100. Furthermore, it is assumed that the system 100 according to the first and second embodiments can also execute a job for calculating the sum of sensor data in the system 100 in order to execute a job for calculating variance.
  • FIG. 6 is an explanatory diagram of an example of a job structure according to the first embodiment.
  • the job structure 601 is a program code that defines information included in the job according to the first embodiment.
  • the job structure 601 includes four int type members.
  • the first member is a kind member that stores an identifier indicating the type of job.
  • identifiers indicating job types in this embodiment, “sum calculation” indicating a job for calculating the total sum of data in the system 100 and “distribution calculation” indicating a job for calculating a sample variance of data in the system 100. "
  • the second member is a data member that stores data that is the processing result of the job.
  • the third member is an average member that stores an average value.
  • the fourth member is a hop member that stores the number of hops that is the number of job transfers.
  • job type data stored in the kind member of the job
  • job data data stored in the data member of the job
  • average job value data stored in the average job value
  • job hop count data stored in the hop member of the job
  • FIG. 7 is a flowchart of an example of a job assignment processing procedure according to the first embodiment.
  • the job assignment processing according to the first embodiment is processing for assigning jobs to a plurality of slaves.
  • the job assignment process is executed in response to a job execution instruction from the inspector terminal 101. Alternatively, the job assignment process may be executed periodically.
  • Master # 0 generates a sum calculation job whose job type is “sum calculation” in accordance with job structure 601 (step S701).
  • master # 0 transmits the generated job to a plurality of slaves (step S702).
  • master # 0 ends the job assignment process according to the first embodiment.
  • master # 0 can assign jobs to a plurality of slaves and perform distributed processing within the system 100.
  • FIG. 8 is a flowchart of an example of a job execution process procedure according to the first embodiment.
  • the job execution process according to the first embodiment is a process for executing an assigned job.
  • Each slave executes job execution processing.
  • FIG. 8 a case where any one of a plurality of slaves executes job execution processing will be described.
  • the trigger for any slave to execute job execution is when one of the following three conditions is satisfied.
  • the first condition is when one of the slaves indicated by the connector A in FIG. 8 is the next node of the master # 0, and the process of step S702 shown in FIG. 7 is executed.
  • the second condition is the step shown in FIG. 8 when one of the slaves indicated by the connector B in FIG. 8 is the next node of the other slave, and the job execution processing is executed by the other slave. This is a case where the processing of S810 has been executed.
  • the third condition is when one of the slaves indicated by the connector C in FIG. 8 is the next node of the master # 1, and the process of step S906 shown in FIG. 9 is executed.
  • any slave receives the job (step S801).
  • one of the slaves confirms the job type (step S802). If the job type is a sum calculation job (step S802: sum calculation job), one of the slaves acquires data from the sensor 202 (step S803).
  • one of the slaves stores the acquired data in the nonvolatile memory 304 (step S804).
  • any one of the slaves stores data obtained by adding the acquired data and the job data in the job data (step S805).
  • step S802 distributed calculation job
  • one of the slaves acquires the data of the sensor 202 from the nonvolatile memory 304 (step S806).
  • step S807 one of the slaves calculates the square of the difference between the acquired data and the average value of the job.
  • one of the slaves stores the data obtained by adding the acquired data and the job data in the job data (step S808).
  • step S805 or step S808 either slave increments the hop count of the job (step S809).
  • step S809 one of the slaves transfers the job to the next node (step S810).
  • step S810 one of the slaves ends the job execution processing according to the first embodiment. By executing the job execution process according to the first embodiment, any of the slaves can execute the assigned job.
  • FIG. 9 is a flowchart of an example of a job aggregation and reassignment process procedure according to the first embodiment.
  • the job aggregation and reassignment process according to the first embodiment is a process for collecting jobs, generating a new job, and assigning the job again to the slave.
  • the job aggregation and reassignment process is executed by the master # 1.
  • the job aggregation reassignment process is executed when the process in step S810 is executed by the slave whose next node among the slaves is the master # 1.
  • Master # 1 receives the job (step S901). Master # 1 receives from the slave located at the end of each communication path. Next, master # 1 determines whether or not a predetermined time has elapsed since the last job reception (step S902). When the predetermined time has not elapsed since the last job reception (step S902: No), the master # 1 proceeds to the process of step S901.
  • step S901 and step S902 Details of the processing in step S901 and step S902 will be described.
  • the master # 1 waits until a predetermined time elapses after receiving the job from the first slave.
  • master # 1 waits until a predetermined time elapses after receiving the job from the second slave. In this way, master # 1 receives jobs from the five slaves.
  • the master # 1 executes the process as step S902: Yes without waiting for the jobs to be transmitted from all the slaves.
  • the first reason for not waiting for jobs to be sent from all slaves is that nodes are inexpensive and installed in large quantities, so there is a possibility that the nodes may fail, and some of all slaves This is because the job may not be transmitted from the client. Further, by analyzing the results of receiving a certain number of jobs, the user of the inspector terminal 101 can sufficiently grasp what is happening in the predetermined area R.
  • step S902 When a predetermined time has elapsed since the last job reception (step S902: Yes), the master # 1 calculates an average value of data from the received job data and the number of hops (step S903). Next, the master # 1 generates a distributed calculation job whose job type is “distributed calculation” in accordance with the job structure 601 (step S904). Subsequently, master # 1 sets the calculated average value as the average value of the generated job (step S905). Next, master # 1 transmits the distributed calculation job to a plurality of slaves (step S906).
  • step S902 since a predetermined time has elapsed since the slave that last transmitted the job transmitted the job, the plurality of slaves to be transmitted are sufficiently charged, and the plurality of slaves are It is likely that it can work.
  • step S906 master # 1 ends the job aggregation and reassignment process according to the first embodiment.
  • step S902 the master # 1 waits for a predetermined time after receiving the job, but the master # 1 executes steps S903 and S904 while waiting. Also good. For example, when two jobs are received, master # 1 adds the number of hops of the first and second jobs as the process in the middle of the process of step S903, and first and second The data of the eye job may be added.
  • the master # 1 aggregates the jobs, generates a new job, and after the slave power is sufficiently stored, the master # 1 again becomes the slave. Can be assigned.
  • FIG. 10 is a flowchart illustrating an example of a job aggregation processing procedure.
  • the job aggregation process is a process for aggregating job results.
  • Master # 0 receives the job (step S1001).
  • master # 0 determines whether or not the maximum reception waiting time has elapsed since the first job reception (step S1002).
  • the maximum reception waiting time is a time provided to allow a certain margin so that jobs can be received from a plurality of slaves. For example, the maximum reception waiting time is several seconds.
  • the master # 0 may determine whether the maximum reception waiting time has elapsed since the last job reception.
  • step S1002 If the maximum reception waiting time has not elapsed since the first job reception (step S1002: No), the master # 0 proceeds to the process of step S1001.
  • step S1002 When the maximum reception waiting time has elapsed after receiving the job for the first time (step S1002: Yes), the master # 0 calculates the sample variance of the data from the received job data and the number of hops (step S1003). After the processing in step S1003 is completed, master # 0 ends the job aggregation processing.
  • the job aggregation process does not perform the process of sending a job to another node. Therefore, since it is not necessary to consider that the other nodes are not operating due to insufficient charging, it is not necessary to determine whether a predetermined time has elapsed. By executing the job aggregation process, the system 100 can obtain the aggregation result of the jobs executed in a distributed manner.
  • the system 100 can efficiently execute distributed processing using nodes that operate intermittently.
  • the master # 1 can pass the processing result to the slave #a_N without issuing a signal for inquiring whether the slave #a_N is operating.
  • system 100 can realize distributed parallel processing with the nodes existing between the masters as slaves by causing the nodes at both ends of the specific communication path to play the role of the master.
  • the master # 1 receives the result of another process from another slave while the predetermined time has not elapsed after receiving the result of the certain process from a certain slave. Processing may be performed based on the result of processing and the result of other processing. Thereby, the master # 1 can calculate a result obtained by collecting the processing results from a plurality of slaves.
  • Embodiment 2 (Description of Embodiment 2)
  • the system 100 according to the first embodiment is premised on that there are two masters as specific nodes.
  • the system 100 according to the second embodiment is based on the premise that there is one master as a specific node.
  • a system 1100 according to the second embodiment will be described with reference to FIGS.
  • symbol is attached
  • subjected and illustration and description are abbreviate
  • FIG. 11 is an explanatory diagram of an operation example of the distributed processing method according to the second embodiment.
  • a predetermined region R in which each node included in the system 1100 according to the second embodiment is arranged is a surface of a cylinder.
  • the master is the master # 01.
  • Slaves include slaves # a_0 to #a_N, # b_0 to #b_N, # c_0 to #c_N, # d_0 to #d_N, and # e_0 to #e_N.
  • FIG. 11B is a diagram in which the surface of the cylinder is developed so that slave # a_0 is at the beginning and end of the communication path in FIG. There are five specific communication paths shown in FIG.
  • the first communication path is an annular communication path formed from master # 0, slaves # a_0 to #a_N, and master # 0.
  • the second communication path is an annular communication path formed from master # 0, slaves # b_0 to #b_N, and master # 0.
  • the third communication path is an annular communication path formed from master # 0, slaves # c_0 to #c_N, and master # 0.
  • the fourth communication path is an annular communication path formed from master # 0, slaves # d_0 to #d_N, and master # 0.
  • the fifth communication path is an annular communication path formed from master # 0, slaves # e_0 to #e_N, and master # 0.
  • the communication path in FIG. 11B is a circular communication path with the master # 0 as a base point. Therefore, any one of the slaves other than the master of the communication path determines whether or not a predetermined time has elapsed.
  • FIG. 12 is a block diagram of a function example of the system according to the second embodiment.
  • System 1100 includes a charging unit 401, a receiving unit 1201, an executing unit 1202, a determining unit 1203, and a transmitting unit 1204.
  • the reception unit 1201 to transmission unit 1204 serving as the control unit realizes the functions of the reception unit 1201 to transmission unit 1204 when the MCU 201 executes the program stored in the storage device.
  • the storage device is, for example, the ROM 205, the RAM 204, the nonvolatile memory 206, or the like shown in FIG.
  • Charging unit 401 is included in master # 0, slave # a_i-1, slave #a_i, and slave # a_i + 1.
  • i is an integer of 0 or more and a_N or less.
  • the charging unit 401 corresponds to the battery 209 described with reference to FIG.
  • the reception unit 1201 to transmission unit 1204 are included in the slave #a_i.
  • the receiving unit 1201 receives the result of the first process executed by the above-described node from the first node capable of direct communication. If i is 1 or more, the first node is slave # a_i-1. On the other hand, if i is 0, the first node becomes master # 0. At this time, the first process is the generated process.
  • the received result is stored in a storage area such as the RAM 204 and the nonvolatile memory 206 of the slave #a_i.
  • the execution unit 1202 executes the second process based on the result of the first process.
  • the execution result is stored in a storage area such as the RAM 204 and the nonvolatile memory 206 of the slave #a_i.
  • the determination unit 1203 determines whether or not a predetermined time has elapsed since the reception unit 1201 received the result of the first process.
  • the determination result is stored in a storage area such as the RAM 204 and the nonvolatile memory 206 of the slave #a_i.
  • the transmission unit 1204 transmits the result of the second process to the second node that can directly communicate with the slave #a_i in the annular communication path. If i is smaller than N, the second node becomes slave # a_i + 1. If i is N, the second node becomes master # 0.
  • FIG. 13 is an explanatory diagram of a distributed processing sequence of each node according to the second embodiment.
  • a description will be given of distributed processing in an annular communication path formed from master # 0, slave # a_0, slave # a_1,..., Slave # a_N-1, slave #a_N, and master # 0.
  • Master # 0 executes job assignment processing according to the second embodiment (step S1301). Details of the job assignment processing according to the second embodiment will be described later with reference to FIG.
  • master # 0 transmits the job to a plurality of slaves including slave # a_0. After transmission, master # 0 consumes power and stops until charging is completed.
  • Slave # a_0 that has received the job executes the job execution process according to the second embodiment (step S1302). Details of the job execution process according to the second embodiment will be described later with reference to FIG.
  • the job execution process according to the second embodiment waits until the charging of the master # 0 is completed when the job is executed for the first time. Further, the node that waits until the charging of the master # 0 is completed may be any of the slaves # a_0 to #a_N.
  • slave # a_0 transfers the job to the next slave. After the transfer, slave # 0 consumes power and stops until charging is completed. In this way, jobs are transferred one after another.
  • the slave #a_N that has received the job executes job execution processing (step S1303). In the job execution process, slave #a_N transfers the job to master # 0. After the transfer, slave #a_N consumes power and stops until charging is completed.
  • the master # 0 that has received the job executes the job aggregation and reassignment process according to the second embodiment (step S1304).
  • Master # 0 receives jobs from a plurality of slaves including slave #a_N. Details of the job aggregation and reassignment processing according to the second embodiment will be described later with reference to FIG.
  • the job aggregation and reassignment process according to the second embodiment waits until a job is received from a plurality of slaves, and collects the jobs received from the plurality of slaves. In the job aggregation and reassignment process according to the second embodiment, when a job is reassigned, a new job is generated and a new job is assigned to a plurality of slaves.
  • master # 0 transmits a new job to a plurality of slaves including slave # a_0.
  • the charging of the master # 0 has been completed, so there is a high possibility that the charging of the slave # a_0 has also been completed.
  • master # 0 consumes power and stops until charging is completed.
  • Slave # a_0 that has received the new job executes the job execution process according to the second embodiment (step S1305).
  • the job execution process according to the second embodiment waits until the charging of the master # 0 is completed when a new job is executed for the first time.
  • slave # a_0 transfers a new job to the next slave.
  • slave # a_0 consumes power and stops until charging is completed. In this way, new jobs are transferred one after another.
  • the slave #a_N that has received the new job executes job execution processing (step S1306).
  • slave #a_N transfers a new job to master # 0. After the transfer, slave #a_N consumes power and stops until charging is completed.
  • the master # 0 that has received the new job executes the job aggregation and reassignment process according to the second embodiment (step S1307).
  • Master # 0 receives a new job from a plurality of slaves including slave #a_N.
  • master # 0 waits until a job is received from a plurality of slaves, and collects jobs received from the plurality of slaves.
  • a job structure defining information included in a job according to the second embodiment will be described with reference to FIG.
  • FIG. 14 is an explanatory diagram of an example of a job structure according to the second embodiment.
  • a job structure 1401 is a program code that defines information included in a job according to the second embodiment.
  • the job structure 1401 includes a firsttime member in which an initial flag indicating whether or not the job is executed for the first time in the system is stored.
  • data stored in the firsttime member of the job is referred to as a “job initial flag”.
  • “1” indicates that the corresponding job is executed for the first time
  • “0” indicates that the corresponding job is executed in a node other than the own node.
  • FIG. 15 is a flowchart of an example of a job assignment process procedure according to the second embodiment.
  • the job assignment processing according to the second embodiment is processing for assigning jobs to a plurality of slaves.
  • the master # 0 generates a sum calculation job whose job type is “sum calculation” (step S1501).
  • master # 0 sets the initial flag of the generated job to “1” (step S1502).
  • master # 0 transmits the generated job to a plurality of slaves (step S1503).
  • master # 0 ends the job assignment process according to the second embodiment.
  • master # 0 can assign jobs to a plurality of slaves.
  • FIG. 16 is a flowchart of an example of a job execution process procedure according to the second embodiment.
  • the job execution process according to the second embodiment is a process for executing an assigned job.
  • the job execution process according to the second embodiment is executed by each slave. In the description of FIG. 16, a case where any one of the plurality of slaves executes job execution processing will be described.
  • the trigger for any slave to execute job execution is when one of the following three conditions is satisfied.
  • the first condition is when one of the slaves indicated by the connector D in FIG. 16 is the next node of the master # 0, and the process of step S1503 shown in FIG. 15 is executed.
  • the second condition is that one of the slaves indicated by the connector E in FIG. 16 is the next node of the other slave, the job execution processing is executed by the other slave, and the steps shown in FIG. This is a case where the processing of S1613 is executed.
  • the third condition is when one of the slaves indicated by the connector F in FIG. 16 is the next node of the master # 0, and the process of step S1708 shown in FIG. 17 is executed.
  • step S1601 and steps S1605 to S1613 of the job execution process according to the second embodiment are the same as steps S801 to S810 shown in FIG.
  • step S1601 the slave determines whether the initial flag of the job is “1” (step S1602). If the job initial flag is “1” (step S1602: Yes), one of the slaves sets the job initial flag to “0” (step S1603). Next, one of the slaves waits until a predetermined time elapses (step S1604). Further, any of the slaves may execute the processing up to step S1612 during standby.
  • step S1604 After the processing in step S1604 or when the initial flag of the job is “0” (step S1602: No), one of the slaves proceeds to the processing in step S1605.
  • the slave By executing the job execution process according to the second embodiment, the slave can execute the assigned job and wait until the master # 0 is sufficiently charged. Jobs can be sent during operation.
  • FIG. 17 is a flowchart of an example of a job aggregation and reassignment process procedure according to the second embodiment.
  • the job aggregation and reassignment process according to the second embodiment waits until a job is received from a plurality of slaves, collects jobs received from a plurality of slaves, and reassigns a new job. This is a process of generating and assigning a new job to a plurality of slaves.
  • the job aggregation and reassignment process according to the second embodiment is triggered when the process of step S1613 is executed by a slave whose next node is master # 0 among the slaves.
  • steps S1704 to S1706 and S1708 of the job aggregation and reassignment processing according to the second embodiment are the same as steps S903 to S906 shown in FIG.
  • Master # 0 receives the job (step S1701). Next, master # 0 determines whether or not the maximum reception waiting time has elapsed since the first job reception (step S1702). If the maximum reception waiting time has not elapsed since the first job reception (step S1702: No), the master # 0 proceeds to the process of step S1701.
  • step S1703 When the maximum reception waiting time has elapsed after receiving the job for the first time (step S1702: Yes), the master # 0 confirms the type of job (step S1703). If the job type is a sum calculation job (step S1703: sum calculation job), the master # 0 proceeds to the process of step S1704.
  • step S1706 sets the initial flag of the generated job to “1” (step S1707).
  • master # 0 proceeds to the process of step S1708.
  • step S1703 distributed calculation job
  • master # 0 calculates the sample distribution from the received job data and the number of hops (step S1709).
  • the calculated sample variance value is stored in the nonvolatile memory 304.
  • master # 0 ends the job aggregation and reassignment process according to the second embodiment.
  • the system 1100 can obtain the aggregation result of the jobs executed in a distributed manner.
  • any slave between the masters # 0 waits for a predetermined time, so that the master # 0 is operating. At some point, the result of the process can be sent.
  • the distributed processing method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the distributed processing program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the distributed processing program may be distributed through a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

 環境に応じて得られるエネルギーを用いて発電される電力を用いて動作する複数の通信装置を用いて分散処理を効率的に行うこと。時刻(t1)にて、スレーブ(#a_N)は、第1の処理の結果を、マスタ(#1)に送信し、電力残量が無くなったために、動作を停止する。時刻(t1)から時刻(t2)までのいずれかのときに、マスタ(#1)は、第1の処理の結果に基づいて、所定の処理を実行する。そして、マスタ(#1)は、第1の処理の結果を受信してから所定時間が経過したか否かを判定する。時刻(t2)にて、所定時間が経過したと判定した場合、マスタ(#1)は、所定の処理の結果をスレーブ(#a_N)に送信する。

Description

分散処理方法、システム、および分散処理プログラム
 本発明は、分散処理方法、システム、および分散処理プログラムに関する。
 従来、設置された環境に応じて得られるエネルギーを用いて発電する、エナジーハーベストと呼ばれる技術がある。また、複数の通信装置に処理を分散させる技術がある。関連する先行技術として、たとえば、解析処理を分散処理にて実行する複数の通信装置の出力を検知し、出力がない通信装置を障害が発生したと判断し、複数の通信装置を管理する通信装置に障害が発生した通信装置を復旧させて解析処理を再開するものがある。(たとえば、下記特許文献1を参照。)
特開2010-231295号公報
 しかしながら、上述した従来技術によれば、環境に応じて得られるエネルギーを用いて発電される電力を用いて動作する複数の通信装置で分散処理しようとすると、処理を実行した通信装置の電力が無くなって通信装置の動作が停止する場合がある。この場合、連続して複数の処理を通信装置に割り当てることが難しい。
 1つの側面では、本発明は、環境に応じて得られるエネルギーを用いて発電される電力を用いて動作する複数の通信装置を用いて分散処理を効率的に行うことができる分散処理方法、システム、および分散処理プログラムを提供することを目的とする。
 本発明の一側面によれば、複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理方法において、複数の通信装置のうちの特定の通信装置が、複数の通信装置のうちの、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部に充電された電力を用いて動作する、特定の通信装置に直接通信可能な通信装置から、通信装置によって実行された第1の処理の結果を受信した場合、第1の処理の結果に基づいて、所定の処理を実行し、第1の処理の結果を受信してから所定時間が経過したか否かを判定し、所定時間が経過したと判定した場合、所定の処理の結果を通信装置に送信する分散処理方法、システム、および分散処理プログラムが提案される。
 また、本発明の他の側面によれば、複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理方法において、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部の電力を用いて動作する複数の通信装置のうちの特定の通信装置を基点として複数の通信装置により形成される環状の通信経路における特定の通信装置とは異なる他の通信装置が、環状の通信経路における他の通信装置と直接通信可能な第1の通信装置から、第1の通信装置により実行された第1の処理の結果を受信した場合、第1の処理の結果に基づいて、第2の処理を実行し、第1の処理の結果を受信してから所定時間が経過したか否かを判定し、所定時間が経過したと判定した場合、第2の処理の結果を環状の通信経路における他の通信装置と直接通信可能な第2の通信装置に送信する分散処理方法、システム、および分散処理プログラムが提案される。
 本発明の一態様によれば、環境に応じて得られるエネルギーを用いて発電される電力を用いて動作する複数の通信装置を用いて分散処理を効率的に行うことができるという効果を奏する。
図1は、実施の形態1にかかるシステムの分散処理方法の動作例を示す説明図である。 図2は、ノードのハードウェア構成例を示すブロック図である。 図3は、検査員端末のハードウェア構成例を示すブロック図である。 図4は、実施の形態1にかかるシステムの機能例を示すブロック図である。 図5は、実施の形態1にかかる各ノードの分散処理のシーケンスを示す説明図である。 図6は、実施の形態1にかかるジョブ構造体の一例を示す説明図である。 図7は、実施の形態1にかかるジョブの割当処理手順の一例を示すフローチャートである。 図8は、実施の形態1にかかるジョブの実行処理手順の一例を示すフローチャートである。 図9は、実施の形態1にかかるジョブの集約再割当処理手順の一例を示すフローチャートである。 図10は、ジョブの集約処理手順の一例を示すフローチャートである。 図11は、実施の形態2にかかる分散処理方法の動作例を示す説明図である。 図12は、実施の形態2にかかるシステムの機能例を示すブロック図である。 図13は、実施の形態2にかかる各ノードの分散処理のシーケンスを示す説明図である。 図14は、実施の形態2にかかるジョブ構造体の一例を示す説明図である。 図15は、実施の形態2にかかるジョブの割当処理手順の一例を示すフローチャートである。 図16は、実施の形態2にかかるジョブの実行処理手順の一例を示すフローチャートである。 図17は、実施の形態2にかかるジョブの集約再割当処理手順の一例を示すフローチャートである。
 以下に図面を参照して、開示の分散処理方法、システム、および分散処理プログラムの実施の形態を詳細に説明する。
(実施の形態1の説明)
 図1は、実施の形態1にかかるシステムの分散処理方法の動作例を示す説明図である。システム100は、検査員端末101と、複数の通信装置とを含む。通信装置を、以下、「ノード」と称する。システム100に含まれるノードは、特定のノードであるマスタノードと、特定のノード以外のノードであるスレーブノードがある。以下、マスタノードを、単に、「マスタ」と呼称する。また、スレーブノードを、単に、「スレーブ」と呼称する。図1の(a)で表示するように、マスタは、マスタ#0、#1がある。また、スレーブは、スレーブ#a_0~#a_N、#b_0~#b_N、#c_0~#c_N、#d_0~#d_N、#e_0~#e_Nと、がある。
 以下、スレーブ#a_0~#a_N、#b_0~#b_N、#c_0~#c_N、#d_0~#d_N、スレーブ#e_0~#e_Nを指すときは、「各スレーブ」と称する。また、マスタ#0、#1と、各スレーブとを指すときは、「各ノード」と称する。
 各ノードは、各ノードが設置された環境に応じて得られるエネルギーを用いて発電するエナジーハーベスト素子を有し、エナジーハーベスト素子により発生する電力を充電する充電部に充電された電力を用いて動作する通信装置である。各ノードは、所定領域R内に配置される。所定領域Rは、たとえば、コンクリート、土、水、空気などの物質で満たされた領域である。各ノードは、十分に蓄電されると起動し、データを送信してスリープするという間欠動作を行う。また、エナジーハーベスト素子により発生する電力は限られるため、各ノードは、電力消費が少ない短距離無線を有しており、マルチホップ通信によりデータを送受信する。
 また、各ノードは、特定の通信経路に従ってマルチホップ通信によりデータを送受信する。特定の通信経路は、マスタ#0を始点とし、マスタ#1を終点とする。また、システム100内に特定の通信経路が複数ある場合、各特定の通信経路は、マスタ#0とマスタ#1を共有し、各スレーブは共有しない。特定の通信経路は、たとえば、通信経路を決定するアルゴリズムにより決定されてもよいし、検査員端末101からの指示により決定されてもよい。
 通信経路を決定するアルゴリズムの一例として、たとえば、マスタ#0が直接通信可能なノードに、自ノードの識別情報を付与した信号を送信する。マスタ#0の識別情報を付与した信号を受信したスレーブは、信号を送信しておらず、かつ、受信した信号に自ノードの識別情報が無ければ、自ノードの識別情報を受信した信号に付与して、直接通信可能なノードに送信する。マスタ#1が受信した信号の内容が通信経路を示す情報となる。マスタ#1は、マルチホップ通信により、各スレーブに、通信経路上の各スレーブの各々のスレーブの隣のノードの識別情報を通知する。各スレーブは、通信経路上の各スレーブの各々のスレーブの隣のノードの識別情報を記憶装置に記憶する。
 図1の(a)の例では、所定領域Rに5つの通信経路がある。1つ目の通信経路は、マスタ#0、スレーブ#a_0~#a_N、マスタ#1から形成される通信経路である。2つ目の通信経路は、マスタ#0、スレーブ#b_0~#b_N、マスタ#1から形成される通信経路である。3つ目の通信経路は、マスタ#0、スレーブ#c_0~#c_N、マスタ#1から形成される通信経路である。4つ目の通信経路は、マスタ#0、スレーブ#d_0~#d_N、マスタ#1から形成される通信経路である。5つ目の通信経路は、マスタ#0、スレーブ#e_0~#e_N、マスタ#1から形成される通信経路である。
 各ノードは、センサーを有してもよい。各ノードは、各々が有するセンサーから、所定領域R内の温度、湿度、応力といったデータを検出する。検査員端末101は、各ノードが検出したデータを収集する。収集したデータは、サーバに集約されて、解析処理に用いられる。このとき、データを収集する際に、データはノードごとにあるため、データ量が多くなることから、検査員端末101に負荷がかかる。そのため、実施の形態1にかかるシステム100は、各ノードの演算能力を利用して、解析処理を分散して行うことにより、検査員端末101がデータを収集する際にかかる負荷を低減することを図る。
 しかしながら、各ノードで分散して処理を行う場合、各ノードが間欠動作するために、マスタが、スレーブに処理を実行させようとしても、スレーブが間欠動作しており、スレーブが停止中には、処理を割り当てることが難しい。ここで、マスタが、スレーブが動作中か否かを問い合わせる信号を送信すると、何度も信号を送信することになってしまい、マスタの消費する電力が増大してしまう。また、複数のノードの各ノードの電力残量が十分であれば、各ノードで一回ずつ分散処理を行うことができるが、1回の処理結果を送信したノードの動作が停止するため、各ノードの個数より多く分散したい場合に、処理を割り当てることが難しい。
 そこで、本実施の形態にかかるシステム100において、マスタは、あるスレーブから処理結果を受信した後、所定時間が経過してから、あるスレーブにマスタによる処理結果を送信する。これにより、システム100は、スレーブの動作中に処理結果を渡すことができるため、スレーブに処理結果を用いた新たな処理を実行させることができる。
 具体的に、マスタ#0は、各スレーブに処理を割り当てる。各スレーブは処理を実行していき、マスタ#1は、処理結果を集約する。さらに、マスタ#1は、集約結果を用いる処理を各スレーブに割り当てる。各スレーブは処理を実行していき、マスタ#0は、処理結果を集約する。
 図1の(b)では、マスタ#0が各スレーブに処理を割り当てた後の、マスタ#1と、マスタ#1と直接通信可能なスレーブ#a_Nとの通信のシーケンスを示す。また、スレーブ#a_Nの矩形111は、スレーブ#a_Nの充電部の各時刻の電力残量を示す。たとえば、時刻t0では、スレーブ#a_Nは十分に充電していることを示す。
 時刻t0からt1にかけて、スレーブ#a_Nは、第1の処理を実行し、第1の処理の結果を、マスタ#1に送信する。ここで、第1の処理は、マスタ#0から割り当てられた処理である。第1の処理の内容を記述したプログラムは、ノード配置後や特定の通信経路決定後に、システム100の管理者が検査員端末101を操作して該当ノードの記憶領域に格納してもよいし、処理内容を実行可能なプログラムをマスタ#0が送信してもよい。第1の処理の内容は、どのような内容でもよく、たとえば、スレーブ#a_Nが受信したデータと、スレーブ#a_Nのセンサーから取得したデータとの加算処理と、スレーブ#a_Nが受信したデータのホップ数をインクリメントする処理内容である。
 時刻t1にて、スレーブ#a_Nは、第1の処理の結果を、マスタ#1に送信し、電力残量が無くなったために、動作を停止する。第1の処理の結果は、たとえば、加算結果とインクリメントしたホップ数である。
 時刻t1から時刻t2までのいずれかのときに、マスタ#1は、第1の処理の結果に基づいて、所定の処理を実行する。所定の処理は、第1の処理に関する処理である。所定の処理の内容を記述したプログラムは、たとえば、ノード配置後や特定の通信経路決定後に、システム100の管理者が検査員端末101を操作して該当ノードの記憶領域に格納する。所定の処理は、たとえば、第1の処理のデータとホップ数から、平均値を計算する処理である。
 そして、マスタ#1は、第1の処理の結果を受信してから所定時間が経過したか否かを判定する。具体的な判定方法として、たとえば、マスタ#1は、第1の処理の結果を受信したときの、マスタ#1内にあるプロセッサのクロックパルスの数を記憶しておき、定期的にクロックパルスの数を参照して、所定時間が経過したか否かを判定する。
 所定時間は、各スレーブの電力残量が無くなってから動作可能となる電力残量までの電力を充電する時間である。実際に、所定時間の大きさは、ノード製造時に計測した結果に基づいて決定してもよいし、ノードを配置した際のエナジーハーベスト素子の発電量に基づいて決定してもよい。たとえば、所定時間は、短ければ1分、長ければ10分ぐらいとなる。
 時刻t2にて、所定時間が経過したと判定した場合、マスタ#1は、所定の処理の結果をスレーブ#a_Nに送信する。これにより、スレーブ#a_Nは、所定の処理の結果を用いて、再び処理を実行する。以下、実施の形態1にかかるシステム100について、図2~図10を用いて説明する。
(ノードのハードウェア構成例)
 図2は、ノードのハードウェア構成例を示すブロック図である。図2の例では、スレーブ#a_0を例として、スレーブ#a_0のハードウェア構成を示す。マスタ#0、#1、スレーブ#a_1~スレーブ#a_N、スレーブ#b_0~#b_N、スレーブ#c_0~#c_N、スレーブ#d_0~#d_N、スレーブ#e_0~#e_Nといった他のノードも、スレーブ#a_0と同様のハードウェア構成となる。スレーブ#a_0は、マイクロプロセッサ(以下、「MCU(Micro Control Unit)」と称する。)201と、センサー202と、無線通信回路203と、RAM(Random Access Memory)204と、ROM(Read Only Memory)205と、不揮発メモリ206と、アンテナ207と、ハーベスタ208と、バッテリ209と、PMU(Power Management Unit)210と、を有する。スレーブ#a_0は、MCU201と、センサー202と、無線通信回路203と、RAM204と、ROM205と、不揮発メモリ206と、を接続するバス211を有する。
 MCU201は、スレーブ#a_0の全体の制御を司る演算処理装置である。たとえば、MCU201は、センサー202が検出したデータを処理する。センサー202は、設置箇所における所定の変位量を検出する装置である。センサー202は、たとえば、設置箇所の圧力を検出する圧電素子や、温度を検出する素子、光を検出する光電素子などを用いることができる。アンテナ207は、検査員端末や他のノードと無線通信する電波を送受信する。無線通信回路203(RF(Radio Frequency))は、受信した無線電波を受信信号として出力し、送信信号を無線電波としてアンテナ207を介して送信する。無線通信回路203は、数10cm付近にある他ノードと通信可能とする短距離無線が採用された通信回路でよい。
 RAM204は、MCU201における処理の一時データを格納する記憶装置である。ROM205は、MCU201が実行する処理プログラムなどを格納する記憶装置である。不揮発メモリ206は、書き込み可能な記憶装置であって、電力供給が途絶えたときにおいても書き込まれた所定のデータを保持する。たとえば、不揮発メモリ206は、フラッシュメモリ等が採用される。
 ハーベスタ208は、図1で説明したエナジーハーベスト素子であり、スレーブ#a_0の設置箇所における外部環境、たとえば、光、振動、温度、無線電波(受信電波)などのエネルギー変化に基づき発電する装置である。また、ハーベスタ208は、センサー202によって検出された変位量に応じて発電してもよい。バッテリ209は、ハーベスタ208により発電された電力を蓄える装置である。すなわち、スレーブ#a_0は、外部電源などが不要であり、動作に要求される電力を自装置の内部で生成する。PMU210は、バッテリ209によって蓄えられた電力を、ノードの各部に駆動電源として供給する制御を行う装置である。
(検査員端末101のハードウェア構成例)
 図3は、検査員端末のハードウェア構成例を示すブロック図である。検査員端末101は、プロセッサ(CPU(Central Processing Unit))301と、大容量のROM302と、RAM303と、不揮発メモリ304と、インターフェース(I/O(Input/Output))回路305と、無線通信回路311と、アンテナ312と、ネットワークI/F313と、を有する。CPU301は、ノードのMCU201よりも高性能であってもよい。検査員端末101は、CPU301と、ROM302と、RAM303と、不揮発メモリ304と、I/O回路305と、を接続するバス306を有する。検査員端末101は、ノードと異なり外部電源に基づき動作してもよいし、内部電源に基づき動作してもよい。不揮発メモリ304は、システム100内のノード識別情報一覧を記憶する。
 また、I/O回路305には、無線通信回路311およびアンテナ312と、ネットワークI/F313が接続される。これにより、検査員端末101は、無線通信回路311およびアンテナ312を介して、ノードと無線通信することができる。なお、無線通信回路311は、数10cm付近にあるノードと通信可能とする短距離無線が採用された通信回路でもよいし、遠方にあるノードと通信可能とする中長距離無線が採用された通信回路でもよい。さらに、検査員端末101は、ネットワークI/F313を介して、IP(Internet Protocol)のプロトコル処理などにより、インターネットなどのネットワーク314を介してサーバなどの外部装置と通信を行うことができる。
(システム100の機能)
 図4は、実施の形態1にかかるシステムの機能例を示すブロック図である。システム100は、充電部401と、受信部411と、実行部412と、判定部413と、送信部414と、を含む。制御部となる受信部411~送信部414は、記憶装置に記憶されたプログラムをMCU201が実行することにより、受信部411~送信部414の機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM205、RAM204、不揮発メモリ206などである。充電部401は、スレーブ#a_Nとスレーブ#b_Nとに含まれる。充電部401は、図2にて説明したバッテリ209に相当する。受信部411~送信部414は、マスタ#1に含まれる。
 受信部411は、マスタ#1に直接通信可能なスレーブ#a_Nから、スレーブ#a_Nによって実行された第1の処理の結果を受信する。また、受信部411は、マスタ#1に直接通信可能なスレーブ#b_Nから、スレーブ#b_Nによって実行された第2の処理の結果を受信する。第2の処理は、第1の処理同様に、マスタ#0から割り当てられた処理である。なお、受信した結果は、マスタ#1のRAM204、不揮発メモリ206等の記憶領域に格納される。
 実行部412は、受信部411によって受信された第1の処理の結果に基づいて、所定の処理を実行する。また、実行部412は、所定時間が経過したと判定する前に、スレーブ#b_Nから、第2の処理の結果を受信した場合、第1の処理の結果と第2の処理の結果とに基づいて、所定の処理を実行してもよい。なお、所定の処理の結果は、マスタ#1のRAM204、不揮発メモリ206等の記憶領域に格納される。
 判定部413は、受信部411が第1の処理の結果を受信してから所定時間が経過したか否かを判定する。また、判定部413は、受信部411が第2の処理の結果を受信してから所定時間が経過したか否かを判定してもよい。なお、判定結果は、マスタ#1のRAM204、不揮発メモリ206等の記憶領域に格納される。
 送信部414は、判定部413によって第1の処理の結果を受信してから所定時間が経過したと判定された場合、所定の処理の結果をスレーブ#a_Nに送信する。また、送信部414は、判定部413によって第2の処理の結果を受信してから所定時間が経過したと判定された場合、所定の処理の結果をスレーブ#a_N、#b_Nに送信してもよい。また、所定の処理の結果は、スレーブ#a_Nに対する新たな処理の実行要求を含んでもよい。
 図5は、実施の形態1にかかる各ノードの分散処理のシーケンスを示す説明図である。図5の例では、マスタ#0、スレーブ#a_0、スレーブ#a_1、…、スレーブ#a_N-1、スレーブ#a_N、マスタ#1から形成される通信経路における分散処理について説明する。
 マスタ#0は、実施の形態1にかかるジョブの割当処理を実行する(ステップS501)。実施の形態1にかかるジョブの割当処理の詳細については、図7にて後述する。以下、各ノードに割り当てる処理をジョブとする。ジョブの割当処理は、ジョブを生成し、複数のスレーブにジョブを割り当てる処理である。ジョブに含まれる情報については、図6にて後述する。ジョブの割当処理の中で、マスタ#0は、ジョブをスレーブ#a_0を含む複数のスレーブに送信する。具体的に、複数のスレーブは、スレーブ#a_0、#b_0、#c_0、#d_0、#e_0となる。送信後、マスタ#0は、電力を消費したため、充電が完了するまで停止する。
 ジョブを受信したスレーブ#a_0は、ジョブの実行処理を実行する(ステップS502)。ジョブの実行処理の詳細は、図8にて後述する。ジョブの実行処理の中で、スレーブ#a_0は、ジョブを次のノードに転送する。このように、次々ジョブが転送される。転送後、スレーブ#a_0は、電力を消費したため、充電が完了するまで停止する。
 ここで、次のノードについて説明する。図1で説明したように、システム100は、スレーブ間のデータの通信経路が決まっており、各スレーブは、データを送受信する2つのノードの識別情報を不揮発メモリ206といった記憶装置に記憶している。各スレーブは、不揮発メモリ206に記憶した識別情報から特定される2つのノードのうちのいずれか一方のノードからジョブを受信した際、次のノードとして他方のノードにジョブを転送する。
 ジョブを受信したスレーブ#a_Nは、ジョブの実行処理を実行する(ステップS503)。ジョブの実行処理の中で、スレーブ#a_Nは、ジョブをマスタ#1に転送する。転送後、スレーブ#a_Nは、電力を消費したため、充電が完了するまで停止する。
 ジョブを受信したマスタ#1は、ジョブの集約再割当処理を実行する(ステップS504)。マスタ#1は、ジョブをスレーブ#a_Nを含む複数のスレーブから受信する。具体的に、複数のスレーブとは、スレーブ#a_N、#b_N、#c_N、#d_N、#e_Nとなる。ジョブの集約再割当処理の詳細については、図9にて後述する。ジョブの集約再割当処理は、スレーブ#a_Nの充電が完了するまで待機した後、新たなジョブを生成して、複数のスレーブに新たなジョブを割り当てる処理である。
 スレーブ#a_Nの充電が完了した場合、マスタ#0、スレーブ#a_0、…、スレーブ#a_N-1の充電も完了している可能性が高い。ジョブの集約再割当処理の中で、マスタ#1は、新たなジョブをスレーブ#a_Nを含む複数のスレーブに送信する。送信後、マスタ#1は、電力を消費したため、充電が完了するまで停止する。
 新たなジョブを受信したスレーブ#a_Nは、ジョブの実行処理を実行する(ステップS505)。ジョブの実行処理の中で、スレーブ#a_Nは、新たなジョブを次のスレーブに転送する。このように、次々新たなジョブが転送される。新たなジョブを受信したスレーブ#a_0は、ジョブの実行処理を実行する(ステップS506)。ジョブの実行処理の中で、スレーブ#a_0は、新たなジョブをマスタ#0に転送する。転送後、スレーブ#a_0は、電力を消費したため、充電が完了するまで停止する。
 新たなジョブを受信したマスタ#0は、ジョブの集約処理を実行する(ステップS507)。マスタ#0は、新たなジョブをスレーブ#a_0を含む複数のスレーブから受信する。ジョブの集約処理の詳細については、図10にて後述する。ジョブの集約処理は、複数のスレーブから新たなジョブを受信するまで待機して、複数のスレーブから受信した新たなジョブを収集する処理である。
 次に、図6を用いて、ジョブに含まれる情報を定義したジョブ構造体について説明する。実施の形態1、2にかかるシステム100は、システム100内のセンサーデータの分散を計算するジョブを実行することが可能であるとする。さらに、実施の形態1、2にかかるシステム100は、分散を計算するジョブを実行するために、システム100内のセンサーデータの総和を計算するジョブも実行することが可能であるとする。
 図6は、実施の形態1にかかるジョブ構造体の一例を示す説明図である。ジョブ構造体601は、実施の形態1にかかるジョブに含まれる情報を定義したプログラムコードである。ジョブ構造体601は、4つのint型のメンバを含む。1つ目のメンバは、ジョブの種類を示す識別子が格納されるkindメンバである。ジョブの種類を示す識別子として、本実施の形態では、システム100内のデータの総和を計算するジョブを示す“総和計算”と、システム100内のデータの標本分散を計算するジョブを示す“分散計算”とがある。
 2つ目のメンバは、ジョブの処理結果となるデータが格納されるdataメンバである。3つ目のメンバは、平均値が格納されるaverageメンバである。4つ目のメンバは、ジョブの転送回数であるホップ数が格納されるhopメンバである。
 以下、説明の簡略化のため、ジョブのkindメンバに格納されたデータを、「ジョブの種類」と呼称する。また、ジョブのdataメンバに格納されたデータを、「ジョブのデータ」と呼称する。さらに、ジョブのaverageメンバに格納されたデータを、「ジョブの平均値」と呼称する。また、ジョブのhopメンバに格納されたデータを、「ジョブのホップ数」と呼称する。
 次に、図5に示した、ジョブの割当処理と、ジョブの実行処理と、ジョブの集約再割当処理と、ジョブの集約処理と、のフローチャートについて、図7~図10を用いて説明する。
 図7は、実施の形態1にかかるジョブの割当処理手順の一例を示すフローチャートである。実施の形態1にかかるジョブの割当処理は、複数のスレーブにジョブを割り当てる処理である。ジョブの割当処理は、検査員端末101からのジョブ実行の指示を契機として実行される。または、ジョブの割当処理は、定期的に実行されてもよい。
 マスタ#0は、ジョブ構造体601に従って、ジョブの種類が“総和計算”である総和計算ジョブを生成する(ステップS701)。次に、マスタ#0は、生成したジョブを複数のスレーブに送信する(ステップS702)。ステップS702の処理終了後、マスタ#0は、実施の形態1にかかるジョブの割当処理を終了する。実施の形態1にかかるジョブの割当処理を実行することにより、マスタ#0は、複数のスレーブにジョブを割り当てて、システム100内でジョブを分散処理することができる。
 図8は、実施の形態1にかかるジョブの実行処理手順の一例を示すフローチャートである。実施の形態1にかかるジョブの実行処理は、割り当てられたジョブを実行する処理である。ジョブの実行処理は、各スレーブが実行する。図8の説明では、複数のスレーブのうちのいずれかのスレーブがジョブの実行処理を実行する場合について説明する。
 いずれかのスレーブがジョブの実行処理を実行する契機は、次の3つの条件のいずれかを満たす時である。1つ目の条件は、図8中の結合子Aが示す、いずれかのスレーブがマスタ#0の次のノードであり、図7に示したステップS702の処理が実行された場合である。2つ目の条件は、図8中の結合子Bが示す、いずれかのスレーブが他のスレーブの次のノードであり、他のスレーブによりジョブの実行処理が実行されて、図8に示すステップS810の処理が実行された場合である。3つ目の条件は、図8中の結合子Cが示す、いずれかのスレーブがマスタ#1の次のノードであり、図9に示すステップS906の処理が実行された場合である。
 いずれかのスレーブは、ジョブを受信する(ステップS801)。次に、いずれかのスレーブは、ジョブの種類を確認する(ステップS802)。ジョブの種類が総和計算ジョブである場合(ステップS802:総和計算ジョブ)、いずれかのスレーブは、センサー202からデータを取得する(ステップS803)。次に、いずれかのスレーブは、取得したデータを、不揮発メモリ304に格納する(ステップS804)。続けて、いずれかのスレーブは、取得したデータとジョブのデータとを加算したデータを、ジョブのデータに格納する(ステップS805)。
 ジョブの種類が分散計算ジョブである場合(ステップS802:分散計算ジョブ)、いずれかのスレーブは、不揮発メモリ304からセンサー202のデータを取得する(ステップS806)。次に、いずれかのスレーブは、取得したデータと、ジョブの平均値との差の2乗を算出する(ステップS807)。続けて、いずれかのスレーブは、取得したデータとジョブのデータとを加算したデータを、ジョブのデータに格納する(ステップS808)。
 ステップS805、またはステップS808の処理終了後、いずれかのスレーブは、ジョブのホップ数をインクリメントする(ステップS809)。次に、いずれかのスレーブは、ジョブを次のノードに転送する(ステップS810)。ステップS810の処理終了後、いずれかのスレーブは、実施の形態1にかかるジョブの実行処理を終了する。実施の形態1にかかるジョブの実行処理を実行することにより、いずれかのスレーブは、割り当てられたジョブを実行することができる。
 図9は、実施の形態1にかかるジョブの集約再割当処理手順の一例を示すフローチャートである。実施の形態1にかかるジョブの集約再割当処理は、ジョブを集約して、新たなジョブを生成して、再びスレーブに割り当てる処理である。ジョブの集約再割当処理は、マスタ#1が実行する。また、ジョブの集約再割当処理が実行される契機は、各スレーブのうちの次のノードがマスタ#1となるスレーブによって、ステップS810の処理が実行された場合である。
 マスタ#1は、ジョブを受信する(ステップS901)。マスタ#1は、各通信経路の末端に位置するスレーブから受信する。次に、マスタ#1は、最後にジョブを受信してから所定時間が経過したか否かを判断する(ステップS902)。最後にジョブを受信してから所定時間が経過していない場合(ステップS902:No)、マスタ#1は、ステップS901の処理に移行する。
 ステップS901とステップS902の処理の詳細について説明する。図1が示すように5つの通信経路がある場合、5つのスレーブからジョブを受信する。マスタ#1は、1つ目のスレーブからジョブを受信した後、1つ目のスレーブからジョブを受信してから所定時間が経過するまで待機する。待機中に2つ目のスレーブからジョブを受信した場合、マスタ#1は、2つ目のスレーブからジョブを受信してから所定時間が経過するまで待機する。このようにして、マスタ#1は、5つのスレーブからジョブを受信する。
 ある程度の数のジョブを受信して、所定時間が経過した場合、マスタ#1は、全てのスレーブからジョブが送信されるのを待たずに、ステップS902:Yesとして、処理を実行する。全てのスレーブからジョブが送信されるのを待たない理由の1つ目として、ノードは安価で大量に設置されるため、ノードが故障する可能性があり、全てのスレーブのうちの一部のスレーブからジョブが送信されない可能性があるためである。また、ある程度の数のジョブを受信した結果を解析することにより、検査員端末101の利用者は、所定領域Rで何が起こっているかを十分に把握することができる。
 最後にジョブを受信してから所定時間が経過した場合(ステップS902:Yes)、マスタ#1は、受信したジョブのデータおよびホップ数から、データの平均値を算出する(ステップS903)。次に、マスタ#1は、ジョブ構造体601に従って、ジョブの種類が“分散計算”である分散計算ジョブを生成する(ステップS904)。続けて、マスタ#1は、生成したジョブの平均値に、算出した平均値を設定する(ステップS905)。次に、マスタ#1は、分散計算ジョブを、複数のスレーブに送信する(ステップS906)。このとき、ステップS902の処理により、最後にジョブを送信したスレーブがジョブを送信してから所定時間が経過しているため、送信対象となる複数のスレーブの充電が十分であり、複数のスレーブが動作することが出来る可能性が高い。
 ステップS906の処理終了後、マスタ#1は、実施の形態1にかかるジョブの集約再割当処理を終了する。また、ステップS902の処理において、ジョブを受信してから所定時間が経過したか待機することになるが、マスタ#1は、待機中に、ステップS903の処理とステップS904の処理とを実行してもよい。たとえば、ジョブを2つ受信した場合、ステップS903の処理の途中の処理として、マスタ#1は、1つ目および2つ目のジョブのホップ数を加算しておくとともに、1つ目および2つ目のジョブのデータを加算しておいてもよい。
 実施の形態1にかかるジョブの集約再割当処理を実行することにより、マスタ#1は、ジョブを集約して、新たなジョブを生成して、スレーブの電力が十分蓄電された後、再びスレーブに割り当てることができる。
 図10は、ジョブの集約処理手順の一例を示すフローチャートである。ジョブの集約処理は、ジョブの結果を集約する処理である。マスタ#0は、ジョブを受信する(ステップS1001)。次に、マスタ#0は、初めてジョブを受信してから最大受信待ち時間が経過したか否かを判断する(ステップS1002)。最大受信待ち時間とは、複数のスレーブからジョブを受信できるように、ある程度の余裕を持たせるために設けた時間である。たとえば、最大受信待ち時間は、数秒である。また、ステップS1002の処理において、マスタ#0は、最後にジョブを受信してから最大受信待ち時間が経過したか否かを判断してもよい。
 初めてジョブを受信してから最大受信待ち時間が経過していない場合(ステップS1002:No)、マスタ#0は、ステップS1001の処理に移行する。初めてジョブを受信してから最大受信待ち時間が経過した場合(ステップS1002:Yes)、マスタ#0は、受信したジョブのデータおよびホップ数から、データの標本分散を算出する(ステップS1003)。ステップS1003の処理終了後、マスタ#0は、ジョブの集約処理を終了する。
 なお、ジョブの集約処理は、他のノードにジョブを送信する、という処理を行わない。したがって、他のノードの充電が不十分のため動作していないことを考慮しなくてよいため、所定時間経過したか判定しなくてよい。ジョブの集約処理を実行することにより、システム100は、分散して実行されたジョブの集約結果を得ることができる。
 以上説明したように、システム100によれば、スレーブから処理結果を受信した後、所定時間が経過してからスレーブに別の処理結果を送信する。これにより、システム100は、間欠動作するノードを用いて、分散処理を効率的に実行することができる。たとえば、マスタ#1は、スレーブ#a_Nが動作中か否かを問い合わせる信号を発行せずに、スレーブ#a_Nに処理結果を渡すことができる。
 また、システム100は、特定の通信経路の両端にあるノードにマスタの役割を担わせることにより、マスタ間に存在するノードをスレーブとして分散並列処理を実現することができる。
 また、システム100によれば、マスタ#1は、あるスレーブからある処理の結果を受信した後、所定時間が経過していない間に、他のスレーブから他の処理の結果を受信した場合、ある処理の結果と他の処理の結果に基づいて、処理を行ってもよい。これにより、マスタ#1は、複数のスレーブからの処理結果を集約した結果を算出することができる。
(実施の形態2の説明)
 実施の形態1にかかるシステム100は、特定のノードとなるマスタが2つであることを前提とする。一方、実施の形態2にかかるシステム100は、特定のノードとなるマスタが1つであることを前提とする。以下、実施の形態2にかかるシステム1100について、図11~図17を用いて説明する。なお、実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
 図11は、実施の形態2にかかる分散処理方法の動作例を示す説明図である。図11の(a)が示すように、実施の形態2にかかるシステム1100に含まれる各ノードが配置される所定領域Rが円柱の表面となる。図11の(a)で表示するように、マスタは、マスタ#01つである。また、スレーブは、スレーブ#a_0~#a_N、#b_0~#b_N、#c_0~#c_N、#d_0~#d_N、#e_0~#e_Nと、がある。図11の(b)は、図11の(a)において、スレーブ#a_0が通信経路の先頭かつ末尾となるように円柱の表面を展開した図である。図11の(b)に示す特定の通信経路は、以下5つとなる。
 1つ目の通信経路は、マスタ#0、スレーブ#a_0~#a_N、マスタ#0から形成される環状の通信経路である。2つ目の通信経路は、マスタ#0、スレーブ#b_0~#b_N、マスタ#0から形成される環状の通信経路である。3つ目の通信経路は、マスタ#0、スレーブ#c_0~#c_N、マスタ#0から形成される環状の通信経路である。4つ目の通信経路は、マスタ#0、スレーブ#d_0~#d_N、マスタ#0から形成される環状の通信経路である。5つ目の通信経路は、マスタ#0、スレーブ#e_0~#e_N、マスタ#0から形成される環状の通信経路である。
 このように、図11の(b)の通信経路は、マスタ#0を基点とする環状の通信経路となる。したがって、通信経路のマスタ以外のスレーブのいずれか一つが、所定時間が経過したか否かを判定することになる。
 図12は、実施の形態2にかかるシステムの機能例を示すブロック図である。システム1100は、充電部401と、受信部1201と、実行部1202と、判定部1203と、送信部1204と、を含む。制御部となる受信部1201~送信部1204は、記憶装置に記憶されたプログラムをMCU201が実行することにより、受信部1201~送信部1204の機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM205、RAM204、不揮発メモリ206などである。充電部401は、マスタ#0と、スレーブ#a_i-1と、スレーブ#a_iと、スレーブ#a_i+1と、に含まれる。ここで、iは、0以上a_N以下の整数である。充電部401は、図2にて説明したバッテリ209に相当する。受信部1201~送信部1204は、スレーブ#a_iに含まれる。
 受信部1201は、直接通信可能な第1のノードから、上述のノードによって実行された第1の処理の結果を受信する。iが1以上であれば、第1のノードは、スレーブ#a_i-1となる。一方、iが0であれば、第1のノードは、マスタ#0となる。このとき、第1の処理は、生成した処理となる。なお、受信した結果は、スレーブ#a_iのRAM204、不揮発メモリ206等の記憶領域に格納される。
 実行部1202は、受信部1201が第1の処理の結果を受信した場合、第1の処理の結果に基づいて、第2の処理を実行する。なお、実行した結果は、スレーブ#a_iのRAM204、不揮発メモリ206等の記憶領域に格納される。
 判定部1203は、受信部1201が第1の処理の結果を受信してから所定時間が経過したか否かを判定する。なお、判定結果は、スレーブ#a_iのRAM204、不揮発メモリ206等の記憶領域に格納される。
 送信部1204は、判定部1203によって所定時間が経過したと判定された場合、第2の処理の結果を環状の通信経路におけるスレーブ#a_iと直接通信可能な第2のノードに送信する。iがNより小さければ、第2のノードは、スレーブ#a_i+1となる。iがNであれば、第2のノードは、マスタ#0となる。
 図13は、実施の形態2にかかる各ノードの分散処理のシーケンスを示す説明図である。図13の例では、マスタ#0、スレーブ#a_0、スレーブ#a_1、…、スレーブ#a_N-1、スレーブ#a_N、マスタ#0から形成される環状の通信経路における分散処理について説明する。
 マスタ#0は、実施の形態2にかかるジョブの割当処理を実行する(ステップS1301)。実施の形態2にかかるジョブの割当処理の詳細については、図15にて後述する。ジョブの割当処理の中で、マスタ#0は、ジョブをスレーブ#a_0を含む複数のスレーブに送信する。送信後、マスタ#0は、電力を消費したため、充電が完了するまで停止する。
 ジョブを受信したスレーブ#a_0は、実施の形態2にかかるジョブの実行処理を実行する(ステップS1302)。実施の形態2にかかるジョブの実行処理の詳細は、図16にて後述する。実施の形態2にかかるジョブの実行処理は、該当のジョブが初めて実行される場合、マスタ#0の充電が完了するまで待機する。また、マスタ#0の充電が完了するまで待機するノードは、スレーブ#a_0~スレーブ#a_Nのうちいずれのノードであってもよい。
 ジョブの実行処理の中で、スレーブ#a_0は、ジョブを次のスレーブに転送する。転送後、スレーブ#0は、電力を消費したため、充電が完了するまで停止する。このように、次々ジョブが転送される。ジョブを受信したスレーブ#a_Nは、ジョブの実行処理を実行する(ステップS1303)。ジョブの実行処理の中で、スレーブ#a_Nは、ジョブをマスタ#0に転送する。転送後、スレーブ#a_Nは、電力を消費したため、充電が完了するまで停止する。
 ジョブを受信したマスタ#0は、実施の形態2にかかるジョブの集約再割当処理を実行する(ステップS1304)。マスタ#0は、ジョブをスレーブ#a_Nを含む複数のスレーブから受信する。実施の形態2にかかるジョブの集約再割当処理の詳細については、図17にて後述する。実施の形態2にかかるジョブの集約再割当処理は、複数のスレーブからジョブを受信するまで待機して、複数のスレーブから受信したジョブを収集する。そして、実施の形態2にかかるジョブの集約再割当処理は、ジョブの再割当を行う場合、新たなジョブを生成して、複数のスレーブに新たなジョブを割り当てる。
 ジョブの集約再割当処理の中で、マスタ#0は、新たなジョブをスレーブ#a_0を含む複数のスレーブに送信する。新たなジョブの送信時、マスタ#0の充電が完了していたため、スレーブ#a_0の充電も完了している可能性が高い。送信後、マスタ#0は、電力を消費したため、充電が完了するまで停止する。
 新たなジョブを受信したスレーブ#a_0は、実施の形態2にかかるジョブの実行処理を実行する(ステップS1305)。実施の形態2にかかるジョブの実行処理は、新たなジョブが初めて実行される場合、マスタ#0の充電が完了するまで待機する。ジョブの実行処理の中で、スレーブ#a_0は、新たなジョブを次のスレーブに転送する。転送後、スレーブ#a_0は、電力を消費したため、充電が完了するまで停止する。このように、次々新たなジョブが転送される。新たなジョブを受信したスレーブ#a_Nは、ジョブの実行処理を実行する(ステップS1306)。ジョブの実行処理の中で、スレーブ#a_Nは、新たなジョブをマスタ#0に転送する。転送後、スレーブ#a_Nは、電力を消費したため、充電が完了するまで停止する。
 新たなジョブを受信したマスタ#0は、実施の形態2にかかるジョブの集約再割当処理を実行する(ステップS1307)。マスタ#0は、新たなジョブをスレーブ#a_Nを含む複数のスレーブから受信する。マスタ#0は、実施の形態2にかかるジョブの集約再割当処理において、複数のスレーブからジョブを受信するまで待機して、複数のスレーブから受信したジョブを収集する。次に、図14を用いて、実施の形態2にかかるジョブに含まれる情報を定義したジョブ構造体について説明する。
 図14は、実施の形態2にかかるジョブ構造体の一例を示す説明図である。ジョブ構造体1401は、実施の形態2にかかるジョブに含まれる情報を定義したプログラムコードである。ジョブ構造体1401は、ジョブ構造体601に含まれる4つのメンバに加えて、システム内において該当のジョブが初めて実行されるか否かを示す初回フラグが格納されるfirsttimeメンバを含む。以下、説明の簡略化のため、ジョブのfirsttimeメンバに格納されたデータを、「ジョブの初回フラグ」と呼称する。実施の形態2にかかる初回フラグは、“1”が該当のジョブが初めて実行されることを示し、“0”が該当のジョブが自ノード以外の他のノードで実行されたことを示す。
 次に、図13に示した、ジョブの割当処理と、ジョブの実行処理と、ジョブの集約再割当処理と、のフローチャートについて、図15~図17を用いて説明する。
 図15は、実施の形態2にかかるジョブの割当処理手順の一例を示すフローチャートである。実施の形態2にかかるジョブの割当処理は、複数のスレーブにジョブを割り当てる処理である。マスタ#0は、ジョブ構造体1401に従って、ジョブの種類が“総和計算”である総和計算ジョブを生成する(ステップS1501)。次に、マスタ#0は、生成したジョブの初回フラグを“1”に設定する(ステップS1502)。続けて、マスタ#0は、生成したジョブを複数のスレーブに送信する(ステップS1503)。ステップS1503の処理終了後、マスタ#0は、実施の形態2にかかるジョブの割当処理を終了する。実施の形態2にかかるジョブの割当処理を実行することにより、マスタ#0は、複数のスレーブにジョブを割り当てることができる。
 図16は、実施の形態2にかかるジョブの実行処理手順の一例を示すフローチャートである。実施の形態2にかかるジョブの実行処理は、割り当てられたジョブを実行する処理である。実施の形態2にかかるジョブの実行処理は、各スレーブが実行する。図16の説明では、複数のスレーブのうちのいずれかのスレーブがジョブの実行処理を実行する場合について説明する。
 いずれかのスレーブがジョブの実行処理を実行する契機は、次の3つの条件のいずれかを満たす時である。1つ目の条件は、図16中の結合子Dが示す、いずれかのスレーブがマスタ#0の次のノードであり、図15に示したステップS1503の処理が実行された場合である。2つ目の条件は、図16中の結合子Eが示す、いずれかのスレーブが他のスレーブの次のノードであり、他のスレーブによりジョブの実行処理が実行されて、図16に示すステップS1613の処理が実行された場合である。3つ目の条件は、図16中の結合子Fが示す、いずれかのスレーブがマスタ#0の次のノードであり、図17に示すステップS1708の処理が実行された場合である。
 また、実施の形態2にかかるジョブの実行処理のステップS1601と、ステップS1605~ステップS1613は、図8に示したステップS801~ステップS810と同一の処理なので、説明を省略する。
 ステップS1601の処理終了後、いずれかのスレーブは、ジョブの初回フラグが“1”か否かを判断する(ステップS1602)。ジョブの初回フラグが“1”である場合(ステップS1602:Yes)、いずれかのスレーブは、ジョブの初回フラグを“0”に設定する(ステップS1603)。次に、いずれかのスレーブは、所定時間が経過するまで待機する(ステップS1604)。また、いずれかのスレーブは、待機中に、ステップS1612の処理まで実行しておいてもよい。
 ステップS1604の処理終了後、またはジョブの初回フラグが“0”である場合(ステップS1602:No)、いずれかのスレーブは、ステップS1605の処理に移行する。実施の形態2にかかるジョブの実行処理を実行することにより、スレーブは、割り当てられたジョブを実行することができるとともに、マスタ#0の充電が十分となるまで待機するために、マスタ#0が動作中にジョブを送信することができる。
 図17は、実施の形態2にかかるジョブの集約再割当処理手順の一例を示すフローチャートである。実施の形態2にかかるジョブの集約再割当処理は、複数のスレーブからジョブを受信するまで待機して、複数のスレーブから受信したジョブを収集し、ジョブの再割当を行う場合、新たなジョブを生成して、複数のスレーブに新たなジョブを割り当てる処理である。また、実施の形態2にかかるジョブの集約再割当処理が実行される契機は、各スレーブのうちの次のノードがマスタ#0となるスレーブによって、ステップS1613の処理が実行された場合である。
 また、実施の形態2にかかるジョブの集約再割当処理のステップS1704~ステップS1706、ステップS1708は、図9に示したステップS903~ステップS906と同一の処理なので、説明を省略する。
 マスタ#0は、ジョブを受信する(ステップS1701)。次に、マスタ#0は、初めてジョブを受信してから最大受信待ち時間が経過したか否かを判断する(ステップS1702)。初めてジョブを受信してから最大受信待ち時間が経過していない場合(ステップS1702:No)、マスタ#0は、ステップS1701の処理に移行する。
 初めてジョブを受信してから最大受信待ち時間が経過した場合(ステップS1702:Yes)、マスタ#0は、ジョブの種類を確認する(ステップS1703)。ジョブの種類が総和計算ジョブである場合(ステップS1703:総和計算ジョブ)、マスタ#0は、ステップS1704の処理に移行する。
 そして、ステップS1706の処理終了後、マスタ#0は、生成したジョブの初回フラグを“1”に設定する(ステップS1707)。次に、マスタ#0は、ステップS1708の処理に移行する。
 ジョブの種類が分散計算ジョブである場合(ステップS1703:分散計算ジョブ)、マスタ#0は、受信したジョブのデータおよびホップ数から、標本分散を算出する(ステップS1709)。算出した標本分散の値は、不揮発メモリ304に格納される。ステップS1709の処理終了後、マスタ#0は、実施の形態2にかかるジョブの集約再割当処理を終了する。実施の形態2にかかるジョブの集約再割当処理を実行することにより、システム1100は、分散して実行されたジョブの集約結果を得ることができる。
 以上説明したように、システム1100によれば、複数のノードが環状の通信経路を形成する場合、マスタ#0の間のいずれかのスレーブが所定時間待機することにより、マスタ#0が動作中である時に、処理の結果を送信することができる。
 なお、本実施の形態で説明した分散処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本分散処理プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本分散処理プログラムは、インターネット等のネットワークを介して配布してもよい。
 #0、#1 マスタ
 #a_0~#a_N、#b_0~#b_N、#c_0~#c_N、#d_0~#d_N、#e_0~#e_N スレーブ
 100、1100 システム
 401 充電部
 411、1201 受信部
 412、1202 実行部
 413、1203 判定部
 414、1204 送信部

Claims (7)

  1.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理方法において、
     前記複数の通信装置のうちの特定の通信装置が、
     前記複数の通信装置のうちの、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部に充電された電力を用いて動作する、前記特定の通信装置に直接通信可能な通信装置から、前記通信装置によって実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、所定の処理を実行し、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定し、
     前記所定時間が経過したと判定した場合、前記所定の処理の結果を前記通信装置に送信する、
     処理を実行することを特徴とする分散処理方法。
  2.  前記特定の通信装置が、
     前記所定時間が経過したと判定する前に、前記複数の通信装置のうちの、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部に充電された電力を用いて動作する、前記特定の通信装置に直接通信可能な前記通信装置とは異なる他の通信装置から、前記他の通信装置によって実行された第2の処理の結果を受信した場合、前記第1の処理の結果と前記第2の処理の結果とに基づいて、前記所定の処理を実行する、処理を実行し、
     前記判定する処理は、
     前記他の通信装置から前記第2の処理の結果を受信してから前記所定時間が経過したか否かを判定し、
     前記送信する処理は、
     前記所定時間が経過したと判定した場合、前記所定の処理の結果を前記通信装置と前記他の通信装置とに送信することを特徴とする請求項1に記載の分散処理方法。
  3.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理方法において、
     自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部の電力を用いて動作する前記複数の通信装置のうちの特定の通信装置を基点として前記複数の通信装置により形成される環状の通信経路における前記特定の通信装置とは異なる他の通信装置が、
     前記環状の通信経路における前記他の通信装置と直接通信可能な第1の通信装置から、前記第1の通信装置により実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、第2の処理を実行し、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定し、
     前記所定時間が経過したと判定した場合、前記第2の処理の結果を前記環状の通信経路における前記他の通信装置と直接通信可能な第2の通信装置に送信する、
     処理を実行することを特徴とする分散処理方法。
  4.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムにおいて、
     前記複数の通信装置のうちの、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部に充電された電力を用いて動作する、前記複数の通信装置のうちの特定の通信装置に直接通信可能な通信装置から、前記通信装置によって実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、所定の処理を実行する実行部と、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定する判定部と、
     前記判定部によって前記所定時間が経過したと判定された場合、前記実行部によって実行された前記所定の処理の結果を前記通信装置に送信する送信部と、を有する前記特定の通信装置を、
     含むことを特徴とするシステム。
  5.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムにおいて、
     自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部の電力を用いて動作する前記複数の通信装置のうちの特定の通信装置を基点として前記複数の通信装置により形成される環状の通信経路における前記特定の通信装置とは異なる他の通信装置と直接通信可能な第1の通信装置から、前記第1の通信装置により実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、第2の処理を実行する実行部と、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定する判定部と、
     前記判定部によって前記所定時間が経過したと判定された場合、前記実行部によって実行された前記第2の処理の結果を前記環状の通信経路における前記他の通信装置と直接通信可能な第2の通信装置に送信する送信部と、を有する他の通信装置を、
     含むことを特徴とするシステム。
  6.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理プログラムにおいて、
     前記複数の通信装置のうちの特定の通信装置に、
     前記複数の通信装置のうちの、自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部に充電された電力を用いて動作する、前記特定の通信装置に直接通信可能な通信装置から、前記通信装置によって実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、所定の処理を実行し、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定し、
     前記所定時間が経過したと判定した場合、前記所定の処理の結果を前記通信装置に送信する、
     処理を実行させることを特徴とする分散処理プログラム。
  7.  複数の通信装置の各々がマルチホップ通信によりデータを送受信するシステムの分散処理プログラムにおいて、
     自装置が設置された環境に応じて得られるエネルギーを用いて発電される電力を充電する充電部の電力を用いて動作する前記複数の通信装置のうちの特定の通信装置を基点として前記複数の通信装置により形成される環状の通信経路における前記特定の通信装置とは異なる他の通信装置に、
     前記環状の通信経路における前記他の通信装置と直接通信可能な第1の通信装置から、前記第1の通信装置により実行された第1の処理の結果を受信した場合、前記第1の処理の結果に基づいて、第2の処理を実行し、
     前記第1の処理の結果を受信してから所定時間が経過したか否かを判定し、
     前記所定時間が経過したと判定した場合、前記第2の処理の結果を前記環状の通信経路における前記他の通信装置と直接通信可能な第2の通信装置に送信する、
     処理を実行させることを特徴とする分散処理プログラム。
PCT/JP2013/069567 2013-07-18 2013-07-18 分散処理方法、システム、および分散処理プログラム WO2015008367A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2015527115A JPWO2015008367A1 (ja) 2013-07-18 2013-07-18 分散処理方法、システム、および分散処理プログラム
PCT/JP2013/069567 WO2015008367A1 (ja) 2013-07-18 2013-07-18 分散処理方法、システム、および分散処理プログラム
TW103119498A TWI526973B (zh) 2013-07-18 2014-06-05 分散處理方法、系統及分散處理程式
US14/997,545 US9996132B2 (en) 2013-07-18 2016-01-17 Distributed processing method, system, and computer product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/069567 WO2015008367A1 (ja) 2013-07-18 2013-07-18 分散処理方法、システム、および分散処理プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/997,545 Continuation US9996132B2 (en) 2013-07-18 2016-01-17 Distributed processing method, system, and computer product

Publications (1)

Publication Number Publication Date
WO2015008367A1 true WO2015008367A1 (ja) 2015-01-22

Family

ID=52345861

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/069567 WO2015008367A1 (ja) 2013-07-18 2013-07-18 分散処理方法、システム、および分散処理プログラム

Country Status (4)

Country Link
US (1) US9996132B2 (ja)
JP (1) JPWO2015008367A1 (ja)
TW (1) TWI526973B (ja)
WO (1) WO2015008367A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7156001B2 (ja) * 2017-12-27 2022-10-19 ブラザー工業株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
DE112020006918T5 (de) * 2020-03-13 2023-01-05 Mitsubishi Electric Corporation Master-Vorrichtung und Kommunikationsverfahren

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030023A (ja) * 2002-06-24 2004-01-29 Denso Corp 制御システム構造
JP2012212390A (ja) * 2011-03-31 2012-11-01 Kansai Electric Power Co Inc:The 計量器端末およびそれを備える検針データ収集システムならびに検針データ収集方法
JP2013137671A (ja) * 2011-12-28 2013-07-11 Fujikura Ltd 無線センサシステム、センサノード、及び中継装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4952451B2 (ja) * 2007-09-03 2012-06-13 沖電気工業株式会社 情報通信装置、情報通信システム、及び情報通信方法
JP2010231295A (ja) 2009-03-26 2010-10-14 Fuji Xerox Co Ltd 解析システム
US8738944B2 (en) * 2011-11-16 2014-05-27 Cisco Technology, Inc. Energy-based feedback for transmission reception in a communication network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004030023A (ja) * 2002-06-24 2004-01-29 Denso Corp 制御システム構造
JP2012212390A (ja) * 2011-03-31 2012-11-01 Kansai Electric Power Co Inc:The 計量器端末およびそれを備える検針データ収集システムならびに検針データ収集方法
JP2013137671A (ja) * 2011-12-28 2013-07-11 Fujikura Ltd 無線センサシステム、センサノード、及び中継装置

Also Published As

Publication number Publication date
TWI526973B (zh) 2016-03-21
TW201513030A (zh) 2015-04-01
US20160132088A1 (en) 2016-05-12
JPWO2015008367A1 (ja) 2017-03-02
US9996132B2 (en) 2018-06-12

Similar Documents

Publication Publication Date Title
US20170003375A1 (en) Methods and apparatus for triggering cooperative positioning or learning in a wireless network
KR102145795B1 (ko) 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치
JP5949298B2 (ja) 通信方法及び情報処理装置
US20110029798A1 (en) Power Consumption Monitor and Method Therefor
JP2012147325A (ja) データ収集装置、データ収集プログラム、およびデータ収集システム
Linaje et al. Mist and edge storage: Fair storage distribution in sensor networks
WO2015008367A1 (ja) 分散処理方法、システム、および分散処理プログラム
Huang et al. Accurate energy-aware workload distribution for wireless sensor networks using a detailed communication energy cost model
Fujimoto et al. An empirical study of energy consumption in distributed simulations
JP6287841B2 (ja) 通信装置、システム、および通信方法
JP5908196B1 (ja) 時刻同期通信システム
JP5831639B2 (ja) 通信装置、システム、および通信方法
TWI526108B (zh) 通信裝置、通信系統及通信方法
JP2017188706A (ja) 無線センサネットワークシステム及び無線センサネットワーク管理方法
KR20130125094A (ko) 고에너지 효율의 센서 노드 및 센서 노드의 동작 방법
Adkins Resource-Constrained Sensing as a Shared Utility
JP2004152235A (ja) サーバ装置および情報処理システム
JP7319012B1 (ja) 通信装置、スマートメータ、通信方法、プログラム
RU2433454C1 (ru) Способ и устройство для динамичных вычислений
Habib et al. Query-based data aggregation within WSN through Monte Carlo simulation
KR20140102923A (ko) M2m 디바이스 관리 명령의 수행 예측 시간을 송수신하는 방법, 장치 및 시스템
Wang et al. A code dissemination protocol of low energy consumption
CN113438265A (zh) 可穿戴按摩仪的数据传输方法、系统、装置和计算机设备
Carvalho In-stream data processing for tactical environments
Sivasrinivasan et al. Bidirectional Data Centric Routing Protocol to Improve the Energy Efficiency in Wireless Sensor Networks

Legal Events

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

Ref document number: 13889699

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015527115

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13889699

Country of ref document: EP

Kind code of ref document: A1