통신 구성 및 샘플 프로그램 사용
TIA Portal 소프트웨어를 사용하여 Siemens PLC Snap 7 프로토콜을 기반으로 Siemens SIMATIC S7 PLC와 Mech-Vision 및 Mech-Viz 소프트웨어 간의 통신은 다음과 같은 프로세스가 포함됩니다.
하드웨어 및 소프트웨어 요구 사항
하드웨어
-
지원되는 Siemens S7 시리즈 PLC:
-
S7-300 : 통합 PN 네트워크 포트 또는 CP343-1
-
S7-400 : 통합 PN 네트워크 포트 또는 CP443-1
-
S7-1200 : 별도의 모듈 요구 사항 없음
-
S7-1500 : 별도의 모듈 요구 사항 없음
-
-
전원 어댑터 : 220V AC → 24V DC
-
Mech-Mind 비전 시스템 IPC 또는 호스트
-
네트워크 케이블
소프트웨어
-
Siemens PLC 프로그래밍 소프트웨어 TIA Portal V15.1.
-
Mech-Vision 및 Mech-Viz 소프트웨어 버전은 2.0.0 이상입니다.
-
Siemens Tia Portal 소프트웨어와 Mech-Vision 및 Mech-Viz 소프트웨어 간의 Siemens PLC Snap 7 통신을 수행하는 인터페이스 파일:
-
MM Interface.db. (데이터 통신에 사용됨)
-
MM Interface Program.scl. (각 인터페이스 명령어 기능을 구현하는 데 사용됨)
-
|
PLC 프로젝트 만들기 및 구성하기
PLC 프로젝트를 만들기
-
TIA Portal 소프트웨어를 열고 Create new project를 클릭하고 Project name을 입력합니다. Path에서 경로를 선택하고 Create 버튼을 클릭하면 새 창이 열립니다. Open project view를 클릭합니다.
-
Project tree 패널에서 Add new device를 더블 클릭하여 새 장치 추가 화면에 들어가서 Controllers에서 PLC와 일치하는 모듈을 선택하고 장치 이름을 기본값으로 두면 됩니다. 그 다음 OK 버튼을 클릭합니다.
-
device configuration 페이지에서 Device view를 클릭하고 PLC_1의 이더넷 아이콘을 더블 클릭합니다. Properties/General 페이지에서 Ethernet address를 클릭하여 IP 주소를 192.168.1.22로 설정하고 서브넷 마스크를 기본값으로 두면 됩니다. (비전 IPC와 같은 네트워크 세그먼트에 있어야 함)
-
Project tree의 PLC_1을 선택하고 우클릭하여 Properties를 선택합니다. 팝업된 창에서 순서대로
인터페이스에 들어갑니다. Access level 패널에서 Full access (no protection) 옵션을 체크합니다. Connection mechanisms 인터페이스에서 Permit access with PUT/GET communication from remote partner 옵션을 체크하고 OK를 클릭하여 프로젝트를 저장합니다.
S7 통신 인터페이스 파일 가져오기
-
Project tree에서 External source files를 클릭하고 Add new external file을 더블 클릭합니다. 팝업된 창에서 MM Interface.db, MM Interface Program.scl 파일을 선택하고 Open 버튼을 클릭하여 새 프로젝트에 가져옵니다.
-
새로 가져온 외부 소스 파일을 선택하고 (먼저 MM Interface.db를 선택하고 다음 MM Interface Program.scl을 선택함) 우클릭하여 Generate blocks from source를 선택합니다. 팝업된 창에서 OK를 클릭합니다. (이 작업을 수행하면 프로젝트 내의 동일한 이름을 가진 기능 함수와 데이터 블록이 덮어쓰기되며, 사용되지 않은 번호가 자동으로 선택되어 번호로 지정됩니다)
위의 순서대로 파일을 선택하지 않으면 로그 창에서 오류 메시지가 표시됩니다. -
외부 소스 파일이 생성한 기능 함수, 데이터 블록은 다음과 같습니다. MM Interface DB의 번호는 Mech-Vision "로봇 통신 구성"의 DB 번호와 일치해야 합니다. Camera_User DB는 사용자 데이터를 저장하는 데 사용됩니다.
-
프로젝트에서 MM 함수와 블록의 유지 관리를 용이하게 하려면 Program blocks를 우클릭하고 Add new group을 선택한 다음 "Mech-Mind"라고 이름을 지정합니다. 새로 생성된 모든 기능 함수와 데이터 블록을 선택하고 해당 그룹 폴더로 옮깁니다.
S7 통신 인터페이스 파일 다운로드
-
Save project를 클릭하고 project tree 패널에서 새 프로젝트 PLC_1을 우클릭하여 선택합니다. 순서대로
를 선택하면 다운로드 창이 팝업됩니다. -
팝업된 다운로드 창에서 PG/PC interface를 network card driver connected to PLC로, Connection to interface/subnet를 Direct at slot '1 X1'로, Select target device를 Show all compatible devices로 선택하고 Start search를 클릭합니다. 감지된 CPU 장치를 선택하고 Download를 클릭하고 다운로드가 완료되면 Finish를 클릭합니다.
IPC 구성 및 통신 시작
"로봇 통신 구성" 설정
-
IPC의 IP 주소와 PLC의 IP가 같은 네트워크 세그먼트에 위치하도록 설정합니다. 예를 들어 192.168.1.10과 같은 주소로 설정합니다. 그 후 IPC에서 cmd 명령 프롬프트를 열고 (검색을 통해 cmd를 입력하여 열 수 있습니다), ping xxx.xxx.xxx.xxx (PLC의 IP 주소)를 입력하여 IPC와 PLC 간의 연결이 정상적인지 테스트합니다.
-
Mech-Vision 소프트웨어를 시작합니다. 표시되는 인터페이스에 따라 다음의 적절한 방법을 선택하여 솔루션을 생성하십시오.
-
시작 화면이 나타나면 새로운 솔루션 만들기를 클릭하여 새로운 솔루션을 만듭니다.
-
메인 인터페이스가 나타나면 메뉴 바에서
을 차례로 클릭하여 새로운 솔루션을 만듭니다.
-
-
Mech-Vision 툴 바에서 로봇 통신 구성을 클릭합니다.
-
로봇 통신 구성 창에서 다음 구성을 수행합니다.
-
로봇 선택 드롭다운 메뉴를 클릭하여 실제 사용 중인 로봇에 따라 다음 설명을 참조하고 목록에 있는 로봇 또는 *사용자 지정 로봇*을 선택합니다. 마지막으로 다음을 클릭합니다.
-
목록에 있는 로봇: 대부분의 로봇에 적합합니다. 로봇 모델 선택을 클릭하여 구체적인 모델을 선택할 수 있습니다.
-
사용자 지정 로봇: 갠트리 로봇 또는 위 브랜드 이외의 로봇에 적용 가능합니다. 후속은 로봇 오일러 각 유형 및 *로봇 좌표계*를 선택해야 합니다.
-
-
통신 방식의 인터페이스 서비스 유형은 표준 인터페이스로, 프로토콜은 Siemens PLC Client로 선택하고 슬롯은 1로, DB 번호는 2로 설정합니다.(즉, PLC 프로젝트 "MM Interface"의 번호)
-
PLC IP 주소는 192.168.1.22로 설정합니다.(즉, 이전에 설정된 PLC IP 주소)
-
(선택 사항) 솔루션을 열 때 인터페이스 서비스 자동 활성화를 선택합니다.
-
응용을 클릭합니다.
-
통신이 성공한지 여부 확인
-
Mech-Vision 메인 화면에서 툴 바에 있는 “인터페이스 서비스” 기능이 활성화되어 있는지 확인하십시오. 연결이 성공하면 Mech-Vision 로그 창의 콘솔 탭에서 Connect to PLC server successfully 메시지가 나타납니다. 실패하면 구성을 확인하고 물리적 연결에 오류가 있는지 확인하세요.
-
TIA Portal 소프트웨어 인터페이스에 돌아가서 PLC_1 장치를 선택하고 Go online을 클릭합니다.
-
에서 MM Interface DB를 더블 클릭하고 Monitor all를 클릭합니다. 연결이 성공하면 Heartbeat 하트비트 신호 모니터링 값은 계속해서 변경됩니다.
비전 프로젝트 테스트
이 섹션에서는 Siemens PLC Client 인터페이스 프로그램을 사용하여 Mech-Vision 프로젝트를 트리거하고 비전 포인트를 획득하는 방법과, Mech-Viz 프로젝트를 트리거하고 계획된 경로를 획득하는 방법에 대해 주로 설명합니다. Siemens PLC Snap 7 통신 변수의 구체적인 기능과 소개는 DB 블록 명령어 설명을 참조하십시오.
사전 준비
-
Mech-Vision 소프트웨어로 돌아가서 Mech-Vision 프로젝트를 구축합니다. 창 목록에서 솔루션 이름을 마우스 오른쪽 버튼으로 클릭하고 해당 프로젝트를 자동으로 로드하기를 체크합니다. 해당 솔루션 아래의 프로젝트도 자동으로 로드되도록 설정되며, 프로젝트 이름 앞에 특정 프로젝트 번호가 표시됩니다.
-
Mech-Viz 프로젝트를 구축합니다. Mech-Viz 프로젝트 리소스 화면에서 프로젝트 명칭을 마우스 오른쪽 버튼으로 클릭하여 해당 프로젝트를 자동으로 로드하기를 선택합니다.
테스트에 사용된 Mech-Viz 프로젝트에는 아래와 같이 스텝 이름이 1인 분기 스텝이 포함되어야 합니다.
Mech-Vision에서 비전 포인트를 획득하기
파라미터를 설정하기
-
TIA Portal 소프트웨어
에서 Main[OB1]을 더블 클릭하여 메인 프로그램을 열고 MM_Start_Vis 기능을 Network 1로 드래그합니다. -
"MM_Start_Vis"의 EN 포트는 스텝 ID를 비교하는 FB와 연결되며, 입력 포트인 Start_Vision에는 상승 에지를 감지하는 FB가 정의됩니다. Vision_Proj_Num의 포트 값을 1로 설정하면 번호가 1인 Mech-Vision 프로젝트가 실행될 것으로 의미합니다.
-
Req_Pose_Num의 포트 값을 0으로 설정합니다. Mech-Vision가 모든 포즈 결과를 반환함을 요구합니다.
-
Robot_Pose_Type의 포트 값을 0으로 설정하면, Eye to Hand 방식과 같이 이미지 캡처 시 로봇의 포즈가 필요 없음을 나타냅니다.
-
project tree에서 Camera_User 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Start_Vis" 해당한 입력 포트로 드래그합니다. MM Interface 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Start_Vis" 해당한 출력 포트로 드래그합니다.
-
MM_Get_VisData 기능을 메인 프로그램의 Network 2로 드래그합니다. EN 포트는 스텝 ID를 비교하는 FB와 연결되며, 입력 포트인 Start_Vision에는 상승 에지를 감지하는 FB가 정의됩니다.
-
Vision_Proj_Num의 포트 값을 1로 설정하면 Mech-Vision 프로젝트 번호가 1인 비전 인식 결과를 획득할 수 있습니다.
-
project tree에서 Camera_User 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Get_VisData" 해당한 입력 포트로 드래그합니다. MM Interface 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Get_VisData" 해당한 출력 포트로 드래그합니다.
-
project tree에서 PLC_1을 우클릭하여 선택하고 순서대로
를 선택합니다. 팝업된 다운로드 인터페이스에서 Load를 클릭하여 PLC에 최신 프로그램을 다운로드합니다.
Mech-Vision 프로젝트 실행을 트리거하기
-
Main[OB1] 메인 창에서 Enable/Disable Monitoring
를 클릭하여 모니터링 기능을 활성화합니다.
-
"MM_Start_Vis"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 6으로 변경합니다. 입력 변수인 "Camera_User".Start_Vis를 우클릭하여 값을 1로 변경하여 Mech-Vision 프로젝트를 트리거한 다음, 해당 변수를 리셋합니다. 이때 MM Interface DB의 StatusCode 변수의 반환 값이 1102로 되면 프로젝트를 성공적으로 시작함을 의미합니다. 반환 값이 10XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
Mech-Vision에서 계산된 포즈 결과를 획득하기
"MM_Start_Vis"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 8로 변경합니다. 입력 변수인 "Camera_User".Get_VisData를 우클릭하여 값을 1로 변경하여 비전 포인트를 획득한 다음, 해당 변수를 리셋합니다. MM Interface DB StatusCode 변수의 반환 값이 1100으로 되면 프로젝트를 성공적으로 시작함을 의미합니다. 반환 값이 10XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.

