Patent Description:
Machinery in factories and other premises may be computer-controlled and operate in a distributed fashion. Due to strict demands in terms of reliability, robustness, and timings, communication between these different pieces of equipment is done over wired cables, which may in some cases carry Ethernet-type traffic. There are numerous Industrial Ethernet based protocols currently in place in today's manufacturing environments such as EtherCAT, PROFINET and IEEE <NUM> Time Sensitive Networking (TSN). Industrial systems may also use non-Ethernet based protocols such as PROFIBUS.

<CIT> discloses a transmitter for sending data packets over a time-multiplexed channel comprising a time slot selector for selecting a time slot for transmitting a data packet; and a data packet position selector for selecting a data packet time position within the selected timeslot, wherein the data packet time position is selected anew for at least every ith data packet.

<CIT> discloses a broadcast receiving system including a known sequence detector that uses received burst information and known data position information included in received data so as to output burst control information. The burst controller uses the burst control information to control power supply of the broadcast receiving system.

A first object of the present disclosure provides a method of transmitting packets wirelessly, as claimed in claim <NUM>.

A second object of the present disclosure provides a method of receiving packets wirelessly, as claimed in claim <NUM>. Further objects of the invention are apparatuses as claimed in corresponding apparatus claims <NUM> and <NUM>. Preferred embodiments are covered by the appended dependent claims.

Examples of industrial or factory automation systems may involve communications between two or more nodes. In the simplest case, two nodes operate as a master node and a slave node, such as for example a slave robot arm. The master and slave may operate within a control loop. For example, the master node may instruct the slave to move, and the slave node moves and in turn report its new position back to the master node. This cycle may repeat, and may involve exchange of data portions such as for example Industrial Ethernet data.

The master and slave nodes in some examples may exchange information in a periodic and predictable manner. The timing requirements for the control loop may be very tight and may be referred to as Critical Communications. If the master node doesn't receive information by a certain time indicating the position of a slave robot arm, for example, the robot arm may be stopped for safety reasons, which may lead to undesirable and costly production downtimes.

As a manufacturing process scales up, additional machinery may be added and more communications links may be introduced in the form of new cables between nodes such as controllers and machinery. However, wired communications links may require cables to be added or moved, adding to complexity and cost.

A wireless solution to replace these cables may solve one or more of the above problems. For example, wireless LANs, as described by the IEEE802. <NUM> standards (henceforth referred to as "Wi-Fi") may be used. However, the underlying mechanisms used in this wireless standard may result in unpredictable data exchange times (e.g. when viewed on short timescales). A distributed manufacturing process may require data to be exchanged with tight timing requirements, and so Wi-Fi, with unpredictable data exchange times, may be unsuitable for such processes.

Wi-Fi specifies a Distributed Coordination Function (DCF) and a Hybrid Coordination Function (HCF) which dictate how devices contend for the common shared wireless medium when transmissions need to be made. One component of these functions is clear channel assessment (CCA), a mechanism implemented by each Wi-Fi transmitter to ensure the shared medium is free before attempting to transmit. The CCA algorithm, or alternatively carrier-sense multiple access with collision avoidance (CSMA/CA) or another random access procedure, may introduce an element of randomness for a device wishing to transmit, to try to ensure that no two transmitters will continually transmit simultaneously on the shared medium, resulting in perpetual interference with each other.

Embodiments of the present disclosure propose to use wireless communications, such as Wi-Fi for example, to exchange data in a manner so as to reduce or eliminate a variation in data exchange times.

<FIG> is a flow chart of a method <NUM> of transmitting packets wirelessly. The method <NUM> comprises, for each packet, in step <NUM>, requesting to transmit the packet. The request may comprise for example sending a request to a communications module (e.g. software and/or hardware module) to send a wireless packet. Step <NUM> of the method <NUM> comprises waiting for a respective random or pseudorandom time period before transmitting the packet. The respective random or pseudorandom time period before transmitting the packet may be required for example by a communications module. The wait may in some examples be part of a random access procedure such as a Listen Before Talk (LBT) procedure or Contention Based Protocol (CBP), such as for example CCA or CSMA/CA. The random or pseudorandom waiting period may be required for every packet transmitted, or may be required when contention of the transmission medium is detected - e.g. another transmitter is transmitting at the time of the request (e.g. Carrier Sense Multiple Access, CSMA).

