ABB IRB 1200과 Mitsubishi Q03UDVCPU PLC의 CC-Link DeviceNet 통신 설정 방법 / CC-Link를 이용한 ABB 로봇과 Mitsubishi PLC 통합 가이드 / 산업용 로봇과 PLC의 완벽한 통신: ABB IRB 1200과 Q03UDVCPU 설정

2024. 7. 18. 16:48충남 인력개발원

 

https://youtu.be/wHFSy2oNpRg?si=w69OAyy29GqtIsE7

1. Main Module

rapid코드 복사
PROC main()
    AccSet 1, 1;
    WHILE TRUE DO
        TPErase;
        TPReadNum user_ct, "input val?";
        IF user_ct = 1 THEN
            tri 1;
        ENDIF
    ENDWHILE
ENDPROC

주요 부분 설명

  • AccSet 1, 1;: 로봇의 가속도를 설정합니다.
  • WHILE TRUE DO: 무한 루프를 시작합니다. 이 루프는 조건이 참인 동안 계속 실행됩니다.
  • TPErase;: 터치 팬던트 화면을 지웁니다.
  • TPReadNum user_ct, "input val?";: 사용자로부터 숫자 입력을 받습니다. 입력 값은 user_ct 변수에 저장됩니다.
  • IF user_ct = 1 THEN: 사용자가 1을 입력한 경우
    • tri 1;: tri 프로시저를 호출합니다. 인자로 **1**을 전달합니다.
  • ENDWHILE: 무한 루프 종료.
  • ENDPROC: 프로시저 종료.

2. TRI Procedure

rapid코드 복사
PROC tri(num param0)
    IF user_ct = 1 THEN
        MoveL p10, v200, fine, tool12345;
        MoveL Offs(p10, 200, 0, 0), v200, fine, tool12345;
        MoveL Offs(p10, 200, 200, 0), v200, fine, tool12345;
        MoveL Offs(p10, 0, 200, 0), v200, fine, tool12345;
        MoveL p10, v200, fine, tool12345;
    ENDIF
ENDPROC

주요 부분 설명

  • PROC tri(num param0): **tri**라는 이름의 프로시저를 정의하며, num 타입의 인자 **param0**을 받습니다.
  • IF user_ct = 1 THEN: **user_ct**가 1일 경우, 다음의 MoveL 명령어들이 실행됩니다.
    • MoveL p10, v200, fine, tool12345;: 로봇을 p10 위치로 이동. 이동 속도는 v200, 경로는 정밀(fine)하게 설정되며, tool12345 툴을 사용합니다.
    • MoveL Offs(p10, 200, 0, 0), v200, fine, tool12345;: p10 위치에서 X축으로 200mm 이동.
    • MoveL Offs(p10, 200, 200, 0), v200, fine, tool12345;: p10 위치에서 X축으로 200mm, Y축으로 200mm 이동.
    • MoveL Offs(p10, 0, 200, 0), v200, fine, tool12345;: p10 위치에서 Y축으로 200mm 이동.
    • MoveL p10, v200, fine, tool12345;: 다시 p10 위치로 이동.
  • ENDIF: 조건문 종료.
  • ENDPROC: 프로시저 종료.

전체 동작 요약

  1. Main Module:
    • 무한 루프를 통해 사용자 입력을 반복적으로 받습니다.
    • 입력 값이 1인 경우, tri 프로시저를 호출합니다.
  2. TRI Procedure:
    • **user_ct**가 1인 경우, 로봇은 지정된 일련의 이동 명령을 실행하여 특정 경로를 따라 이동합니다.

이 코드는 사용자로부터 입력을 받아 로봇의 동작을 제어하는 기본적인 구조를 가지고 있습니다. 사용자가 1을 입력하면, tri 프로시저가 호출되어 로봇이 정해진 경로를 따라 이동합니다. 각 MoveL 명령어는 로봇을 지정된 위치로 선형 이동시키는 역할을 합니다.


에러 분석: 특이점 근접 (에러 코드 50026)

에러 설명

  • 에러 코드: 50026
  • 에러 메시지: 특이점 근접
  • 설명:
    • 로봇의 특정 조인트가 특이점에 너무 근접했습니다.
    • 로봇의 경로가 특이점에 너무 가까워서 안전한 작업을 수행할 수 없는 상황입니다.
    • 특이점(singularity)은 로봇의 팔이 특정 위치나 자세에 있을 때 로봇의 제어가 어려워지는 지점입니다.

동작

  • 특이점을 피하도록 로봇 경로를 수정하거나 조인트/축 조정에 대한 로봇 조정을 권장합니다.
  • 로봇의 위치가 조정되는 무가중에 따라 달라지는 경우 해당 의준도 또한 완화해야 합니다.
  • 이 상황을 해결하기 위해 로봇의 조정 좌표 시스템을 월드에서 베이스로 변경하여 수행할 수 있습니다.

