goto ~ sw명령을 이용하면 리미트스위치가 닫혔을 때 자동으로 스텝모터의 동작을 정지시킬 수 있습니다. 이 명령을 통해 모터가 정지되면 모터의 상태 값은 정지상태가 됩니다.
"goto [dir]sw(id) [speed] [accel] [decel]"
※ 주의: [dir]과 sw(id) 사이에는 빈 공간(space)이 없습니다.
파라미터 | 설명 | 필수/옵션 |
---|---|---|
dir | 회전 방향, "+"(정 회전) 또는 "-"(역 회전) | 옵션(생략시 "+") |
id | 디지털 입력포트 아이디, 0/1/2/3 | 필수 |
speed | 회전 속도(단위: pps) | 옵션 |
accel | 가속도(단위: pps/s) | 옵션 |
decel | 감속도(단위: pps/s) | 옵션 |
<?php
include_once "/lib/sd_spc.php";
spc_reset();
spc_sync_baud(460800);
$sid = 1;
spc_request_dev($sid, "set vref stop 2");
spc_request_dev($sid, "set vref drive 8");
spc_request_dev($sid, "set mode full");
// rotate until digital input 0 is LOW
echo "find positive limit ...";
spc_request_dev($sid, "goto +sw0 400 0");
while((int)spc_request_dev($sid, "get state"))
usleep(1);
echo "done\r\n";
sleep(1);
// rotate until digital input 1 is LOW
echo "find negative limit ...";
spc_request_dev($sid, "goto -sw1 400 0");
while((int)spc_request_dev($sid, "get state"))
usleep(1);
echo "done\r\n";
?>
find positive limit ...done
find negative limit ...done