스탭 모터 제어

CUBLOC2는 스탭모터 제어를 위한 고성능 백그라운드 스탭 명령을 제공합니다. 본 시스템은 2축 을 지원하며, 각 축의 출력포트는 아래와 같이 고정되어 있습니다.

axis Pulse 핀 Direction 핀
0 10 11
1 12 13

지원 명령:

  • 정속 제어 Steppulse
  • 가감속 제어 Stepaccel

본 명령 실행 시 해당 핀은 BASIC으로 소유권이 넘어옵니다. Freepin을 사용하여 포트 소유권을 설정할 필요는 없습니다.

Steppulse와 Stepaccel은 현재 위치를 기준으로 지정한 펄스 수만큼 이동하는 상대 이동 명령입니다. 절대 위치 이동 및 원점 복귀 기능은 제공하지 않습니다.


Steppulse

Steppulse axis, pulseCount, targetSpeed

파라미터 설명
axis 축 번호 (0, 1)
pulseCount 이동할 총 펄스 수 (음수 입력 시 반대 방향 이동)
targetSpeed 목표 속도 (Hz, pulses per second), 100Hz ~ 200KHz

지정한 축에 대해 스텝 모터를 정속 제어로 구동합니다. (가감속 없음)


Stepaccel

Stepaccel axis, pulseCount, targetSpeed
Stepaccel axis, pulseCount, targetSpeed, accTime, decTime

파라미터 설명
axis 축 번호 (0, 1)
pulseCount 이동할 총 펄스 수 (음수 입력 시 반대 방향 이동)
targetSpeed 목표 속도 (Hz, pulses per second), 100Hz ~ 200KHz
accTime (생략 가능) 가속 시간 (ms 단위)
decTime (생략 가능) 감속 시간 (ms 단위)

지정한 축에 대해 스텝 모터를 가감속 제어로 구동합니다.

동작 방식

accTime과 decTime을 지정하지 않은 경우, 전체 이동 구간을 다음과 같이 분할하여 동작합니다.

  • 가속 구간: 전체 펄스의 20%
  • 정속 구간: 전체 펄스의 60%
  • 감속 구간: 전체 펄스의 20%

속도는 다음 규칙으로 자동 설정됩니다.

  • 시작 속도 = 목표 속도의 10% (최소 50Hz)
  • 종료 속도 = 시작 속도와 동일
  • 최고 속도 = targetSpeed

accTime과 decTime을 지정한 경우, 해당 시간(ms)을 기준으로 가속 및 감속이 수행됩니다.

  • accTime: 시작 속도에서 목표 속도까지 도달하는 시간
  • decTime: 목표 속도에서 종료 속도까지 감소하는 시간

예제

Stepaccel 0, 10000, 1000
Stepaccel 1, -5000, 2000

Stepaccel 0, 10000, 5000, 100, 100   ' 가속 100ms, 감속 100ms

특징

  • 축 번호만으로 자동 핀 매핑
  • 가감속 자동 적용
  • pulseCount의 부호로 방향 제어
  • 시간 기반(accTime, decTime) 가속 제어 지원
  • 간단한 명령으로 모션 제어 가능

Axisbusy

result = Axisbusy(axis)

파라미터 설명
result 축 동작 상태 (1=동작중, 0=정지)
axis 축 번호 (0 또는 1)

지정한 축이 현재 동작 중인지 확인합니다. 동작 중에는 1, 완료 시 0을 반환합니다.

예제

Stepaccel 0, 10000, 1000

Do
  If Axisbusy(0) = 0 Then Exit Do
Loop

주의사항

  • Busy 상태에서 동일 축에 다시 명령을 실행하면 무시되거나 오류가 발생할 수 있습니다.

Axisstop

Axisstop axis

파라미터 설명
axis 축 번호 (0 또는 1)

지정한 축의 동작을 즉시 정지합니다.

동작 설명

  • 현재 진행 중인 모션을 즉시 중단합니다.
  • 펄스 출력이 중지되며, 축은 현재 위치에서 정지합니다.
  • 정지 후 Axisbusy는 0을 반환합니다.

예제

Stepaccel 0, 10000, 1000

If In(0) = 1 Then
  Axisstop 0
EndIf

주의사항

  • 감속 없이 즉시 정지하므로 기계적 충격이 발생할 수 있습니다.
  • 재동작 시에는 새로운 명령을 사용해야 합니다.

Axisdec

Axisdec axis, decTime Axisdec axis

파라미터 설명
axis 축 번호 (0 또는 1)
decTime (생략 가능) 감속 시간 (ms 단위)

지정한 축의 동작을 감속하여 정지합니다. 갑자기 모터를 정지시킬 수 없는 경우에 사용하세요.

동작 설명

  • 현재 속도에서 0까지 지정한 시간 동안 감속 후 정지합니다.
  • 감속 중에도 펄스 출력은 계속되며, 속도가 점차 감소합니다.

decTime을 생략한 경우:

  • Stepaccel 동작 중이면 해당 명령의 감속 조건을 사용합니다.
  • Steppulse 동작 중이면 내부 기본 감속 시간(약 100ms)을 사용합니다.

예제

Stepaccel 0, 10000, 5000

Wait 1000

Axisdec 0           ' 현재 감속 조건으로 정지
Stepaccel 0, 10000, 5000

Wait 1000

Axisdec 0, 200      ' 200ms 동안 감속 후 정지

특징

  • 부드러운 정지 동작 제공
  • 기계적 충격 최소화
  • 현재 모션 상태를 유지한 채 자연스럽게 정지

주의사항

  • 너무 짧은 decTime 설정 시 급정지에 가까운 동작이 될 수 있습니다.
  • 감속 중에는 새로운 모션 명령 실행이 제한될 수 있습니다.

예제 프로그램

Dim prevIn4 As Byte
Dim curIn4 As Byte

prevIn4 = In(4)

Do
    curIn4 = In(4)

    If curIn4 = 1 And prevIn4 = 0 Then ' 4번 포트에 High를 주면 Stepaccel 출력 시작됩니다.
        Stepaccel 0, -5000,6000
    End If

    prevIn4 = curIn4
Loop

LD와의 연동

스탭모터 제어 명령은 BASIC 전용 명령입니다. LD에서는 직접 실행할 수 없으며, 필요한 경우 M 릴레이를 이용하여 BASIC 프로그램과 연동할 수 있습니다.

예를 들어 LD에서 M0을 ON하면 BASIC에서 이를 감지하여 Stepaccel을 실행하는 방식으로 사용할 수 있습니다.

← CUBLOC2 목차로 돌아가기