원인 분석

  • 특이점 근접: 로봇이 작업하는 동안 팔의 특정 위치가 특이점에 너무 가까워져 로봇의 제어가 어려워지거나 불가능한 상태.
  • 경로 계획 문제: 로봇 경로를 계획할 때 특이점을 피하지 못한 경우 발생할 수 있습니다.
  • 속도 및 가속도 문제: 로봇이 특이점 근처에서 지나치게 빠른 속도나 가속도로 이동하려고 하면 에러가 발생할 수 있습니다.

해결 방법

  1. 경로 수정:
    • 로봇의 경로를 다시 계획하여 특이점을 피하도록 수정합니다.
    • 필요할 경우, 경로 시뮬레이션을 통해 특이점을 미리 확인하고 회피할 수 있도록 조정합니다.
  2. 조인트/축 조정:
    • 특정 조인트나 축의 각도를 조정하여 특이점을 피합니다.
    • 로봇의 자세를 변경하여 특이점에 접근하지 않도록 합니다.
  3. 속도 및 가속도 조정:
    • 로봇의 이동 속도나 가속도를 조정하여 특이점 근처에서 더 안정적인 제어가 가능하도록 합니다.
    • 필요한 경우, 속도 제한을 설정하여 특이점 근처에서의 빠른 움직임을 방지합니다.
  4. 좌표 시스템 변경:
    • 로봇의 조정 좌표 시스템을 월드 좌표계에서 베이스 좌표계로 변경하여 특이점 문제를 해결합니다.
    • 이를 통해 로봇의 위치와 자세를 더 정확하게 제어할 수 있습니다.
  5. 추가 조치:
    • 로봇의 매뉴얼이나 기술 문서를 참조하여 특이점 문제를 해결하는 추가 방법을 찾아봅니다.
    • 로봇 제조사(ABB)의 지원을 받아 특이점 문제 해결에 대한 조언을 구합니다.

참고 자료

  • ABB 로봇 사용자 매뉴얼
  • Robot Operating System (ROS) Documentation

이 에러를 해결하기 위해서는 로봇의 경로 계획과 제어 시스템을 다시 점검하고, 필요할 경우 조정을 통해 특이점을 피할 수 있도록 해야 합니다. 로봇의 경로를 재설정하고 시뮬레이션을 통해 문제를 사전에 예방하는 것이 중요합니다.


특이점(Singularity)의 뜻

특이점(Singularity)은 로봇 공학과 제어 시스템에서 자주 사용되는 용어로, 로봇의 특정 위치나 자세에서 제어가 어려워지거나 불가능해지는 상황을 의미합니다. 특이점은 로봇의 운동학적 제약 때문에 발생하며, 로봇의 제어 시스템이 불안정해지거나 성능이 급격히 저하될 수 있습니다.

주요 개념

  1. 운동학적 특이점(Kinematic Singularity):
    • 로봇의 한 조인트가 더 이상 원하는 방향으로 움직일 수 없는 상태를 말합니다.
    • 이로 인해 로봇의 특정 방향으로의 움직임이 제한되며, 정밀한 제어가 어렵게 됩니다.
  2. 구조적 특이점(Structural Singularity):
    • 로봇의 기구학적 설계나 구조적 배치 때문에 발생하는 특이점입니다.
    • 예를 들어, 팔이 직선으로 펴지거나 특정 각도로 접히는 경우 발생할 수 있습니다.
  3. 속도 특이점(Velocity Singularity):
    • 로봇이 특정 위치에 있을 때, 속도나 가속도가 급격히 변하거나 무한대에 가까워지는 상황입니다.
    • 이는 로봇의 운동 방정식이 불안정해지는 지점에서 발생합니다.

특이점 발생 예시

  • 팔이 직선으로 펴지는 경우: 로봇 팔이 완전히 펴져 직선이 되면, 특정 방향으로의 회전이 어려워집니다.
  • 조인트가 경계에 도달하는 경우: 특정 조인트가 그 한계에 도달하면, 더 이상 움직일 수 없게 되어 다른 방향으로의 움직임이 제한됩니다.

특이점의 영향

  • 제어 불안정: 로봇이 특이점 근처에서 동작하면, 제어가 불안정해져 정확한 위치로 이동하기 어렵습니다.
  • 속도 및 가속도 문제: 특이점 근처에서 로봇의 속도와 가속도가 비정상적으로 높아지거나 낮아질 수 있습니다.
  • 기계적 손상: 지속적인 특이점 근처 작업은 로봇의 기계적 부품에 스트레스를 주어 손상을 일으킬 수 있습니다.

해결 방법

  • 경로 계획 조정: 로봇의 이동 경로를 다시 계획하여 특이점을 피하도록 합니다.
  • 조인트 제한 설정: 로봇의 조인트 각도를 제한하여 특이점에 접근하지 않도록 합니다.
  • 속도 및 가속도 제어: 특이점 근처에서 로봇의 속도와 가속도를 제어하여 안정적인 동작을 유지합니다.

