Update관련 TechNote가 다양하게 있어, 상황에 따라 참고해야 할 순서와 간단한 설명을 나타내는 표입니다. 아래 표를 참고하여 상황에 맞게 TechNote의 참고 순서를 확인하시기 바랍니다.
CASE 1 : SmartUpdate를 사용하여 업데이트 하는 경우순서 | 제목 및 설명 |
---|---|
1 |
[필독]
16. 장치 응용 프로그램 업데이트 처리 방식 SmartUpdate의 처리 방식과 흐름도를 설명하는 문서입니다. |
2 |
[참고]
18. FTP 서버를 이용하여 IEC-Series의 장치 응용 프로그램 업데이트하는 방법 FTP 서버를 이용하여 업데이트 하는 방법입니다. |
본 자료는
1. FTP를 사용하는 이유
2. FTP 서버 구축 방법
3. 파일의 버전 정보 설정 방법
4. FTP를 활용한 SmartUpdate 처리과정
5. SmartFTPUpdate 모듈 프로젝트 추가 방법
6. SmartFTPUpdate 사용 예제
순서로 진행합니다.
1. 기존 SmartUpdate만 사용할 경우, 현장에서 제품을 업데이트하려면 업데이트 파일이 담긴 USB또는 SD카드를 직접 IEC-Series 제품과 연결해야 하는 불편함이 있었습니다. 하지만 현장에 네트워크 환경이 갖춰져 있다면, FTP 서버에 업데이트 파일을 업로드해 두기만 하면 제품이 자동으로 네트워크를 통해 업데이트 여부를 확인하고 필요한 파일을 다운로드할 수 있습니다.
2. FTP 서버는 프로그램을 다운로드한 후 간단한 설정만으로 바로 적용할 수 있을 만큼 구축과 적용이 쉽습니다. FTP 서버 구축 경험이 없더라도 본 문서를 참고하여 서버를 설정하고 프로그램에 적용할 수 있습니다.
본 예제는 FileZilla Server 를 내부 IP에서 사용하여 테스트 되었으며, FileZilla Server를 사용하여 서버를 구축하는 방법을 설명하고 있습니다.
-
[STEP-1] FileZilla 홈페이지에서 FileZilla Server를 다운로드 받습니다.
-
[STEP-2] 다운로드 받은 파일을 설치합니다.
이 때 설정은 기본값으로 설정해도 무방하며 사용환경에 따라 변경하시기 바랍니다.
-
[STEP-3] 관리자 비밀번호를 설정합니다.
-
[STEP-4] 서버에 연결합니다.
Host, Port는 변경하지 않고, Password는 [STEP-3]에서 설정한 Password 입니다.
-
[STEP-5] Crtl+F를 눌러 설정화면에 들어간 후 Server listeners 에서 현재 컴퓨터의 IP 주소를 추가합니다.
Port는 내부망에서 접속 하므로 21로 고정합니다.
Protocol은 "Explicit FTP over TLS and insecure plain FTP"로 고정합니다.
-
[STEP-1] CMD(명령 프롬포트)를 실행합니다.
-
[STEP-2] ipconfig 명령어를 입력합니다.
-
[STEP-3] IPv4 주소를 확인합니다.
-
[STEP-6] 클라이언트 사용자가 접속했을 때 접근 가능한 폴더를 미리 생성합니다.
-
[STEP-7] 사용자 계정 추가하기
클라이언트에서 서버로 접속할 때 사용할 사용자 계정을 만들고 비밀번호 설정합니다. 이 때 이름과 비밀번호는 클라이언트에서 접속할 때 사용됩니다.
// Client 관련 정보 설정
// 사용자 접속 이름을 설정합니다.
smartFTP1.UserID = "Test";
// 사용자 접속 비밀번호를 설정합니다.
smartFTP1.Password = "1234"; -
[STEP-8] 사용자 계정의 디렉토리 경로 지정.
[STEP-7]에서 만든 사용자 계정에 디렉토리 경로를 지정합니다.
Virtual path는사용자가 FTP 클라이언트에서 보게 되는 루트 디렉토리, 즉“표시 이름”이고 Native path는 실제 서버에 존재하는 디렉토리 입니다.
Virtual path는 "/"하나만 사용해도 무방하며 Native path는 [STEP-6]에서 만든 폴더의 경로를 지정하면 됩니다.
//[CASE-1] Virtual path를 "/"로 설정한 경우
smartFTP1.FileDownload("//RemoteUpdate.exe, "Flash Disk\\UpdateFiles");
//[CASE-2] Virtual path를 "/test"로 설정한 경우
smartFTP1.FileDownload("//test//RemoteUpdate.exe, "Flash Disk\\UpdateFiles");
- [STEP-9] 윈도우 방화벽 해제
-
1) 제어판 > Windows Defender 방화벽 > Windows Defender 방화벽을 통해 앱 또는 기능 허용 클릭
-
2)설정 변경 > 다른앱 허용 > 찾아보기 클릭
-
3) Filezilla Server 설치경로 에서 Filezilla-server.exe 클릭
(위치 미변경시 C드라이브 Program Files 폴더 안에 있습니다.) -
4) Filezilla Server 개인, 공용 모두 체크 후 확인
프로그램 실행 시 불필요하게 FTP 서버에서 파일을 다운로드하지 않도록 버전 정보를 활용합니다.
프로그램의 버전 비교 시, 현재 실행 중인 프로그램은 Assembly 버전 정보를 사용하고, 업데이트 대상 프로그램은 파일명에서 언더바("_") 이후의 문자열을 버전 정보로 인식합니다.
이를 위해, FTP 서버에 업로드되는 응용 프로그램의 이름은 반드시 파일이름_버전정보.exe 형식(예시: SmartUpdate_1.0.0.2.exe)이어야 합니다. 또한 버전 정보 앞에 오는 구분용 언더바("_") 외에는 파일 이름에 언더바를 사용할 수 없습니다.

