Skip to content

작업 파일 전송

작업 파일 명령 없이 실행하려면, 작업 파일에 명령을 삽입할 때 0x3121을 사용하십시오

0x3001 FILE_INSTRUCTION

티치 펜던트가 작업 파일 명령을 전송할 때 이 명령을 사용합니다.

json
{
    "robot": 1,      // 로봇 번호
    "cmd->toJson()" // 명령 json 목록
}

작업 파일 송수신 과정

시나리오 1: 컨트롤러의 작업 파일이 티치 펜던트보다 적음, 티치 펜던트가 컨트롤러에 작업 파일을 업로드해야 함

단계 1: 티치 펜던트가 컨트롤러에 컨트롤러 ID 가져오기 명령 전송

0x5052 IDENTIFY_NUMBER_INQUIRE

컨트롤러 응답: 0x5053 IDENTIFY_NUMBER_RESPOND

json
{
    "controllerID": "4DC9F0249098C82E" // 컨트롤러 ID
}
파라미터타입설명
controllerIDstring컨트롤러 ID

연결된 컨트롤러 ID를 가져온 후, 작업 파일 동기화 시 이 ID가 알려진 ID인지 판단해야 합니다. 알려진 ID인 경우 경로 dir/controllerID가 존재하는지 판단하고, 존재하면 아무 작업도 하지 않습니다; 존재하지 않으면 작업 파일 경로를 생성합니다. 형식: dir/controllerID/robotJob/R1. 여러 로봇인 경우 R1-4를 나타냅니다.

단계 2: 티치 펜던트가 컨트롤러에 작업 파일 목록 가져오기 명령 전송

0x5532 JOBFILE_LIST_INQUIRE

컨트롤러 응답: 0x5533 JOBFILE_SUM_RESPOND

json
{
    "absolutepath": ["/job/R1/", "/job/R2/", "/job/R3/", "/job/R4/"], // 작업 파일의 폴더 목록
    "jobfilenum": [2, 33, 233, 666]                                   // 작업 파일 폴더에 포함된 파일 개수
}
파라미터타입설명
absolutepatharray작업 파일의 폴더 목록
jobfilenumarray각 작업 파일 폴더에 포함된 파일 개수

이때 다운로드 정지 타이머를 시작하고 5초로 설정합니다. 이는 파일 다운로드 과정에서 대기 시간 초과 여부를 판단하는 데 사용됩니다.

단계 3: 컨트롤러가 능동적으로 티치 펜던트에 작업 파일 목록 전송

0x5534 JOBFILE_LIST_RESPOND

json
{
    "robot": 1,
    "listnum": 2, // 최대 10개
    "jobfilelist": [
        {
            "name": "xxx.JBR", // 작업 파일 이름
            "MD5": "123"       // MD5 값, 파일이 동일한지 판단하는 데 사용
        },
        {
            "name": "yyy.JBR",
            "MD5": "132"
        }
    ]
}
파라미터타입설명
robotint로봇 번호
listnumint목록 수량, 최대 10개
jobfilelistarray작업 파일 목록

컨트롤러가 응답하는 파라미터의 역할은 로컬 작업 파일과 비교하는 것입니다. 파일이 동일한 경우 MD5 값이 동일한지 판단하고, MD5 값이 동일하면 처리하지 않으며, 다르면 로컬 파일을 삭제하고 다시 다운로드해야 합니다. 다운로드해야 할 파일 기록: 파일 이름과 경로를 다운로드 작업 파일 목록에 저장합니다 (절대 경로 포함), 파일이 다른 경우에도 다운로드해야 할 파일을 목록에 기록합니다.

단계 4: 파일 전송 연결

파일 다운로드 및 업로드에 대해, 티치 펜던트는 5000 포트에 연결하여 파일 전송을 수행해야 합니다 (명령 등의 명령 전송은 6000 포트를 사용).

단계 5: 티치 펜던트와 컨트롤러 파일 전송 네트워크가 연결됨, 파일 전송 시작

단계 6: 티치 펜던트가 업로드해야 할 작업 파일의 이름과 크기 전송

0x5501 REQUEST_UPLOAD_FILE

json
{
    "name": "vxWorks", // 티치 펜던트가 전송하는 파일 이름
    "size": 4096       // 티치 펜던트가 전송하는 파일 크기
}
파라미터타입설명
namestring티치 펜던트가 전송하는 파일 이름
sizeint티치 펜던트가 전송하는 파일 크기

티치 펜던트가 파일 업로드를 요청하기 시작하고, 컨트롤러의 응답을 기다립니다.

단계 7: 컨트롤러가 업로드 동의 여부 응답

0x5502 REQUEST_UPLOAD_RESPOND

json
{
    "answer": "yes" // "yes"는 파일 업로드 요청에 동의함을 의미, "busy"는 컨트롤러가 사용 중임을 의미
}
파라미터타입설명
answerstringyes=업로드 동의, busy=컨트롤러 사용 중

단계 8: 티치 펜던트가 "yes"를 수신하고 파일 전송 시작

0x5512

파일은 바이너리 스트림으로 기록되며, 슬라이싱하여 순환 전송합니다. 남은 파일 크기가 규정된 값(2*1024)을 초과하면, 매번 규정된 데이터 크기를 전송하고, 남은 파일 크기가 매번 전송하는 데이터 크기보다 작아지면 남은 파일 데이터를 전송 완료합니다.

단계 9: 컨트롤러가 파일 수신 완료

0x5513 RECEIVE_UPLOAD_FINISH

