Lenze PMSS1000 User Manual

Indexer-Programmer-Manual.pdf REV 1.3
Indexing Digital Servo Drive
Programmer's Manual
Applied to Models:
SSi1004 SSi1004-3P SSi1008 SSi1008-3P SSi1010 SSi1010-3P
1
Indexer-Programmer-Manual.pdf REV 1.3
TABLE OF CONTENTS
1. GETTING STARTED ...............................................................................................................................4
1.1 Introduction ......................................................................................................................................... 4
1.2 Programming flow overview ........................................................................................................... 7
1.3 MotionView Studio .......................................................................................................................... 8
1.4 Programming Basics....................................................................................................................... 9
1.5 Using advanced debugging features ............................................................................................ 13
1.6 Inputs and Outputs .......................................................................................................................14
1.7 Events ........................................................................................................................................... 18
1.8 Variables and Define statement ...................................................................................................19
1.9 IF/ELSE statements ...................................................................................................................... 20
1.10 Motion .......................................................................................................................................21
1.11 Subroutines and Loops ............................................................................................................. 25
2. PROGRAMMING ............................................................................................................................. 26
2.1 Introduction ................................................................................................................................... 26
2.2 User Variables .............................................................................................................................. 27
2.3 Arithmetic's ...................................................................................................................................28
2.4 Logical expressions and operators ...............................................................................................28
2.5 Bitwise operators ..........................................................................................................................29
2.6 Boolean Operators........................................................................................................................ 29
2.7 Comparison operators ..................................................................................................................30
2.8 Summary of User Variables .......................................................................................................... 30
2.9 System Variables and Flags.........................................................................................................30
2.10 System Variables and Flags Summary..................................................................................... 31
2.12 Scanned Event Statements ......................................................................................................39
2.13 Motion .......................................................................................................................................40
2.14 System Status Register (DSTATUS register) ........................................................................... 47
2.15 Fault Codes (DFAULTS register) .............................................................................................. 48
2.16 Limitations and restrictions .......................................................................................................49
3. LANGUAGE REFERENCE ............................................................................................................. 50
KEYWORD Long Name Type........................................................................................................ 50
ASSIGN Assign Input As Index Bit Statement .................................................................................. 51
DEFINE Define name Pseudo-statement....................................................................................... 51
DISABLE Turns servo OFF Statement ..........................................................................................52
DO UNTIL Do/Until Statement........................................................................................................ 52
ENABLE Enables servo Statement............................................................................................. 53
END END program Statement...................................................................................................53
2
Indexer-Programmer-Manual.pdf REV 1.3
EVENT
ENDEVENT End of Event handler Statement ................................................................................. 55
EVENT ON/OFF Turn events on or off Statement............................................................................ 56
EVENTS ON/OFF Globally Enables/disables events Statement...................................................... 56
FAULT User generate fault Statement ......................................................................................... 57
GEAR ON/OFF Gearing Mode Statement ...................................................................................... 58
GOTO Go To Statement ............................................................................................................ 58
GOSUB Go to subroutine Statement ............................................................................................. 59
HALT Halt the program execution Statement .................................................................................. 59
ICONTROL ON/OFF Enables interface control Statement............................................................... 60
IF If/Then/Else Statement .......................................................................................................... 61
MOVE Move Statement ............................................................................................................. 62
MOVED Move Distance Statement ............................................................................................... 63
MOVEP Move to Position Statement ............................................................................................ 64
MOVEDR Registered Distance Move Statement ........................................................................... 64
MOVEPR Registered Position Move Statement ............................................................................65
MDV Segment Move Statement .................................................................................................66
MOTION SUSPEND Suspend Statement..................................................................................... 66
MOTION RESUME Resume Statement .......................................................................................67
ON FAULT/ENDFAULT On Fault Statement ................................................................................... 68
REGISTRATION ON Registration On Statement ........................................................................... 69
RESUME Resume Statement .................................................................................................69
RETURN Return from subroutine Statement ............................................................................... 70
SEND/SENDTO Send network variable(s) value Statement ......................................................... 70
STOP MOTION [QUICK] Stop Motion Statement............................................................................. 71
VELOCITY ON/OFF Velocity Mode Statement................................................................................ 71
WAIT Wait Statement ................................................................................................................ 72
WHILE/ENDWHILE While Statement ............................................................................................72
Starts Event handler Statement ........................................................................................53
3
Indexer-Programmer-Manual.pdf REV 1.3