참고 자료

특이점은 로봇 공학에서 중요한 개념으로, 이를 피하거나 해결하는 방법을 이해하는 것이 로봇의 안정적인 동작을 보장하는 데 매우 중요합니다.


 

터치팬던트 인터페이스

 

 

터치팬던트 인터페이스에 대한 자세한 설명과 사용법을 다룬 여러 유튜브 동영상을 추천드립니다. 다음 링크들은 ABB 로봇의 터치팬던트 사용법에 대한 좋은 자료들입니다:

  1. ABB Robot Tutorial: 이 재생목록은 ABB 로봇의 기본적인 터치팬던트 기능을 소개합니다. GUI, 조작법, 프로그래밍 등을 다루고 있어 터치팬던트를 처음 사용하는 사람들에게 유용합니다.
  2. Teach Pendant Basics: ABB 로봇 스튜디오를 사용한 기본적인 터치팬던트 조작법을 설명하는 동영상입니다.
  3. FlexPendant HMI: ABB FlexPendant의 HMI(휴먼 머신 인터페이스)에 대해 설명하는 동영상입니다. 터치팬던트의 기능과 사용법을 자세히 다룹니다.
  4. Flexi-Pendant Tutorial (IRC5): 이 재생목록은 ABB Flexi-Pendant의 사용법과 조작법을 설명하는 시리즈입니다. 조깅 창, 프로그램 편집기, IO 창, 프로그램 데이터 등을 다룹니다.

터치팬던트에서 함수 및 변수 관리 방법

터치팬던트를 사용하는 로봇 프로그래밍 환경에서는 함수 및 변수 관리를 효율적으로 수행하는 것이 중요합니다. 특히 RAPID 프로그래밍 언어를 사용하는 ABB 로봇에서는 터치팬던트를 통해 코드를 작성하고 디버깅할 수 있습니다. 여기서는 터치팬던트 상에서 함수와 변수 선언 및 관리에 대한 주요 개념을 설명하겠습니다.

1. 변수 선언 및 관리

  • 변수 선언:
    • VAR 키워드를 사용하여 변수를 선언합니다.
    • 예: **VAR num user_ct;**는 **user_ct**라는 이름의 숫자형 변수를 선언합니다.
    • 터치팬던트 상에서는 변수 선언을 위한 별도의 창이나 섹션이 있을 수 있습니다. 이를 통해 쉽게 변수를 추가하거나 수정할 수 있습니다.
  • 변수 초기화 및 사용:
    • 선언된 변수는 프로시저 내에서 초기화하고 사용할 수 있습니다.
    • 예: **user_ct := 0;**는 user_ct 변수를 0으로 초기화합니다.
    • 터치팬던트에서는 변수의 값을 실시간으로 모니터링하고 수정할 수 있는 기능이 제공되며, 이를 통해 디버깅을 용이하게 할 수 있습니다.

2. 함수(프로시저) 선언 및 관리

  • 프로시저 선언:
    • PROC 키워드를 사용하여 프로시저를 선언합니다.
    • 예: **PROC main()**은 **main**이라는 이름의 프로시저를 선언합니다.
  • 프로시저 호출:
    • 선언된 프로시저는 다른 프로시저 내에서 호출할 수 있습니다.
    • 예: **main();**는 main 프로시저를 호출합니다.
  • 분할된 함수 관리:
    • 큰 프로그램은 여러 개의 작은 프로시저로 나눌 수 있습니다.
    • 예: **PROC sub_task1()**과 **PROC sub_task2()**와 같이 나누어 작성할 수 있습니다.
    • 터치팬던트 상에서는 이러한 프로시저들을 모듈 단위로 관리할 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.

3. 터치팬던트 인터페이스 활용

  • 모듈 관리:
    • 터치팬던트에서는 모듈별로 코드를 분리하여 관리할 수 있습니다. 각 모듈은 독립적으로 저장되고 호출될 수 있습니다.
    • 이를 통해 프로젝트를 체계적으로 관리하고, 특정 기능이나 작업을 독립적으로 테스트할 수 있습니다.
  • 디버깅 도구:
    • 터치팬던트에는 변수 값 모니터링, 브레이크포인트 설정, 단계별 실행 등의 디버깅 도구가 포함되어 있습니다.
    • 이를 통해 코드의 흐름을 따라가며 문제를 해결할 수 있습니다.
  • 코드 편집기:
    • 터치팬던트에는 코드 편집기 기능이 있어, 직접 코드를 작성하고 수정할 수 있습니다.
    • 자동 완성, 문법 검사 등의 기능을 통해 프로그래밍 효율성을 높일 수 있습니다.

예시 코드 분석

rapid코드 복사
VAR num user_ct;
PROC main()
    AccSet 1, 1;
    WHILE TRUE DO
        TPErase;
        TPReadNum user_ct, "input val?";
        IF user_ct = 1 THEN
            tri 1;
        ENDIF
    ENDWHILE