MM 인터페이스 데이터 블록은 다음 데이터를 반환합니다. Number of Pose Sent 값은 1이며, 이는 포즈 1개가 수신되었음을 나타냅니다. 포즈는 TargetPose에 저장됩니다.

Mech-Vision 자동 컨트롤 로직 샘플 파일
Mech-Vision 자동 컨트롤 로직 샘플 파일은 MM_S1_Vis_Basic 샘플 예시를 참조할 수 있습니다.
Mech-Viz에서 계획 경로를 획득하기
파라미터를 설정하기
-
MM_Empty_Target 기능을 메인 프로그램의 Network 3으로 드래그합니다. EN 포트는 스텝 번호를 비교하는 FB와 연결하고, 입력 포트인 Start_Empty에는 평상시 열린 접점 FB를 정의합니다.
-
데이터 블록 Camera_User와 MM Interface를 각각 클릭한 후, 상세 보기에서 변수들을 이름에 맞게 "MM_Empty_Target" 해당한 입력 포트로 드래그합니다.
-
기능 함수 MM_Start_Viz, MM_Set_Branch, MM_Get_VizData를 각각 Network 4, Network 5, Network 6으로 드래그합니다.
-
Robot_Pose_Type의 포트 값을 0으로 설정하면, Eye to Hand 방식과 같이 이미지 캡처 시 로봇의 포즈가 필요 없음을 나타냅니다. Camera_User 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Start_Viz" 해당한 입력 포트로 드래그합니다.
-
Branch_Name, Branch_Exit_Port의 값을 1로 설정합니다. Mech-Viz 프로젝트가 메시지 분기 1에 도달했을 때 아웃 포트 1을 따라 계속 실행되도록 제어합니다. Camera_User 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Set_Branch" 해당한 입력 포트로 드래그합니다.
-
Request_Pose_Type의 포트 값을 1로 설정합니다. 이렇게 하면 Mech-Viz가 관절 각도 데이터를 반환함을 나타냅니다. Camera_User 블록을 클릭하고 변수의 이름에 따라 세부 보기에서 변수를 "MM_Get_VizData" 해당한 입력 포트로 드래그합니다.
이곳의 Request_Pose_Type와 MM_Start_Vis, MM_Start_Viz 기능에 있는 Robot_Pose_Type는 모두 MM Interface 데이터 블록 내 동일한 변수인 Pose Type에 해당하므로, 이들 값이 서로 다르게 설정되면 동시에 적용될 수 없습니다. -
project tree에서 PLC_1을 우클릭하여 선택하고 순서대로
를 선택합니다. 팝업된 다운로드 인터페이스에서 Load를 클릭하여 PLC에 최신 프로그램을 다운로드합니다.
Mech-Viz 프로젝트 실행을 트리거하기
-
Main[OB1] 창에서 Enable/Disable Monitoring
아이콘을 클릭합니다.
-
"MM_Empty_Target"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 14로 변경합니다. 입력 변수인 "Camera_User".Start_Empty를 우클릭하여 값을 1로 변경하여 마지막으로 획득된 비전 결과를 지운 다음, 해당 변수를 리셋합니다.
이때 MM Interface 데이터 블록 Target Pose의 변수 값이 지우집니다.
-
"MM_Start_Viz"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 18로 변경합니다. 입력 변수인 "Camera_User".Start_Viz를 우클릭하여 값을 1로 변경하여 Mech-Viz 프로젝트를 트리거한 다음, 해당 변수를 리셋합니다. 이때 StatusCode 변수가 반환한 값이 2103으로 변경되면 프로젝트를 성공적으로 시작함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.
Mech-Viz 분기 아웃 포트를 설정하기
"MM_Set_Branch"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 24로 변경합니다. "Camera_User".Set_Branch를 우클릭하여 값을 1로 변경하여 Mech-Viz 프로젝트가 메시지 분기 1에 도달할 때 아웃 포트 1에 따라 계속 실행한 다음, 해당 변수를 리셋합니다. 이때 StatusCode 변수가 반환한 값이 2105로 변경되면 메시지 분기 아웃 포트를 성공적으로 설정함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.


