Project

General

Profile

/*
Cyclic movement script.

Does cyclic movement between two border points with set values of acceleration, deceleration and top speed.
*/

var axes = [];
var number_of_axes = 0;
var last_serial = 0;
while (serial = get_next_serial(last_serial)) // get next serial number and repeat for each axes. {
axes[number_of_axes] = newaxis(serial);
log("Found axis " + number_of_axes + " with serial number " + serial);
number_of_axes++;
last_serial = serial;
}

for (var i = 0; i < number_of_axes; i++) {
axis_configure(axes[i]);
}

while (1) { // infinite loop
for (var i = 0; i < number_of_axes; i++) {
go_first_border(axes[i]);
go_second_border(axes[i]);
}
}

function axis_configure(axis) {
var speed = 300; // maximum movement speed in steps / second
var accel = 100; // acceleration value in steps / second^2
var decel = 100; // deceleration value in steps / second^2

axis.command_stop(); // send STOP command (does immediate stop)
axis.command_zero(); // send ZERO command (sets current position and encoder value to zero)
var m = axis.get_move_settings(); // read movement settings from the controller
m.Speed = speed; // set movement speed
m.Accel = accel; // set acceleration
m.Decel = decel; // set deceleration
axis.set_move_settings(m); // write movement settings into the controller
}

function go_first_border(axis) {
var first_border = -1000; // first border coordinate in steps

axis.command_move(first_border); // move towards one border
axis.wait_for_stop(100); // wait until controller stops moving
}

function go_second_border(axis) {
var second_border = 1000; // second border coordinate in steps

axis.command_move(second_border); // move towards another border
axis.wait_for_stop(100); // wait until controller stops moving
}