Step <NUM> of the method <NUM> comprises transmitting the packet containing a respective data portion, wherein a position of the respective data portion in the packet is selected such that a time interval between transmission of respective data portions in adjacent packets is a constant time interval. As a result, a receiver that receives the packets receives data portions within the packets at constant time intervals. In some examples, each packet includes a payload, and the position of the data portion within the payload is varied in each packet based on the respective pseudorandom time period so as to ensure that the data portions within adjacent packets are transmitted, and thus also received by a receiver, at constant time intervals.

<FIG> shows an example of the structure of a packet <NUM> such as a Wi-Fi packet. The packet <NUM> comprises a preamble and header portion <NUM> and a payload <NUM>. The data portion <NUM> is a part of the payload <NUM>. The size of the payload <NUM> (e.g. the amount of data in the payload) may be equal to or greater than the size of the data portion <NUM>. The payload <NUM> may include data <NUM> preceding the data portion <NUM>, and/or data <NUM> following the data portion <NUM>. In some examples, the data <NUM> and/or the data <NUM> comprises padding data.

In some examples, the size or amount of data <NUM> preceding the data portion <NUM> for a packet to be transmitted may be varied based on the respective random or pseudorandom time period following a request to transmit the packet before transmission of the packet. For example, for a larger random or pseudorandom time period, the size of the data <NUM> may be smaller such that the interval between transmission of a previous data portion in a previous packet and transmission of the data portion <NUM> in the packet <NUM> is substantially constant between packets. Therefore, for example, there may be an inverse relationship (e.g. an inversely proportional relationship) between the amount of delay and the size of the data <NUM> preceding the data portion <NUM>. In some examples, the size or amount of data <NUM> following the data portion <NUM> may be based on the random or pseudorandom time period. Alternatively, the size or amount of data <NUM> may be constant or zero, in which case the size of the packet <NUM> may also be based on the random or pseudorandom time period before transmission of the packet <NUM>.

<FIG> is an example of a timing diagram of transmission of packets wirelessly. At substantially constant time intervals T, data portions <NUM>, <NUM>, <NUM> and <NUM> are made available to be transmitted to a receiver. For example, the time at which the start of adjacent data portions are made available may be separated by a substantially constant time interval T. The data portions may comprise for example control data to be sent from a controller to machinery, and/or feedback or sensor data to be sent from machinery to a controller. The data portions <NUM>, <NUM>, <NUM> and <NUM> may each be received at time intervals T for example in an Ethernet frame, or may each comprise an Ethernet frame. The data portions <NUM>, <NUM>, <NUM>, <NUM> may be received for example over a wired Ethernet connection.

In the example shown in <FIG>, a request to transmit a packet is made at the time of the start of the data portion (e.g. at the time of receipt of the start of the data portion). Considering first data portion <NUM>, following a request to transmit a packet, a time delay t<NUM> before transmission may be randomly or pseudorandomly selected. After the time delay t<NUM>, a packet <NUM> is transmitted wirelessly, containing a data portion <NUM>. The data portion <NUM> may comprise, contain, encapsulate or otherwise represent the data portion <NUM>. Hence, the data portion <NUM> in the packet <NUM> corresponds to the data portion <NUM>. The position of the data portion <NUM> within the packet <NUM> (for example within the payload of the packet <NUM>) may be selected based on the time period (time delay) t<NUM>. In some examples, the time period before a request to transmit is made may be included as part of the random or pseudorandom time period.

Similarly, a packet <NUM> is sent with a time delay of t<NUM> containing a data portion <NUM> corresponding to data portion <NUM> following the start of the data portion <NUM> being made available (e.g. received); a packet <NUM> is sent with a time delay of t<NUM> containing a data portion <NUM> corresponding to data portion <NUM>; and a packet <NUM> is sent with a time delay of t<NUM> containing a data portion <NUM> corresponding to data portion <NUM>. The time delay between adjacent data portions <NUM>, <NUM>, <NUM> and <NUM> in adjacent packets <NUM>, <NUM>, <NUM>, <NUM> (e.g. between the start of adjacent data portions) is a substantially a constant time period T due to the placement of each data portion within the respective packet. Thus, a receiver may receive each data portion <NUM>, <NUM>, <NUM> and <NUM> at substantially constant time intervals T, which may correspond to substantially constant time intervals T of the data portions <NUM>, <NUM>, <NUM> and <NUM>.