1. Getting Started

1.1 Introduction

Definitions
The SimpleServo Indexer (SSI) is a digital motion controller that will process commands within the
hardware and software limits dictated by user (wiring, configuration, parameters, program statements, events, etc.). The output of the system is the motion(s) created in response to the command(s) input.
The SimpleServo SimpleMotion programming language (SML) provides a very flexible development environment for creating solution to motion application. As opposed to indexers with simple command interpreting mode, language based indexer allows you to create complex and intelligent motion, flexible processing of inputs, complex logic decision making and program branching, timed events processing and number of functions mostly found in PLC controllers.
The MotionView is a universal setup and configuration program used for all SimpleServo products. It has self-configuration mechanism that adapts it to particular product automatically.
The MotionView Studio tools suite contains all the software tools needed to program and debug a SimpleServo Indexer. MotionView Studio is a part of MotionView program. It constrains a full-screen text editor, program compiler, status and monitor information and debugger (the tool allows you to step through program you are developing).
The User Program (or Indexer Program) is user-developed program describing programmatic behavior of the SSi. User Program can be stored in the text file on your PC or in SSi's memory. User Program needs to be compiled (translated) in binary form before SSi can execute it with aid of MotionView Studio tools.
Safety Warnings
Warning!
• Hazard of unexpected motor starting! When using the MotionView software, or otherwise operating the SSi drive over RS-232/485 or Ethernet, the motor may start unexpectedly, which may result in damage to equipment and/or injury to personnel. Make sure the equipment is free to operate in this manner, and that all guards and covers are in place to protect personnel.
Warning!
• Hazard of electrical shock! Circuit potentials are at 115 VAC or 230 VAC above earth ground. Avoid direct contact with the printed circuit board or with circuit elements to prevent the risk of serious injury or fatality. Disconnect incoming power and wait 60 seconds before servicing drive. Capacitors retain charge after power is removed.
4
Indexer-Programmer-Manual.pdf REV 1.3

Getting started with SSi

Before SSi can execute motion program it has to be properly installed and configured. First time users are encouraged to read through the appropriate sections in this manual and in SimpleServo User's Manual for proper hardware installation and configuration.SSi programmable features and parameters
SSi drives have a number of features and parameters which can be programmed via MotionView Software. Below is a list of programmable features and parameters specific for SSi drives in order they appear in left tree of the MotionView. Please refer to User's Manual for details on these parameters.

Motor folder

This folder contains action button to choose particular motor. The rest of the fields contain information about selected motor. See MotionView Help on detailed information how to setup motor.

Parameters