json
{
    "finish": true // 다운로드 타이머 정지 대기, 새로 업로드된 파일 가져오기
}
파라미터타입설명
finishbooltrue=다운로드 타이머 정지 대기, 새로 업로드된 파일 가져오기

단계 10: 여러 작업 파일을 컨트롤러에 동기화해야 하는 경우 단계 6~9 반복


시나리오 2: 컨트롤러의 작업 파일이 티치 펜던트보다 많음, 티치 펜던트가 컨트롤러에서 작업 파일을 다운로드해야 함

1~5 업로드/다운로드 통신은 동일, 티치 펜던트와 컨트롤러 파일 전송 네트워크가 연결됨, 파일 전송 시작.

단계 1: 티치 펜던트가 컨트롤러에 컨트롤러 ID 가져오기 명령 전송

0x5052 IDENTIFY_NUMBER_INQUIRE

컨트롤러 응답: 0x5053 IDENTIFY_NUMBER_RESPOND

json
{
    "controllerID": "4DC9F0249098C82E" // 컨트롤러 ID
}
파라미터타입설명
controllerIDstring컨트롤러 ID

연결된 컨트롤러 ID를 가져온 후, 작업 파일 동기화 시 이 ID가 알려진 ID인지 판단해야 합니다. 알려진 ID인 경우 경로 dir/controllerID가 존재하는지 판단하고, 존재하면 아무 작업도 하지 않습니다; 존재하지 않으면 작업 파일 경로를 생성합니다. 형식: dir/controllerID/robotJob/R1. 여러 로봇인 경우 R1-4를 나타냅니다.

단계 2: 티치 펜던트가 컨트롤러에 작업 파일 목록 가져오기 명령 전송

0x5532 JOBFILE_LIST_INQUIRE

컨트롤러 응답: 0x5533 JOBFILE_SUM_RESPOND

json
{
    "absolutepath": ["/job/R1/", "/job/R2/", "/job/R3/", "/job/R4/"], // 작업 파일의 폴더 목록
    "jobfilenum": [2, 33, 233, 666]                                   // 작업 파일 폴더에 포함된 파일 개수
}
파라미터타입설명
absolutepatharray작업 파일의 폴더 목록
jobfilenumarray각 작업 파일 폴더에 포함된 파일 개수

이때 다운로드 정지 타이머를 시작하고 5초로 설정합니다. 이는 파일 다운로드 과정에서 대기 시간 초과 여부를 판단하는 데 사용됩니다.

단계 3: 컨트롤러가 능동적으로 티치 펜던트에 작업 파일 목록 전송

0x5534 JOBFILE_LIST_RESPOND

json
{
    "robot": 1,
    "listnum": 2, // 최대 10개
    "jobfilelist": [
        {
            "name": "xxx.JBR", // 작업 파일 이름
            "MD5": "123"       // MD5 값, 파일이 동일한지 판단하는 데 사용
        },
        {
            "name": "yyy.JBR",
            "MD5": "132"
        }
    ]
}
파라미터타입설명
robotint로봇 번호
listnumint목록 수량, 최대 10개
jobfilelistarray작업 파일 목록

컨트롤러가 응답하는 파라미터의 역할은 로컬 작업 파일과 비교하는 것입니다. 파일이 동일한 경우 MD5 값이 동일한지 판단하고, MD5 값이 동일하면 처리하지 않으며, 다르면 로컬 파일을 삭제하고 다시 다운로드해야 합니다. 다운로드해야 할 파일 기록: 파일 이름과 경로를 다운로드 작업 파일 목록에 저장합니다 (절대 경로 포함), 파일이 다른 경우에도 다운로드해야 할 파일을 목록에 기록합니다.

단계 4: 파일 전송 연결

파일 다운로드 및 업로드에 대해, 티치 펜던트는 5000 포트에 연결하여 파일 전송을 수행해야 합니다 (명령 등의 명령 전송은 6000 포트를 사용).

단계 5: 티치 펜던트와 컨트롤러 파일 전송 네트워크가 연결됨, 파일 전송 시작

단계 6: 티치 펜던트가 목록의 작업 파일 이름 전송 시작

0x5504

json
{
    "name": "job/R1/WWWWW.JBR" // 다운로드해야 할 작업 파일 이름
}
파라미터타입설명
namestring다운로드해야 할 작업 파일 이름 (경로 포함)

파라미터 name은 컨트롤러에서 작업 파일의 작업 파일 경로와 이름입니다. 0x5533 및 0x5534에서 컨트롤러가 티치 펜던트에 경로와 이름을 전송했습니다. 티치 펜던트가 작업 파일 동기화를 시작하라고 알립니다.

단계 7: 컨트롤러 응답

0x5505

json
{
    "answer": "yes",             // 컨트롤러가 다운로드에 동의하는지 여부
    "name": "job/R1/WWWWW.JBR",  // 다운로드해야 할 작업 파일 이름
    "size": 217                  // 이 작업 파일의 크기
}
파라미터타입설명
answerstring컨트롤러가 다운로드에 동의하는지 여부
namestring다운로드해야 할 작업 파일 이름
sizeint이 작업 파일의 크기

단계 8: 컨트롤러가 능동적으로 전송

0x5522

단계 9: 티치 펜던트가 파라미터를 성공적으로 수신했는지 확인

0x5523

json
{
    "finish": true // 티치 펜던트 수신 성공
}
파라미터타입설명
finishbool티치 펜던트 수신 성공

위의 과정은 하나의 작업 파일 다운로드 완료를 나타냅니다. 다운로드해야 할 작업 파일이 여러 개 있으면, 0x5534에 저장된 목록에서 하나를 빼고 위의 과정을 반복합니다.