스텝모터를 모터의 현재 위치를 기준으로 제어하고자 할 때 move를 사용합니다.
이 방식은 모터가 정지상태일 때만 사용이 가능합니다.
"move [sign](step) [speed] [accel] [decel]"
※ 주의: [sign]과 (pos) 사이에는 빈 공간(space)이 없습니다.
각 인수에 대한 설명은 다음과 같습니다.
인수 | 설명 | 필수/옵션 |
---|---|---|
sign | 회전 방향, "+"(정 회전) 또는 "-"(역 회전) | 옵션(생략시 "+") |
step | 구동 시킬 스텝 수 | 필수 |
speed | 회전 속도(단위: pps) | 옵션 |
accel | 가속도(단위: pps/s) | 옵션 |
decel | 감속도(단위: pps/s) | 옵션 |
구동 시킬 스텝 수(step)는 모터의 현재 위치가 기준이 됩니다.
이 명령에서 가속도(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, "move 800 400 800 0");
while((int)spc_request_dev($sid, "get state"))
usleep(1);
sleep(1);
spc_request_dev($sid, "move -800 400 0 800");
while((int)spc_request_dev($sid, "get state"))
usleep(1);
?>
※ 이 명령어는 스텝모터가 정지상태일 때만 사용이 가능합니다. 따라서 위 예제에서처럼 항상 모터가 정지된 이후에 move명령이 실행되도록 프로그래밍 하시기 바랍니다.