Difference between revisions of "PIPEMODE"

From SoftMC-Wiki
Jump to: navigation, search
(PIPEMODE)
(Data Structure)
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{Languages|PIPEMODE}}
 
== PIPEMODE ==
 
== PIPEMODE ==
The softMC controller can be used as a pure Motion-Bus interface card between your application and drives (PIPEMODE feature). The host computer controls all of what normally occurs in the motion module of the softMC . It must send a real-time stream of data through the softMC to the drives. In this case, the softMC functions as a data pipe. The feature is enhanced by the option of flexibly switching between pipe mode and regular mode. In typical applications, the softMC starts in regular mode where homing, jogging and initial position adjustments are made. After that, the softMC can be switched to pipe mode and the host computer takes control. There can be both softMC -controlled and pipe-controlled axes at same time in the system. Following error and velocity over-speed errors are not checked with piped axes, but by the host.
+
The softMC controller can be used as a pure Motion-Bus interface card between your application and drives (PIPEMODE feature). The host computer controls all of what normally occurs in the motion module of the softMC . It must send a real-time stream of data through the softMC to the drives. In this case, the softMC functions as a data pipe. The feature is enhanced by the option of flexibly switching between pipe mode and regular mode. In typical applications, the softMC starts in regular mode where homing, jogging and initial position adjustments are made. After that, the softMC can be switched to pipe mode and the host computer takes control. There can be both softMC -controlled and pipe-controlled axes at same time in the system.  
  
 
An external profiler path can be designed and fed to the softMC  point-by-point. The controller functions only as a pipe and is not responsible for the correctness of the applied profiler. No system limits are checked except for position error and feedback velocity limitation. While running under this mode, no other movements are allowed.
 
An external profiler path can be designed and fed to the softMC  point-by-point. The controller functions only as a pipe and is not responsible for the correctness of the applied profiler. No system limits are checked except for position error and feedback velocity limitation. While running under this mode, no other movements are allowed.
  
 +
 +
 +
The HostDouble data interface can be configured in one of four communication protocols using [[MC-Basic:SYSTEM.PIPEMODE|'''SYS.PIPEMODE''']]: <br>
 +
 +
* 1 – sending position command only
 +
* 2 – sending both position and velocity commands
 +
* 3 - sending only velocity commands
 +
* 4 - sending only torque commands (TCMD)
 +
 +
When the system's pipe mode uses only position commands, the controller computes the current velocity.
 +
 +
<!--  @@@@@@@@@@@@@@@@@@@@
 
Command points are written through the standard Fast-Data DPRAM interface and transmitted into the controller. The DPRAM is scanned every SERCOS cycle and the command is executed.
 
Command points are written through the standard Fast-Data DPRAM interface and transmitted into the controller. The DPRAM is scanned every SERCOS cycle and the command is executed.
 +
There can be up to eight (8) axes in the system operating in pipe-mode.
 +
@@@@@@@@@@@@@@@@@@@@ -->
  
There can be up to eight (8) axes in the system operating in pipe-mode. The Fast-Data interface can be configured in one of two communication protocols using '''SYS.PIPEMODE''': 1 – sending position command only, 2 – sending both position and velocity commands. When the system's pipe mode uses only position commands, the controller computes the current velocity. Depending on the pipe mode configuration, the controller limits the number of axes that can be operated in this mode. When system uses only position command, eight (8) axes can operate. When using both position and velocity values, only four (4) axes can operate.
+
<!--   @@@@@@@@@@@@@@@@@@@@
 +
Depending on the pipe mode configuration, the controller limits the number of axes that can be operated in this mode. When system uses only position command, eight (8) axes can operate. When using both position and velocity values, only four (4) axes can operate.
 +
  @@@@@@@@@@@@@@@@@@@@ -->
 +
=== Data Structure ===
  
