goto로 제어하기


스텝모터를 모터의 현재 위치가 아닌 초기 위치를 기준으로 제어하고자 할 때 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명령이 실행되면 그 즉시 해당 명령을 수행합니다.