In some examples, a request to transmit the packet is made in response to receiving at least part of a data portion (e.g. one of data portions <NUM>, <NUM>, <NUM>, <NUM>). However, in other examples, the data portions are received at regular intervals, e.g. at a substantially constant time interval T between the start of receipt of each data portion <NUM>, <NUM>, <NUM>, <NUM>. Therefore, a request to transmit a packet can in some examples be made before any part of a data portion <NUM>, <NUM>, <NUM>, <NUM> is received, in anticipation or expectation of receipt of a data portion <NUM>, <NUM>, <NUM>, <NUM>. Thus, the method <NUM> may comprise requesting to transmit the packet before receiving at least part of the data portion <NUM>, <NUM>, <NUM>, <NUM>.

In some examples, the position of the respective data portion in the packet comprises a predetermined position in the payload shifted by the respective random or pseudorandom time period. For example, if a request to transmit a packet is made at substantially regular or substantially constant time intervals, and a random or pseudorandom time delay t before transmission of a packet is specified, then the position of the data portion in the packet (e.g. within the payload) may be shifted from a predetermined position by an amount equivalent to -t, for example, to compensate for the delay specified for that packet. In other words, for example, where the random or pseudorandom delay is non-zero, the positon of the data portion may be shifted earlier in time (relative to the time of start of transmission of the packet, for example, which follows the random or pseudorandom delay) by the same amount.

<FIG> is a flow chart of an example of a method <NUM> receiving packets wirelessly, such as for example Wi-Fi packets. The method <NUM> comprises, in step <NUM>, receiving the packets at constant time intervals shifted by a respective random or pseudorandom time period, wherein a respective data portion in each of the packets is positioned in the packet such that a time interval between reception of respective data portions in adjacent packets is a constant time interval. That is, for example, each packet is shifted in time from a constant time interval by a random or pseudorandom amount specific to that packet, and the position of the data portion within a packet (e.g. within a payload of the packet) may also be shifted to compensate for the random or pseudorandom amount for that packet. In other words, for example, where the random or pseudorandom time period is non-zero, the positon of the received data portion may have been shifted earlier in time (relative to the time of start of transmission or reception of the packet, for example, which follows the random or pseudorandom time period) by the same amount.

Each packet may have the structure of the packet <NUM> shown in <FIG>. Examples of received packets may include the packets <NUM>, <NUM>, <NUM> and <NUM> shown in <FIG>. Therefore, for example, received packets may include data in the payload (e.g. data <NUM> preceding the data portion <NUM> as shown in <FIG>) to ensure that the position of the data portion causes each data portion to be received at substantially constant time intervals. The data <NUM> may in some examples be padding data. In some examples, the payload <NUM> may also include further data <NUM>, such as padding data, following the data portion <NUM>. The size of the data <NUM> and/or the data <NUM> may be dependent on, for example, a random or pseudorandom time delay following a request to transmit the packet <NUM> before the packet <NUM> is transmitted.

In some examples, the data portion is extracted from each received packet and forwarded, for example to a master node or a slave node. Thus data portion may be forwarded (and hence for example received by the master or slave node) at substantially regular or substantially constant time intervals. In some examples, the data portion is extracted and forwarded immediately upon receipt of each packet or following a predetermined time period. In some examples, the data portion is sent (e.g. to a master or slave node) without the padding data in an Ethernet frame.

Particular examples of embodiments will now be described. If it is assumed that latency as data traverses a physical Ethernet cable is negligible, data transmitted across a wired Ethernet connection will arrive at the receiver immediately. Therefore, the timing, or periodicity, of a data stream (e.g. a stream of data portions) may be identical at both a sender node and a receiver node. For example, the periodicity (e.g. the time interval between start of sending adjacent data portions) is T. To achieve wireless communications, the wired Ethernet cable can in some examples be replaced by connecting both the sender node (e.g. Programmable Logic Controller, PLC) and the receiver node (e.g. a robot arm) each to a respective Wi-Fi device, for example via a respective wired Ethernet connection. The timings of data portions received at the Wi-Fi device of the sender node is maintained. In some examples, the bits of each packet (e.g. data portion, or containing the data portion) received on the wired interface are buffered, and once the entire packet has been received on the wired interface, it can be transmitted wirelessly, for example as a Wi-Fi packet.

