RapidCode VLC driver extends the RapidCode and SynqNet functionality to flowcharts and IEC 1131-1 programming, using Steeplechase VLC.
 

A Sample Application of a Steeplechase VLC flowchart using SynqNet:

SynqNet

alt

 

Phoenix Contact’s Steeplechase VLC software now offers seamless integration of the SynqNet™ motion network when used with the RapidCode VLC driver.

A SynqNet-based system with Steeplechase VLC and the RapidCode VLC driver can control up to 256 axes of motion from a single Steeplechase VLC runtime program. Recognized for its performance, safety and interoperability, SynqNet provides synchronized, plug and play motion devices from a range of top servo manufacturers.

Steeplechase VLC with integrated SynqNet provides a single, ease-of-use programming environment for real-time motion control, simplifying development and eliminating the need to purchase, learn and maintain multiple programming packages. The integrated PC-based networked control also eliminates problematic analog wiring and intricate handshaking between PCs, standalone controllers and motor amplifiers.

The RapidCode VLC driver, developed by Robotic Systems Integration Inc., provides VLC programmers with a common set of system motion commands, such as jogging, point-to-point positioning, position tracking, contouring, linear and circular interpolation and electronic gearing. Pre-defined axis I/O provide typical axis status information such as axis position, position error, speed, torque and over-travel limits.

The SynqNet motion network was designed to meet demanding motion applications and industry trends toward interoperable, digital machinery. SynqNet uses the standard Ethernet IEE802.3 physical layer for robust isolation and 100m cable lengths with a deterministic protocol engineered by Danaher Motion. SynqNet creates system modularity, HotReplace™ service without downtime, remote diagnostics, software field upgrade, multi-vendor support and fault-tolerant safety. Since 2003, over 280,000 SynqNet axes have been installed.

Source: Industrial Embedded

 

RapidCode VLC Change Log

RapidCode VLC Help File Download

http://www.roboticsys.com/download/RapidCodeVLC.hlp

alt

 

 

RapidCode VLC Driver Download

http://www.roboticsys.com/Downloads#Steeplechase_VLC

 

Contact Us for Password.

VLC SynqNet Support

Setting VLC SynqNet project successfully

Open Control Designer->new project

SynqNet

alt

 

Add Interface-> RapidCode VLC

SynqNet

alt

 

Right click on RapidCode VLC->Add Device ->Axis

SynqNet

alt

 

Right click on RapidCode VLC -> Configure and click on Apply

SynqNet

alt

 

Click on Apply

SynqNet

alt


Setting an Axis Object successfully

Follow the steps below to add an axis to your project:

Right click on controller and go to Add Device -> Axis Device

SynqNet

alt

 

Now right click on controller_Axis_device, in the example we will rename to Axis2

SynqNet

alt

 

Now right click and click on Configure. Add date accordingly and click on Apply as shown below:

SynqNet

alt

 

At this point, Axis 2 has been configured and is in a happy state (Green)

Why am I getting Error Code 23 from functions such as Clear Faults?

You have a Firmware File Mismatch. Please use RapidSetup or the flash utility to load the proper bin file associated with the SynqNet Version you are using.

How can I change PID tuning parameters?

To call functions as shown in image below:

  • Filter Coeff Set
  • Filter Coeff Get

Image:VLC_tuning_support1.jpg

Setting tag:
Image:VLC_tuning_support2.jpg

Which VLC functions should I hold flow execution at until I confirm a successful return value?

SourceNameGet

ClearFaults

SynqNetInit


All other functions can be used normally without waiting.

Good programming practices for Amp Enable

Overview…
Image:Ampenable1.jpg

You want to Clear Faults on the Axis before enabling…
Image:Ampenable2.jpg

Select the Axis you plan to enable and use an internal 16-bit Word for the Resulting Status. In this case we use status.

Next wait for status to equal 1;

Optional, you may want to do position setting such as Actual position = 0;

Image:Ampenable3.jpg

Finally you can Enable the Axis.
Image:Ampenable4.jpg


In order to determine that you have successfully enabled the axis, we recommend that you use the Axis Physical point.
Image:Ampenable5.jpg

We have AmpEnabledStatus as the mapped Tag.
Image:Ampenable6.jpg

If not enabled, you may want to repeat this process in a loop as we have done.Note this code example will try forever to enable the axis. May want to add a limit the number of attempts made.

 

Camming

Move Cam Linear - Relative Move

Make sure both axes are enabled. You can verify from RapidSetup also.

In this basic sample application: There is one master and one slave. We have defined a 5 point array.

• Master axis has relative positions defined in the array. Motion type will be a relative moves.
• Slave axis 1 has absolute positions defined in the array. Motion type will be relative moves.
 