Drive mode PIVFF mode. P(roportional) I(ntgral) V(elocity F(eed) F(orward) regulator configuration. This
mode using tunable position loop. Velocity feedback is used as dumping term and adjusted automatically. Velocity feed forward gain is adjustable.
P+V mode. P(osition) +V(elocity) regulator configuration. This mode is generally slower than PIVFF and used with lower performance mechanics. Regulator consists of outer position loop followed by independent velocity loop followed by current loop. Position and velocity loop gains are in tacked in this mode.
Current Limit Sets RMS motor current limit. Settings per phase Amps RMS
Peak Current Limit Sets RMS per phase peak current limit. This current limit is allowed for 2 Seconds. After that it will be folded back to the level that is set by Current limit parameter.
Autoboot If this option is selected after Power Up SSi will start execution of the user program. Otherwise the program must be started manually via MotionView software or via Host Interface.
Warning!
• Hazard of unexpected motor starting! When using the MotionView software, or otherwise operating the SSi drive over RS-232/485 or Ethernet, the motor may start unexpectedly, which may result in damage to equipment and/or injury to personnel. Make sure the equipment is free to operate in this manner, and that all guards and covers are in place to protect personnel.
Feedback loss detection When this option is enabled SSI will detect feedback loss, then consequently disable, and generate fault.
RS485 configuration Switches between different protocols can be used over RS485 interface. In normal mode, PPP protocol (described in Host Interface manual) is used. "Modbus slave" is another alternative protocol can be used to communicate with SSI drive. Modbus primarily supported for compatibility with industry standard operator interfaces and terminals. For all other control tasks, PPP is recommended.
5
Indexer-Programmer-Manual.pdf REV 1.3
Group ID This parameter is used to combine different SSIs in functional groups. SSIs with the same group ID can be communicated simultaneously with statement SENDTO. See statements SEND and SENDTO for farther explanations.
IP Properties Displays properties and settings for Ethernet communication port.
I/O
Output 0 (1,2,3) function Every digital output except output #4 can be assigned special function Refer to Section 1.6 to see list of available functions.
Hard limit switches action. Inputs A0 and A1 serve as Hard Limit switches inputs. If <No Action> option is selected then inputs have no effect on SSi operation as can be used as general-purpose inputs. Refer to Section 1.6 for detail on each action item.

Limits

Position Limits
Position error This parameter sets maximum allowable position error before "Position Excess Error" fault will be generated. This parameter works in conjunction with "Max Error Time". Position Error is set in primary motor encoder quadrature counts.
Position error time
This parameter sets time how long position error allowed to be bigger then limit set by "Position error" parameter until "Position Excess Error" fault will be generated.

Compensation

Velocity Loop filter
These parameters have an effect on velocity regulator behavior when SSi placed in V+P mode. It has no effect in PIVFF mode
P-gain Velocity loop Proportional gain
I-gain Velocity loop Integral gain
Refer to Section 1.10 for details on SSi position and velocity regulators behavior in both P+V and PIVFF mode.
Position Loop filter
This parameters have an effect on position loop regulator and
P-gain Position loop Proportional gain
I-gain Position loop Integral gain
D-gain Position loop Derivative gain
VFF-gain Position loop velocity feed forward gain
I-limit Position loop Integral gain influence limit
Refer to Section 1.10 for details on SSi position and velocity regulators and regulation diagrams.
6
Indexer-Programmer-Manual.pdf REV 1.3
Indexer Program This will select the MotionView Studio section of the MotionView. Right panel is used to enter edit and debug User Programs. Menu and toolbar will display additional features needed for program preparation compiling debugging and loading to the SSi's memory. Motion View Studio tools and operations are described in details in Section 1.3

Security

This option will protect source code of the User Program with password. If password was set then SSi will ask for password before displaying User Program text. Password can be any alphanumeric string.

1.2 Programming flow overview

Welcome to SimpleServo SimpleMotion programming language (SML) - the quick and easy way to create powerful motion application. With SML you describe your system logistics, motion, I/O processing and user interaction programmatically i.e. creating program. The program consists from list of statements with optional parameter(s). There are different statements for motion, processing I/O, events, program flow control, and full set of arithmetic and logical operators. For more detail, refer to "Language Specification" Appendix A on the back of this manual.
In order for SSI to understand statements, they need to be compiled (translated) to the binary machine code. This happens when you done writing program and hit toolbar button "compile" in the MotionView Studio environment. After compilation (translation), the binary machine codes and program text (source code) are both loaded into the SSI memory and stored in the internal SSI's flash memory. Fig. 2.1 below summarizes program preparation process.
Fig. 2.1 Indexer program preparation flowchart
7
Indexer-Programmer-Manual.pdf REV 1.3
1.3 MotionView Studio
MotionView Studio screen layout

MotionView Studio is a powerful tool suite used to enter, compile, load and debug User Programs. MotionView studio is part of the MotionView universal program. MotionView Studio becomes available when user selects "Indexer Program" folder from MotionView's parameter tree. Motion View Studio consists of three parts: Editor, Compiler and Debugger.

When Motion View starts, it always loads current program text from SSi's memory to the editor window. This action is always performed regardless program run state.
8
Indexer-Programmer-Manual.pdf REV 1.3
MotionView Studio toolbar Icons From Left to Right:
Compile, Compile and load, Run, Reset Program, Stop and Disable, Single Step (Step Over), Single Step (Step Into), Set Breakpoint, Remove breakpoint, Display Watch Window.
To load User program from PC use <Edit> <Import program from file> menu. Executing this menu loads program from file to editor window. It doesn't load it to SSi memory yet.
To compile program and load it to SSi's memory use <Indexer> <Compile and load> menu. You can use <Indexer> <Compile> menu to compile and check syntax errors without loading program to the SSi' memory. If the compiler finds any syntax error, compilation stops and program will not be loaded to drive's memory. Errors are reported in bottom portion of the screen in message area.
To save program on PC disk use <Edit> <Export program to file >.
To execute program use <Indexer> <Run> menu.
To execute program step by step use <Indexer> <Step Over> menu. SSi will execute program one step at the time. Current program statement will be highlighted.
Breakpoint(s). It is convenient to set point in the program where you would like to stop and evaluate some results. You can do it by pointing to lines of code you would like program to stop and hit <Indexer><Set Breakpoint>. Red dot will mark the line showing that program will be stopped if it reaches this line before executing it. Executing stop doesn't disable drive and all position variables are valid.
To Stop program execution and disable drive use <Indexer><Stop>. Program will stop after completing current statement. You can resume program by hitting <Indexer><Run>.
To Reset Program execution from the beginning use <Indexer><Reset>. Program will be reset and drive will be disabled. All position variables will no longer be valid.

1.4 Programming Basics

It is usually useful to have all the moves a machine will do, along with I/O statements, etc., in a program. We will now explore how programs are written and used.
Make sure the indexing drive is connected to your computer and on-line.
Select <Indexer program> on the left tree. MotionView loads program from indexer memory automatically to the right window. Note that if there is no valid program in the indexer memory window on the right will be empty. Clear program text on in the right window if any appears then type in following program:
UNITS=1 ACCEL = 5 DECEL = 5 ENABLE MOVED 10 MOVEDISTANCE -10 END
9
Indexer-Programmer-Manual.pdf REV 1.3
After the text has been entered, select <Compile and load> from <Indexer> menu. After compilation is done, message box will be displayed suggesting that our program has errors. Click <OK> to dismiss dialog. The message window (bottom portion of your screen) will display Compiler error(s). Program line with an error is highlighted. The line "MOVEDISTANCE -10" generated syntax error because "MOVEDISTANCE" not a valid command. Change text "MOVEDISTANCE" to "MOVED" :
UNITS=1 ACCEL = 5 DECEL = 5 ENABLE MOVED 10 MOVED -10 END
Select <Compile and load> again from <Indexer> menu. There should no longer be any errors. Since program was successfully compiled, it gets loaded to the drive memory and ready to run. Run the program by selecting <RUN> from <Indexer> menu. After program finishes, drive stays enabled. Click <Indexer->Restart> to disable the drive and reset program execution from the start. Note that program doesn't run itself automatically. You have to select <Indexer->Run> to run it again.
After you are done with writing the program and drive setup you can save them by using <Node|Save configuration As.>. Indexer program is a part of drive configuration and also saved in the same file. There will be a time when you need to import (or export) program source to the other drive or perhaps you prepared program off-line and what to load it to drive later. You can use Indexer|Load from text file> menu to load program source to the drive. You also can open new configuration file by selecting <Node| New configuration file>, go to "Indexer program" folder on the left tree, and type your program in the right pane, then save configuration file to the disk and later load it to the drive memory by selecting <Node|Load configuration file to drive> menu. Remember that when you do so, drive configuration parameters will also be loaded. If you want to preserve drive configuration and load a program only, use file-importing method described above.
Units
All motion statements in the drive work with User units. Statement on first line of the test program UNITS=1, sets the relationship between User units and motor revolutions. It simply answers the question: "How many User units in one motor shaft revolution?" If this statement is omitted from the program, the motor will operate with encoder counts as User units.
Time base
Time base always in seconds i.e. all time-related values are set in USER UNITS/SEC.
Enable/Disable
After execution of the statement ENABLE, drive will be enabled. If drive was disabled before execution of that statement then the absolute position counter will be reset to zero.
Execution of the statement DISABLE will disable the drive and clear motion stack.
Attempt to produce motion when drive is disabled will generate fault.
10
Indexer-Programmer-Manual.pdf REV 1.3
Faults
When fault condition has been detected by the drive, the following events occur:
If a program is executing it is stopped. If fault handler was defined, its code starts execution. (See below for details on fault handler). If there is no fault handler - user program is terminated.
Fault code will be written in DFAULTS register and available to user's program. See list of fault codes in section 2.15
Dedicated "Ready" output will turn OFF.
Any output with assigned special function "fault" will turn ON
Any output with assigned special function "ready/enabled" will turn OFF
LED's located on drive's front panel:
Ready will turn OFF
Status will BLINK OUT fault code or stay ON depending on fault type (See
hardwar a ction "Faults" for details on fault LED).
Overcurrent will turn ON if fault was "Overcurrent"
e m nual se
Overvoltage will turn ON if fault was "Overvoltage"
Clearing Fa ays:
Note:
You cannot
You must leave error handler code by executing first "Reset" or "Resume <lab
Certain statements are not allowed for use in fault handler. See section 2.1 for additional details Language Reference section for statement ON FAULT/ENDFAULT.
ult condition can be done one of the following w
If user program has Fault Handler section execute RESUM
example below).
estart> if in MotionView Studio or
Press <Indexer->R
ost Interface or
Send "Reset" command (command ID= 78) over the H
Cycle power (hard reset).
execute "ENABLE" command while executing error handler code
E statement at the end (see code
el>" statements.
and
11
Indexer-Programmer-Manual.pdf REV 1.3
Here is an example:
; ;This program handles faults correctly ; UNITS=1 . . . {Some initialization code} .
PROGRAM_START: ENABLE
MOVED 10 MOVED -10 . . {Program statements} .
END ;----------------------------------------------------------------------------
---------­;Fault Handler. If any fault occurs following program will run: ;----------------------------------------------------------------------------
-- ------­ON FAULT ;statement starts fault handler
. ;Fault handler program. Motion stopped, Drive disabled, events not scanned ;while executing fault handler statements ; ;Do whatever necessary in your system ;after fault is detected. Turn ON/OFF some outputs …etc. . . {Statements} .
RESUME PROGRAM_START ;program restarts from label PROGRAM_START ; RESET ;you can use this statement instead. ;to start program from the beginning
ENDFAULT ;fault handler MUST end with this statement
12
Indexer-Programmer-Manual.pdf REV 1.3

1.5 Using advanced debugging features

Click on <Indexer><Reset> menu to restart program from the beginning.
To execute program statements one at the time use or toolbar buttons or menu: <Indexer> <Step in> (or <Step over>).
If you need to execute program up to certain statement and then stop to for example evaluate variable or check program branching you can set breakpoints.
To set/reset breakpoint click program line you want program to stop at and click toolbar button or use menu <Indexer><Toggle breakpoint>.
To view system and user variables values use menu <Indexer><Show Variables>. Select variables you want to see and click on <R> (Refresh) button to refresh variables values. Note that variables values are refreshed manually when you click on <R> button in the lower right corner or automatically when program stops when single step completed or breakpoint is encountered.
13
Indexer-Programmer-Manual.pdf REV 1.3

1.6 Inputs and Outputs

Analog Input and Output
SSi has one analog input and one analog output directly accessible from User Program or via Host Interface. Analog input value contained in AIN System Variable. Value returned in AIN lays in range -10 to +10 representing voltage on analog input from -10V to +10V. Analog output can be written by writing to System Variable AOUT. Valid range for AOUT is -10 to +10 resulting in output voltage -10V to +10V output.
Digital Inputs numbering
SSi has 12 inputs for customer connection. Inputs are separated into three groups: A, B and C. Inputs within the group share common terminal. Inputs are named by group name: A1-A4, B1-B4, and C1-C4. In addition to group name, every input has its bit number range from 0 to 11in INPUTS System variable. Each input allocates 1 bit in INPUTS variable. See table below:
Input Name System Variable INPUTS bit #
A1 0
A2 1
A3 2
A4 3
B1 4
B2 5
B3 6
B4 7
C1 8
C2 9
C3 10
C4 11
14
Indexer-Programmer-Manual.pdf REV 1.3
Some inputs could have additional special functionality like Travel Limit, Registration etc. Special functions (if appropriate) are selected in MotionView program for execution by Host Interface command(s). Input functionality is summarized in the table below. Input current states are available for programmer through dedicated System Flags or as bits of System Variable INPUTS. Table below summarizes inputs:
Function Special function
Input A1 Left limit switch
Input A2 Right limit switch
Input 2 A3
Input 3 A4
Common for A section
Input 4 B1
Input 5 B2
Input 6 B3
Input 7 B4
Common for B section
Input 8 C1 Master encoder input “A”
Input 9 C2 Master Encoder input “B”
Input 10 C3 Registration sensor input
Input 11 C4
Common for C section
15
Indexer-Programmer-Manual.pdf REV 1.3
Read Digital Inputs
We will now modify our test program to look for the input to go on before doing the first move, and wait for the input to go off before doing second move. Modified program look like this:
;This program looks for the input goes on before making first move ;and looks for the input goes off before making second move
DEFINE INPUT_ON 1 DEFINE INPUT_OFF 0 UNITS=1 ENABLE WAIT UNTIL IN_A1==INPUT_ON ;waits until IN_A1 is ON ;WAIT UNTIL IN_A1 ;you can use this is shorter form ;too MOVED 10 WAIT UNTIL IN_A1==INPUT_OFF ;waits until IN_A1 is OFF ;WAIT UNTIL !IN_A1 ;you can use this is shorter form ;too MOVED -10 END
NOTE: Newly added statements are in blue.
Using inputs to generate predefined indexes
Sometimes it is convenient to use inputs to perform predefined moves (indexes).
To simplify task of inputs processing for such purposes SSi provides special system variable INDEX and keyword ASSIGN. Keyword ASSIGN causes specific input act as particular bit of system variable INDEX . After such assignments changes of input state will cause changes of the particular bit variable INDEX input is assign to. Variable INDEX could be used then conveniently to select predefined move.
…{statements} …
ASSIGN 0 AS BIT 7 ;input A1 ASSIGN 1 AS BIT 5 ;input A2 ASSIGN 5 AS BIT 4 ;input A4
…{statements} …
Variable INDEX structure after execution of the ASSIGN statements will look like this:
Note that every input can be assigned as any bit position within INDEX variable' lower 8 bits. Bits 8-31 are not used and always set to 0. Not assign bits in INDEX variable are set to 0s.
A1
16
0
A2 A4
0 0 0 0BITS 8-31 (not used)
Indexer-Programmer-Manual.pdf REV 1.3
Limit switches input functions
Inputs A1 and A2 have secondary functions as Hard Limit Switch Negative and Hard Limit Switch Positive respectively. From MotionVew's I/O folder you can select what type of action to perform when one of the inputs is activated. Refer to the table below for list of possible actions.
Action Description
Not Assigned No action. Input functioning as regular input
Fault Input activation cause disable and fault
Stop and Fault Input activation causes deceleration with rate set by
System Variable QDECEL and then disable and fault
Digital Outputs Control
There are total of 5 outputs. 4 are general purpose programmable and 1 dedicated.
Dedicated output turns ON when system status is READY and cannot be controlled from the program. The rest of 4 outputs could be assigned special function through MotionView or executing Host Interface commands. You can turn ON (set) or turn OFF (clear) particular output by writing to corresponding System Flag or setting particular bit(s) in System Variable OUTPUT. Output can be control by program if it is not assigned to one of the special functions. In this case, output is controlled internally and changing its value from within program (or via Host Interface) has no effect on output. Table below summarizes outputs functions and corresponding flags in DSTATUS System Variables. To set output write to its flag any non 0 value (TRUE). To clear output write to its flag 0 (FALSE). You also can use flags in expression. If expression evaluates to TRUE then output will be turned ON. It will be turned OFF otherwise.
Example:
;Following code sets and clears some outputs ; OUT1 =1 ;turn OUT1 ON OUT2=10 ;any value but 0 turns output ON OUT3=0 ;turn OUT3 OFF OUT2 = APOS>3 && APOS<10 ;ON when position within window ;OFF otherwise
Function Related Flag # from DSTATUS System Variable Motion Complete 25 In Position Window 5 Fault 3 In Motion Inverse of flag 25 Ready 0
17
Indexer-Programmer-Manual.pdf REV 1.3

1.7 Events

Scanned Events
A Scanned Event is a small program that runs independently of the main program. To establish Scanned Event we need to specify condition to scan in event header and write statements to perform when condition is true. Finally we need to turn Event On by executing Event <eventname> ON statement. To learn more about Scanned Events refer to the Section 2.12. We will use Scanned Events to implement a programmable limit switch. A programmable limit switch is a mechanism that can be programmed to turn on at specific position. We will set up a Scanned Event to check if the current position (system variable APOS) is greater than or equal to a given value (3) and less than or equal to another given value (6). If it is, Output 0 is turned ON. Otherwise it is OFF.
UNITS =1 ; ; EVENT InLimits 1==1 ; always true so event scanned every ;256uS ; OUT1= APOS>=3 && APOS<=6 ; ENDEVENT ; ENABLE ;APOS and TPOS are initialized to 0 EVENT InLimits ON ;turns Event InLimits ON ;Make some moves so we can go in and out ;of the specified limits of MAXV=200 ;200 Rpm ACCEL=10 ;10 Rps*s DECEL=10 ;same as ACCEL
ProgramStart: MOVE 10 ;move to 10 revs position MOVE 0 ;move back to 0 GOTO ProgramStart ;loop it forever END
When this program run motor will move 10 revs CW and than move back to initial position. Output 0 will be ON during motor shaft position within the window 3 to 6 revs inclusively and low all the other times. There are certain restrictions when writing code for event handlers. Refer to section 2.1 for additional information on scanned events.
18
Indexer-Programmer-Manual.pdf REV 1.3

1.8 Variables and Define statement

In the previous program for programmable limit switch we used hard coded numbers 3 and 6 :
EVENT InLimits ALWAYS ;scanned every 256uS ; OUT1=APOS>=3 && APOS<=6 ;Hard Coded Limit values ENDEVENT
Using hard coded numbers is fine as long as these numbers are known at the moment when you preparing program. (Or we call it "at compile time").But what if limits has to be calculated based on some parameters unknown before program run? (i.e. home origin, material width etc.). Then you can use User Variables instead of hard coded values. SSi has 32 User Variables available for calculation and storage of intermediate data. Let's use variable V1 and V2 to hold the values of lower and upper travel limits:
;Modified program:
EVENT InLimits ALWAYS ;scanned every 256uS ; OUT1= APOS>=V1 && APOS<=V2 ;Variables hold Limit values ENDEVENT
It might be difficult to remember that V1 is the lower and V2 is upper travel limit later on. The DEFINE statement lets a programmer define a meanful name to a variable. The program looks like this:
DEFINE LowerLimit V1 ;name alias for V1 DEFINE UpperLimit V2 'name alias for V2 Define ALWAYS 1 EVENT InLimits ALWAYS ;scanned every 256uS ; OUT0=APOS >= LowerLimit && APOS <= UpperLimit ;Variables V1 V2 ;named by DEFINE statement ENDEVENT
19
Indexer-Programmer-Manual.pdf REV 1.3

1.9 IF/ELSE statements

IF/ELSE statement allows you to execute one or more statements conditionally. You can use IF or IF/ELSE construct:
Single IF example:
;Implementing counter modulo reset:
Again: V1=V1+1 IF V1>10 V1=0 ENDIF GOTO Again END
IF/ELSE example:
;Assign value to variable conditionally IF V1>3 V2=1 ELSE V2=0 ENDIF
IF or IF/ELSE construct must end with ENDIF keyword
20
Indexer-Programmer-Manual.pdf REV 1.3

1.10 Motion

SSi position and velocity regulator's diagram
Kff term
Position Feedback
Biquad
convergence
filter
Biquad
covergence
filter
PIVFF Mode
P+V Mode
Velocity
estimator
To Torque amplifier
Primary Encoder
Position
Command
Velocity Command
P term
I term
P term
I term
I term Limit and
unti wind-up
Mechanical Velocity feedback
I term Limit and
unti wind-up
P+V Mode
PIVFF Mode
Scale factor
Current
limiter
Current
limiter
"Position Command" in regulator's diagram is produced by trajectory generator. Trajectory generator processes generated motion commands, produced by User's program motion statements, in order to calculate position increment or decrement or also called "index" value for every servo loop. This way target (or theoretical) position supplied to regulator input. The main job of the regulator is to control motor shaft torque and velocity such way that actual position of the motor shaft, measured by processing motor's encoder position feedback, matches target position as closed as possible. Of course there is always will be the error in position following. Such error called "Position Error" and is expressed as:
Position Error = Target Position - Actual Position
When Position Error exceeds certain threshold value "Position Error Excess" fault #7 will be generated. You can set allowable Position Error limit and Position Error Time (how long is a delay before fault generated). These parameters can be set only using MotionView software.
Motion Modes
There is three modes SSi can operate in: Indexing (profiling) mode, Velocity mode and Gear mode. Indexing is a default mode. All user program generated moves are executed in this mode. Velocity and Gearing mode are covered in details in section 2.13.
21
Indexer-Programmer-Manual.pdf REV 1.3
Point To Point Moves
SSi supports two types of moves: absolute and incremental. The statement MOVEP (Move to Position) is used to make absolute move. The statement MOVED (Move Distance) makes incremental (or relative ) move from current position.
MOVEP and MOVED statements generate what is called a trapezoidal point to point motion profile: the motor accelerate using the current acceleration setting to a default top speed and then decelerate at the right time to arrive at desired position. If the distance to be moved is fairly small, a triangular move profile will be used: the motor will accelerate for the half the move and decelerate for the other half of the move, but never reach the top speed.
Segment moves
MOVED and MOVEP commands are simple and useful, but if the required move profile is more complex then a simple trapezoid, MDV (segment) moves can be used.
The profile shown below can be broken up to 8 MDV moves. The first segment would define the distance between point 1 and point 2 and the velocity at point 2. So, if the distance between point 1 and 2 was 3 units and the velocity at point 2 was 56 RPM, the command would be: MDV 3 , 56. The second segment would give the distance between point 2 and 3 and the velocity at point 3, and so on. Any profile can be programmed using MDV moves.
22
Loading...
+ 50 hidden pages