If the sender Wi-Fi device transmits received data portions immediately upon receipt, then the wireless transmissions will be shifted right by a fixed time period, e.g. the packet-length duration, but will still have a periodicity of T and thus will also have a periodicity of T when eventually arriving at the receiver node. However, in practice, the wireless transmissions may be subjected to a random access process such as for example CCA or CSMA/CA. This may result in different (e.g. random or pseudorandom) delays for each wireless transmission, such as each transmitted packet.

Therefore, the time between consecutive packets transmitted over the air (e.g. the time between the start of transmission of consecutive packets) may no longer be the constant time interval T. Instead, the time between these wireless transmissions are now subject to the random access process. Since the time delay before transmitting each packet, following a requests to transmit each packet, are potentially different for each packet due to the random access process, this may introduce variance or jitter in the timing of the traffic stream, which will propagate through the network and be eventually observed at the receiver node. For industrial automation scenarios, this jitter could have adverse effects on the operation of devices. Hence, embodiments of this disclosure provide a mechanism to ensure that important data, e.g. each data portion, is transmitted at substantially constant time intervals.

Embodiments of this disclosure may overcome this jitter by exploiting two characteristics of typical Industrial Ethernet traffic: data portions or packets are of relatively small size, and the traffic patterns are relatively constant, e.g. periodic. That is, for example, data portions may be provided for transmission in a substantially periodic manner. Because the industrial Ethernet data portion is small for example, it can be encapsulated or incorporated within a larger <NUM>-byte packet. Transmission time for a <NUM>-byte packet over a Wi-Fi <NUM>. 11n system with Modulation and Coding Scheme (MCS) <NUM> may in some examples take approximately <NUM>. If an Industrial Ethernet data portion is smaller than <NUM>-bytes, then a <NUM>-byte packet or frame can be generated and filled with padding bytes, and the smaller data portion can be inserted within the <NUM>-byte packet or frame. By placing the data portion somewhere within the larger packet or frame, the time the data portion itself will be transmitted, and hence seen at the receiver, can be varied within an approximately <NUM> window.

Example embodiments may exploit the predictability of the Industrial Ethernet traffic stream. The Wi-Fi device of the sending node may initiate the random access process for a wireless transmission in anticipation of a received wired packet. The wireless transmitter may then be granted the right to transmit over the air early, potentially even before it has received the data portion to transmit. In this situation, the wireless node can begin transmitting padding data in a transmitted packet (e.g. in its payload) until the data portion has been received (e.g. over the wired Ethernet interface from the sending node). At this point, transmission of the packet can continue, but with the data portion being transmitted as part of the transmitted packet.

Since in some examples the packet length is indicated at the start of the transmission, the transmitter (e.g. Wi-Fi device connected to the sending node) may specify an oversized transmission of up to <NUM>-bytes at the start of the transmission (e.g. in the packet header), and hence may need to fill the end of the packet (e.g. the portion of the payload following the data portion) with padding data.

At the other end of the radio link, in some examples, the wireless receiver will receive each <NUM>-byte packet but will be able to detect and discard the padding data. Thus, the receiver, e.g. the Wi-Fi device connected to the receiving node, may forward only the data portion to the receiving node. The timing of the data portions sent on the wired interface of the receiving node will have a periodicity of T. Thus, for example, the timings for the transmitted packets are still subjected to jitter, introduced by the random access process. However, the data portion part of the transmitted packets have a periodicity of T, just as in the original Ethernet-received stream.

Some example embodiments of this disclosure may be implemented as a software module as part of an existing Wi-Fi <NUM> entity or device, such as for example an Access Point (AP) or Station (STA). The device may be configured to be able to identify the Industrial Ethernet traffic stream, e.g. based on source and/or destination addresses for example, and also to know periodicity of this traffic and possibly also the size of each data portion in this traffic. The device may also know the identity or destination address of the corresponding Wi-Fi entity at the other end of the wireless link.