Mech-Viz에서 계획된 경로를 획득하기
"MM_Get_VizData"의 EN 포트에 연결된 "Camera_User".Step_Num을 우클릭하여 값을 26으로 변경합니다. 입력 변수인 "Camera_User".Get_VizData를 우클릭하여 값을 1로 변경하여 Mech-Viz 계획 경로를 획득한 다음, 해당 변수를 리셋합니다. 이때 StatusCode 변수가 반환한 값이 2100로 변경되면 Mech-Viz 계획 경로를 성공적으로 획득함을 의미합니다. 반환 값이 20XX인 경우 표준 인터페이스 상태 코드 및 오류 분석 내용을 참조하여 문제를 해결하십시오.

MM Interface 데이터 블록의 반환 데이터는 다음과 같습니다. Number of Pose Sent 값이 6이면 6개의 관절 각도 데이터를 획득한 것을 의미하며, 해당 데이터는 TargetPose에 저장됩니다. Index of Vision Picking Point 값이 3이면 비전 이동 웨이포인트가 경로에서 세 번째 위치에 있음을 나타냅니다.

Mech-Viz 자동 컨트롤 로직 샘플 파일
Mech-Viz 자동 컨트롤 로직 샘플 파일은 MM_S5_Viz_SetBranch 샘플 예시를 참조할 수 있습니다.