// 현재 실행중인 프로그램의 버전
string nowVer = Assembly.GetExecutingAssembly().GetName().Version.ToString();
FTP에 업데이트 파일을 업로드시 ~.exe의 파일명을 다음의 형식으로 변경하여 업로드 하시기 바랍니다.
형식 : 파일이름_버전정보.exe (예시 : SmartFTPUpdate_1.0.0.2.exe)

4. FTP를 활용한 SmartUpdate 처리과정
업데이트는 exe 파일 버전을 기준으로 진행되며, 버전이 다를 경우 모든 파일을 다운로드합니다. 이후 SmartUpdate에서 다운로드된 파일과 현재 실행중인 파일의 바이너리 데이터를 비교하여 중복되는 파일은 제외하고 업데이트를 적용합니다. 자세한 내용은 아래 그림을 참고하시기 바랍니다.


단편화에 관한 자세한 내용은 “자료실 > Tech Note > 79. 단편화 발생에 따른 외부저장장치(USB 메모리, SD Card) 운영 방식”을 참고하시기 바랍니다.
5. SmartFTPUpdate 모듈 프로젝트 추가 방법
이 모듈은 사용자가 기존 프로젝트에 큰 변경 없이 간단한 코드의 추가로 쉽게 적용할 수 있습니다. 아래 STEP에서 SmartFTPUpdate 모듈의 특징 및 프로젝트에 추가하는 방법을 확인해보시기 바랍니다.
-
[STEP-1] 예제 코드 복사 후 적용할 프로젝트에 복사하기
본 문서 아래 예제코드에 표시된 부분을 확인하여 적용할 프로젝트에 복사합니다.프로젝트에서 FTP 연결과 Update를 처리하기 위한 코드가 필요하며, 자세한 내용은 아래 예제 코드를 확인하시기 바랍니다.
-
[STEP-2]프로젝트의 버전 설정하기
본 문서 "3. 파일의 버전 정보 설정 방법" 을 참고하여 현재 프로젝트와 업데이트 할 프로젝트의 버전 정보를 설정합니다.
-
[STEP-3] 본 문서 2. FTP 서버 구축 방법 [STEP-6]에서 생성한 FTP 폴더에 업데이트 할 파일의 응용프로그램을 추가합니다.
이때, 향후 업데이트를 위해, 업데이트할 파일도 [STEP-1, 2] 과정을 동일하게 수행해야 합니다.
6. SmartFTPUpdate 사용 예제
본 예제는 모든 제품에 적용할 수 있도록 4.3인치 기준으로 제작 되었으며, 자세한 내용은 첨부 파일을 참고하시기 바랍니다.