ENDPROC

PROC tri(num param0)
    IF user_ct = 1 THEN
        MoveL p10, v200, fine, tool12345;
        MoveL Offs(p10, 200, 0, 0), v200, fine, tool12345;
        MoveL Offs(p10, 200, 200, 0), v200, fine, tool12345;
        MoveL Offs(p10, 0, 200, 0), v200, fine, tool12345;
        MoveL p10, v200, fine, tool12345;
    ENDIF
ENDPROC

주요 기능

  • 변수 user_ct 선언: 사용자 입력 값을 저장하는 변수.
  • main 프로시저: 사용자 입력을 받아 tri 프로시저를 호출하는 메인 루프.
  • tri 프로시저: user_ct 값에 따라 로봇의 이동 명령을 수행하는 하위 작업.

참고 자료


 

 

 

 mainO
Routine 1 3;
WaitTime 3;
ENDPROC
PROC Routine1 (num paramO)
FOR ct FROM 1 TO paramo DO
MoveL p10, v100, fine, toolo;
MoveL Offs(p10, 50*Tan(60), 50, 0), v100, fine, toolo;
MoveL Offs(p10, 0, 100, 0), 100, fine, toolo;
MoveL p10, v100, fine, toolo;
ENDFOR
ENDPROC

 

메인루틴에서 Routine1을 호출할 때 파라미터값 3을 함께 넘겨주면 Routine1 함수 에서 for문의 paramo값은 3이됨, 즉 for문을 3번 반복 하게 됨

코드 분석 및 동작 설명

주어진 코드는 ABB 로봇의 RAPID 프로그래밍 언어로 작성된 것으로, 메인 루틴에서 **Routine1**을 호출하여 로봇이 특정 경로를 여러 번 이동하도록 합니다. 다음은 이 코드의 상세 분석입니다.

메인 루틴

rapid코드 복사
PROC main()
    Routine1 3;
    WaitTime 3;
ENDPROC

주요 부분 설명

  • PROC main(): 메인 프로시저를 정의합니다.
  • Routine1 3;: Routine1 프로시저를 호출하며, 인자로 숫자 3을 전달합니다.
  • WaitTime 3;: 3초 동안 대기합니다.
  • ENDPROC: 프로시저를 종료합니다.

Routine1 프로시저

rapid코드 복사
PROC Routine1 (num paramO)
    FOR ct FROM 1 TO paramO DO
        MoveL p10, v100, fine, toolO;
        MoveL Offs(p10, 50*Tan(60), 50, 0), v100, fine, toolO;
        MoveL Offs(p10, 0, 100, 0), v100, fine, toolO;
        MoveL p10, v100, fine, toolO;
    ENDFOR
ENDPROC

주요 부분 설명

  • PROC Routine1(num paramO): **Routine1**이라는 이름의 프로시저를 정의하며, num 타입의 인자 **paramO**를 받습니다.
  • FOR ct FROM 1 TO paramO DO: ct 변수가 1부터 **paramO**까지 증가하며, 루프가 실행됩니다. **paramO**의 값은 3이므로, 이 루프는 3번 반복됩니다.
    • MoveL p10, v100, fine, toolO;: 로봇을 p10 위치로 선형 경로를 따라 이동시키며, 속도는 **v100**입니다.
    • MoveL Offs(p10, 50*Tan(60), 50, 0), v100, fine, toolO;: p10 위치에서 X축으로 50 * Tan(60) 만큼, Y축으로 50mm 이동.
    • MoveL Offs(p10, 0, 100, 0), v100, fine, toolO;: p10 위치에서 Y축으로 100mm 이동.
    • MoveL p10, v100, fine, toolO;: 다시 p10 위치로 이동.
  • ENDFOR: 루프 종료.
  • ENDPROC: 프로시저 종료.

전체 동작 요약

  1. 메인 루틴:
    • Routine1 프로시저를 호출하면서 인자로 **3**을 전달합니다.
    • WaitTime 3; 명령어로 3초 대기합니다.
  2. Routine1 프로시저:
    • 전달받은 paramO 값이 **3**이므로, FOR 루프는 3번 반복됩니다.
    • 각 반복에서 로봇은 다음과 같은 이동 명령을 수행합니다:
      • p10 위치로 이동.
      • p10 위치에서 X축으로 50 * Tan(60) 만큼, Y축으로 50mm 이동.
      • p10 위치에서 Y축으로 100mm 이동.
      • 다시 p10 위치로 이동.

주요 기능

  • 파라미터화된 루틴 호출: 메인 루틴에서 Routine1 프로시저를 호출할 때 인자를 전달하여 반복 횟수를 조정합니다.
  • 루프를 통한 반복 동작: FOR 루프를 사용하여 특정 경로를 여러 번 반복하도록 프로그래밍합니다.
  • 로봇 이동 경로 제어: 각 MoveL 명령어를 통해 로봇의 정확한 이동 경로를 설정합니다.

