Setting up the SHA Project
Starting your Project:
> The samples can be adapted for your application; however, it is more likely they will be used as a guideline/example, and your application will be created from scratch or from an existing project.
Jump a specific step by clicking a link below
> After your hardware is entered in the project, the next step is to create a Motion Group. A 1 millisecond update rate is recommended, and the rate selected must be entered into the SHA_Config.Ts tag, in seconds; so, use 0.001 in this case. Likewise, any SHA_RelayId blocks should have their Ts set to this value. In the sample, a KyntronicsMotionGroup is used:
Here is the associated tag, which will be used to run the MotionTask:
> Add/create the SHA_Axis with a datatype of AXIS_CIP_DRIVE. Add the PowerAxis as an AXIS_CIP_DRIVE.
> Add/create the SHA_Position axis as type AXIS_VIRTUAL. If a controlled variable Force will be needed, then create the SHA_Force axis as type AXIS_VIRTUAL.
> If the half-axis feedback will be used, then create the FeedbackAxis as AXIS_CIP_DRIVE.
> Setup the SHA_Axis CIP Axis configuration. In the General tab of the Properties, select: Velocity Loop, Custom, High Loop Response.
> Set up the Motor based on the catalog number. Note: Because the motor drives the pump to move the actuator, no Autotune is needed; the default parameters for the motor from its catalog number are sufficient. Likewise, the LoadObserver does not need to be used or run.
> The axis scaling should be setup as follows. User units for the Kinetix Axis will remain 1:1 such that all speeds to the drive are in units of Hertz (so the corresponding RPM is speed * 60).
The SHA_PositionControl block outputs a CommandPumpSpeed, in Hz, which is then sent to the SHA_Axis.VelocityTrim to turn the motor and pump. The minimum and maximum pump speed parameters in the SHA_CONFIG tags are in Hz as well.
Fun fact: The SHA’s rod will move faster when retracting than extending, for the same pump speed (say +5 Hz to extend and -5 Hz to retract). This is because in the retract case, the rod occupies some of the chamber volume, so less fluid is needed to move it a given distance.
Note: The Travel Mode should be set to Unlimited, as shown below.
> When the Velocity mode was selected (above), the correct Cyclic Parameters need to be specified. The AOI requires non-default feedback and control parameters to be exchanged between the CIP Axis backing tag and the Kinetix drive.
Enable the cyclic read/write parameters as shown below:
> In the Exceptions tab, the Excessive Velocity Error MUST be set to Ignore:
> Create the MotionTask, and the SHA_MotionTask_Program. The MotionTask is configured as Type: Event; with the Trigger of: Motion Group Execution; using the Tag: KyntronicsMotionGroup; set the Execute task… to 1.0 ms (if the MotionGroup is set to a 1 ms scan; otherwise use the MotionGroup scan time. Set a Watchdog value that is meaningful/reasonable. The SHA_Routine shown under the motion task will hold the SHA_PositionControl block(s).
The SHA_MotionTask_Program can be exported from a sample project and imported into your project: this will also bring in the SHA_Controller, SHA_PositionControl, SHA_RelayId, SHA_Config, etc. Or, the SHA_Controller and SHA components can be loaded via the Import Assets, and then create the tasks from scratch. Rungs can also be copied out of the samples, as needed.
> Create/make sure the SHA_MotionTask_Program is scheduled:
> Update the Kinetix Power and Drive modules to setup their Axis associations:
Required Ladder logic to Post the SHA_PositionControl’s CommandPumpSpeed (or a ManualPumpSpeed) to the SHA_Axis/motor
> The CommandPumpSpeed output must be MOV’d to the SHA_Axis.VelocityTrim in order for the block to move the SHA. A ManualMode can be provided, to allow for direct jogs of the SHA_Axis via the VelocityTrim. Jog buttons could also be used, etc. Here are these other MOV rungs, placed after/below the SHA_PositionControl, to accomplish this (including logic to coordinate with the SHA_RelayId blocks):