통신 구성 및 샘플 프로그램 사용
지멘스 PLC가 TIA Portal 소프트웨어를 사용하여 Mech-Mind Robotics 비전 시스템과 PROFINET 통신을 수행하는 프로세스는 다음과 같습니다:
하드웨어 및 소프트웨어 요구 사항
하드웨어
-
지원되는 Siemens S7 시리즈 PLC
-
S7-300. (PROFINET 인터페이스가 내장되어 있거나 PROFINET IO 컨트롤러로 기능하도록 CP 343-1이 통합됨)
-
S7-400. (PROFINET 인터페이스가 내장되어 있거나 PROFINET IO 컨트롤러로 기능하도록 CP 443-1이 통합됨)
-
S7-1200.
-
S7-1500.
-
-
전원 어댑터: 220V AC → 24V DC.
-
Mech-Mind IPC 또는 호스트에는 표준 PCI-e 통신 보드가 설치되야 합니다: HMS Ixxat INpact PIR Slave PCIe. (INpact PIR 슬레이브 PCIe)
-
네트워크 스위치 및 네트워크 케이블.
이 샘플에서는 S7-1200, CPU 1211C를 사용합니다. |
하드웨어 연결은 아래 그림과 같습니다.

소프트웨어
-
Siemens PLC 프로그래밍 소프트웨어 TIA Portal V15.1.
-
GSD 장치 설명 파일: GSDML-V2.35-MM-PIR-20220315.xml. GSD 파일이 버전 업그레이드될 경우, 버전 또는 날짜 차이가 발생할 수 있습니다. GSD 파일은 Mech-Vision 및 Mech-Viz 소프트웨어 설치 디렉토리의
통신 구성 요소/Robot_Interface/PROFINET
폴더에 있습니다. -
PLC 샘플 파일:
-
Camera_IO.scl. (기본 PROFINET IO 통신 모듈)
-
MM Profinet Interface Program.scl. (각 인터페이스 명령어 기능을 구현하는 데 사용됨)
-
PLCTags.xlsx. (Mech-Mind 시스템 변수 리스트)
샘플 파일은 Mech-Vision 및 Mech-Viz 소프트웨어 설치 디렉토리의
통신 구성 요소/Robot_Interface/PROFINET/Programming Samples/Siemens TIA Portal S7-1200 PLC PROFINET
폴더에 있습니다. 이 샘플 파일을 TIA Portal이 설치된 컴퓨터에 복사하세요. -
IPC 구성 및 통신 시작
IPC 통신 보드 및 드라이브 확인
-
아래와 같이 INpact PIR 슬레이브 PCIe 보드가 IPC의 PCI-e 슬롯에 제대로 장착되었는지 확인하십시오.
-
IPC에서 Windows 아이콘을 마우스 오른쪽 버튼으로 클릭하고 장치 관리자를 열고 보드 드라이브 소프트웨어 VCI4 INpact PCIe가 설치되었는지 확인하세요.
"로봇 통신 구성" 설정
-
Mech-Vision 소프트웨어를 시작합니다. 표시되는 인터페이스에 따라 다음의 적절한 방법을 선택하여 솔루션을 생성하십시오.
-
시작 화면이 나타나면 새로운 솔루션 만들기를 클릭하여 새로운 솔루션을 만듭니다.
-
메인 인터페이스가 나타나면 메뉴 바에서
을 차례로 클릭하여 새로운 솔루션을 만듭니다.
-
-
Mech-Vision 툴 바에서 로봇 통신 구성을 클릭합니다.
-
로봇 통신 구성 창에서 다음 구성을 수행합니다.
-
로봇 선택 드롭다운 메뉴를 클릭하여 실제 사용 중인 로봇에 따라 다음 설명을 참조하고 목록에 있는 로봇 또는 *사용자 지정 로봇*을 선택합니다. 마지막으로 다음을 클릭합니다.
-
목록에 있는 로봇: 대부분의 로봇에 적합합니다. 로봇 모델 선택을 클릭하여 구체적인 모델을 선택할 수 있습니다.
-
사용자 지정 로봇: 갠트리 로봇 또는 위 브랜드 이외의 로봇에 적용 가능합니다. 후속은 로봇 오일러 각 유형 및 *로봇 좌표계*를 선택해야 합니다.
-
-
통신 방식에서 인터페이스 서비스 유형을 표준 인터페이스로 선택하고 프로토콜은 PROFINET-IRT로 선택합니다.
-
(선택 사항) 솔루션을 열 때 인터페이스 서비스 자동 활성화를 선택합니다.
-
응용을 클릭합니다.
-
-
Mech-Vision 메인 화면에서 툴 바에 있는 “인터페이스 서비스” 기능이 활성화되어 있는지 확인하십시오.
PLC 프로젝트 만들기 및 구성하기
PLC 프로젝트를 만들기
필요한 경우 Save project를 클릭하여 프로젝트의 변경 사항을 저장합니다. |
-
TIA Portal 소프트웨어를 열고 Create new project를 클릭합니다. 프로젝트 이름을 입력하고 경로를 선택한 후 Create를 클릭합니다. 팝업된 창에서 Open the project view를 클릭합니다.
-
Project tree 패널에서 Add new device를 더블 클릭합니다. Controllers를 클릭하고 사용 중인 CPU 모듈을 선택한 후 OK를 클릭합니다.
-
Project tree 패널의 Device configuration을 클릭하고 오른쪽에 있는 Device view 탭을 클릭합니다. PLC_1의 이더넷 아이콘을 더블 클릭하고 Properties ‣ General 탭에서 Ethernet addresses를 클릭하여 IP 주소를 설정합니다. 서브넷 마스크를 기본 값으로 유지합니다.
GSD 파일 설치 및 구성
-
메뉴 바에서
를 클릭하면 Manage general station description files 창이 나타납니다. -
Installed GSDs를 클릭하고 소스 경로 오른쪽에 있는 …를 클릭합니다. GSD 파일을 찾아내고 선택합니다. Install을 클릭하고 설치가 성공적으로 완료되면 팝업 창을 닫습니다.
GSD 파일은 Mech-Mind IPC에서 획득할 수 있습니다. GSD 파일은 Mech-Vision 및 Mech-Viz 소프트웨어 설치 디렉토리의 통신 구성 요소/Robot_Interface/PROFINET
폴더에 있습니다. TIA Portal이 설치된 컴퓨터에PROFINET
폴더를 복사하고 …를 클릭하여 폴더를 찾습니다. -
Device configuration 페이지에 돌아가서 Network view를 클릭하여 Hardware catalog를 엽니다. 디렉토리 General/Mech-Mind Robotics Technologies Ltd/MechMind-PIR에서 DAP를 두 번 클릭하면 네트워크 보기에 mechmind-pir이 표시됩니다.
-
Network view에서 PLC_1의 이더넷 아이콘을 클릭한 상태에서 마우스 왼쪽 버튼을 누른 채로 mechmind-pir 모듈의 이더넷 아이콘까지 드래그하고, 검은색 연결선이 나타나면 마우스 왼쪽 버튼을 놓습니다.
-
PROFINET 네트워크 연결 후, 아래 그림과 같이 표시됩니다.
-
mechmind-pir에서 Ethernet 아이콘을 클릭합니다. Properties 창의 General 탭에서 Ethernet addresses를 클릭하여 IP 주소를 설정합니다. (PLC와 같은 네트워크 세그먼트에 있어야 함) Generate PROFINET device name automatically를 체크하고 다른 설정은 기본값으로 유지합니다.
-
Network 패널에서 녹색 연결선을 클릭하고 assign 아이콘을 클릭하면 Assign PROFINET device name 창이 나타납니다.
-
PROFINET device name은 mechmind-pir로 선택하고 다른 설정이 기본 값으로 유지합니다. Update list를 클릭하면 연결된 PROFINET 보드를 검색합니다. 장치 이름이 일치하지 않으면 Assign name을 클릭하고, 상태가 OK로 표시되면 대화 상자를 닫습니다.
-
mechmind-pir를 더블 클릭하여 Device view로 들어갑니다. 사용 가능한 모든 모듈을 확인할 수 있습니다.
통신이 성공한지 여부 확인
-
PLC 프로젝트로 돌아가서 Project tree 패널에서 PLC_1[CPU 1211C DC/DC/DC]를 선택하고 툴 바의 Go online을 클릭합니다.
-
Project tree 패널에서 Device configuration을 클릭하고 Device view를 선택합니다. mechmind-pir[DAP]를 선택하고 Device overview에서 모듈 이름 앞에 녹색 배경이 있는 체크 표시는 정상적인 연결을 나타냅니다.
-
Mech-Vision 메인 화면에 연결이 성공하면 로그 창의 콘솔 탭에 PROFINET-IRT 컨트롤러 연결 성공 라는 메시지가 표시됩니다. 해당 로그가 없는 경우 다음 사항이 정상인지 확인해 주시기 바랍니다.
-
하드웨어 네트워크 연결이 정상인지 여부
-
Mech-Vision 인터페이스 서비스가 정상인지 여부
-
하드웨어 구성이 PLC에 다운로드되었는지 여부
-
샘플 파일을 가져오기 및 PLC에 다운로드
Mech-Mind 샘플 파일을 가져와 테스트하려면 새로 생성한 PLC 프로젝트를 사용하십시오. 기존 PLC 프로젝트에 추가해야 할 경우, 먼저 새 프로젝트를 생성하여 가져와 테스트한 후 최종적으로 기존 프로젝트에 복사하는 것을 권장합니다. |
Mech-Mind 샘플 파일을 가져오기
-
PLC 프로젝트로 돌아가서 Project tree 패널에서 PLC_1[CPU 1211C DC/DC/DC]를 선택하고 툴 바의 Go offline을 클릭합니다.
-
Network view에서 mechmind-pir를 더블 클릭하여 Device view로 들어갑니다. 실제 요구사항에 따라 I addresses와 Q addresses를 변경합니다. 여기서는 모듈 시작 주소로 500을 사용합니다.
여러 바이트를 차지하는 모듈의 경우, 할당된 주소는 연속되어야 하며 모듈 시작 주소는 짝수여야 합니다. -
Project tree 패널에서
를 클릭하여 PLC tags 창을 엽니다. 툴 바의 import를 클릭하여 Import 창이 팝업됩니다. -
…를 클릭하고
PLCTags.xlsx
파일을 찾아 OK를 클릭하여 CameraIO 테이블을 가져옵니다.가져온 후 뷰는 아래 그림과 같습니다.
-
Project tree 패널에서 External source files를 더블 클릭하고 Add new external file를 더블 클릭합니다. 팝업된 창에서
Camera_IO.scl`과 `MM Profinet Interface Program.scl
파일을 선택하고 Open을 클릭하여 PLC 프로젝트로 가져옵니다. -
가져온 두 개의 외부 파일을 선택한 후, 해당 파일들을 마우스 오른쪽 버튼으로 클릭합니다. 오른쪽 클릭 메뉴에서 Generate blocks from source를 선택합니다.
-
"blocks can be overwritten"라는 창이 팝업되면 OK를 클릭합니다.
-
외부 소스 파일에서 생성된 기능 함수 및 데이터 블록은 아래 그림과 같으며, Camera_User[DB2] 블록에는 사용자 데이터가 저장됩니다. 변수 테이블에서 CameraIO[DB1]의 변수 주소는 장치 구성에서 수정된 시작 주소와 일치해야 합니다.
-
프로젝트에서 함수와 블록의 유지 관리를 용이하게 하려면 Program blocks를 선택하고 Add new group을 마우스 오른쪽 버튼으로 클릭한 다음 3D_Camera라고 이름을 지정합니다.
-
새로 생성된 모든 기능 함수와 데이터 블록을 선택하고 3D_Camera 그룹으로 옮깁니다.
프로그램 구축 및 PLC 다운로드
-
Project tree 패널에서 Program blocks 클릭하고 Main[OB1]을 더블 클릭합니다. 기능 Camera_IO를 Network 1로 드래그합니다.
-
Program tree 패널에서 마우스 오른쪽 버튼을 클릭하여 PLC_1[CPU 1211C DC/DC/DC]를 선택하고 Download to device ‣ Hardware and software (only changes)를 클릭합니다. Extended download to device 창이 나타납니다. 같은 방법을 사용하여 최신 프로젝트를 PLC에 다운로드합니다.
-
다운로드 완료 후 Project tree 패널에서 PLC_1[CPU 1211C DC/DC/DC]를 선택하고 툴 바의 Go online을 클릭합니다.
-
Project tree로 돌아가서 데이터 블록 *CameraIO[DB1]*을 더블 클릭한 후, monitor를 클릭합니다. 변수 그룹을 차례대로 펼쳐보았을 때, FromCamera/HEARTBEAT 하트비트 신호의 모니터링 값이 계속 변화하는 것이 관찰되면, PROFINET 슬레이브의 I/Q 주소가 해당 데이터 블록으로 올바르게 전송되고 있음을 의미합니다.
비전 프로젝트 테스트
이 섹션에서는 샘플 프로그램 기능 블록으로 Mech-Vision 프로젝트를 트리거하여 비전 포인트를 획득하고 Mech-Viz 프로젝트를 트리거하여 계획 경로를 획득하는 방법을 소개합니다. IO 모듈 구체적인 기능과 소개는 지멘스 PLC가 TIA Portal 소프트웨어를 사용하여 Mech-Mind 시스템과 PROFINET 통신을 수행하는 명령어 설명을 참조하십시오.
사전 준비
-
Mech-Vision 솔루션을 생성합니다. 창 목록에서 솔루션 이름을 마우스 오른쪽 버튼으로 클릭하고 해당 프로젝트를 자동으로 로드하기를 체크합니다. 해당 솔루션 아래의 프로젝트도 자동으로 로드되도록 설정되며, 프로젝트 이름 앞에 특정 프로젝트 번호가 표시됩니다.
-
Mech-Viz 프로젝트를 구축합니다. Mech-Viz 프로젝트 리소스 화면에서 프로젝트 명칭을 마우스 오른쪽 버튼으로 클릭하여 해당 프로젝트를 자동으로 로드하기를 선택합니다.
테스트에 사용된 Mech-Viz 프로젝트에는 아래와 같이 1로 이름이 바뀐 "메시지 분기" 스텝이 포함되어야 합니다.
Mech-Vision에서 비전 포인트를 획득하기
파라미터를 설정하기
-
통신 스위치를 활성화하기: CameraIO 데이터 블록 ToCamera/COMM_ENABLE의 모니터링 값을 더블 클릭하면 값을 변경할 수 있는 팝업 창이 나타납니다. Yes를 클릭합니다.
-
Project tree/Program blocks에서 Main(OB1)을 더블 클릭하고 기능 함수 "MM_Start_Vis"를 Network 2로 드래그하고 "Camera_User".Step_Num==2 이후에 연결합니다.
-
Mech-Vision 프로젝트 번호를 설정합니다. 즉, Mech-Vision 프로젝트 리스트에서 프로젝트 이름 앞의 숫자를 설정합니다. Vision_Proj_Num의 포트 값을 1로 설정합니다. 프로젝트 번호가 1인 Mech-Vision 프로젝트를 실행함을 의미합니다.
-
Mech-Vision 프로젝트가 반환한 포즈 수량을 설정합니다: Req_Pose_Num의 포트 값을 0으로 설정합니다. Mech-Vision가 모든 포즈 결과를 반환함을 의미합니다.
-
로봇이 보내는 이미지 캡처 포즈 유형을 설정합니다. Robot_Pose_Type의 포트 값을 0으로 설정합니다. 프로젝트가 Eye to Hand 모드임을 의미하며 이미지 캡처 포즈를 전송할 필요가 없습니다. 프로젝트가 Eye in Hand 모드인 경우, Robot_Pose_Type 포트 값을 1로 설정하고, 현재 로봇 플랜지 포즈를 Robot_Pose 포트에 설정하십시오.
-
Project tree/Program blocks에서 Camera_User, CameraIO 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Start_Vis" 해당한 포트로 드래그합니다.
-
기능 함수 "MM_Get_VisData"를 Network 3으로, "Camera_User".Step_Num==4 후의 위치로 드래그합니다.
-
Mech-Vision 프로젝트 번호를 설정합니다. 즉, Mech-Vision 프로젝트 리스트에서 프로젝트 이름 앞의 숫자를 설정합니다. Vision_Proj_Num의 포트 값을 1로 설정합니다. 프로젝트 번호가 1인 Mech-Vision 프로젝트의 비전 인식 결과를 획득함을 의미합니다.
-
Project tree/Program blocks에서 Camera_User, CameraIO 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Get_VisData" 해당한 포트로 드래그합니다.
-
Project tree에서 마우스 오른쪽 버튼을 클릭하여 PLC_1을 선택하고 Download to device ‣ Software (only changes)를 클릭합니다.
-
Load preview 창이 나타나면 Load를 클릭하여 PLC에 최신 프로그램을 다운로드합니다.
Mech-Vision 프로젝트 실행을 트리거하기
-
Main[OB1] 창에서 Monitoring on/off 아이콘을 클릭합니다.
-
기능 MM_Start_Vis를 활성화하고(즉, "Camera_User".Step_Num==2를 설정함) "MM_Start_Vis" 입력 측 변수 "Camera_User".Start_Vis를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 Mech-Vision 프로젝트를 실행한 다음 이 변수를 리셋합니다. -
CameraIO 데이터 블록 STATUS_CODE 변수의 반환 값이 1102가 되는지 확인합니다. 이는 프로젝트를 성공적으로 시작함을 의미합니다. 반환 값이 10XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
Mech-Vision에서 계산된 포즈 결과를 획득하기
-
기능 MM_Get_VisData를 활성화하고(즉, "Camera_User".Step_Num==4를 설정함) "MM_Get_VisData" 입력 측 변수 “Camera_User”.Get_VisData를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 비전 포인트를 획득한 다음 이 변수를 리셋합니다. -
CameraIO 데이터 블록 STATUS_CODE 변수의 반환 값이 1100이 되는지 확인합니다. 이는 비전 포인트를 성공적으로 획득함을 의미합니다. 반환 값이 10XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
-
Camera_User 데이터 블록이 반환한 데이터는 다음 그림과 같습니다. 포즈는 TargetPose에 저장됩니다.
자동으로 Mech-Vision에서 비전 결과를 획득하기
Mech-Vision 자동 컨트롤 로직 샘플 파일은 MM_S1_Vis_Basic 샘플 예시를 참조할 수 있습니다.
Mech-Viz에서 계획 경로를 획득하기
파라미터를 설정하기
-
기능 함수 "MM_Empty_Target"를 Network 4로, "Camera_User".Step_Num==6 후의 위치로 드래그합니다.
-
Camera_User 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Empty_Target" 해당한 포트로 드래그합니다.
-
기능 함수 "MM_Start_Viz"를 Network 5로, "Camera_User".Step_Num==10 후의 위치로 드래그합니다.
-
기능 함수 "MM_Set_Branch"를 Network 6로, "Camera_User".Step_Num==16 후의 위치로 드래그합니다.
-
기능 함수 "MM_Get_VizData"를 Network 7로, "Camera_User".Step_Num==18 후의 위치로 드래그합니다.
-
로봇이 보내는 이미지 캡처 포즈 유형을 설정합니다. Robot_Pose_Type의 포트 값을 0으로 설정합니다. 프로젝트가 Eye to Hand 모드임을 의미하며 이미지 캡처 포즈를 전송할 필요가 없습니다. 프로젝트가 Eye in Hand 모드인 경우, Robot_Pose_Type 포트 값을 1로 설정하고, 현재 로봇 플랜지 포즈를 Robot_Pose 포트에 설정하십시오. Camera_User, CameraIO 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Start_Viz" 해당한 포트로 드래그합니다.
-
Mech-Viz 프로젝트의 분기 파라미터를 설정합니다. Branch_Name, Branch_Exit_Port의 값을 1로 설정합니다. Mech-Viz 프로젝트가 분기 1에 도달했을 때 아웃 포트 1을 따라 계속 실행되도록 제어합니다. Camera_User, CameraIO 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Set_Branch" 해당한 포트로 드래그합니다.
-
획득할 경로의 포인트의 포즈 유형을 설정합니다. Request_Pose_Type의 포트 값을 1로 설정합니다. 이렇게 하면 Mech-Viz가 관절 각도 데이터를 반환함을 나타냅니다. Camera_User, CameraIO 데이터 블록을 클릭합니다. 변수의 이름에 따라 세부 보기에서 변수를 "MM_Get_VizData" 해당한 포트로 드래그합니다.
-
Project tree에서 마우스 오른쪽 버튼을 클릭하여 PLC_1을 선택하고 Download to device ‣ Software (only changes)를 클릭합니다.
-
Load preview 창이 나타나면 Load를 클릭하여 PLC에 최신 프로그램을 다운로드합니다.
Mech-Viz 프로젝트 실행을 트리거하기
-
Main[OB1] 창에서 Monitoring on/off 아이콘을 클릭합니다.
-
기능 MM_Empty_Target를 활성화하고(즉, "Camera_User".Step_Num==6을 설정함) "MM_Empty_Target" 입력 측 변수 “Camera_User”.Start_Empty를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 마지막으로 획득한 비전 결과가 지우진 다음 이 변수를 리셋합니다. -
Camera_User 데이터 블록에서 Target Pose 변수 값이 지워집니다.
-
기능 MM_Start_Viz를 활성화하고(즉, "Camera_User".Step_Num==10을 설정함) "MM_Start_Viz" 입력 측 변수 “Camera_User”.Start_Viz를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 Mech-Viz 프로젝트를 실행한 다음 이 변수를 리셋합니다. -
CameraIO 데이터 블록 STATUS_CODE 변수의 반환 값이 2103이 되는지 확인합니다. 이는 프로젝트를 성공적으로 시작함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
Mech-Viz 분기 아웃 포트를 설정하기
-
기능 MM_Set_Branch를 활성화하고(즉, "Camera_User".Step_Num==16을 설정함) "MM_Set_Branch" 입력 측 변수 “Camera_User”.Set_Branch를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 Mech-Viz 분기 아웃 포트를 선택한 다음 이 변수를 리셋합니다. -
CameraIO 데이터 블록 STATUS_CODE 변수의 반환 값이 2105가 되는지 확인합니다. 이는 분기 아웃 포트를 성공적으로 설정함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
Mech-Viz에서 계획된 경로를 획득하기
-
기능 MM_Get_VizData를 활성화하고(즉, "Camera_User".Step_Num==18을 설정함) "MM_Get_VizData" 입력 측 변수 “Camera_User”.Get_VizData를 마우스 오른쪽 버튼 클릭하고
을 순서대로 선택하여 Mech-Viz 계획 경로를 획득한 다음 이 변수를 리셋합니다. -
CameraIO 데이터 블록 STATUS_CODE 변수의 반환 값이 2100이 되는지 확인합니다. 이는 계획 경로를 성공적으로 획득함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
-
Camera_User 데이터 블록에서 TargetPose 변수의 반환 값은 아래 그림과 같습니다.
자동으로 Mech-Viz에서 계획 경로를 획득하기
Mech-Viz 자동 컨트롤 로직 샘플 파일은 MM_S5_Viz_SetBranch 샘플 예시를 참조할 수 있습니다.