스텝모터를 모터의 현재 위치가 아닌 초기 위치를 기준으로 제어하고자 할 때 goto를 사용합니다.
이 방식은 모터가 동작 중인 상태에서도 사용이 가능합니다.
"goto [sign](pos) [speed] [accel] [decel]"
※ 주의: [sign]과 (pos) 사이에는 빈 공간(space)이 없습니다.
각 인수에 대한 설명은 다음과 같습니다.
인수 | 설명 | 필수/옵션 |
---|---|---|
sign | 회전 방향, "+"(정 회전) 또는 "-"(역 회전) | 옵션(생략시 "+") |
pos | 목표 카운터 위치 | 필수 |
speed | 회전 속도(단위: pps) | 옵션 |
accel | 가속도(단위: pps/s) | 옵션 |
decel | 감속도(단위: pps/s) | 옵션 |
목표 카운터의 위치(pos)는 카운터의 현재위치가 아닌 초기 위치가 기준이 됩니다.
이 명령에서 가속도(accel)만 입력하고 감속도(decel)를 입력하지 않으면 가속도에 입력한 값이 감속도에 자동으로 설정됩니다.
<?php
include_once "/lib/sd_spc.php";
spc_reset();
spc_sync_baud(460800);
$sid = 1;
spc_request_dev($sid, "set mode 4");
spc_request_dev($sid, "set vref stop 2");
spc_request_dev($sid, "set vref drive 8");
spc_request_dev($sid, "set rsnc 120 250");
spc_request_dev($sid, "set pos -400");
spc_request_dev($sid, "goto +400 200 0");
sleep(1);
spc_request_dev($sid, "goto -400 200 0");
sleep(1);
spc_request_dev($sid, "goto +400 200 0");
while((int)spc_request_dev($sid, "get state"))
usleep(1);
?>
※ 이 명령어는 스텝모터가 동작중일 때에도 사용이 가능합니다. 따라서 모터가 구동 중일 때 새로운 goto명령이 실행되면 그 즉시 해당 명령을 수행합니다.