코드 실행 결과

  • Routine1 프로시저가 호출되어 로봇은 3번 반복하여 정의된 경로를 이동합니다.
  • 각 반복에서 로봇은 p10 위치로 이동한 후, X축 및 Y축으로 오프셋을 적용한 위치로 이동하고 다시 p10 위치로 돌아옵니다.

이와 같은 구조는 반복적인 작업을 효율적으로 수행할 수 있게 해주며, 파라미터화된 함수를 통해 코드의 유연성과 재사용성을 높일 수 있습니다.


주요 단어 해석 및 메커니즘 설명

1. PROC

  • 해석: 프로시저(Procedure)를 정의하는 키워드.
  • 메커니즘: 프로시저는 특정 작업을 수행하기 위해 명령어들의 집합을 정의하는 코드 블록입니다. RAPID 프로그래밍에서 PROC 키워드를 사용하여 프로시저를 정의합니다. 프로시저는 호출될 때마다 실행됩니다.
    • 예시: **PROC main()**은 **main**이라는 이름의 프로시저를 정의합니다.
    • 사용법:
    • PROC myProcedure() ! 명령어들 ENDPROC

2. VAR

  • 해석: 변수를 선언하는 키워드.
  • 메커니즘: 변수는 데이터를 저장하는 장소로, VAR 키워드를 사용하여 변수를 선언합니다. 변수는 프로시저 내에서 사용되며, 데이터를 저장하고 참조하는 데 사용됩니다.
    • 예시: **VAR num user_ct;**는 숫자형 변수를 선언합니다.
    • 사용법:
    • rapid코드 복사 VAR num myVariable; myVariable := 10;

3. MoveL

  • 해석: 선형 이동 명령어.
  • 메커니즘: MoveL 명령어는 로봇을 선형 경로를 따라 지정된 위치로 이동시킵니다. 속도와 정밀도 등을 설정할 수 있습니다.
    • 예시: **MoveL p10, v100, fine, toolO;**는 로봇을 p10 위치로 이동시키며, 속도는 v100, 경로의 끝점에서 정밀하게 멈춥니다.
    • 사용법:
    • rapid코드 복사 MoveL targetPosition, speed, precision, tool;

4. Offs

  • 해석: 오프셋을 적용하는 함수.
  • 메커니즘: Offs 함수는 지정된 위치에서 X, Y, Z 방향으로 오프셋을 적용한 새로운 위치를 반환합니다. 이를 통해 상대적인 위치로 로봇을 이동할 수 있습니다.
    • 예시: **Offs(p10, 50*Tan(60), 50, 0)**은 p10 위치에서 X축으로 **50 * Tan(60)**만큼, Y축으로 50mm 이동한 위치를 반환합니다.
    • 사용법:
    • rapid코드 복사 Offs(basePosition, xOffset, yOffset, zOffset);

5. WaitTime

  • 해석: 지정된 시간 동안 대기하는 명령어.
  • 메커니즘: WaitTime 명령어는 로봇의 동작을 일정 시간 동안 멈추게 합니다. 이는 특정 동작 사이에 지연을 추가하거나 다른 작업과 동기화하는 데 유용합니다.
    • 예시: **WaitTime 3;**는 3초 동안 대기합니다.
    • 사용법:
    • rapid코드 복사 WaitTime(seconds);

6. FOR

  • 해석: 반복문을 시작하는 키워드.
  • 메커니즘: FOR 루프는 지정된 횟수만큼 명령어를 반복 실행합니다. 반복 변수의 시작 값, 종료 값, 증감 값을 지정할 수 있습니다.
    • 예시: **FOR ct FROM 1 TO paramO DO**는 ct 변수가 1부터 **paramO**까지 증가하며 루프를 실행합니다.
    • 사용법:
    • rapid코드 복사 FOR variable FROM start TO end DO ! 반복할 명령어들 ENDFOR

예시 코드 설명

rapid코드 복사
VAR num user_ct;
PROC main()
    Routine1 3;
    WaitTime 3;
ENDPROC

PROC Routine1 (num paramO)
    FOR ct FROM 1 TO paramO DO
        MoveL p10, v100, fine, toolO;
        MoveL Offs(p10, 50*Tan(60), 50, 0), v100, fine, toolO;
        MoveL Offs(p10, 0, 100, 0), v100, fine, toolO;
        MoveL p10, v100, fine, toolO;
    ENDFOR
ENDPROC

  • main 프로시저: Routine1 프로시저를 호출하며, 인자로 **3**을 전달합니다. 이후 3초 동안 대기합니다.
  • Routine1 프로시저: paramO 값이 3이므로, FOR 루프가 3번 반복됩니다. 각 반복에서 로봇은 지정된 경로를 따라 이동합니다.