=== Data Structure ===
 
  
<font color="red">
+
The host CPU passes position , velocity  and torque commands commands via a data containers. User's API maps the data to [[MC-Basic:SYSTEM.HOSTDOUBLE|'''SYS.HOSTDOUBLE''']] to external source (usually TCP/IP). The Motion-Bus operation mode of every drive connected to an axis working in Pipe Mode must be configured (Position/Velocity/Torque).  
The host CPU passes position and velocity commands via a data structure through the Fast-Data DPRAM. The API maps the data to '''SYS.HOSTDOUBLE'''. The Motion-Bus operation mode of every drive connected to an axis working in Pipe Mode must be configured (Position/Velocity/Torque). The drive operation mode is selected through a status word written in '''SYS.VIN'''.
 
</font>
 
  
{{Note|Only drive modes previously configured in the SERCOS setup can be selected.}}
 
  
 
The data structure mapping depends on the '''PIPEMODE''' state:
 
The data structure mapping depends on the '''PIPEMODE''' state:
 
  
 
{| style="border-spacing:0;"
 
{| style="border-spacing:0;"
| rowspan="2" style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''MC variables'''
+
| rowspan="2" style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>'''MC variables'''</center>
| rowspan="2" style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|'''Byte offset'''
+
| colspan="4"  style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>'''SYSTEM.PIPEMODE'''</center>
| colspan="2"  style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''SYSTEM.PIPEMODE'''
 
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Position (1)'''
 
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Position (1)'''
 
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Position and Velocity (2)'''
 
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Position and Velocity (2)'''
 +
|style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:none solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|<center>''' Velocity (3)'''</center>
 +
|style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:none solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>'''Torq (4)'''</center>
  
 
|-
 
|-
 
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[1]</nowiki>
 
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[1]</nowiki>
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>0…7</center>
 
 
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.PCMD</center>
 
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.PCMD</center>
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.PCMD</center>
+
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.PCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[2]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[2]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>8…15</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.VCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A1.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[3]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[3]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>16…23</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.PCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.PCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[4]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[4]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>24…31</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.VCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A2.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[5]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[5]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>32…39</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A5.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A5.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.PCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.PCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A5.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A5.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[6]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[6]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>40…47</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A6.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A6.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.VCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A3.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A6.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A6.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[7]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[7]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>48…55</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A7.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A7.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.PCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.PCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A7.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A7.TCMD</center>
  
 
|-
 
|-
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[8]</nowiki>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[8]</nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>56…63</center>
 
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A8.PCMD</center>
 
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A8.PCMD</center>
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.VCMD</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A4.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A8.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A8.TCMD</center>
 +
 
 +
|-
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[9]</nowiki>
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A9.PCMD</center>
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A5.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A9.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A9.TCMD</center>
  
 
|-
 
|-
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Sys.Vin
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:0.039cm;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>. . . . .  </nowiki>
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>96…99</center>
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:none solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A1…A8 operation mode info.
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:none solid #000000;border-right:none double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:none;padding-right:0.191cm;"|
| style="border-top:0.018cm solid #000000;border-bottom:0.039cm double #000000;border-left:0.018cm solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| A1…A4 operation mode information
+
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:none solid #000000;border-right:none double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:none;padding-right:0.191cm;"|
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:none solid #000000;border-right:0.039cm double #000000;padding-top:0cm;padding-bottom:0cm;padding-left:none;padding-right:0.191cm;"|
 +
 
 +
|-
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.039cm double #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>Sys.HostDouble[128]</nowiki>
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A128.PCMD</center>
 +
| style="border-top:0.018cm solid #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A64.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:none;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A128.VCMD</center>
 +
| style="border-top:0.039cm double #000000;border-bottom:0.018cm solid #000000;border-left:0.018cm solid #000000;border-right:0.039cm double;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <center>A128.TCMD</center>
  
 
|}
 
|}
  
=== Drive Operation Modes ===
+
<!-- === Drive Operation Modes ===
The drive’s operation mode of every axis is set in a 2-bit field, where there are two active modes: 0 - position and 1- velocity (set in a 24-bit field '''SYS.VIN''' variable). Mapping of the '''SYS.VIN''' operation mode status variable is described below:
+
The drive’s operation mode of every axis is set in a 2-bit field, where there are two active modes: 0 - position and 1- velocity (set in a 24-bit field '''SYS.VIN''' variable). Mapping of the '''SYS.VIN''' operation mode status variable is described below:
  
  
Line 161: Line 198:
 
End Program
 
End Program
 
</pre>
 
</pre>
 +
 +
 +
-->

Latest revision as of 06:53, 18 April 2018

Language: English  • 中文(简体)‎

PIPEMODE

The softMC controller can be used as a pure Motion-Bus interface card between your application and drives (PIPEMODE feature). The host computer controls all of what normally occurs in the motion module of the softMC . It must send a real-time stream of data through the softMC to the drives. In this case, the softMC functions as a data pipe. The feature is enhanced by the option of flexibly switching between pipe mode and regular mode. In typical applications, the softMC starts in regular mode where homing, jogging and initial position adjustments are made. After that, the softMC can be switched to pipe mode and the host computer takes control. There can be both softMC -controlled and pipe-controlled axes at same time in the system.

An external profiler path can be designed and fed to the softMC point-by-point. The controller functions only as a pipe and is not responsible for the correctness of the applied profiler. No system limits are checked except for position error and feedback velocity limitation. While running under this mode, no other movements are allowed.


The HostDouble data interface can be configured in one of four communication protocols using SYS.PIPEMODE:

  • 1 – sending position command only
  • 2 – sending both position and velocity commands
  • 3 - sending only velocity commands
  • 4 - sending only torque commands (TCMD)

When the system's pipe mode uses only position commands, the controller computes the current velocity.


Data Structure

The host CPU passes position , velocity and torque commands commands via a data containers. User's API maps the data to SYS.HOSTDOUBLE to external source (usually TCP/IP). The Motion-Bus operation mode of every drive connected to an axis working in Pipe Mode must be configured (Position/Velocity/Torque).


The data structure mapping depends on the PIPEMODE state:

MC variables
SYSTEM.PIPEMODE
Position (1) Position and Velocity (2)
Velocity (3)
Torq (4)
Sys.HostDouble[1]
A1.PCMD
A1.PCMD
A1.VCMD
A1.TCMD
Sys.HostDouble[2]
A2.PCMD
A1.VCMD
A2.VCMD
A2.TCMD
Sys.HostDouble[3]
A3.PCMD
A2.PCMD
A3.VCMD
A3.TCMD
Sys.HostDouble[4]
A4.PCMD
A2.VCMD
A4.VCMD
A4.TCMD
Sys.HostDouble[5]
A5.PCMD
A3.PCMD
A5.VCMD
A5.TCMD
Sys.HostDouble[6]
A6.PCMD
A3.VCMD
A6.VCMD
A6.TCMD
Sys.HostDouble[7]
A7.PCMD
A4.PCMD
A7.VCMD
A7.TCMD
Sys.HostDouble[8]
A8.PCMD
A4.VCMD
A8.VCMD
A8.TCMD
Sys.HostDouble[9]
A9.PCMD
A5.VCMD
A9.VCMD
A9.TCMD
. . . . .
Sys.HostDouble[128]
A128.PCMD
A64.VCMD
A128.VCMD
A128.TCMD