SPiiPlus Training Class ACSPL+ Overview
What is ACSPL+? ACS Motion Control’s programming language, 2nd generation (+) High level real-time scripting language built for motion control But powerful enough for general computing! Large command set includes both simple procedures and powerful motion operations Supported in all SPiiPlus products
What Can ACSPL+ Do For You? With ACSPL+ you can write a complicated motion algorithm in a few lines of code 2D raster scan Electronic camming Gantry control Robot kinematics High speed camera triggering High speed position capture
What Can ACSPL+ Do For You? That’s not all - with ACSPL+ you can handle general automation and signal processing. PLC operations High speed data collection I/O debouncing Real-time program scheduling State machines Data processing
How Does ACSPL+ Compare to C/C++? C/C++ is a powerful general purpose computing language With C/C++ you can do just about anything The problem: you have to either find the libraries or explicitly code everything! With ACSPL+ all the commands are at your fingertips! No libraries to include / link Simple compiling on the controller No Main function!
How Does ACSPL+ Compare to C/C++? Example: Enable a motor and move it a distance of 5000 units. C / C++: #include "MotionLibrary.h" int main(int argc, char** argv) { EnableMotor(0); PointToPoint(0, 5000); return 0; } ACSPL+: ENABLE 0 PTP 0, 5000 STOP
How Does ACSPL+ Compare to Other Motion Control Languages? ACSPL+ uses commands with basic English syntax Easy to understand by reading the code ACSPL+ is powerful scripting language Built-in features make logic control simple ACSPL+ provides many of the basic features that programmers expect Standard math order of operations and operators Standard logical operators
How Does ACSPL+ Compare to Other Motion Control Languages? Example: Enable a motor and move it a distance of 5000 units. ACSPL+: ENABLE 0 PTP 0, 5000 STOP Galil Language: SHA PA 5000 BG EN Parker AcroBASIC: DRIVE ON X MOV X5000 END
How Does ACSPL+ Compare to IEC-61131-3 Languages? IEC-61131-3 defines 5 global languages used by PLCs Global standard for PLCs Very useful for logic control Very difficult for multi-axis motion Uses PLCopen function blocks for motion ACSPL+ is powerful scripting language Meant for multi-axis motion Can interact with IEC-61131 languages via SPiiPlus soft PLC
How Do ACSPL+ Programs Run? Sequential Language Programs start at designated line or label Executes one line of buffer code after another at controller cycle rate (CTIME) Can execute more than 1 command per line Can execute more than 1 line per controller cycle
How Do ACSPL+ Programs Run? Starting by line number: START 0, 1 START 0, 4 START 0, 9 START 0, 14 Starting by label: START 0, START_POINT_1 START 0, START_POINT_2 START 0, JUMP_POINT
ACSPL+ General Features Structured programming constructs (flow control statements) IF statements, WHILE loops, subroutine CALL Support for standard arithmetic operators + - * / Support for standard logical operators >, <, =, <> (not equal), ^ (logical not), ~ (inversion)
ACSPL+ General Features
ACSPL+ General Features Multiple commands per program line Semicolon (;) separated Program comments Start with exclamation mark (!) Firmware and user-defined variables 32-bit integers 64-bit floating point Scalar, 1-D arrays, or 2-D arrays (zero indexing) Global or local in scope
ACSPL+ General Features
ACSPL+ General Features Standard math library Trigonometric functions Exponential and logarithmic functions Power / square root Basic array processing Average, min, max functions Basic signal processing Dead-zone, edge detection, lag functions Interpolation (linear, spline)
ACSPL+ General Features
ACSPL+ General Features Robust motion programming support Enable / Disable motors 3rd order (S-curve) motion generation User-defined motion parameter units On-the-fly motion parameter updates Software position limits Motion tracking PT and PVT path motion Error-mapping Forward and inverse kinematics
ACSPL+ General Features
ACSPL+ General Features Up to 64 independent program buffers Separate storage for each buffer Separate memory space for local variable declaration Isolated environment for program editing / execution Separate thread for concurrent execution Independent autoroutine (interrupt) execution
ACSPL+ General Features Program buffer synchronization Mutual exclusion via global variables WAIT and TILL commands Real-time program scheduling Guaranteed response time Guaranteed execution time
ACSPL+ General Features
ACSPL+ General Features Built-in safety control Firmware defined fault handling routines Support for user-defined fault handling routines Simplified EtherCAT interface Map EtherCAT PDOs to ACSPL+ variables CoE read/write functions for Object Dictionary access
ACSPL+ General Features Low level socket communications interface Support for Ethernet and serial communications Byte-level data manipulation ASCII command support High level host communication interface Client-server model (host is client) Support for asynchronous controller interrupts C and COM library for multiple language support (C, C++, .NET, LabView) Can do just about anything that can be done in ACSPL+