메커니즘 설명

  • 프로시저 호출 및 파라미터 전달: Routine1 프로시저를 호출하면서 **3**을 인자로 전달합니다. Routine1 프로시저 내에서 paramO 변수는 **3**이 됩니다.
  • 반복문 실행: FOR 루프는 3번 반복되며, 각 반복에서 로봇은 MoveL 명령어를 통해 지정된 경로를 따라 이동합니다.
  • 오프셋 적용: Offs 함수를 사용하여 p10 위치에서 상대적인 위치로 이동합니다. 이를 통해 복잡한 경로를 쉽게 정의할 수 있습니다.

파라미터(Parameter)의 뜻

파라미터는 프로그래밍에서 함수나 프로시저가 호출될 때 전달되는 입력 값을 의미합니다. 이는 함수 내부에서 특정 작업을 수행하기 위해 필요한 데이터를 제공합니다. 파라미터는 함수 정의 부분에서 선언되며, 함수가 호출될 때 실제 값(인자, Argument)을 받아 해당 작업을 수행합니다.

예시:

  • 함수 정의 시: **PROC Routine1 (num paramO)**에서 **paramO**는 파라미터입니다.
  • 함수 호출 시: **Routine1(3);**에서 **3**은 paramO 파라미터에 전달되는 인자입니다.

파라미터의 메커니즘

파라미터는 함수나 프로시저가 호출될 때 외부에서 내부로 데이터를 전달하는 중요한 역할을 합니다. 이를 통해 함수는 보다 유연하고 재사용 가능해집니다. 파라미터의 주요 메커니즘은 다음과 같습니다:

  1. 함수 정의: 함수나 프로시저를 정의할 때, 필요한 파라미터를 선언합니다.
    • 예시: **PROC Routine1(num paramO)**는 **paramO**라는 숫자형 파라미터를 선언합니다.
  2. 함수 호출: 함수가 호출될 때, 실제 값을 인자로 전달합니다.
    • 예시: **Routine1(3);**는 paramO 파라미터에 **3**이라는 값을 전달합니다.
  3. 값 전달: 호출 시 전달된 인자는 함수의 파라미터에 대입되어 함수 내부에서 사용됩니다.
    • 예시: **paramO**는 **3**이 되어, 함수 내부에서 이를 사용하여 작업을 수행합니다.
  4. 함수 실행: 함수는 전달된 파라미터 값을 사용하여 정의된 작업을 수행합니다.
    • 예시: Routine1 프로시저는 paramO 값에 따라 반복문을 실행하여 로봇의 이동을 제어합니다.

예시 코드 분석

rapid코드 복사
VAR num user_ct;
PROC main()
    Routine1(3);
    WaitTime 3;
ENDPROC

PROC Routine1 (num paramO)
    FOR ct FROM 1 TO paramO DO
        MoveL p10, v100, fine, toolO;
        MoveL Offs(p10, 50*Tan(60), 50, 0), v100, fine, toolO;
        MoveL Offs(p10, 0, 100, 0), v100, fine, toolO;
        MoveL p10, v100, fine, toolO;
    ENDFOR
ENDPROC

주요 부분 설명

  • 파라미터 선언: **PROC Routine1(num paramO)**에서 **paramO**는 파라미터로 선언됩니다. 이는 Routine1 프로시저가 호출될 때 값을 전달받아 사용할 수 있게 합니다.
  • 파라미터 전달: main 프로시저에서 **Routine1(3);**을 호출하여 **paramO**에 **3**이라는 값을 전달합니다.
  • 파라미터 사용: Routine1 프로시저 내부에서 FOR 루프는 paramO 값인 **3**을 사용하여 3번 반복됩니다.

장점

  1. 유연성: 파라미터를 사용하면 동일한 함수가 다양한 상황에서 사용될 수 있습니다.
  2. 재사용성: 파라미터화된 함수는 여러 곳에서 호출할 수 있어 코드의 재사용성이 높아집니다.
  3. 유지보수성: 파라미터를 통해 함수의 동작을 제어할 수 있으므로, 코드를 수정할 때 하나의 함수만 변경하면 됩니다.

활용 예시

  • 산업용 로봇 프로그래밍:
    • 반복적인 작업을 수행할 때, 작업 횟수를 파라미터로 전달하여 유연하게 제어할 수 있습니다.
    • 예를 들어, 용접 작업에서 파라미터를 사용하여 용접 횟수나 간격을 조정할 수 있습니다.
  • 데이터 처리:
    • 데이터 분석 함수에서 처리할 데이터의 양이나 특정 기준을 파라미터로 전달하여 다양한 데이터 셋을 처리할 수 있습니다.

 

로봇스튜디오의 모습입니다

  1.  

주요 메뉴 분석 및 자주 사용하는 파일 설명

