특수프로그램 설정

베이스 : 통신 카드가 장착되어 있는 베이스를 선택합니다. 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 계산을 할 끝 세그먼트 번호를 입력합니다.