SynqNet

alt

 

Sample application array:

SynqNet

alt

 

Graph of result:

SynqNet

alt

 

Let's discuss the sample application in detail:
Screen shot of sample application:

SynqNet

alt

 

Detailed information to create block above:
Create tags with the following properties:

SynqNet

alt

 

Set Axis 0 Pos to 0
Call method: PositionSet

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: PositionSet

SynqNet

alt

 

Define Array

SynqNet

alt

 

Motion Attribute Get

SynqNet

alt

 

OR attribute Mask

SynqNet

alt

 

Set Motion Attribute

SynqNet

alt

 

Move Cam Linear
Call method: MoveCamLinear

SynqNet

alt

 

Move Trapezoidal
Call method: MoveTrapezoidal
Below we have entered a Position of 5000 counts which is the relative distances of Master Axis added together ( 1000 + 1000 + 1000 + 1000 + 1000 = 5000 )

SynqNet

alt

 

Check for Motion Done:

SynqNet

alt

 

You can always click on Help icon for more information.

Move Cam Linear - Sample Application 1

Make sure both axes are enabled. You can verify from RapidSetup also.

In this basic sample application: There is one master and one slave. We have defined a 5 point array.

• Master axis has relative positions defined in the array. Motion type will be a relative moves.
• Slave axis 1 has absolute positions defined in the array. Motion type will be absolute moves.

SynqNet

alt

 

Sample application array:

SynqNet

alt

 

Graph of result:

SynqNet

alt

 

Let's discuss the sample application in detail:
Screen shot of sample application:

SynqNet

alt

 

Detailed information to create block above:
Create tags with the following properties:

SynqNet

alt

 

Set Axis 0 Pos to 0
Call method: PositionSet

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: PositionSet

SynqNet

alt

 

Define Array

SynqNet

alt

 

Move Cam Linear
Call method: MoveCamLinear

SynqNet

alt

 

Move Trapezoidal
Call method: MoveTrapezoidal
Below we have entered a Position of 5000 counts which is the relative distances of Master Axis added together ( 1000 + 1000 + 1000 + 1000 + 1000 = 5000 )

SynqNet

alt

 

Check for Motion Done:

SynqNet

alt

 

You can always click on Help icon for more information.

Move Cam Linear - Sample Application 2

Make sure all three axes are enabled. You can verify from RapidSetup too.

In this Sample Application: The arrangement of caming configuration is shown below. There are two slave axes linked to one master.

• Master axis has relative positions defined in the array. Motion type will be a relative moves.
• Slave axis 1 has absolute positions defined in the array. Motion type will be absolute moves.
• Slave axis 2 has absolute positions defined in the array. Motion type will be absolute moves.

SynqNet

alt

 

Sample array table used:

SynqNet

alt

 

Graph results from the array table:

SynqNet

alt

 

Detailed information to create block above:
Create tags with the following properties:
BLUE: Slave axis 1
RED: Slave axis 2

SynqNet

alt

 

Let’s discuss the sample application in detail:
Screen shot of sample application:

SynqNet

alt

 

Let’s discuss the sample application in detail:
Screen shot of sample application:

SynqNet

alt

 

Detailed information to create block above:
Create tags with the following properties:

SynqNet

alt

 

Set Axis 0 Pos to 0
Call method: Position Set

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: Position Set

SynqNet

alt

 

Set Axis 2 Pos to 0
Call method: Position Set

SynqNet

alt

 

Define Array

SynqNet

alt

 

Set Cam Linear 1
Call method: MoveCamLinear

SynqNet

alt

 

Set Cam Linear 2
Call method: MoveCamLinear

SynqNet

alt

 

Move Trapezoidal
Call method: MoveTrapezoidal
Below we have entered a Position of 5000 counts which is the relative distances of Master Axis added together ( 1000 + 1000 + 1000 + 1000 + 1000 = 5000 )

SynqNet

alt

 

Check for Motion Done

SynqNet

alt

 

You can always click on Help icon for more information.

Move Cam Cubic - Sample Application

Make sure both axes are enabled. You can verify from RapidSetup also.

In this basic sample application: There is one master and one slave. We have defined a 5 point array. We will be using method MoveCamCubic.
• Master axis has relative positions defined in the array. Motion type will be a relative moves.
• Slave axis 1 has absolute positions defined in the array. Motion type will be absolute moves.
• Slave axis 2 has absolute positions defined in the array. Motion type will be absolute moves.
 

SynqNet

alt

 

Sample application array:

SynqNet

alt

 

Graph of result. As you can see the Move Cam Cubic produced a smoother motion compared to the result using Move Cam Linear method.

SynqNet

alt

 