1. HOME

  • 1200-510485.cfg: 로봇 시스템의 전체 구성 설정 파일. 시스템의 초기 설정, 네트워크 구성, 통신 설정 등이 포함됩니다.
  • 1200-510485.log: 시스템 로그 파일로, 시스템 활동 및 오류 기록을 포함합니다.
  • BC_REPORT.log: 백업 및 복구와 관련된 로그 파일.
  • GSDML 폴더: 프로피버스/프로피넷 장치 설명 파일(GSDML 파일)을 포함. 이 파일들은 로봇과 외부 장치 간의 통신을 설정하는 데 사용됩니다.

2. NewProgram240308

  • MainModule.mod: 주요 로봇 프로그램 코드가 포함된 모듈 파일. 로봇의 동작을 제어하는 RAPID 프로그래밍 언어로 작성된 코드가 포함되어 있습니다.
  • NewProgram240308.pgf: 프로젝트 파일로, 프로젝트에 대한 설정 및 구성 정보를 포함합니다.

3. RefCalibFiles

  • sis_log_appl170103: 보정 관련 로그 파일로, 보정 작업의 활동 기록이 포함됩니다.

4. Configuration

  • Communication: 통신 설정 폴더로, 로봇과 외부 장치 간의 통신 프로토콜 및 설정을 관리합니다.
  • Controller: 로봇 컨트롤러 관련 설정 폴더로, 컨트롤러의 구성 및 파라미터를 포함합니다.
  • I/O System: 입력/출력 시스템 설정 폴더로, I/O 포트의 구성 및 매핑을 관리합니다.
  • Man-Machine Communication: 사람과 기계 간의 통신 설정 폴더로, HMI(휴먼 머신 인터페이스) 설정이 포함됩니다.
  • Motion: 로봇의 이동 경로, 속도, 가속도 등의 움직임 관련 설정 폴더.

5. Event Log

  • 시스템 이벤트 로그가 저장된 폴더로, 시스템 활동 및 오류 기록을 포함합니다.

6. RAPID

  • T_ROB1: 로봇 프로그램이 저장된 폴더로, RAPID 프로그래밍 언어로 작성된 코드 파일이 포함되어 있습니다.

자주 사용하는 파일 및 기능

  1. MainModule.mod:
    • 로봇의 주요 동작을 정의하는 프로그램 코드가 포함되어 있습니다.
    • PROC과 VAR을 사용하여 프로시저와 변수를 선언하고, MoveL, MoveJ 등의 명령어를 통해 로봇의 움직임을 제어합니다.
  2. 프로젝트 파일 (.pgf):
    • 프로젝트에 대한 전반적인 설정 정보를 포함합니다.
    • 프로젝트의 구조를 정의하고, 여러 모듈과 파일을 연결하여 하나의 프로젝트로 구성합니다.
  3. 통신 설정 (Communication):
    • 로봇과 외부 장치 간의 통신을 설정합니다.
    • 프로피버스/프로피넷 등의 통신 프로토콜을 설정하고, 외부 장치와의 데이터 교환을 관리합니다.
  4. 입출력 시스템 (I/O System):
    • 로봇과 외부 센서, 액추에이터 등의 장치 간의 입력/출력 신호를 설정하고 매핑합니다.
    • I/O 포트의 구성을 정의하고, 각 포트의 기능을 설정합니다.
  5. 모션 설정 (Motion):
    • 로봇의 움직임을 제어하는 설정을 포함합니다.
    • 이동 경로, 속도, 가속도 등의 파라미터를 설정하여 로봇의 동작을 최적화합니다.

 

14 ABB 1200 미쓰비시 cclink 통신 연계 셋팅 (youtube.com)

 

Back To The Basics: IO-Link의 장점 (innovatingautomation.asia)  

ABB 1200 미쓰비시 cclink 통신 연계 셋팅관련 영상입니다.

 

ABB IRB 1200 로봇과 Mitsubishi Q03UDVCPU PLC를 CC-Link로 통신 설정하는 방법에 대한 자료를 찾기 위해 다음과 같은 유튜브 영상과 검색어를 추천합니다:

유튜브 영상 추천

  1. I/O setup on the ABB IRB 120 using the IRC5 compact controller: ABB IRB 1200의 IRC5 컴팩트 컨트롤러에서 I/O 설정 방법을 설명하는 영상입니다.
  2. Profinet connection between ABB IRB120-Siemens PLC S7-1500-HMI TP1200 Comfort: ABB IRB 120 로봇과 Siemens PLC 간의 Profinet 연결을 다루고 있지만, 설정 과정은 유사하므로 참고할 수 있습니다.
  3. CC Link and Hardware Configuration in PLC Mitsubishi Q series: Mitsubishi Q 시리즈 PLC에서 CC-Link와 하드웨어 구성 설정을 설명하는 영상입니다.

검색어 추천

  • "ABB IRB 1200 Q03UDVCPU PLC CC-Link communication setup"
  • "ABB IRB 1200 CC-Link configuration tutorial"
  • "Mitsubishi Q03UDVCPU CC-Link setup"
  • "ABB IRC5 controller CC-Link setup guide"

