Patent Publication Number: US-7904184-B2

Title: Motion control timing models

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation-in-part of U.S. application Ser. No. 11/241,539, filed Sep. 30, 2005, and entitled “TIME STAMPED MOTION CONTROL NETWORK PROTOCOL THAT ENABLES BALANCED SINGLE CYCLE TIMING AND UTILIZATION OF DYNAMIC DATA STRUCTURES”, which claims the benefit of U.S. Provisional Patent application Ser. No. 60/630,415 entitled “CIP-BASED MOTION CONTROL SYSTEM” which was filed Nov. 23, 2004 and U.S. Provisional Patent application Ser. No. 60/685,583 entitled “DRIVE ACCESS OBJECT” which was filed May 27, 2005. The entireties of the aforementioned applications are herein incorporated by reference. 
    
    
     TECHNICAL FIELD 
     The subject invention relates to industrial control systems and, more particularly, to enabling motion control utilizing a time stamping protocol over a network. 
     BACKGROUND 
     Due to advances in computing technology, businesses today are able to operate more efficiently when compared to substantially similar businesses only a few years ago. For example, internal networking enables employees of a company to communicate instantaneously by email, quickly transfer data files to disparate employees, manipulate data files, share data relevant to a project to reduce duplications in work product, etc. Furthermore, advancements in technology have enabled factory applications to become partially or completely automated. For instance, operations that once required workers to put themselves proximate to heavy machinery and other various hazardous conditions can now be completed at a safe distance therefrom. 
     Further, imperfections associated with human action have been minimized through employment of highly precise machines. Many of these factory devices supply data related to manufacturing to databases that are accessible by system/process/project managers on a factory floor. For instance, sensors and associated software can detect a number of instances that a particular machine has completed an operation given a defined amount of time. Further, data from sensors can be delivered to a processing unit relating to system alarms. Thus, a factory automation system can review collected data and automatically and/or semi-automatically schedule maintenance of a device, replacement of a device, and other various procedures that relate to automating a process. 
     While various advancements have been made with respect to automating an industrial process, utilization and design of controllers has been largely unchanged. Industrial controllers are special-purpose computers utilized for controlling industrial processes, manufacturing equipment, and other factory automation processes, such as data collection through networked systems. Controllers often work in concert with other computer systems to form an environment whereby a majority of modern and automated manufacturing operations occur. These operations involve front-end processing of materials such as steel production to more intricate manufacturing processes such as automobile production that involves assembly of previously processed materials. Oftentimes, such as in the case of automobiles, complex assemblies can be manufactured with high technology robotics assisting the industrial control process. 
     Control systems can be employed to control motion related to machines such as robots. Many of these systems include a source that commands motion in a target system. For example, a source (e.g., controller) can be utilized to move a target (e.g., drive, motor, . . . ). Motion control can be effectuated by regularly updating command data sent from a controller to a drive and actual data sent from the drive to the controller. Conventional motion control networks employ a precise, time synchronized exchange of data between a controller and multiple drive devices in order to achieve high performance coordinated motion. Traditional network solutions use a time slot approach where the network update cycle is divided into time slots. Each node within the network then utilizes a corresponding assigned time slot to transmit its data. 
     Utilization of the time slotting approach is problematic when employed in connection with an open standard network such as Ethernet. For example, restricting when a node can communicate over the network violates standard Ethernet protocol, and thus, typically requires these motion control protocols to either remain isolated from the general network or apply a gateway device. Additionally, the time slot protocols require extensive configuration and arbitration to setup and are typically not able to be modified while the network is operational. Thus, nodes cannot be added or removed from the network during runtime, which leads to costly downtime associated with updating the network. Further, devices adopting a time slot protocol are constrained to operate in synchrony with a controller&#39;s update cycle; thus, a drive device is constrained to a set of update frequencies that are an integer multiple of the controller&#39;s update period. 
     Traditional motion control techniques additionally do not allow communication of non-motion control data over the network, since the time slotting methods tend schedule the network&#39;s entire bandwidth. Conventional motion control network protocols can configure or negotiate a specific time slot for each drive node to send its actual data and then a time slot for a controller to send command data. According to some protocols, a portion of the update cycle can be reserved for passing non-motion control data. However, non-motion nodes typically cannot coexist on the network since they would interfere with transmissions associated with the motion specific time slot scheduling. Thus, non-motion messages can only be passed through the network via a gateway that delays its transmission until the non-motion message time slot is available. 
     Moreover, motion control networks have conventionally been constrained by data structures that are fixed in size and content. Such constraints are due in part to the time slot protocols used by these networks to provide time synchronization and deterministic data transfer. If a data structure exceeds the size limit associated with the associated time slot, the transmission may collide with data from a network node assigned to the next time slot. Current motion control protocols define fixed size data structures at configuration time that typically cannot be changed at runtime, since the time slotting is determined based on the size of the data packets passed between the drive(s) and controller nodes. Accordingly, network bandwidth is wasted due to the data packets oftentimes being an improper size (e.g., if a data packet is too large then extra “pad” data is transmitted over the network, if a data packet is too small then multiple transmissions may be required to convey the data). 
     SUMMARY 
     The following presents a simplified summary of the claimed subject matter in order to provide a basic understanding of some aspects described herein. This summary is not an extensive overview, and is not intended to identify key/critical elements or to delineate the scope of the claimed subject matter. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later. 
     The claimed subject matter described herein relates to utilizing a motion control timing model to coordinate operations associated with controlling motion within an industrial automation environment. For example, a cycle timing component can implement timing set forth by a timing model (e.g., that can be selected, preset, . . . ). Pursuant to an illustration, the cycle timing component can utilize the timing model to coordinate transmitting data, receiving data, performing calculations associated with data (e.g., to generate command(s)), capturing data, applying received commands, and so forth. The timing model can be a single-cycle timing model that can perform an update within a coarse update period, for example. Further, a two-cycle timing model that can effectuate an update within two coarse update periods can be utilized. Moreover, a three-cycle timing model that employs three coarse update periods to perform the update can be utilized. 
     According to one or more aspects, motion control can be enabled over a network via utilizing a time stamping protocol in an industrial automation environment. A controller and a drive can communicate via an open network that supports motion control. For example, the controller and drive can communicate over an Ethernet based network. Motion related communications can be generated by the controller and/or the drive. The drive, for instance, can measure associated physical properties (e.g., actual data) and the controller can produce commands (e.g., command data) that can be effectuated by a particular drive. The motion related data can include a time stamp that can be associated with a time that a measurement was taken (e.g., actual data) and/or a time that the data is to be effectuated (e.g., command data). Additionally, each node (e.g., controller, control axis object, drive, drive axis object, . . . ) within the motion control network can utilize a clock that can be synchronized with other disparate clocks associated with disparate network nodes. Thus, the nodes within the motion control network can obtain a common understanding of time. Utilizing the network time, a drive can effectuate new commands, which can be associated with received command data, at a time associated with the time stamp. Additionally, the drive can include a time stamp associated with a time that a measurement is taken with actual data that can be thereafter transferred to a controller to be analyzed. 
     According to an aspect, a balanced update cycle can be employed such that motion related data and non-motion related data can be transmitted over a network. For example, an update cycle can be divided into disparate intervals such as an input transfer interval, a calculation interval, and an output transfer interval. The motion related data can be transferred during the input transfer interval (e.g., transmit actual data from a drive to a controller) and/or during the output transfer interval (e.g., transmit command data from a controller to a drive). During these intervals, the motion related data can be assigned a higher priority as compared to non-motion related data. Thus, if both motion related data and non-motion related data are transmitted over the network during these intervals, the higher priority motion related data can be queued before the non-motion related data to facilitate delivery of the motion related data with minimum latency. Additionally, during the calculation interval, the controller can evaluate the received actual data, and further, the lower priority non-motion data that was queued to transmit after the motion input data can then be transmitted over the network, while transmission of motion related data is quiescent. Thus, lower priority non-motion data packet traffic is naturally reorganized to transmit during the calculation interval in the middle of the update cycle. Division of an update cycle into distinct intervals, while not utilizing time slotting to assign a particular node to a particular time during which to transfer data, enables the motion control data and the non-motion control data to be transmitted over the same network and mitigates the motion control data from utilizing all or a majority of the network&#39;s resources. 
     Moreover, dynamic data associated with any size and/or structure can be utilized in connection with the time stamping protocol of the claimed subject matter described herein. For instance, the data structure can vary in size and/or content from update to update. According to an example, the data can include information in a header of a data packet that describes that structure and enables a receiving node to utilize the received data. 
     Utilization of time stamp motion control data improves efficiency of a motion control network as opposed to time slotting protocols. For instance, time stamping enables employing variable sized data packets; thus, additional data and/or packets need not be transferred over the network as is often the case with the fixed data structures associated with time slotting techniques. Additionally, complexity can be reduced via utilizing a time stamping protocol. Further, nodes can be added and/or removed from the motion control network when the time stamping protocol is utilized. 
     To the accomplishment of the foregoing and related ends, certain illustrative aspects of the invention are described herein in connection with the following description and the annexed drawings. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention can be employed and the subject invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates an example system that coordinates timing associated with motion control in an industrial automation environment. 
         FIGS. 2-4  illustrate examples of timing models employed by a cycle timing component to coordinate transferring and/or updating motion control data within an industrial automation environment. 
         FIG. 5  illustrates an example system that serializes input transmissions associated with motion control in an industrial automation environment. 
         FIG. 6  illustrates an example system that utilizes a time stamping scheme to facilitate controlling motion in an industrial automation environment. 
         FIG. 7  illustrates an example system that enables balancing utilization of network resources in a motion control network. 
         FIG. 8  illustrates an example system that enables transferring dynamically structured data in a motion control network. 
         FIG. 9  illustrates an example system that facilitates adding and/or removing a node from a motion control network. 
         FIG. 10  illustrates an example system that enables controlling motion over an open network in an industrial automation environment. 
         FIG. 11  illustrates an example system that facilitates communicating between a controller and drive over a motion control network utilizing a time stamping protocol. 
         FIG. 12  illustrates an example system that enables communicating motion control data and/or non-motion data over a network between controller(s) and drive(s) via employing a time stamping protocol. 
         FIG. 13  illustrates an example system that facilitates communicating data over a CIP Motion Drive Connection. 
         FIG. 14  is a representative flow diagram of a methodology that facilitates controlling motion with a time stamping protocol over a network in an industrial automation environment. 
         FIG. 15  is a representative flow diagram of a methodology that enables balanced single cycle timing associated with motion control updates for a motion control network. 
         FIG. 16  is a representative flow diagram of a methodology that enables transmission of dynamic motion related data over a motion control network. 
         FIGS. 17-25  are exemplary timing diagrams of various aspects associated with time stamping motion control. 
         FIG. 26  is an example operating system upon which various features described herein can be implemented. 
         FIG. 27  is an exemplary computing environment within which various features described herein can interact. 
     
    
    
     Appendix A describes various exemplary aspects associated with time stamping motion control—this appendix is to be considered part of the specification of the subject application. 
     DETAILED DESCRIPTION 
     The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that such matter can be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the invention. 
     As used in this application, the terms “component” and “system” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an instance, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. 
     Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive. . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter. Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. 
     With reference to  FIG. 1 , illustrated is a system  100  that coordinates timing associated with motion control in an industrial automation environment. The system  100  includes a motion control component  102  that communicates with disparate motion control component(s) (not shown). For example, the motion control component  102  can be a drive, a drive axis object, a controller, a control axis object, etc. According to an illustration, the motion control component  102  can be a drive that can communicate with a controller (e.g., via a network connection); as such, the drive can transmit actual data (e.g., related to position and/or velocity) to the controller, and the controller can utilize the actual data to generate commands that can be transmitted back to one or more drives. The one or more drives can thereafter utilize the commands to update the position and/or velocity associated therewith. However, it is to be appreciated that the claimed subject matter is not limited to the aforementioned example. The system  100  additional includes a cycle timing component  104  that utilizes a timing model to coordinate timing of operations related to motion control associated with the motion control component  102 . For instance, the cycle timing component  104  can coordinate transmitting data, receiving data, performing calculations associated with data (e.g., to generate command(s)), capturing data, applying received commands, and so forth. 
     The motion control component  102  and the disparate motion control components can have a common understanding of time. Further, the cycle timing component  104  can utilize the common understanding of time to effectuate performing tasks in accordance with a particular timing model. For example, the timing model can provide a first time period during which input traffic can be transferred over a network connection (e.g., drive(s) can transmit data to controller(s)), a second time period during which no motion traffic occurs, a third time period during which output traffic is communicated (e.g., controller(s) transmit data such as command(s) to drive(s)), etc.; however, the claimed subject matter is not so limited (e.g., a time period when no motion traffic traverses the network need not be provided, . . . ). Thus, as opposed to conventional techniques that employ time slotting to assign unique transmission times to each node (e.g., each controller, drive, . . . ), the motion control component  102  enables a plurality of nodes (e.g., the motion control component  102  and/or any disparate motion control components) to utilize common time periods to transmit and/or receive motion related data (and/or differing types of data) via a network connection. 
     Although depicted as being separate from the motion control component  102 , it is contemplated that the motion control component  102  can include the cycle timing component  104  and/or a portion thereof. Each of the motion control components  102  can be coupled to corresponding cycle timing components  104  as depicted. Additionally or alternatively, it is to be appreciated that the cycle timing component  104  can be coupled to a plurality of motion control components  102 . 
     The cycle timing component  104  can employ any type of timing model (e.g., any type of Common Industrial Protocol (CIP) motion timing model). For example, the cycle timing component  104  can utilize timing models that effectuate updating position and/or velocity (e.g., of drive(s)) in one Coarse Update Period (CUP) (e.g., Controller Update Period, connection update period, . . . ), two CUPs, three CUPs, and the like. According to an illustration, the CUP can be 1 msec; however, the claimed subject matter is not so limited. 
     According to an example, the motion control component  102  can be a drive that can capture data related to an actual position and/or velocity. The cycle timing component  104  can enable the drive to obtain data related to the actual position and/or velocity at the beginning of a CUP. Thereafter, the drive can transmit the actual position and/or velocity data to a controller, and receive data (e.g., command(s)) from the controller (e.g., as coordinated by the cycle timing component  104 ). The received data can be utilized to update the actual position and/or actual velocity associated with the drive. The number of CUPs associated with performing an update (e.g., time from capturing actual data at a drive to applying command data corresponding to the captured data, which can be referred to as position update delay) can be dependent upon the timing model utilized by the cycle timing component  104 . 
     Pursuant to an illustration, the cycle timing component  104  can utilize any motion control timing model. For example, the cycle timing component  104  can be preset with a timing model. According to another example, the cycle timing component  104  can enable selecting a timing model from a set of timing models; such selections can be effectuated automatically (e.g., by the cycle timing component  104 ) and/or in response to a user input. Moreover, the timing model utilized by the cycle timing component  104  can be updated. However, the claimed subject matter is not limited to the aforementioned examples. 
     With reference to  FIGS. 2-4 , illustrated are examples of timing models employed by a cycle timing component (e.g., the cycle timing component  104  of  FIG. 1 ) to coordinate transferring and/or updating motion control data within an industrial automation environment. It is to be appreciated that these timing model illustrations are provided as examples and the claimed subject matter is not so limited. 
     Turning to  FIG. 2 , illustrated is an example single-cycle timing model  200  utilized in connection with motion control in an industrial automation environment. The single-cycle timing model  200  can be utilized to perform position and/or velocity update within one cycle (e.g., one coarse update period (CUP), 1 millisecond, for example); thus, the single-cycle timing model  200  can be employed in connection with a master-slave relationship between drive axes since motion control updating can occur with minimal position update delay. At  1   202 , a drive coarse interrupt service can start by reading a drive position and/or velocity at the beginning of the cycle. For example, the drive can capture feedback counts and compute an actual position and/or velocity. Although not depicted, it is contemplated that any number of drives can concurrently utilize the single-cycle timing model  200  (and/or any of the timing models described herein). At  2   204 , the drive can transmit actual input data (e.g., related to position and/or velocity) to a controller (e.g., via the media (network)). At  3   206 , a controller task can start after a phase offset delay. As depicted, the phase offset delay can be ˜330 μsec; however, the subject claims are not limited to utilizing this phase offset delay, and instead, any phase offset delay can be employed. The controller can read the actual data obtained from the drive. According to a further example, a motion planner of the controller can compute command output data (e.g., related to position and/or velocity), possibly based on position data from the drive and/or different drive(s). At  4   208 , the controller can transmit the command output data to the drive. Moreover, at  5   210 , the drive coarse interrupt service can start. For instance, the drive can read the command output data and apply such data to a control structure of the drive. 
     During the time segment (e.g., at  3   206 ) when the controller generates the command output data, non-motion packets can be transferred via the network. Thus, for example, even if an Ethernet module is fully loaded, the single-cycle timing model  200  can reserve 33% of the CUP for non-motion related data. Further, 33% of the network bandwidth can be reserved for input data from drive(s) to controller(s) and another 33% can be utilized for output data transmission from controller(s) to drive(s); accordingly, the single-cycle timing model  200  can provide balanced delivery times and network loading for input and output. However, it is to be appreciated that the claimed subject matter is not limited to the aforementioned example. 
     Now referring to  FIG. 3 , illustrated is an example two-cycle timing model  300  that can be employed for motion control (e.g., CIP motion) in an industrial automation environment. At  1   302 , a drive coarse interrupt service can start (e.g., feedback counts can be captured and actual positions and/or velocities can be computed). At  2   304 , the drive can transmit actual input data to a controller. According to an example, the two-cycle timing model  300  can utilize a full coarse update period for the input data to be sent from the drive to the controller. For instance, the input data can be sent from the drive to the controller any time during the full coarse update period. 
     At  3   306 , during a next update period associated with the controller, the controller task can start. For example, the controller can immediately read the actual input data from the last update period (e.g., the coarse update period utilized to transfer the actual input to the controller at  2   304 ) and a motion planner can compute corresponding command output data (e.g., associated with position and/or velocity). At  4   308 , the controller can transmit the command output data to the drive. Transfer of the command output data can occur any time during this second coarse update period subsequent to the controller computing the command output data, for example. At  5   310 , the drive coarse interrupt service can start; thus, the drive can read and apply the command output data to a control structure of the drive. 
     The two-cycle timing model  300  can be associated with a position update delay of two coarse update periods. According to an illustration, the two-cycle timing model  300  can utilize 50% of the network bandwidth for input communication and 50% of the network bandwidth for output communication. Moreover, the input and output delivery times can be unbalanced; for example, transmissions associated with input data can utilize an entire coarse update period while the output data transfers can utilize only a portion of the coarse update period—the remainder of the coarse update period can be employed by the controller in connection with generating the command output data. Further, it is to be appreciated that inputs and outputs can be transmitted during the same coarse update periods (e.g., bidirectional traffic via the network); accordingly (although not depict), a drive can transmit actual input data during both coarse update periods shown in  FIG. 3 . 
     With reference to  FIG. 4 , illustrated is an example three-cycle timing model  400  that can be employed in an industrial automation environment in connection with motion control (e.g., CIP motion). The three-cycle timing model  400  can utilize a first coarse update period for input, a second coarse update period for calculations, and a third coarse update period for output. According to an example, the first, second and third coarse update periods can each be complete coarse update periods. The three-cycle timing model  400  can differ from the two-cycle timing model described above (e.g., the two cycle timing model  300  of  FIG. 3 ) in that the three-cycle timing model  400  can include an additional complete cycle for calculations as opposed to performing such calculations at the beginning of the cycle utilized for output transfer. 
     At  1   402 , a drive coarse interrupt service can start by capturing feedback counts and computing an actual position and/or an actual velocity, while at  2   404 , a controller task can simultaneously start. The controller task can enable reading an actual position and/or an actual velocity from a last coarse update period. Further, at  3   406 , the drive can transmit the actual position and/or the actual velocity to the controller. Additionally, at  4   408 , the controller can transmit computed command output data (e.g., related to position and/or velocity) from a last task execution to the drive. At  5   410 , the controller motion planner can compute command output data for a next update. Moreover, at  6   412 , the drive coarse interrupt service can start by reading the command data and applying such data to a control structure of the drive (e.g., to update position and/or velocity). 
     The three-cycle timing model  400  can enable concurrently transferring actual data from the drive to the controller and command output data from the controller to the drive (e.g., calculated from actual data received during a previous coarse update period), and both transmissions can utilize complete coarse update periods during which to be effectuated. Accordingly, the three-cycle timing model  400  can leverage a full duplex nature of a network connection (e.g., switched Ethernet). The three-cycle timing model  400  can employ 100% of the full-duplex network bandwidth for motion traffic; however, the claimed subject matter is not so limited. Moreover, parallel processing of input and output packets can be effectuated (e.g., when the network is fully loaded). Further, the three-cycle timing model  400  provides balanced input and output delivery times, which can each be one coarse update period. The three-cycle timing model  400  can support a larger number of axes per millisecond as compared to the aforementioned single-and two-cycle timing models; yet, the three-cycle timing model  400  can be associated with a position update delay of three coarse update periods. For example, 100 axes/msec can be supported by the three-cycle timing model  400  (e.g., based upon 125 bytes/axis packets using 100 megabits/second Ethernet), the two-cycle timing model  300  of  FIG. 3  can support 50 axes/msec, and the single-cycle timing model  200  of  FIG. 2  can support 30 axes/msec. Thus, the three-cycle timing model  400  can be utilized to service a large number of axes. However, it is to be appreciated that the claimed subject matter is not so limited as any number of axes/msec (and/or bytes/axis) can be supported by each of the timing models. 
     Referring to  FIG. 5 , illustrated is a system  500  that serializes input transmissions associated with motion control in an industrial automation environment. The system  500  can include any number of drives  502  that can transmit input data at or near the same time (e.g., during an input period set forth by a timing model). For example, the drives  502  can transmit the input data at or near a beginning of a coarse update period. According to this example, the drives  502  can each capture actual data (e.g., related to position and/or velocity) at or near the beginning of the coarse update period. Pursuant to a further illustration, these data packets can be high priority data packets (e.g., motion related data packets can be associated with a higher priority as compared to non-motion related data packets). The data can be sent to an Ethernet switch  504 . The Ethernet switch  504  can thereafter serialize the data from the drives  502  and further transfer the serialized data to a controller  506 . 
     Although the single-cycle timing model (e.g., the single cycle timing model  200  of  FIG. 2 ) is described throughout the following description, it is to be appreciated that any timing model can be employed. For example, the two-cycle timing model  300  of  FIG. 3  and/or the three-cycle timing model  400  of  FIG. 4  can be utilized in addition to or instead of the single-cycle timing model. 
     Turning now to  FIG. 6 , illustrated is a system  600  that utilizes a time stamping scheme to facilitate controlling motion in an industrial automation environment. The system  600  includes an interface  602  that receives and/or transmits data over a motion control network (not shown). The interface  602  provides the data to a motion control component  604 , which employs the received data and produces an output that can thereafter be transmitted back over the network to a disparate motion control component (not shown). The motion control component  604  includes a clock  606  and an update component  608  that utilizes a time stamp component  610 . 
     The interface  602  can be communicatively coupled to a network and can receive and/or transmit data via that network. The interface  602  can be hardware, software, or a combination thereof. Additionally, the interface  602  can be a wired connection, a wireless connection, a port, etc. The interface  602  obtains data from and/or provides data to the network, which can be an open standard network such as, for example, an Ethernet based network. Additionally, the network can be a DeviceNet and/or a ControlNet network; however, the claimed subject matter is not so limited to such examples. The network can be any network that supports motion control (e.g., Common Industrial Protocol (CIP) network). Any type of data can be received and/or provided by the interface  602 . For example, command data and/or actual data (e.g., actual data associated with a drive such as actual primary position, actual secondary position, actual velocity, actual acceleration, actual torque, actual current, actual voltage, actual frequency, . . . ) can be transceived by the interface  602 . By way of further illustration, input/output data, human machine interface data, streaming video data, messaging data, and the like can also be exchanged via the interface  602 . 
     The interface  602  is communicatively coupled to the motion control component  604 . The motion control component  604  is associated with a node in a motion control network. For example, the motion control component  604  can be a controller, a drive, a control axis object, a drive axis object, etc. A drive can be a device that is designed to control dynamics of a motor. A control axis object can be an object that defines attributes, services, and behaviors of a controller based axis. Additionally, a drive axis object can be an object that defines attributes, services, and behaviors of a drive based axis. An axis can be a logical element of a motion control system that exhibits some form of movement. Axes can be rotary, linear, physical, virtual, controlled, observed, etc. The objects can utilize a motion standard such as, for example, the Common Industrial Protocol (CIP) Motion standard. It is contemplated that a network can include any number of disparate motion control components in addition to and similar to motion control component  604 , where each motion control component is associated with a disparate node of the network. 
     The motion control component  604  includes the clock  606 . The clock  606  can be synchronized with all other clocks associated with disparate motion control components located at various nodes within the motion control network. Alternatively, a subset of all of the nodes in the network can have their clocks synchronized together, for instance. The IEEE 1588 precision time protocol, for example, can enable synchronization of the clock  606  with clocks associated with other networks nodes. Other protocols that are contemplated to synchronize the clock  606  are NTM, NTP, etc.; however, the herein appended claims are not so limited. By synchronizing the clock  606  with other nodes, a common understanding of time exists across the network. By way of example, the clock  606  can be synchronized with disparate clocks in the network such that the accuracy can be in the range of nanoseconds (e.g., accuracy to 50-100 nanoseconds). The clock  606  can be synchronized by receiving a multicast packet via the interface  602 . According to an example, the multicast packet can include a time stamp that is transmitted over the motion control network every millisecond, every two milliseconds, etc. The clock  606  can obtain the multicast packet and synchronize to the time stamp. Additionally, the clock  606  can compensate for network delays when synchronizing to the received multicast packets. 
     The motion control component  602  also includes the update component  608  which can modify properties associated with the motion control component  604 . By way of illustration, the update component  608  can facilitate modifying commands that are utilized by the motion control component  604 , generating commands that are to be utilized by a disparate motion control component, updating measured data associated with the motion control component  604 , etc. For example, the motion control component  602  can be a drive and/or drive axis object that can receive a new set of command data generated by a controller. The command data can be received by the interface  602  and processed by the update component  608 . By way of illustration, the command data can indicate that the drive should be associated with a particular position, velocity, torque, etc., and the update component  608  can effectuate carrying out such modifications. Additionally, the update component  608  can measure actual data associated with the drive and send the actual data to a controller and/or a control axis object over the network via the interface  602 . Pursuant to another illustration, the motion control component  604  can be a controller and/or control axis object that receives actual data via the interface  602  from a drive and/or drive axis object. Accordingly, the controller and/or control axis object can generate command data based on an evaluation of the received actual data associated with the drive by utilizing the update component  608 . Thereafter, the command data can be sent over the network to the appropriate drive and/or drive axis object via the interface  602  to effectuate such variations. 
     The update component  608  can utilize the time stamp component  610  to effectuate updating the motion control component  604  and/or corresponding data. The time stamp component  610  can incorporate a time stamp into data that is generated for transfer over the network via the interface  602 . Additionally or alternatively, the time stamp component  610  can evaluate data received via the interface  602  to identify a time stamp associated with the data. Including the time stamp with the data allows the data to be delivered without rigid data delivery timing. Time is conveyed explicitly by incorporating the time stamp into the data. When new data is received by the motion control component  604 , the update component  608  can utilize the data at an appropriate time corresponding to the time stamp identified by the time stamp component  610  by comparing the time stamp value to the time identified by the clock  606 . Additionally, the time at which a measurement is taken as indicated by the clock  606  can be incorporated into actual data by the time stamp component  610 . By contrast, conventional time slot protocols convey time implicitly as part of the update cycle. This typically necessitates rigid or “hard” synchronization of the motion control components. If data associated with a time slot protocol is late, the data is effectively lost since it is no longer related to its original update cycle or time slot. 
     Incorporation of a time stamp into data transferred over the system  600  mitigates the need to schedule transmissions over the motion control network into time slots as is common with conventional techniques. Accordingly, the time stamping protocol does not require complex configuration and negotiation of individual time slots within a cycle during which times particular nodes are allowed to communicate. Additionally, by time stamping data sent over the network, scheduling requirements are not imposed on the network, and thus, motion control can operate on a network that also includes non-motion network traffic. 
     Turning to  FIG. 7 , illustrated is a system  700  that enables balancing utilization of network resources in a motion control network. The system  700  includes an interface  702  that receives and/or transmits command data, actual data, non-motion related data, etc. over a network to other nodes. The interface  702  is coupled to a motion control component  704 , which includes a clock  706  and an update component  708 . The motion control component  704  can be hardware and/or an object associated with a node in a motion control network. The update component  708  can facilitate updating commands and/or data associated with the motion control component  704 . The update component  708  further comprises a time stamp component  710  which can incorporate a time stamp into data and/or evaluate a time stamp that is associated with data. 
     The motion control component  712  additionally includes a cycle timing component  712  which enables dividing a connection update period into distinct intervals. For example, the connection update period can be divided into three distinct intervals: an input transfer interval, a calculation interval, and an output transfer interval. By way of illustration, the clock  706  can identify a current time, which is uniform across the nodes of the motion control network. The cycle timing component  712  can determine an interval that corresponds to the current time and accordingly enable the motion control component  704  to effectuate particular actions. Even though depicted as being included in the motion control component  704 , it is contemplated that the cycle timing component  712  can be separate from the motion control component  704 , included in only a portion of the motion control components in a motion control network, etc. 
     According to an illustration, the cycle timing component  712  can recognize that the current time is within an input transfer interval. Thus, the cycle timing component  712  can enable data to be transmitted over the network via the interface  702  from a drive and/or drive axis object to a controller and/or control axis object. Hence, if the motion control component  704  is a drive and/or a drive axis object, the cycle timing component  712  can enable the interface  702  and/or the motion control component  704  to transmit actual data during this time interval to a controller and/or control axis object. 
     Pursuant to a further example, the cycle timing component  712  can identify a calculation interval and/or an output transfer interval. During a calculation interval, a controller processes drive input data received during the input transfer interval and computes new output data to send back to the drives. Transmission of this data can be initiated by the end of the computation interval. Additionally, during the output transfer interval, output data packets can be sent to the drives and can arrive prior to the start of the next connection update cycle. 
     The cycle timing component  712  can enable drive nodes (e.g., motion control component  704 , disparate motion control components) within the motion control network to transmit actual data at a similar time and/or simultaneously rather than scheduling each node to transmit data at a disparate time according to a time slotting technique. If the cycle timing component  712  is employed in connection with a switched full duplex Ethernet, more efficient use of the network bandwidth is provided by packing drive packets back to back over a network segment between a central switch and a controller as opposed to utilizing a time slotting technique. Additionally, the packets can be separated by the network&#39;s inter-packet gap by employing the time stamping protocol. In comparison, time slot protocols require additional margin between transmitted packets to accommodate effects of time-base skew and/or other latencies. 
     Utilization of the cycle timing component  712  enables non-motion related data (e.g., input/output data, human machine interface data, streaming video data, controller to controller explicit or implicit messaging data, . . . ) to be transmitted over the network in addition to the motion related data (e.g., command data, actual data, . . . ). For example, the cycle timing component  712  can facilitate identifying that a current time is associated with a calculation interval. Prior to the calculation interval, input data (e.g., actual data) can arrive at the controller(s) from the drive(s). During the calculation interval, lower priority data (e.g., non-motion related data) can be communicated across the network. 
     Also during the calculation interval, the controller(s) (e.g., motion control component  704 ) can evaluate the input data and compute new command positions for the drive nodes. The input data can be evaluated since oftentimes there is a gearing and/or camming relationship between master drives and slave drives. Thus, for a new command to be calculated for a slave drive, the current position of the master drive is determined. 
     The update cycle can be partitioned into thirds with the cycle timing component  712 , for instance; however, any partition can be utilized and thus the subject claims are not limited to this example. According to this example, the first third can be for input traffic from drive(s) to the controller and the last third can be for data to be transferred from the controller to drive(s). During the calculation interval, lower priority non-motion data can be sent to and from various nodes in the network. 
     According to an example, the motion control packets can be associated with a highest priority for transfer over the network and non-motion related packets can be associated with lower priorities. Transmitting drive packets simultaneously can enable effective use of Quality of Service (QoS) functionality built into an Ethernet switch to defer transmission of lower priority non-motion packets until after time critical high priority drive packets have been transmitted to the controller. The non-motion packets can then be transmitted during the calculation interval when the controller is performing calculations. This segregation of motion and non-motion packets can be effectuated automatically without utilizing a particular time slot during which time certain packets are to be transmitted. 
     When the cycle timing component  712  identifies an end of a calculation interval, the motion control packets can be sent out over the network to the drive(s). Thus, new command data is provided to the drive(s) for use during a next cycle. The cycle timing component  712  can support drive devices that have synchronization services and drive devices that do not have synchronization services. For example, drives that are synchronized can send data to a controller without controller intervention by utilizing a timer event. Pursuant to another example, drives without synchronization can wait for a command update from the controller before sending actual data back to the controller. 
     The cycle timing component  712  can enable utilizing a single cycle timing model. For instance, a master actual position capture through a slave command position delivery can be completed in a single cycle via the cycle timing component  712 . By contrast, conventional techniques associated with time slotting typically employ a two-cycle timing model since time slotting protocols commonly allow no time for actual position data to be processed and new command data to be transmitted before the controller&#39;s command data is transmitted. 
     Turning to  FIG. 8 , illustrated is a system  800  that enables transferring dynamically structured data in a motion control network. The system  800  includes an interface  802  that receives and/or transmits data over a network (e.g., Ethernet, DeviceNet, ControlNet, . . . ) and a motion control component  804  (e.g., controller, control axis object, drive, drive axis object, . . . ) that is associated with a particular node within the motion control network. The motion control component  804  includes a clock  806  which is synchronized with other clocks that are associated with disparate motion control components (not shown) within the motion control network to provide a common understanding of time. The motion control component  804  further includes an update component  808  which enables updating commands and/or data associated with the motion control component  804 . The update component  808  can include a time stamp component  810 , a dynamic data generator  812 , and a data format evaluator  814 . 
     The update component  808  can update commands associated with the motion control component  804  (e.g., drive, drive axis object, . . . ), for example, based on received command data generated by a controller located at a remote node within the motion control network. Additionally or alternatively, the update component  808  can be employed to measure properties (e.g., position, velocity, torque, . . . ) associated with the motion control component  804  (e.g., drive, drive axis object, . . . ), which can thereafter be transmitted to a disparate motion control component located at a different node on the motion control network. Further, the update component  808  can be utilized to analyze actual data received by the motion control component  804  (e.g., controller, control axis object, . . . ) from any number of drives located at various nodes within the motion control network to generate command data. This command data can be transmitted to corresponding drives and/or drive axis objects. The data generated by the motion control component  804  and/or the update component  808  includes a time stamp, which can be incorporated into a packet via the time stamp component  810 . Additionally, the time stamp component  810  can evaluate the time stamp to enable performing an action at a particular time as determined by the clock  806 . 
     The update component  808  includes the dynamic data generator  812  which produces dynamic data that can be associated with any size and/or content. The data structure can vary in size and/or content from update to update. The dynamic data generator  812  can include a description of the structure within the data. For example, the dynamic data generator  812  can include information in a data block header that indicates the structure of the data. 
     Additionally, the dynamic data generator  812  can generate data blocks with disparate levels of priority within a single dynamic data packet. The level of priority can determine the rate at which the data is applied at a drive (e.g., via a receiving motion control component). For example, the dynamic data generator  812  can produce a cyclic data block with a high priority, an event data block with a medium priority, and a service data block with a low priority. Combining these three data blocks within a single dynamic data packet yields efficient use of Ethernet bandwidth as compared to sending individual packets for each type of data. 
     The cyclic data can be high priority real-time data that can be transferred by a CIP Motion connection on a periodic basis. The event data can be medium priority real-time data that can be transferred by a CIP Motion connection after a specified event occurs. The event can be, for instance, registration, market input transactions, etc. The service data can be lower priority real-time data that can be transferred by a CIP Motion connection on a periodic basis when requested by a controller. The service data can include service request messages to access drive axis object attributes, run a drive based motion planner, perform drive diagnostics, etc. 
     The update component  808  additionally includes the data format evaluator  814  which can be utilized to evaluate data received via the interface  802  from a disparate node within the motion control network to determine the formatting. For example, the dynamic data that is received can include offsets in a header to enable disparate data blocks, having different processing priority, to be copied to fixed address buffers (not shown) within the motion control component  804  (e.g., controller, drive, . . . ). The data format evaluator  814  can facilitate understanding the structure of a received data packet, which can thereafter be employed by the update component  808 . 
     The size of a data packet can vary between updates for a number of reasons. For example, the operating mode of a drive can change such as from a position loop controller to a torque loop controller. Different data is required for each of these disparate operating modes and accordingly the data size will vary when a change occurs. Additionally, the size of the packet can change when periodic information is provided from a drive to a controller (e.g., diagnostic information, data associated with trending a position error of a drive, . . . ). Accordingly, the dynamic data generator  812  can add this information to the transmitted data 
     Conventional motion control protocols utilize fixed size data structures at configuration time that cannot be changed at run time. Thus, network bandwidth tends to be wasted since fixed portions of the data structure are associated with event data and service data that are transferred infrequently. On the contrary, a flexible, dynamic format for the data transmitted over the network is provided by utilizing the dynamic data generator  812  and/or the data format evaluator  814 . 
     Turning to  FIG. 9 , illustrated is a system  900  that facilitates adding and/or removing a node from a motion control network. The system  900  includes an interface  902  that receives and/or transmits communications over the network. For example, actual data, command data, and/or non-motion related data can be sent and/or obtained via the interface  902 . The system  900  additionally includes a motion control component  904 , which can be associated with a node within the motion control network. For example, the motion control component  904  can be a controller, a control axis object, a drive, a drive axis object, etc. Pursuant to an illustration, if the motion control component  904  is a drive, it can effectuate controlling the dynamics of a motor. According to another aspect, the motion control component  904  can be a controller that can generate command data that can be transmitted to drives and/or drive axis objects located at remote nodes in the network via the interface  902 . 
     The motion control component  904  includes a clock  906  that is synchronized with clocks associated with disparate motion control components (not shown) to provide a common understanding of time throughout the network. Additionally, the motion control component includes an update component  908  which facilitates updating commands, data, etc. associated with the motion control component  904 . For example, the motion control component  904  can be a drive that receives command data for a particular update cycle via the interface  902  from a controller located at a disparate network node. The update component  908  can enable modifying the commands associated with the drive to conform to the received command data. The received command data generated by a controller can have an associated time stamp that indicates a time when the command data is to be applied to a control loop. Thus, the update component  908  can utilize a time stamp component  910  that evaluates the time stamp associated with the received command data. Utilization of the time stamp component  910  enables a motion control component (e.g., motion control component  904 , drive, drive axis object, . . . ) at a consuming node to receive command data with the time stamp, and even if the data arrives late due to latencies on the network, the motion control component  904  can compensate for the latencies of the data and apply the data in an appropriate fashion to a control loop. Thus, the time stamp protocol allows for receipt of late data and enables applying the late data, whereas conventional time slotting protocols that are hard synchronized typically do not tolerate late data and therefore commonly discard such late data. Additionally, the time stamp component  910  can incorporate a time stamp into actual data that is to be sent from a drive to a controller. In such a case, the time stamp can be related to the time when the data was captured. 
     The motion control component  904  additionally can include a node population component  912 , which can support adding and/or removing nodes (e.g., disparate motion control components at various remote network locations) from the motion control network. By way of example, a new drive node can be added to a network and the node population component  912  can facilitate instantiating a new control axis object in a controller assigned to the new drive node address. It is to be appreciated that the new drive node can be added to the network subsequent to network configuration. In comparison, conventional techniques do not support adding or removing nodes after a configuration tool has scheduled a motion control update cycle to permit certain nodes to communicate within certain time slots. Thus, the conventional techniques typically required reconfiguring of a time slot mapping to enable changing the number of nodes within the network. In contrast, the node population component  912  allows nodes to be added to and/or removed from the network subsequent to configuration and/or while the network is operational. Although depicted as being comprised in the motion control component  904  (e.g., controller), it is to be appreciated that the node population component  912  can be a stand alone component, located anywhere within a motion control network, a combination thereof, etc. 
     With reference to  FIG. 10 , illustrated is a system  1000  that enables controlling motion over an open network in an industrial automation environment. The system  1000  includes an interface  1002  that receives and provides data (e.g., command data, actual data, . . . ) with a time stamp to a motion control component  1004  (e.g., drive, drive axis object, controller, control axis object, . . . ). The motion control component  1004  can include a clock  1006  that is synchronized to other clocks within the motion control network. Additionally, the motion control component  1004  can include an update component  1008  that includes a time stamp component  1010  that evaluates and/or includes the time stamp associated with data that is received and/or transmitted via the interface  1002  in connection with updating the motion control component  1004 . 
     The motion control component  1004  can further include a data adjustment component  1012  that can interpolate and/or extrapolate the received data utilizing the time stamp. By way of illustration, the motion control component  1004  (e.g., controller) can receive actual data with a time stamp from a drive and the data adjustment component  1012  can use the actual data time stamp to extrapolate the actual data to a time associated with a start of a control update period. Thus, actual data represented by the controller can be referenced to the control update period start time. According to another example, command data received by the motion control component  1004  (e.g., drive) can be extrapolated via the data adjustment component  1012  to align with a start of a drive update period when the command is to be applied to a control loop. The motion control component  1004  (e.g., drive) can also utilize the data adjustment component  1012  to extrapolate command data for drive updates when fresh command data for a new drive update period fails to be provided by a controller. Thus, the data adjustment component  1012  can enable continued operation through a transmission latency disturbance. 
     Turning to  FIG. 11 , illustrated is a system  1100  that facilitates communicating between a controller and drive over a motion control network utilizing a time stamping protocol. The system  1100  includes a controller  1102  (e.g., control axis object) and a drive  1104  (e.g., drive axis object) that transmit data over a network  1106 . The controller  1102  includes an update component  1108  that can evaluate received actual data and/or generate command data based on such an evaluation. The update component  1108  utilizes a time stamp component  1110  that can evaluate a time stamp associated with the received actual data and/or include a time stamp with the command data that is to be transmitted to the drive  1104  via the network  1106 . The time stamp of the actual data can be associated with a time at which the drive measured actual properties. Additionally, the time stamp of the command data can be related to a time at which a drive is to effectuate the associated commands. 
     The drive  1104  additionally can include an update component  1112  and a time stamp component  1114 . It is to be appreciated that the update component  1108  and the update component  1112  can be substantially similar and/or the time stamp component  1110  and the time stamp component  1114  can be substantially similar; however, the claimed subject matter is not so limited. 
     A cycle timing component (not shown) (e.g., the cycle timing component  212  of  FIG. 2 ) can be utilized in connection with the system  1100  to enable partitioning an update cycle into disparate intervals. For instance, the cycle timing component could partition the update cycle into three intervals: an input transfer interval, a calculation interval, and an output transfer interval. According to this example, during the input transfer interval the drive  1104  can transfer actual data corresponding to a measured value over the network  1106  to the controller  1102 . The calculation interval, additionally, can provide a time during which the controller  1102  evaluates the transmitted actual data and/or generates new command data for use by the drive  1104 . While the calculation interval is ongoing, non-motion related data can be transmitted over the network  1106 . Further, during the output transfer interval, the controller  1102  can provide the generated command data to the drive  1104  via the network  1106 . The three intervals can be any length of time in comparison to each other. For example, the intervals can be such that one-third of an update cycle is allocated to each of the intervals; however, the claimed subject matter is not so limited and instead contemplates the use of any proportions. Additionally, the intervals can change in length during runtime. By way of illustration, if the network  1106  transfers only a slight amount of motion control data, but communicates a high volume of I/O data, the calculation interval can be enlarged to accommodate the higher I/O traffic. According to another example, an optimization can be effectuated in real time such that the calculation interval is determined based on I/O demands, motion control traffic, computational requirements, number of axes, etc. 
     Pursuant to a further example utilizing the cycle timing component, it is contemplated that non-motion data can be sent during any interval of an update cycle. For example, a switch can queue data such that high priority motion related data can be queued at the front of a buffer during an appropriate interval, while the low-priority non-motion related data can be transmitted during the calculation interval. Additionally, if an input transfer interval and/or an output transfer interval is not completely filled with motion related data, the non-motion related data can be transmitted subsequent to the transmission of the motion related data, making maximum use of network bandwidth. 
     Turning to  FIG. 12 , illustrated is a system  1200  that enables communicating motion control data and/or non-motion data over a network between controller(s) and drive(s) via employing a time stamping protocol. The system  1200  includes M controllers  1202 , where M is any positive integer and N drives  1204 , where N is any positive integer. The controller(s)  1202  communicate with the drive(s) via the network  1206 . The controller(s)  1202  can include an update component  1208 , which utilizes a time stamp component  1210  in connection with updating the controller(s)  1202 . Further, the drive(s) can include an update component  1212 , which can be substantially similar to the update component  1208 , and a time stamp component  1214 , which can be substantially similar to the time stamp component  1210 . Additionally, CIP Motion can support peer-to-peer connections between either peer controllers  1202  or peer drives  1204 . For example, a multicast peer-to-peer connection can be employed. 
     The system  1200  supports utilizing multiple controllers  1202 , for instance. In comparison, conventional time slotting protocols typically are unable to employ multiple controllers on one network. The controllers  1202  can operate with substantially similar update periods or different update periods. According to an example, the controllers  1202  can utilize phase shifting to balance the motion data traffic corresponding to each of the controllers  1202 ; however, the claimed subject matter is not so limited. 
     The system  1200  supports adding and/or removing drive(s)  1204  at any time. According to an example, a drive  1204  can be added after configuration, which is not permissible with conventional motion control protocols that employ time slotting. Additionally, a drive  1204  can be added and/or removed while the system  1200  is operation; thus, downtime typically associated with time slot protocol reconfiguration is reduced. 
     With reference to  FIG. 13 , illustrated is a system  1300  that facilitates communicating data over a CIP Motion Drive Connection. A CIP Motion Drive Connection can include two unidirectional unicast connections: one passing data from a controller  1302  to a drive  1304  and the other passing data from the drive  1304  to the controller  1302 . Both connections can utilize a data structure that includes a header that comprises a time stamp (e.g., 32-bit time stamp) and a series of data blocks for each axis instance supported by a drive node. Instances can be further organized by rack slots for multi-axis drive platforms. 
     Data exchange between the drive  1304  and the controller  1302  can be paced by the controller  1302 , such that one Drive-to-Controller data packet can be sent for every Controller-to-Drive data packet received. The Controller-to-Drive connection packets can be sent periodically according to a configured Controller Update Period, which is the same as a Connection Update Period. A Drive Update Period that corresponds to an update period at which the drive performs its control calculates can be, and typically is, faster than the Controller Update Period. Conventional time slotted motion control protocols are hard synchronized and utilize a Controller Update Period that is an integer multiple of the Drive Update Period. However, since the CIP Motion drive connection packet includes a time stamp, the Controller Update Period is not required to have an integer relationship with the Drive Update Period. 
     Each instance data block within the CIP Motion Drive Connection packet can include three sets of data blocks associated with a cyclic data channel  1306 , an event data channel  1308 , and a service data channel  1310 . The size of the data blocks for a given update can be variable and determined by a connection and instance data block headers. Additionally, according to an example, the data channels (e.g., cyclic data channel  1306 , event data channel  1308 , service data channel  1310 ) can have disparate data processing priorities. 
     The cyclic data channel  1306  can carry cyclic data blocks that can be sampled and/or calculated during a Connection Update Period. Additionally, the cyclic data channel  1306  can be synchronized with other nodes in a motion control system via utilizing distributed System Time. Cyclic data can be high priority data that is immediately processed and/or applied to a drive axis within a Drive Update Period. 
     The event data channel  1308  can carry data associated with drive event(s) (e.g., registration, homing, . . . ). These event(s) can occur within a Connection Update Period. The event data can have a medium priority and can be processed and/or applied within a Connection Update Period. 
     The service data channel  1310  can carry data associated with service requests to read and/or write attribute values of a drive axis object as part of an on-line configuration and/or diagnostic functionality. Additionally, the service data channel  1310  can provide services requests to affect drive axis object behavior as part of controller instruction execution. Service data can have a lowest priority and can be buffered and/or processed as a background task. Further, the service request can be processed within a Connection Update Period or at any later time. 
     The structure of the CIP Motion Drive Connection can be dynamic in size and/or content. The structure of each block can be determined by the contents of the headers within the connection structure, and thus, the need to send a separate structure format definition to the drive to interpret the connection data is mitigated. Additionally, the data within the CIP Motion Connection data structure can all target a single object, for instance. 
     Referring to  FIGS. 14-16 , methodologies in accordance with various aspects of the claimed subject matter are illustrated. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the claimed subject matter is not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the claimed subject matter. Additionally, it should be further appreciated that the methodologies disclosed hereinafter and throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. 
     Turning to  FIG. 14 , illustrated is a methodology  1400  that facilitates controlling motion with a time stamping protocol over a network in an industrial automation environment. At  1402 , a time stamp is included with motion related data. The motion related data can be, for example, command data generated by a controller which can be employed by a drive to effectuate a variation in operation. Pursuant to another example, the motion related data can be actual data (e.g., actual data associated with a drive such as actual primary position, actual secondary position, actual velocity, actual acceleration, actual torque, actual current, actual voltage, actual frequency, . . . ). The actual data can be some measurable value and can be employed by the controller to generate proper commands for use in a next update cycle. The time stamp incorporated into the motion related data can be associated with a time for which a command is to be effectuated (e.g., utilizing command data) and/or a time associated with a measurement (e.g., utilizing actual data). The time stamp can be included into a header of the motion related data packet, for instance. 
     At  1404 , the motion related data with the time stamp is transmitted over a network. Utilization of any network and/or network connection is contemplated to fall within the scope of the claimed subject matter. According to an illustration, the data can be transferred over a network that supports motion control such as a CIP network. The data can be transmitted from a controller to a drive (e.g., command data) and/or from a drive to a controller (e.g., actual data), for example. At  1406 , the motion related data with the time stamp is received. At  1408 , the receiving device (e.g., controller, control axis object, drive, drive axis object, . . . ) can be updated utilizing the motion related data that includes the time stamp. By way of example, a controller can receive actual data with a time stamp that corresponds to a time at which a measurement was made at a drive. Accordingly, the controller can employ this data to generate new commands that can be transferred back to the drive and/or effectuated by the drive during a next update cycle. Pursuant to another illustration, a drive can receive command data with a time stamp that is associated with a time at which the command is to be effectuated (e.g., drive can be given instructions to change to a particular position, velocity, acceleration, torque, current, frequency, voltage . . . ). The time can be determined by synchronizing nodes within the motion control network; thus, a common understanding of time exists. When a corresponding time is reached, the drive can implement the new commands. Accordingly, in contrast to time slotting techniques, stringent configuration requirements can be mitigated, nodes can be added or removed subsequent to configuration, and data can still be utilized even if delayed due to network latencies via employing this time stamping. 
     With reference to  FIG. 15 , illustrated is a methodology  1500  that enables balanced single cycle timing associated with motion control updates for a motion control network. At  1502 , a time stamp is associated with motion related data. At  1504 , a proper interval for transmitting motion related data with the time stamp is identified. For example, a clock associated with a node can be synchronized with disparate clocks related to disparate nodes to yield a common understanding of time within the network. Additionally, based on the current time, a particular interval can be identified. According to an aspect, an update cycle can be divided into an input transfer interval, a calculation interval, and an output transfer interval. During the input transfer interval, motion related data can be transmitted from a drive to a controller (e.g., transmitting actual data), while during an output transfer interval, motion related data can be transmitted from a controller to a drive (e.g., transmitting command data). During the calculation interval, motion related data transmission is quiescent, thereby enabling non-motion related data to utilize the available network bandwidth. At  1506 , the motion related data is transmitted with the time stamp over a network during the identified time interval. At  1508 , the motion related data with the time stamp is received by a receiving node. At  1510 , the receiving node (e.g., receiving device) can be updated based on the received motion related data with the time stamp. 
     Turning to  FIG. 16 , illustrated is a methodology  1600  that enables transmission of dynamic motion related data over a motion control network. At  1602 , dynamic motion related data is generated. The data structure can vary in size and/or content from one update to a next update. The dynamic motion related data can include a description of the structure within the data itself, such as, for example, in the header of a data packet. At  1604 , a time stamp is included with the motion related data. For example, the time stamp can be associated with a time at which an action is to be implemented (e.g., utilization of new command data) and/or a time at which an action was taken (e.g., measuring associated with actual data). At  1606 , the motion related data with the time stamp is transmitted over a network (e.g., from a controller to a drive, from a drive to a controller). At  1608 , the motion related data with the time stamp is received. At  1610 , the format of the motion related data with the time stamp is determined. For example, the header of the received data can be evaluated to identify the structure. Such a determination can be effectuated to facilitate unpacking the data. At  1612 , the motion related data with the time stamp is utilized to update the receiving device. 
       FIGS. 17-25  are exemplary timing diagrams that illustrate various aspects associated with time stamping motion control. It is to be appreciated that these timing diagrams are provided as examples and the claimed subject matter is not limited by these examples. 
     Turning specifically to  FIG. 17 , illustrated is an exemplary timing diagram that depicts how command data and time stamps delivered by a Controller-to-Drive connection can be applied to a drive axis utilizing fine interpolation. According to this example, connection data is transferred from the controller to the drive during a connection cycle where a Controller Update Period (CUP) is not an integer multiple of the drive update period. As part of a Control Task, the controller initiates transmission of a Controller-to-Drive Connection packet with new command data to the targeted drive with an incremental Update ID and a new Controller Time Stamp referencing the time at the start of the current Controller Update Period. The instance data block for the target axis also includes the Command Target Time, which in this example is set to 2 to support a fine interpolation delay of 2* Controller Update Period (CUP) that is to be added to the Controller Time Stamp. The drive runs a periodic Drive Task that checks every Drive Update Period for new Controller-to-Drive Connection packet data, which can be accomplished by checking for a changed Update ID. If the Drive Task discovers fresh data, then this is a command data update cycle and the command data can be further processed. 
     The drive can then check for synchronous operation. If the drive is not synchronized, then it is not necessary to perform a Late Update Check since bypassing the Late Update Check allows for control of the drive during start-up or when the drive does not have time synchronization services. If the drive is synchronized, the drive computes a difference between the current drive update time stamp and the Controller Time Stamp in the Controller-to-Drive Connection packet. If the difference is greater than Controller Update Delay High Limit*Controller Update Period, the drive throws a Controller Update Fault. Additionally, if the time difference has exceeded twice the Connection Update Period, the current fine interpolator polynomial has become, effectively, an extrapolator polynomial allowing the drive to ride through the late data condition until the new data arrives. 
     The command data can thereafter be applied. Since a fine interpolator is used in this example, the Drive computes coefficients for the fine interpolation polynomial based on the command reference being applied to the Target Time of the Controller Time Stamp, Tctrl, plus the product of the Command Target Time and Controller Update Period, or 2* CUP. If the Target Time is less than the current System Time in the drive, new coefficients to the polynomial are still computed based on this command data to improve the accuracy of the extrapolation calculations. In general, whenever command data is late, the data still represents the freshest command data available and should be applied as soon as possible. 
     With reference to  FIG. 18 , illustrated is another exemplary timing diagram where a Controller Update Period (CUP) is not an integer multiple of a drive update period. As depicted in this example, the Command Target Time is set to 1 and the computed polynomial is not applied for the purpose of fine interpolation, but rather for extrapolation; the extrapolation allows the drive to compute an accurate command data value at the time the drive performs its control calculations based on previous axis trajectory. 
       FIG. 19  illustrates an exemplary timing diagram that demonstrates coordination between two drive axes with different Drive Update Periods and an associated Controller Update Period that is not an integer multiple of either Drive Update Period. The controller&#39;s motion planner task sends identical command positions and time stamps to two slave drive axes that, while synchronized with System Time, are running at different drive update rates. When the command position data arrives at the two drives, they use the Controller Time Stamp, the Command Target Time, and the Controller Update Period to compute new coefficients to the interpolation polynomial based on the constraint that the polynomial value at time equal to (Controller Time Stamp+Command Target Time*Controller Update Period) is the specified Command Position value. Since there is no dependency on the drive update rate, the polynomial coefficients computed by each drive can be identical. Since neither drive has an update that coincides with this target time, the drives use the fine interpolation polynomial to calculate the command position reference for each drive update until a fresh command position is received from the controller. If a new command position does not arrive until well after the target time, the drive continues to use the same polynomial equation to “extrapolate” command position for subsequent drive updates as shown in the above diagram. This extrapolation continues until fresh data arrives and new coefficients can be calculated. In this way, whether by interpolation or extrapolation, each slave axis runs smoothly and the two axes stay phase locked with the master axis. 
     Turning to  FIG. 20 , illustrated is an exemplary timing diagram demonstrating that precise coordination of multiple CIP Motion drive axes can be maintained even when Controller-to-Drive connection packets incur significant delays while traveling across the CIP network. According to this example, the packet for Slave Drive Axis  2  has incurred a significant delay during transmission. As a result, the command position for this axis is extrapolated from the last fine interpolation polynomial. This allows the axis to move smoothly through a transmission latency disturbance. When the new command data does arrive, the new command value may not agree with extrapolated value due to extrapolation error. This error can result in a disturbance to the motion profile. The magnitude of the extrapolation error depends on the dynamics of the motion profile and the controller update rate. In most real-world applications, transmission latencies lasting several update periods can occur without any noticeable disturbance to the associated motion profile. 
     With reference to  FIG. 21 , depicted is an exemplary timing diagram that illustrates how axis position data from the drive is adjusted by the controller based on the relative time stamps between the drive and the controller. For instance, when the Drive Time Stamp does not match the local update time stamp of the controller, the controller can extrapolate the actual response data value based on trajectory to correspond to the controller&#39;s time stamp. 
     Turning to  FIG. 22 , illustrated is an exemplary timing diagram that demonstrates how actual data and time stamps delivered by the Drive-to-Controller connection can be used to adjust drive axis actual position to the controller&#39;s timebase. If the axis is synchronized, the drive compares a current Drive Task time stamp with the Actual Update Window that is determined during the last command data update. The Actual Update Window has a duration of 1 Drive Update Period and ends at the computed time of the next Controller Update. If the time stamp is within the time window, this is an actual data update cycle. If the time stamp is before the window, then the drive waits for a subsequent drive task to send the actual data to the controller. (This prevents a condition where there is excessive time between the feedback capture and the start of the next Controller Task.) If the axis is not synchronized and a command update is received via the Controller-to-Drive Connection, then this is also an actual update cycle and the drive proceeds as follows. Otherwise, no action is taken and the task is finished. 
     If an actual update cycle is identified, then the drive sends the Drive-to-Controller Connection packet to the controller with the latest actual data from this Drive Task, including the current drive update Time Stamp, and an incremented Update ID. All additional data sent to the controller in this packet may be derived from the previous Drive Task. This allows the drive transmission to occur at the earliest point in the Drive Task execution. The controller additionally checks for new data from the drive by checking for a changed Update ID. The following is performed regardless of whether or not the Update ID has changed. According to an aspect, the Update ID may be the only way to detect for new actual data when the drive is not synchronized. 
     Further, the drive checks the Synchronized bit of the Drive Node Control byte to determine if the drive axis is synchronized. If the drive axis is not synchronized, the controller applies actual data to avoid Late Update checking and Time-Stamp Correction. Utilizing such a bypass allows the drive to operate during start-up or even in the case where the drive does not have any time synchronization services. 
     A Late Update Check can also be utilized such that the controller computes the difference between the current Connection Update Period time stamp and the Time Stamp in the Drive-to-Controller Connection packet. If the difference is greater than Missed Update Tolerance*Update Period, the controller throws a Controller Sync Fault. Additionally, if the previously computed time difference is non-zero, then the actual data value can be extrapolated based on previous axis actual trajectory to line up with the controller&#39;s time stamp. This correction may be necessary because the motion planner assumes that actual input is implicitly time stamped to the beginning of the Controller Update Period. Furthermore, the controller can apply actual data as inputs to the motion planner, which computes new command reference data. 
     Turning to  FIG. 23 , illustrated is an exemplary timing diagram that depicts how actual data and time stamps delivered by the Drive-to-Drive Peer connection are used to adjust drive axis actual position to the controller&#39;s timebase. In this example, the master axis position is captured by the producing drive and sent to one or more consuming drives via the multicast CIP Motion Peer Drive-to-Drive Connection (e.g., in a line-shafting application). When the master actual position is consumed by another drive, extrapolation is done by the consumer to compensate for the delay incurred over the connection. This is done by using the producer&#39;s Time Stamp, Tpro, associated with actual data element being consumed and the consumer&#39;s Time Stamp, Tcon, latched by the consuming controller. Once corrected for the peer connection delay, the remote slave axis associated with the consuming drive can be precisely phased relative to the master axis through electronic gearing. This can be utilized when the consuming and producing drives are running at different update rates. Additionally, the consuming drive&#39;s update period can be more or less than the producing drive as long as they both operate off distributed System Time. 
       FIG. 24  illustrates an exemplary timing diagram where the producing drive is distributing command position to multiple consuming drives. When the master command position is consumed by another drive, extrapolation is done by the consumer to compensate for the delay incurred over the connection. This can be done by using the producer&#39;s Time Stamp, Tpro, associated with actual data element being consumed and the consumer&#39;s Time Stamp, Tcon, latched by the consuming controller. Once corrected for the peer connection delay, the remote slave axis associated with the consuming drive can be precisely phased relative to the master axis through electronic gearing. 
     Turning to  FIG. 25 , illustrated is an exemplary timing diagram where the producing drive is configured to delay the application of the local master command position reference by one Producer Update Period, Tmcd, which represents the Master Command Delay. This minimizes the amount of extrapolation that is required to compensate for the delay incurred over the peer connection. In this example, the Master Command Delay is 250 usec. Since the consuming drive&#39;s update period is also 250 usec, the net extrapolation time is 0. 
     With reference to  FIG. 26 , an exemplary environment  2610  for implementing various aspects of the invention includes a computer  2612 . The computer  2612  includes a processing unit  2614 , a system memory  2616 , and a system bus  2618 . The system bus  2618  couples system components including, but not limited to, the system memory  2616  to the processing unit  2614 . The processing unit  2614  can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit  2614 . 
     The system bus  2618  can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 8-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI). 
     The system memory  2616  includes volatile memory  2620  and nonvolatile memory  2622 . The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer  2612 , such as during start-up, is stored in nonvolatile memory  2622 . By way of illustration, and not limitation, nonvolatile memory  2622  can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory  2620  includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM). 
     Computer  2612  also includes removable/non-removable, volatile/non-volatile computer storage media.  FIG. 26  illustrates, for example a disk storage  2624 . Disk storage  2624  includes, but is not limited to, devices like a magnetic disk drive, floppy disk drive, tape drive, Jaz drive, Zip drive, LS- 100  drive, flash memory card, or memory stick. In addition, disk storage  2624  can include storage media separately or in combination with other storage media including, but not limited to, an optical disk drive such as a compact disk ROM device (CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RW Drive) or a digital versatile disk ROM drive (DVD-ROM). To facilitate connection of the disk storage devices  2624  to the system bus  2618 , a removable or non-removable interface is typically used such as interface  2626 . 
     It is to be appreciated that  FIG. 26  describes software that acts as an intermediary between users and the basic computer resources described in suitable operating environment  2610 . Such software includes an operating system  2628 . Operating system  2628 , which can be stored on disk storage  2624 , acts to control and allocate resources of the computer system  2612 . System applications  2630  take advantage of the management of resources by operating system  2628  through program modules  2632  and program data  2634  stored either in system memory  2616  or on disk storage  2624 . It is to be appreciated that the subject invention can be implemented with various operating systems or combinations of operating systems. 
     A user enters commands or information into the computer  2612  through input device(s)  2636 . Input devices  2636  include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit  2614  through the system bus  2618  via interface port(s)  2638 . Interface port(s)  2638  include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)  2640  use some of the same type of ports as input device(s)  2636 . Thus, for example, a USB port may be used to provide input to computer  2612 , and to output information from computer  2612  to an output device  2640 . Output adapter  2642  is provided to illustrate that there are some output devices  2640  like monitors, speakers, and printers, among other output devices  2640 , which require special adapters. The output adapters  2642  include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device  2640  and the system bus  2618 . It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)  2644 . 
     Computer  2612  can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)  2644 . The remote computer(s)  2644  can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer  2612 . For purposes of brevity, only a memory storage device  2646  is illustrated with remote computer(s)  2644 . Remote computer(s)  2644  is logically connected to computer  2612  through a network interface  2648  and then physically connected via communication connection  2650 . Network interface  2648  encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL). 
     Communication connection(s)  2650  refers to the hardware/software employed to connect the network interface  2648  to the bus  2618 . While communication connection  2650  is shown for illustrative clarity inside computer  2612 , it can also be external to computer  2612 . The hardware/software necessary for connection to the network interface  2648  includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards. 
       FIG. 27  is a schematic block diagram of a sample-computing environment  2700  with which the subject invention can interact. The system  2700  includes one or more client(s)  2710 . The client(s)  2710  can be hardware and/or software (e.g., threads, processes, computing devices). The system  2700  also includes one or more server(s)  2730 . The server(s)  2730  can also be hardware and/or software (e.g., threads, processes, computing devices). The servers  2730  can house threads to perform transformations by employing the subject invention, for example. One possible communication between a client  2710  and a server  2730  can be in the form of a data packet adapted to be transmitted between two or more computer processes. The system  2700  includes a communication framework  2750  that can be employed to facilitate communications between the client(s)  2710  and the server(s)  2730 . The client(s)  2710  are operably connected to one or more client data store(s)  2760  that can be employed to store information local to the client(s)  2710 . Similarly, the server(s)  2730  are operably connected to one or more server data store(s)  2740  that can be employed to store information local to the servers  2730 . 
     What has been described above includes examples of the invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the invention are possible. Accordingly, the invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.