특수프로그램 설정
베이스 : 통신 카드가 장착되어 있는 베이스를 선택합니다. CPU모듈 내장 통신인 경우 로컬을 선택합니다.
슬롯 : 통신 카드가 장착되어 있는 슬롯을 선택합니다.
슬롯은 CPU 모듈이 장착된 다음 슬롯부터 0, 1, 2, ... 순서대로 슬롯 번호가 정해집니다.
PLC-S의 경우에는 1, 2, 3, ... 순서대로 슬롯 번호가 정해집니다.
수신포트 : 10250이 기본값으로 설정되며, 사용자가 변경할 수 있습니다.
수신포트는 0 ~ 35535 범위에서 사용할 수 있습니다. 일반적으로 기본값을 사용합니다.
호스트 추가 : 연결할 대상인 호스트를 추가합니다.
호스트 편집 : 등록된 호스트 정보를 재설정 합니다.
호스트 삭제 : 등록된 호스트를 삭제 합니다.
프레임 추가 : 호스트와 통신할 송신프레임 또는 수신 프레임을 등록 합니다.
프레임 편집 : 등록된 프레임 정보를 재설정 합니다.
프레임 삭제 : 등록된 프레임을 삭제 합니다.
런중수정 : 특수 프로그램 수정사항을 PLC가 RUN 동작 중에 적용하고자 할 때 사용합니다.
저장 : 설정한 특수프로그램 정보를 저장합니다. PLC에는 다운로드되지 않고 CICON 상의 파일에 저장됩니다.
닫기 : 특수프로그램 설정창을 닫습니다. 닫기전에 저장을 하지않으면 설정값이 저장되지 않습니다.
[호스트 추가] 버튼을 클릭하여 HOST를 등록합니다.
[설정 항목]
통신결과 : 통신 결과를 저장할 디바이스 어드레스를 설정합니다.
송신 : SEND 명령 없이 자동송신주기를 설정하여 데이터를 송신하는 경우 해당 번호의 비트에 송신 성공/실패를 표시합니다.
송신 성공 시 : 통신결과 디바이스 어드레스의 16개 비트중 송신에 성공한 프레임 번호에 해당되는 비트를 1 Scan On 합니다.
송신 실패 시: 통신결과 디바이스 어드레스의 다음 워드에 송신 결과를 저장합니다. 16개 비트중 송신에 실패한 프레임 번호에 해당되는 비트를 On 합니다.수신 : 등록된 수신 프레임에 대해 수신 프레임을 정상적으로 수신하였는지를 표시합니다.
수신 성공 시 : 통신결과 디바이스 어드레스의 16개 비트중 송신에 성공한 프레임 번호에 해당되는 비트를 1 Scan On 합니다.
수신 실패 시: 통신결과 디바이스 어드레스의 다음 워드에 수신 결과를 저장합니다. 16개 비트중 수신에 실패한 프레임 번호에 해당되는 비트를 On 합니다.
어드 레스 | bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Data | frame 15 OK | frame 14 OK | frame 13 OK | frame 12 OK | frame 11 OK | frame 10 OK | frame 9 OK | frame 8 OK | frame 7 OK | frame 6 OK | frame 5 OK | frame 4 OK | frame 3 OK | frame 2 OK | frame 1 OK | frame 0 OK |
어드 레스 +1 | bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Data | frame 15 error | frame 14 error | frame 13 error | frame 12 error | frame 11 error | frame 10 error | frame 9 error | frame 8 error | frame 7 error | frame 6 error | frame 5 error | frame 4 error | frame 3 error | frame 2 error | frame 1 error | frame 0 error |
예시
통신결과 저장 디바이스가 M0000일 경우 동작은 다음과 같습니다.
송신 성공 시 : M0000의 프레임 번호에 해당되는 비트를 1 Scan On 합니다.
송신 실패 시: M0010(M0000 + 1WORD)의 프레임 번호에 해당되는 비트를 On 합니다.
수신 성공 시 : M0000의 프레임 번호에 해당되는 비트를 1 Scan On 합니다.
수신 실패 시 : M0010(M0000 + 1WORD)의 프레임 번호에 해당되는 비트를 On 합니다.
번호 | 프레임 | 주기 | 송신에 대한 수신프레임 | 수신에 대한 송신프레임 | 통신결과(M0000) | |
성공시 | 실패시 | |||||
3 | 송신프레임 | 50ms | 번호 ‘4’ | - | - | - |
4 | 수신프레임 | - | - | - | M0004 | M0014 |
7 | 송신프레임 | 100ms | - | - | M0007 | M0017 |
% SP01EET는 어드레스 + 2에 에러 정보가 갱신 됩니다.
IP 주소 : 통신할 상대방(HOST)의 IP 주소를 입력합니다.
수신 포트 번호로 송신 : 체크 시 수신할 포트번호를 별도로 지정할 필요가 없으며 특수프로그램 설정창에서 설정한 수신포트와 동일한 포트 번호로 포트번호가 설정됩니다.
포트번호 : 호스트의 포트번호를 설정합니다. (TCP Active, UDP 에서는 송신할 호스트의 포트, TCP Passive에서는 모듈 자체의 포트로 설정 됩니다.)
포트번호와 수신포트의 의미는 다음 표를 참고해 주세요.
통신 방식 | 포트번호 | 수신포트 |
UDP | 목적지 포트 | 모듈 포트 |
TCP (Passive) | 모듈 포트 | 무시 |
TCP (Active) | 목적지 포트 | 무시 |
CM1-EC10A F/W V1.26 이상의 버전에서는 멀티 호스트 사용 시, 모듈 자체의 포트가 겹치지 않도록 설정해 주세요.
(UDP 와 TCP Passive 동시 사용 시 수신 포트와 TCP Passive 포트 번호는 다르게 설정하여야 합니다.)
통신방식 : UDP 또는 TCP를 설정합니다.
TCP 모드 : TCP 모드를 Active 또는 Passive로 설정합니다.(TCP Passive / Active 모드 선택 : CM1-EC10A에서 사용 가능합니다. CM1-EC01A 미지원.)
자동 수신 사용 금지 : 특정 프레임 수신 시 해당 호스트에 등록된 수신프레임을 모두 비교하여 수신하는 기능을 금지합니다. 이 옵션을 설정하면 RECV 명령어로만 프레임을 수신할 수 있습니다.
수신 헤더/테일 사용 : 프레임 수신 시 Header/Tail을 비교하여 수신합니다.
- Header / Tail
설정 항목 | 설 명 |
입력방법 | Header 및 Tail값을 입력하는 방식을 선택합니다. 바이너리(Binary) 또는 아스키(ASCII)로 설정 가능합니다. |
Header | 고정값 헤더를 입력합니다. (최대 2byte) 바이너리 값으로 입력시에는 16진수로 입력합니다.(0x 나 H는 생략) |
Tail | 고정값 테일을 입력합니다. (최대 2byte) 바이너리 값으로 입력시에는 16진수로 입력합니다.(0x 나 H는 생략) |
프레임 길이 | 고정값 헤더로부터 테일까지의 길이를 입력합니다. |
Host등록 후 Host에 대한 프레임을 추가합니다.
프레임은 최대 16개 까지 등록 가능합니다.
프레임 이름 : 프레임의 이름을 설정할 수 있습니다.
통신방향 : 송신 또는 수신 프레임을 선택합니다.
송신후 자동 수신 프레임 : 현재 프레임이 송신된 후 수신되는 프레임을 수신합니다.
자동 송신 사용 : PLC 래더 프로그램에서 SEND명령을 사용하지 않고 자동송신 주기를 설정함으로 설정주기마다 송신을 합니다.
자동 송신 주기 : 자동 송신 사용에 체크시 활성화 되며, 100ms 단위로 설정 가능합니다. 0 ~ 255 (0 ~ 25500 msec)까지 입력 가능합니다. (EC10A는 0 설정 시 Default 값인 100ms 로 설정 됩니다.)
* 동일한 송신 주기로 여러 프레임을 송신 할 경우, 성능 저하가 발생할 우려가 있어 권장하지 않습니다. 주기가 겹치지 않도록 조절해 주세요.
추가 : 프레임을 구성할 세그먼트를 등록합니다.
편집 : 등록된 세그먼트 정보를 재설정 합니다.
삭제 : 등록된 세그먼트를 삭제 합니다.
위로 : 선택된 세그먼트의 순서를 한단계 앞으로 이동합니다.
아래로 : 선택된 세그먼트의 순서를 한단계 뒤로 이동합니다.
프레임 추가 : 호스트와 통신할 송신프레임 또는 수신 프레임을 등록 합니다.
프레임 편집 : 등록된 프레임 정보를 재설정 합니다.
프레임 삭제 : 등록된 프레임을 삭제 합니다.
프레임을 작성하기 위해 세그먼트를 추가합니다.
세그먼트 편집 영역에 있는 "추가" 버튼을 누르면 세그먼트 추가 창이 열립니다.
세그먼트는 최대 10개까지 등록 가능합니다.
한 프레임 당 총 세그먼트의 합은 1000byte 내로 구성해야 합니다.
SEGMENT0 | SEGMENT1 | ..... | SEGMENT8 | SEGMENT9 |
세그먼트 유형은 아래와 같이 선택할 수 있습니다.
상수
무시
메모리링크
BCC
가변길이 설정
길이를 1025로 설정할 경우 길이는 가변길이 로 처리됩니다.
세그먼트 유형이 무시형이나 메모리링크형일 때 설정 가능합니다.
가변길이로 설정할 경우 송/수신되는 첫번째 워드 데이터를 길이 값으로 인식하여 처리하게됩니다.
사용자는 첫번째 워드 데이터를 변경함으로써 데이터의 길이를 가변시킬 수 있습니다.
상수형(고정값) 세그먼트
작성하고자 하는 프레임중 데이터의 변화가 없는 고정된 데이터를 의미합니다. ASCII또는 Binary형태로 값을 지정합니다.
데이터가 Binary형태인 경우에는 16진 숫자로 지정하며, 한 Byte의 데이터를 2자리 16진수로 지정하고, 아스키 형태인 경우에는 한 문자가 한 Byte의 데이터로 취급됩니다.
길이
상수 세그먼트의 경우 길이는 데이터 영역에 데이터를 입력하면 자동으로 계산됩니다.
아스키(ASCII)형을 선택할 경우 며 하나의 문자가 1Byte로 계산되고, 바이너리형을 선택할 경우 2개의 문자가 1Byte로 계산됩니다.
상수형의 경우 길이는 1 ~ 30 byte 범위에서 설정가능 합니다.
데이터
아스키(ASCII)형: 아스키 문자를 입력합니다. 입력 가능한 아스키 문자는 [여기]를 참고하세요.
바이터리형: 16진수를 입력합니다. 0 ~ 9, A ~ F
오류검사 영역, 오류 검사(BCC) / 데이터 변환
상수 세스먼트의 경우 "오류검사"영역과 "오류 검사 데이터 변환"은 사용되지 않습니다.
사용예
고정값 데이터 송신
PLC | 12345678 | 12345678 |
데이터 변환 | 바이너리 | 아스키 |
상대 기기 | 12345678 | 31 32 33 34 35 36 37 38 |
고정값 데이터 수신
상대 기기 | 12345678 | 31 32 33 34 35 36 37 38 |
데이터 변환 | 바이너리 | 아스키 |
PLC | 12345678 | 31 32 33 34 35 36 37 38 |
무시형 세그먼트
수신되는 데이터의 값에 관계없이 지정된 길이만큼의 데이터를 수신 후 폐기하는 세그먼트입니다.
수신프레임에서만 설정 가능합니다.
메모리 링크
CPU의 메모리에 저장되어 있는 데이터를 지정된 길이만큼 송신하거나, 수신된 데이터를 지정된 길이만큼 CPU메모리 영역에 저장하는 세그먼트입니다. 최대 데이터 사이즈는 1000Byte 입니다. 어드레스에는 송/수신할 데이터의 CPU메모리 영역을 지정합니다.
길이
무변환(바이너리) : 송수신되는 세그먼트의 길이
16진 정수 : 송신 시 CPU메모리 영역의 데이터를 16진 ASCII 데이터로 변환하여 송신하고, 수신 시 16진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU 메모리에 저장합니다.
10진 정수 : 송신 시 CPU메모리 영역의 데이터를 10진 ASCII데이터로 변환하여 송신하고, 수신 시 10진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU메모리에 저장합니다.
실수 (float) : 송신 시 CPU메모리 영역의 데이터를 float ASCII데이터로 변환하여 송신하고, 수신 시 float ASCII 데이터를 바이너리 데이터로 변환하여 CPU메모리에 저장합니다.
디바이스
송신 또는 수신시 사용할 디바이스어드레스를 설정합니다.
아스키(ASCII) 데이터 변환
변환된 데이터 종류 (송신시)
무변환(바이너리)
데이터 변환: 바이너리 -> 바이너리 (변환 없음)
세그먼트 길이 : 송신되는 데이터의 byte 수
예) 2byte, H3132(메모리 데이터) -> H3132(송신 데이터)
16진 정수
송신 시 CPU메모리 영역의 데이터를 16진 ASCII 데이터로 변환하여 송신하고, 수신 시 16진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU 메모리에 저장합니다.
데이터 변환: 바이너리 -> ASCII 16진수
세그먼트 길이 : 송신되는 데이터의 byte 수
데이터 전송
예) 4byte, H034A(2byte) -> H30 H33 H34 H61 (4byte)
10진 정수
송신 시 CPU메모리 영역의 데이터를 10진 ASCII데이터로 변환하여 송신하고, 수신 시 10진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU메모리에 저장합니다.
데이터 변환: 바이너리<-> ASCII 10진수
세그먼트 길이 : 송신되는 데이터의 byte 수(최대 1 Word 이내, 가변 메모리 사용시 최대 2 Word 이내의 10진 정수 변환이 가능합니다.)
데이터 전송
메모리에 저장된 데이터의 자릿수가 길이 설정 값보다 클 경우
-> 뒷자릿 수부터 길이 설정 값 만큼의 데이터만 전송
-> 메모리데이터 “12345”를 길이 설정 값 3으로 전송 시 “345”메모리에 저장된 데이터의 자릿수가 길이 설정 값 보다 작을 경우
-> 차이만큼 앞에 0x20(Space)를 추가하여 전송
-> 메모리데이터 “12”를 세그먼트 길이 4로 전송 시 “(sp)(sp)12”전송
실수 (float)
데이터 변환: 바이너리 -> ASCII float
길이 설정 값: 송신되는 데이터의 byte 수
Float 데이터의 처리시 CM1-ECxx제품과 CM3-SP01EET 제품 동작이 상이하므로 주의하시기 바랍니다.
ECxx : 소수점 4째자리까지 처리 예) 6byte, 3.14 -> “3.1400” 7byte, 91.252 -> “91.2520” 세그먼트 길이가 변환된 ASCII 값의 length보다 길 경우 -> 앞에 그 차이만큼 앞에서부터 0x20(space)를 채움 -> 8byte, 3.14 -> “(sp)(sp)3.1400” 세그먼트 길이가 변환된 ASCII 값의 length보다 짧을 경우 -> 뒷자릿 수부터 세그먼트 길이만큼의 데이터만 전송 -> 4byte, 3.14 -> “1400” EET : 배율 10을적용하여 소수점 1째자리까지 처리 예) 3byte, 3.14 -> “3.1” 4byte, 91.252 -> “91.2” 세그먼트 길이가 변환된 ASCII 값의 length보다 길면 -> 앞에 그 차이만큼 앞에서부터 0x20(space)를 채움 -> 8byte, 3.14 -> “(sp) (sp) (sp) (sp) (sp)3.1” 세그먼트 길이가 변환된 ASCII 값의 length보다 짧을 경우 -> 뒷자릿 수부터 세그먼트 길이만큼의 데이터만 전송 -> 2byte, 3.14 -> “.1 |
변환된 데이터 종류 (수신시)
수신 성공조건
수신 성공시에만 데이터를 수신 처리합니다.
프레임을 구성하는 모든 세그먼트가 일치할 경우 수신 성공으로 판단합니다.
무변환(바이너리)
데이터 변환: 바이너리 -> 바이너리 (변환 없음)
예) 2byte, H3132(수신 데이터) -> H3132(메모리 저장 데이터), 수신 성공
2byte, H3132333435(수신 데이터) -> H3132(메모리 저장 데이터), 수신 성공
4byte, H3132(수신 데이터) -> 수신 실패
@ ECxx (ECxx와 SP04EET는 16진 정수형의 수신시 동작이 상이 합니다.)
16진 정수
송신 시 CPU메모리 영역의 데이터를 16진 ASCII 데이터로 변환하여 송신하고, 수신 시 16진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU 메모리에 저장합니다.
세그먼트 길이 : 수신된 데이터를 저장할 메모리의 byte 수
수신성공 판단 기준: 수신데이터 사이즈 == (길이 설정 값 x 2)
데이터 수신: 최대 (길이 설정 값 x 2)byte 만큼 읽어 디바이스 메모리에 (길이 설정 값)byte로 저장
예) 길이 2, “1FA4”(수신데이터) -> H1FA4 (메모리 저장 데이터)
길이 3, “1FA423”(수신데이터) -> H1FA4 H2300 (메모리 저장 데이터)
@ SP04EET (ECxx와 SP04EET는 16진 정수형의 수신시 동작이 상이 합니다.)
16진 정수
송신 시 CPU메모리 영역의 데이터를 16진 ASCII 데이터로 변환하여 송신하고, 수신 시 16진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU 메모리에 저장합니다.
세그먼트 길이 : 수신되는 데이터의 byte 수
수신성공 판단 기준: 세그먼트 길이 만큼 수신 되면 성공
데이터 수신: 설정 된 길이 만큼 읽어 디바이스 메모리에 저장
예) 길이 4, “1FA4”(수신데이터) -> H1FA4 (메모리 저장 데이터)
길이 6, “1FA423”(수신데이터) -> H1FA4 H2300 (메모리 저장 데이터)
10진 정수
송신 시 CPU메모리 영역의 데이터를 10진 ASCII데이터로 변환하여 송신하고, 수신 시 10진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU메모리에 저장합니다.
세그먼트 길이 : 수신되는 데이터의 byte 수(최대 1 Word 이내, 가변 메모리 사용시 최대 2 Word 이내의 10진 정수 변환이 가능합니다.)
수신성공 판단 기준: 세그먼트 길이 만큼 수신 되면 성공
10진 정수는 - 32768 ~ + 32767 까지 처리가능합니다.
예) 길이 5, “12345” (수신데이터) -> H3039 (12345) (메모리 저장 데이터)
예) 길이 6, “-23456”(수신데이터) -> HA460 (-23456) (메모리 저장 데이터)
실수 (Foat)
송신 시 CPU메모리 영역의 데이터를 Float ASCII데이터로 변환하여 송신하고, 수신 시 10진 ASCII 데이터를 바이너리 데이터로 변환하여 CPU메모리에 저장합니다.
세그먼트 길이 : 수신되는 데이터의 byte 수
수신성공 판단 기준: 세그먼트 길이 만큼 수신 되면 성공
실수(float)는 - 32768 ~ + 32767 까지 처리가능합니다.
예) 길이 5, “12.34” (수신데이터) -> 12.34 (메모리 저장 데이터)
예) 길이 6, “-23.45”(수신데이터) -> -23.45 (메모리 저장 데이터)
워드 데이터 상/하위 교환
워드 데이터 상/하위 교환을 선택하게 되면 송/수신 되는 데이터 중 상위 1Byte 데이터와 하위 1Byte 데이터를 교환합니다. 예를 들어 송신 시 CPU메모리 영역에 저장되어 있는 데이터가 h1234(ASCII:1234)라 가정하고, 워드 데이터 상/하위 교환을 하면 실제 송신되는 데이터는 h3412(ASCII:3421)가 되며, 수신 시 수신되는 데이터가 h1234(ASCII:1234)라 가정하고, 워드 데이터 상/하위 교환을 하면 실제 수신되는 데이터 h3412(ASCII:3412)가 CPU메모리에 저장됩니다. 단, 워드 메모리 데이터 송신 시 상위 바이트 저장된 데이터가 먼저 송신되며, 워드 메모리 데이터 수신 시 수신된 데이터는 상위 바이트에 먼저 저장됩니다.
사용예
메모리 링크 데이터 송신
PLC | 1234h | 1234h | 1234 |
데이터 변환 | 무변환(바이너리) | 16진 정수 | 10진 정수 |
상대 기기 | 1234h | 31323334 | 31323334 |
메모리 링크 데이터 수신
상대 기기 | 1234h | 31323334 | 31323334 |
데이터 변환 | 무변환(바이너리) | 16진 정수 | 10진 정수 |
PLC | 1234h | 1234h | 1234 |
BCC형 세그먼트
길이
BCC 길이는 1 ~ 4 byte 범위에서 설정 가능합니다.
오류검사 영역
[오류검사 방식]
프레임의 데이터가 올바르게 송/수신되었는지 에러검출 코드 연산을 합니다. 다양한 방식의 에러검출 코드연산을 지원합니다.
SUM : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary Sum을 해서 설정 한 길이 (Byte)만큼 데이터를 송/수신합니다. 영역은 오류검사 영역(세그먼트 범위)에서 설정합니다. 아스키 데이터 변환에 관한 내용은 메모리 링크 부분을 참조하십시오.
SUM+MASK : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary Sum을 하고 마스킹값(FFh)으로 AND 마스킹한 데이터를 설정된 길이(Byte)만큼 송/수신합니다. 아스키 데이터 변환에 관한 내용은 메모리 링크 부분을 참조 하십시오.
XOR : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary OR을 해서 설정된 길이(Byte) 만큼 데이터를 송/수신합니다. 아스키 데이터 변환에 관한 내용은 메모리 링크 부분을 참조하십시오.
XOR+MASK : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary OR을 하고 마스킹값(FFFFh)으로 AND 마스킹한 데이터를 설정된 길이(Byte)만큼 송/수신합니다. 아스키 데이터 변환에 관한 내용은 메모리 링크 부분을 참조하십시오.
MUL : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary MUL을 하고, 설정된 데이터 길이만큼 송/수신합니다.
MUL+MASK : 편집된 프레임을 선택된 영역 시작부터 끝까지 Binary MUL을 하고 마스킹값(FFFFh)으로 AND 마스킹한 데이터를 설정된 길이(Byte)만큼 송/수신합니다
CRC16 : 편집한 프레임을 선택된 영역 시작부터 끝까지 CRC16계산에 의해 나온 데이터를 설정된 길이만큼 송/수신 합니다.
CRC16(MODBUS) : 편집한 프레임을 선택된 영역 시작부터 끝까지 CRC16 (MODBUS) 을 합니다.
[시작]
BCC 계산을 할 시작 세그먼트 번호를 입력합니다.
[끝]
BCC 계산을 할 끝 세그먼트 번호를 입력합니다.