Whenever receiving a data portion (e.g. packet or frame) on the wired interface, the device may in some examples initiate the random access procedure (e.g. by requesting to transmit a packet wirelessly), and also generate a <NUM>-byte packet with padding data. After a random or pseudorandom time delay due to the random access process, the device may place the data portion within the <NUM>-byte packet at an appropriate point, e.g. to compensate for the random or pseudorandom time delay, and transmit the packet wirelessly. When a receiving Wi-Fi device receives a wireless packet, it may look for padding data in the packet. The padding data in the received packet may be removed or discarded, and when the data portion is received it may be transmitted over a wired interface, e.g. to a receiving node.

In some example embodiments, a transmitter periodically initiates the random access process, as well as generates a <NUM>-byte packet containing padding data, which is then queued for transmission. When channel access is granted, the packet is transmitted wirelessly. A data portion should arrive (e.g. in a packet or frame) over a wired Ethernet interface, as anticipated or predicted for example, and is merged into the packet being transmitted such that the data portion is located in the appropriate position within the larger <NUM>-byte packet. An example sequence of events for a transmitter is as follows:.

In some examples, a receiver of wireless packets may filter incoming wireless packets, and based on preconfigured information, e.g., MAC source and/or destination addresses, can process the frame accordingly to remove padding octets found. An example of a sequence of events implemented by a receiver is as follows:.

<FIG> is a schematic of an example of apparatus <NUM> for transmitting packets wirelessly. The apparatus <NUM> comprises a processor <NUM> and a memory <NUM>. The memory <NUM> contains instructions executable by the processor <NUM> such that the apparatus <NUM> is operable to, for each packet, request to transmit the packet, wait for a respective random or pseudorandom time period before transmitting the packet, and transmit the packet containing a respective data portion, wherein a position of the respective data portion in the packet is selected such that a time interval between transmission of respective data portions in adjacent packets is a constant time interval. In some examples, the apparatus <NUM> may implement the method <NUM> shown in <FIG>.

<FIG> is a schematic of an example of apparatus <NUM> for receiving packets wirelessly. The apparatus <NUM> comprises a processor <NUM> and a memory <NUM>. The memory <NUM> contains instructions executable by the processor <NUM> such that the apparatus <NUM> is operable to receive the packets at constant time intervals shifted by a respective random or pseudorandom time period, wherein a respective data portion in each of the packets is positioned in the packet such that a time interval between reception of respective data portions in adjacent packets is a constant time interval. In some examples, the apparatus <NUM> may implement the method <NUM> shown in <FIG>.

<FIG> is a schematic of an example of apparatus <NUM> for transmitting packets wirelessly. The apparatus <NUM> comprises a requesting module <NUM> configured to request to transmit each packet, and a transmitting module <NUM> configured to wait for a respective random or pseudorandom time period before transmitting each packet, and to transmit each packet containing a respective data portion, wherein a position of the respective data portion in the packet is selected such that a time interval between transmission of respective data portions in adjacent packets is a constant time interval. In some examples, the apparatus <NUM> may implement the method <NUM> shown in <FIG>.

<FIG> is a schematic of an example of apparatus <NUM> for receiving packets wirelessly. The apparatus <NUM> comprises a receiving module <NUM> configured to receive the packets at constant time intervals shifted by a respective random or pseudorandom time period, wherein a respective data portion in each of the packets is positioned in the packet such that a time interval between reception of respective data portions in adjacent packets is a constant time interval. In some examples, the apparatus <NUM> may implement the method <NUM> shown in <FIG>.

It should be noted that the above-mentioned examples illustrate rather than limit the invention, and that those skilled in the art will be able to design many alternative examples without departing from the scope of the invention as defined by the appended claims.

Claim 1:
A method (<NUM>) of transmitting packets (<NUM>) wirelessly, the method comprising, for each packet:
requesting (<NUM>) to transmit the packet;
waiting (<NUM>) for a respective random or pseudorandom time period before transmitting the packet; and
transmitting (<NUM>) the packet containing a respective data portion (<NUM>), wherein a payload (<NUM>) of the packet contains the respective data portion, and the position of the respective data portion in the packet comprises a predetermined position in the payload shifted by the respective random or pseudorandom time period to compensate for the delay of the respective random or pseudorandom time period waited before transmitting the packet such that a time interval between transmission of respective data portions in adjacent packets is a constant time interval.