일기회전만 하면 ηST 언어로 모터를 회전할 수 있습니다.
현장 버스의 이더넷 표준에 따라 수밀리초 간격으로 MAIN을 실행합니다.이 시스템의 주기는 2ms다.나는 전원 연결과 위치 읽기에 아무런 문제가 없을 것이라고 생각한다.
절대 위치 설정에서는 속도와 가속도만 수행하므로 지정된 위치의 Position을 추가로 지정합니다.이 값은 Din0 및 Din1 스위치의 입력 및 결과를 나타내는 Dout0 LED와 함께 지정됩니다.
디지털 입력 부분의 프로그램
IF NOT Din0 THEN
리턴을 삽입하면 자동 선언 화면이 나온다.유형은 BOOL이고 초기 값은 음논리이므로 1을 입력합니다.계속
Position_Move.Position := 2;
Position_Move.Execute := TRUE;
Dout0 := 1;
Dout0에 입력하면 Dout0의 자동 선언이 발송됩니다.유형은 BOOL이고 초기값은 0입니다.ELSIF Din1 THEN
Din1의 자동 선언이 표시됩니다.유형은 BOOL이고 초기값은 0입니다.나머지는 다 넣어.
// Position_Move.Execute := FALSE;
Position_Move.Position := -2;
Position_Move.Execute := TRUE;
Dout0 := 1;
ELSE
Dout0 := 0;
Position_Move.Execute := FALSE;
추가된 부분.이것들을 추가함으로써 제1부분 성명에 세 줄을 추가하였다.
아래와 같이 하드웨어와의 링크를 구축하기 위해 수정해야 한다.
Din1 AT %I*: BOOL := 1;
Din0 AT %I*: BOOL := 0;
Dout0 AT %Q*: BOOL := 0;
모두 저장하고 구성합니다.스케이트장을 설치하다
입력한 Channel 1 을 마우스 오른쪽 버튼으로 클릭하고 링크 수정 을 선택합니다.
첨부 화면이 나타나므로 MAIN에서 Din1 변수를 선택합니다.
입력한 Channel 2를 마우스 오른쪽 버튼으로 클릭하고 Din 0 변수를 선택합니다.
디지털 출력의 Channel 1을 마우스 오른쪽 버튼으로 클릭하고 Dout0 변수를 선택합니다.
일단 구축되면 첨부 파일이 표시됩니다.
모두 저장합니다.
메뉴의 구축부터 untiled1의 청결, untiled1의 재건, 해결 방안의 청결, 해결 방안의 재건을 진행한다.구성 유효성을 클릭하고 AX1을 두 번 클릭합니다.
중간에 MAIN과 TwincAT3 ProjectXX의 라벨이 있을 수 있습니다.MAIN 레이블을 마우스 오른쪽 버튼으로 클릭하고 새 수직 레이블 그룹을 클릭하면 MAIN 소스와 AX1 기능 페이지가 나타나고 온라인 을 클릭합니다.
중간에 프로그램 원본을 동시에 표시하고 오른쪽에 모터의 조작 화면을 동시에 표시한다.디버깅할 때 매우 편리한 상태입니다.구성의 유효성 버튼을 누르면 작업 화면이 사라질 수 있습니다. 이 때 같은 조작을 해서 화면을 다시 보여 주십시오.
이 때 4650개의 오류가 발생할 수 있습니다.Drive hardware not ready to operate;예.
: 드라이브 오류 상태(하드웨어 오류)
- 드라이브가 시작 단계입니다(예: 하드웨어 오류로 발생한 축 재설정 후).
- 컨트롤러 드라이브 활성화(ENABLE)
사용할 수 없습니다.
네.
전원이 없을 때의 오류는 4466 Invalid IO 데이터 for more than subsequent NC cycles입니다.
축 (인코더) 이 검출된 후 주기 (작업) 이상의 잘못된 인코더 데이터 (예:).일반적으로 이더넷 구성원에 대해 장치와 컨트롤러 사이의 데이터 전송이 방해되는 동작 카운터 오류(WcState)와 관련이 있다.nNCNCSAFIOn=3IO
만약 이 오류가 오랫동안 계속 설정되어 있다면, 이 경우 축 인용을 잃을 수 있습니다. ("homed"로고가 리셋되고 인코더가 "인용되지 않음"상태입니다.)
이 오류의 원인으로 지목된 이유는Ether CAT가 장치에서 상태를 벗어나 실시간으로 너무 높게 사용하거나 실시간으로 너무 많이 떨리는 경우입니다.
최종 절차
PROGRAM MAIN
VAR
Power_On: MC_Power;
AX1: AXIS_REF;
Position_Move: MC_MoveAbsolute;
Read_Position: MC_ReadActualPosition;
Sposition: STRING;
Din1 AT %I*: BOOL := 1; // jiki
Din0 AT %I*: BOOL := 0; // hikari
Dout0 AT %Q*: BOOL := 0; // LED
END_VAR
Power_On(
Axis:= AX1,
Enable:= TRUE,
Enable_Positive:= TRUE,
Enable_Negative:= TRUE,
Override:= 99,
BufferMode:= ,
Options:= ,
Status=> ,
Busy=> ,
Active=> ,
Error=> ,
ErrorID=> );
Position_Move(
Axis:= AX1,
Execute:= ,
Position:= ,
Velocity:= 25,
Acceleration:= 20,
Deceleration:= ,
Jerk:= ,
BufferMode:= ,
Options:= ,
Done=> ,
Busy=> ,
Active=> ,
CommandAborted=> ,
Error=> ,
ErrorID=> );
Read_Position(
Axis:= AX1,
Enable:= TRUE,
Valid=> ,
Busy=> ,
Error=> ,
ErrorID=> ,
Position=> );
Sposition := LREAL_TO_STRING(Read_Position.Position);
// hikari
IF Din0 THEN
Position_Move.Position := 2;
Position_Move.Execute := TRUE;
Dout0 := 1;
// jiki
ELSIF NOT Din1 THEN
Position_Move.Position := -2;
Position_Move.Execute := TRUE;
Dout0 := 1;
ELSE
Dout0 := 0;
Position_Move.Execute := FALSE;
END_IF
구성 유효성을 클릭하면 4650 오류가 발생할 수 있습니다.빌드에서 클린업, 재구성 및 구성의 유효성을 수행하거나 TwinCAT3을 모두 저장, 종료, 다시 시작하면 오류가 발생하지 않을 수 있습니다.이 방면에서 다른 회사의 모터 컨트롤러를 사용하는 것도 영향을 미칠 수 있다.동작이 잘 될 때 설정한 내용이다.온라인 화면에서 위치(큰 글자로 표시)가 0 근처에서 크게 벗어나면 오류가 발생하기 쉽다.손으로 축을 돌려 0에 가깝게 하다.
인코더 매개 변수.
AX1의 매개 변수입니다.
실행 중인 상황입니다.
Reference
이 문제에 관하여(일기회전만 하면 ηST 언어로 모터를 회전할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jamjam/items/94ecafa24334de0ee613텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)