Let's discuss the sample application in detail:
Screen shot of sample application:

SynqNet

alt

 

Detailed information to create block above:
Create tags with the following properties:

SynqNet

alt

Set Axis 0 Pos to 0
Call method: PositionSet

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: PositionSet

SynqNet

alt

Define Array

SynqNet

alt

 

Move Cam Linear
Call method: MoveCamCubic

SynqNet

alt

 

Move Trapezoidal
Call method: MoveTrapezoidal
Below we have entered a Position of 5000 counts which is the relative distances of Master Axis added together ( 1000 + 1000 + 1000 + 1000 + 1000 = 5000 )
alt Image:CamCubicEditSpecialFunction-MoveTrapezoidal.jpg rect 0 0 0 0 SynqNet desc none
Check for Motion Done:

SynqNet

alt

 

You can always click on Help icon for more information.

Motion Cam Repeat From Set/Get (Repeating Cams)

To truly mimic a mechanical arm, we need to use Motion Cam Repeat From Set method. Using this method will automatically return to the start segment immediately after the cam has finished. Look at the image at the boot.

The primary focus of this sample application is to teach the following methods: • Motion Cam Repeat From SetMotion Cam Repeat From Get

The sample application also uses Move Cam Linear method, however for more information on camming look at the camming sample applications:
• Camming Sample Application – basic
• Camming Sample Application 2

Sample Array:

SynqNet

alt

 

VLC flow chart for sample application:

SynqNet

alt

 

Detailed Information to create the flow chart shown above:
Tags created:

SynqNet

alt

Set Axis 0 Pos to 0
Call method: Position Set

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: Position Set

SynqNet

alt

 

Define Array

SynqNet

alt

 

Motion Cam Repeat From Set
A value of 0 for position will indicate that the whole cam table provided is to be repeated.
0 counts for Position is to repeat the camming cycle from first point in the array (MasterArray [1] = 1000).

XMP

alt

 

Motion Attribute Mask Get

SynqNet

alt

 

OR Attribute Mask
Create a tag called motionMask as shown above; add the exact same numbers as shown below for Starting Master axis at specific position.

SynqNet

alt

 

Motion Attribute Mask Set

SynqNet

alt

 

Move Cam Linear

SynqNet

alt

 

Move Trapezoidal
We provide a total Position of 12000 counts to complete three cycles (To complete one cycle, master axis needs to a relative distance of 4000 counts. Therefore 4000 * 3 cycle = 12000)

SynqNet

alt

 

The sample application above would produce the following result:

SynqNet

alt


Motion Cam Master Start Set/Get (Starting at Specific Master Axis Positions)

The primary focus of this sample application is to teach the following methods:
• Motion Cam Master Start Set
• Motion Cam Master Start Get

By default camming starts immediately after you have executed one of the motion methods specifying the offsets of each of the cam segments relative to the previous segment or the master’s position at the start (if it is the first segment). Using Motion Cam Master Start Set method, allows exact position of the master before camming starts using its defined arrays.

Sample Array:

SynqNet

alt

Desired Result from Sample Array:

SynqNet

alt

 

VLC flow chart of sample application:

SynqNet

alt

 

Detailed Information to create the flow chart shown above:
Tags created:

SynqNet

alt

 

Set Axis 0 Pos to 0
Call method: Position Set

SynqNet

alt

 

Set Axis 1 Pos to 0
Call method: Position Set

SynqNet

alt

 

Define Array

SynqNet

alt

 

Motion Cam Master Start Set
We added 5000 counts as we want Master Axis to reach a specific position of 5000 counts before camming starts.

SynqNet

alt

 

Motion Attribute Mask Get

SynqNet

alt

 

OR Attribute Mask
Create a tag called motionMask as shown above; add the exact same numbers as shown below for Starting Master axis at specific position.

SynqNet

alt

 

Motion Attribute Mask Set

SynqNet

alt

 

Move Cam Linear

SynqNet

alt

 

Move Trapezoidal
We provide a total Position of 9000 counts because:
• 5000 counts for Motion Cam Master Start Set. This is added so that Master Axis would reach a specific position of 5000 counts before camming starts.
• 4000 counts is the added absolute positions defines in Define Array

SynqNet

alt

 

 

An Example of Controller Refresh Logic

A Controller Refresh shuts down the Synqnet Network before initializing it. This creates a situation where all RapidCodeVLC functions you could call are not valid. Because of this, the VLC driver ignores all commands until the Refresh is complete. Below you will see the logic we use to check/wait for a valid continuation of the flow.

Code...
Image:RefreshLogic.gif

In this case, we are waiting for SynqNetNetworkStateState (A 32 bit word we created) to equal 2.