CC-Link 스테이션 타입 설정: Intelligent device station

이유와 배경

CC-Link 네트워크에서 스테이션 타입을 설정하는 것은 각 장치가 네트워크 상에서 어떻게 통신할지를 정의하는 중요한 부분입니다. " Intelligent device station "으로 설정해야 하는 이유는 다음과 같습니다:

  1. 고급 기능 지원:
    • 인텔리전트 디바이스 스테이션은 일반적인 원격 I/O 스테이션과 달리 고급 기능을 지원합니다. 여기에는 고속 데이터 통신, 고정밀 데이터 처리, 진단 기능 등이 포함됩니다.
    • 이는 특히 복잡한 제어 시스템에서 필요한 기능들을 제공하여 시스템의 성능과 신뢰성을 높입니다.
  2. 데이터 처리 능력:
    • 인텔리전트 디바이스 스테이션은 더 많은 데이터를 처리할 수 있습니다. 이는 복잡한 작업을 수행하는 데 필요한 데이터를 충분히 주고받을 수 있게 합니다.
    • 로봇과 같은 고성능 장치가 요구하는 데이터 양을 충분히 처리할 수 있습니다.
  3. 버퍼 용량 설정:
    • 인텔리전트 디바이스 스테이션은 송신 및 수신 버퍼의 용량을 유연하게 설정할 수 있습니다. 이는 대량의 데이터 전송 시에 매우 유용합니다.
    • 예를 들어, 자동 설정(Automatic)으로 설정된 경우, 시스템이 최적의 버퍼 크기를 자동으로 결정하여 데이터 전송을 최적화합니다.
  4. 호환성 및 표준 준수:
    • 인텔리전트 디바이스 스테이션으로 설정하면 CC-Link 표준을 준수하여 다양한 장치와 호환성을 유지할 수 있습니다. 이는 시스템 통합 및 유지보수 시 중요한 요소입니다.

구체적인 설정

화면 구성 요소 설명

  • Station Type: 설정할 스테이션 타입을 선택합니다. 이 예제에서는 "Intelligent Device Station"을 선택합니다.
  • Expanded Cyclic Setting: 사이클 설정을 지정합니다. 이 예제에서는 "Single"로 설정되어 있습니다.
  • Number of Occupied Stations: 점유할 스테이션의 수를 설정합니다. 이 예제에서는 "Occupied Station 1"로 설정되어 있습니다.
  • Remote Station Points: 원격 스테이션의 포인트 수를 설정합니다. 이 예제에서는 "32Points"로 설정되어 있습니다.
  • Reserve/Invalid Station Select: 예약 또는 유효하지 않은 스테이션을 선택합니다. 이 예제에서는 "No Setting"으로 설정되어 있습니다.
  • Intelligent Buffer Specification (DEC-Word Unit): 버퍼의 송수신 용량을 설정합니다. 이 예제에서는 송신과 수신 모두 64로 설정되어 있습니다.

결론

" Intelligent device station "으로 설정하는 것은 CC-Link 네트워크에서 고성능 장치(예: 로봇)와의 통신을 최적화하고, 데이터 처리 능력을 극대화하며, 시스템의 신뢰성과 호환성을 보장하기 위해 필요합니다. 이는 특히 복잡한 자동화 시스템에서 중요한 역할을 합니다.

참고 자료


C-Link를 DeviceNet으로 변환하는 통신 구조를 잘 설명한 유튜브 영상을 몇 가지 추천합니다. 이러한 영상들은 CC-Link와 DeviceNet의 기본 개념부터 변환 방법까지 다루고 있습니다.

추천 유튜브 영상

  1. DeviceNet Configuration [Part-2] 1769-SDN & 1794-ADN Communication
    • 이 영상은 DeviceNet 구성 및 통신 설정 방법을 자세히 설명합니다. 특히, 1769-SDN 및 1794-ADN 모듈을 사용하는 설정 방법을 다룹니다.
    • DeviceNet Configuration [Part-2]
  2. What is DeviceNet Protocol? DeviceNet basics tutorial
  3. RSNetWorx for DeviceNet Configuration [Part-1]
  4. DeviceNet: 6 Things You Need to Know
    • DeviceNet에 대해 알아야 할 6가지 주요 사항을 설명하는 영상입니다. DeviceNet의 특징과 활용 사례를 이해하는 데 도움이 됩니다.
    • DeviceNet: 6 Things You Need to Know
  5. Devicenet Industrial Networking Training

이 영상들을 통해 CC-Link에서 DeviceNet으로의 변환 과정 및 통신 구조를 상세히 이해할 수 있을 것입니다. 각 영상은 실무에서 바로 적용할 수 있는 설정 방법과 문제 해결 방법을 제공하므로 참고하기 좋습니다.