이더넷 연결 설정
이 FP 명령은 nStartPort~nEndPort로 지정된 사용자 연결 범위에서 sMode 및 sAddress에 의해 지정된 설정으로 이더넷 연결을 설정합니다. 아래의 프로젝트 네비게이터에서도 적절한 파라미터를 설정해야 합니다.
입력
통신 모드 및 연결 파라미터를 설정합니다.
통신 모드(필수 파라미터)
통신 모드에 대한 파라미터를 지정합니다.
키워드:
'MEWCOM'
: MEWTOCOL-COM(기본)
'MEW7COM'
: MEWTOCOL7-COM
'MODBUS'
: MODBUS-TCP
'MEWDAT'
: MEWTOCOL-DAT
'GP'
: 프로그램 제어 [일반 용도](16명의 사용자 연결에만 사용 가능)
'GP_LARGE'
: 대용량 수신이 가능한 프로그램 제어 [일반 용도](첫 번째 사용자 연결에만 사용 가능하고 PLC 기종 CPS4* 및 CPS3* 버전 4.32 이상에서만 사용 가능)
옵션 설정(필수 파라미터)
일부 통신 모드에는 활성화할 수 있는 추가 프로토콜 옵션이 있습니다. 선택한 통신 모드에 대한 옵션을 사용할지 여부를 지정합니다.
'OPTAV'
: 선택한 통신 모드에 사용할 수 있는 옵션이 활성화됩니다.
'OPTNAV'
: 선택한 통신 모드에 사용할 수 있는 옵션이 없거나 사용 가능한 옵션이 활성화되지 않았습니다(기본).
통신모드 |
|
|
---|---|---|
MEWTOCOL-COM |
FP2 ET-LAN과 연결 |
연결하지 말 것 |
MEWTOCOL7-COM |
사용할 수 없음 |
사용할 수 없음 |
MODBUS-TCP |
사용할 수 없음 |
사용할 수 없음 |
MEWTOCOL-DAT |
FP2 ET-LAN과 연결 |
연결하지 말 것 |
프로그램 제어[일반 용도] |
특수 헤더를 추가하지 말 것 |
특수 헤더 추가 |
대용량 수신이 가능한 프로그램 제어 [일반 용도] |
특수 헤더를 추가하지 말 것 |
사용할 수 없음. 이 키워드를 지정하면 연산 에러가 발생합니다. |
열려는 이더넷 연결 유형을 지정합니다(필수 파라미터).
'CL'
: 클라이언트 연결(기본)
클라이언트 연결의 경우 대상 유닛 IP 어드레스는 nStartPort에 지정된 사용자 연결부터 nEndPort에 지정된 사용자 연결까지 각 사용자 연결이 1씩 증가합니다.
'SV'
: 서버 연결
서버 연결의 경우 마스터 유닛 포트 번호는 nStartPort에 지정된 사용자 연결부터 nEndPort에 지정된 사용자 연결까지 각 사용자 연결이 1씩 증가합니다.
이더넷 연결을 여는 방법을 지정합니다(필수 파라미터).
'AUTO'
: 연결을 자동으로 엽니다(기본).
'MANU'
: 연결을 자동으로 열지 않습니다(그 대신 명령 FP_ETHERNET_CONNECTION_OPEN 사용).
이더넷 통신 유형을 지정합니다(필수 파라미터).
'TCP'
: TCP/IP 설정(기본)
'UDP'
: UDP/IP 설정(통신 모드 GP_LARGE에서는 사용할 수 없음)
참고:
UDP를 통신 유형으로 지정한 경우 FP 명령을 사용하는 것과 프로젝트 네비게이터에서 구성 설정을 구성하는 것 사이에는 차이가 있습니다. 프로젝트 네비게이터에서 사용할 수 있는 "개방형" 파라미터가 없습니다. 그러나 FP 명령에서는 반드시 "개방형"을 지정해야 합니다. 슬레이브 연결인 경우 키워드 'SV'
를 사용하고 마스터 연결인 경우에는 키워드 'CL'
을 사용합니다.
통신 모드 GP_LARGE에 대한 UDP를 지정하지 마십시오. 이렇게 하면 연산 에러가 발생합니다.
기본값으로 초기화합니다.
'INITIAL'
: 모든 설정을 기본 설정으로 초기화합니다.
예:
MEWTOCOL-COM을 통신 모드로 설정하고, FP2 ET-LAN과 연결하는 옵션을 사용하고, 클라이언트 연결이 자동으로 설정되고 열려야 하며, 통신 유형은 TCP/IP: 'MEWCOM,OPTAV,CL,AUTO,TCP'
입니다.
MODBUS-TCP를 통신 모드로 설정하고, 옵션을 사용할 수 없으며, 서버 연결은 설정되지만 자동으로 열리지는 않고, 통신 유형은 UDP/IP: 'MODBUS,OPTNAV,SV,MANU,UDP'
입니다.
통신 모드를 프로그램 제어로 설정하고, 특수 헤더를 추가하고, 서버 연결이 자동으로 설정되어 열려야 하며, 통신 유형은 UDP/IP: 'GP,OPTNAV,SV,AUTO,UDP'
입니다.
통신 모드를 대용량 수신이 가능한 프로그램 제어로 설정하고, 특수 헤더를 추가하지 않으며, 서버 연결이 설정되지만 자동으로 열리지 않고, 통신 유형은 TCP/IP: 'GP_LARGE,OPTAV,SV,MANU,TCP'
입니다.
통신 모드가 MEWTOCOL-COM이 되도록 구성을 기본 설정으로 초기화하려는 경우, FP2 ET-LAN에 연결되지 않고, 클라이언트 연결이 자동으로 설정되고 열려야 하며, 통신 유형은 TCP/IP: 'INITIAL'
입니다.
어드레스 파라미터를 설정합니다. 이 설정은 클라이언트 연결과 서버 연결 중 어떤 것을 지정하느냐에 따라 다릅니다.
클라이언트 연결의 경우, 대상 유닛의 IP 어드레스 및 포트 번호와 미사용 연결에 대한 연결 해제 시간을 지정해야 합니다.
서버 연결의 경우 마스터 유닛의 포트 번호와 미사용 연결의 연결 해제 시간을 지정해야 합니다.
클라이언트 연결 지정
대상 유닛 IP 어드레스(필수 파라미터)
nStartPort에서 nEndPort까지로 지정된 사용자 연결 범위 내의 첫 번째 사용 연결에 대한 대상 유닛 IP 어드레스를 지정합니다. 다른 사용자 연결의 IP 어드레스는 IP 어드레스의 마지막 블록을 1씩 증가시켜 설정됩니다. 대상 포트 번호 및 연결 해제 시간은 모든 사용자 연결에 대해 동일하며 증가하지 않습니다.
IP 어드레스의 경우, 처음에 IPv4
또는 IPv6
키워드를 지정합니다.
IPv4 구문: 예, 'IPv4=111.122.133.144'
IPv6 구문: 예, 'IPv6=1111:122:2:1555:0:0:1888'
IPv4 어드레스의 범위 제한을 기록해 주십시오. IPv4의 경우 000.000.000.000 (0.0.0.0)을 지정할 수 없습니다. 명령과 함께 잘못된 IP 어드레스가 지정되면 작동 에러는 없지만 출력 bError가 TRUE로 설정됩니다. 시스템 변수 sys_iEthernetConnectionErrorCode는 "1: 잘못된 IP 어드레스가 지정됨"으로 설정됩니다.
대상 유닛 포트 번호(필수 파라미터)
키워드: 'PORT'
구문:'PORT=xxxxx'
값: 1–65535
사용하지 않는 연결에 대한 연결 해제 시간 (필수 파라미터)
키워드: 'DISCONT'
구문: 'DISCONT=xxxx'
값: 0–4294967295ms(10ms 단위). 0: 연결이 자동으로 끊어지지 않습니다.
버퍼 시작 어드레스(옵션 파라미터) 수신
이 파라미터는 통신 모드가 프로그램 제어[일반 용도]로 설정될 때 FP0H C32ET/EP, FP-XH C40ET, C60ET, FP-XH C60ETF에서만 사용 가능합니다.
키워드: 'BUFTOP'
구문: 'BUFTOP=xxxx'
값: DT0~사용 가능한 마지막 DT
수신 버퍼 크기(옵션 파라미터)
이 파라미터는 통신 모드가 프로그램 제어[일반 용도]로 설정될 때 FP0H C32ET/EP, FP-XH C40ET, C60ET, FP-XH C60ETF에서만 사용 가능합니다.
키워드: 'BUFSIZE'
구문: 'BUFSIZE=xxxx'
값: 0–2048
예:
대상 유닛 어드레스를 192.244.2.10으로 설정하고 대상 유닛 포트 번호를 9000으로 설정합니다. 연결을 사용하지 않더라도 자동으로 연결을 끊지 않습니다. 'IPv4=192.244.2.10,PORT=9000,DISCONT=0'
대상 유닛 어드레스를 1222::1555:0:0:1999로 설정하고 대상 유닛 포트 번호를 10000으로 설정합니다. 30초 동안 연결을 사용하지 않으면 자동으로 연결을 끊습니다. 'IPv6=1222::1555:0:0:1999,PORT=10000,DISCONT=30000'
대상 유닛 어드레스를 192.168.1.5로 설정하고 대상 유닛 포트 번호를 4000으로 설정합니다. 50초 동안 연결을 사용하지 않으면 자동으로 연결을 끊습니다. 수신 버퍼의 시작 어드레스를 DT4, 수신 버퍼 크기를 256: 'IPv4=192.168.1.5, PORT=4000, DISCONT=100, BUFTOP=DT4, BUFSIZE=256'
으로 설정합니다.
서버 연결 지정
마스터 유닛 포트 번호(필수 파라미터)
키워드: 'PORT'
구문: 'PORT=xxxxx'
값: 1–65535
사용하지 않는 연결에 대한 연결 해제 시간 (필수 파라미터)
키워드: 'DISCONT'
구문: 'DISCONT=xxxx'
값: 0–4294967295ms(10ms 단위). 0: 연결이 자동으로 끊어지지 않습니다.
예:
마스터 유닛 포트 번호를 9000으로 설정하고, 연결이 사용되지 않더라도 자동으로 연결을 끊지 않습니다. 'PORT=9000,DISCONT=0'
마스터 유닛 포트 번호를 10000으로 설정하고 30초 동안 연결을 사용하지 않으면 자동으로 연결을 끊습니다. 'PORT=10000,DISCONT=30000'
마스터 유닛 포트 번호를 11111로 설정하고, 70밀리초 동안 연결을 사용하지 않으면 자동으로 연결을 끊습니다. 'PORT=11111,DISCONT=70'
첫 번째 사용자 연결 번호를 설정합니다.
SYS_ETHERNET_USER_CONNECTION_1–SYS_ETHERNET_USER_CONNECTION_216
마지막 사용자 연결 번호를 설정합니다.
SYS_ETHERNET_USER_CONNECTION_1–SYS_ETHERNET_USER_CONNECTION_216
출력
IP 어드레스가 유효하지 않을 경우
IP 어드레스가 설정되지 않은 상태에서 명령이 실행되는 경우
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
키워드의 순서를 변경하지 않음. 키워드와 설정 파라미터를 여기에 나열된 순서대로 지정하십시오.
콤마 ","를 사용하여 키워드와 해당 설정을 다음 키워드와 구분합니다.
nStartPort £ nEndPort가 되도록 합니다.
nStartPort 및 nEndPort를 지정하여 모든 대상 유닛 IP 어드레스(클라이언트 연결) 또는 모든 마스터 유닛 포트 번호(서버 연결)가 허용 범위 내에 있도록 해야 합니다.
이더넷 사용자 연결의 최대 수는 216개입니다.
사용자 연결이 열려 있거나 사용자 연결이 자동으로 열리도록 설정되어 있을 때 이 명령을 실행하면 연산 에러가 발생합니다. 그러나 명령에 따라 여러 사용자 연결을 설정하면 연산 에러가 발생한 사용자 연결이 완료되기 전에 사용자 연결에 대한 설정이 변경됩니다. 연산 에러가 발생한 사용자 연결 후 사용자 연결에 대한 설정 변경은 수행되지 않습니다.
일부 클라이언트 연결이 이미 구성되어 있는 여러 클라이언트 연결에 이 명령을 사용할 경우 한 서버에 대해 구성된 사용자 연결이 함께 묶여져 모두 동시에 열리고 닫히므로 연산 에러가 발생합니다.
인터럽트 프로그램에서는 이 명령을 사용할 수 없습니다.
대문자와 소문자를 모두 사용할 수 있습니다. "Abcd", "ABCD", "abcd"는 동의어입니다.
명령을 실행하기 전에 sys_bIsEthernetInitializing이 FALSE인지 확인하십시오. 명령이 실행되면 sys_bIsEthernetInitializing이 TRUE로 전환됩니다. sys_bIsEthernetInitializing이 TRUE일 때 명령을 실행하면 에러가 발생합니다.
명령을 실행하기 전에 sys_bIsEthernetIPAddressAssigned가 TRUE인지 확인합니다. sys_bIsEthernetIPAddressAssigned가 FALSE인 상태에서 명령을 실행할 경우 bError가 TRUE로 바뀌고 명령이 실행되지 않고 종료됩니다.
잘못된 IP 주소가 지정되면 bError가 지정되고 연산이 실행되지 않습니다.
이 명령이 성공적으로 실행되면 시스템 변수 sys_bIsCarry 및 sys_iEthernetConnectionErrorCode가 초기화됩니다.
이 명령은 PLC에 저장된 이더넷 구성 데이터를 영구적으로 덮어쓰지 않습니다. PLC의 전원을 껐다가 다시 켜면 PLC에 저장된 이더넷 구성 데이터가 다시 사용됩니다.
에러가 발생하면 시스템 변수 sys_iEthernetConnectionErrorCode에서 에러 코드 번호를 확인하십시오.
nStartPort > nEndPort인 경우
사용자 연결 번호가 허용 범위를 벗어난 경우
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
동일한 키워드가 두 번 이상 지정된 경우
포트 번호가 유효하지 않은 경우.
문자열 데이터의 문자 수가 256자 이상인 경우.
열린 연결이 있는 경우.
자동으로 열리도록 설정된 연결이 있는 경우.
nStartPort~nEndPort로 지정된 범위 내에 하나 이상의 사용자 연결이 기존 서버 구성에 속하는 경우.
GP_LARGE를 통신 모드로 지정하고 OPTNAV 를 프로토콜 옵션으로 지정한 경우.
GP_LARGE를 통신 모드로 지정하고 UDP를 이더넷 통신 유형으로 지정한 경우.
GP_LARGE를 통신 모드로 지정하고 nStartPort 또는 nEndPort가 1이 아닌 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
nStartPort > nEndPort인 경우
사용자 연결 번호가 허용 범위를 벗어난 경우
파라미터에 지정된 값이 허용 범위를 벗어난 경우.
동일한 키워드가 두 번 이상 지정된 경우
포트 번호가 유효하지 않은 경우.
문자열 데이터의 문자 수가 256자 이상인 경우.
열린 연결이 있는 경우.
자동으로 열리도록 설정된 연결이 있는 경우.
nStartPort~nEndPort로 지정된 범위 내에 하나 이상의 사용자 연결이 기존 서버 구성에 속하는 경우.
GP_LARGE를 통신 모드로 지정하고 OPTNAV 를 프로토콜 옵션으로 지정한 경우.
GP_LARGE를 통신 모드로 지정하고 UDP를 이더넷 통신 유형으로 지정한 경우.
GP_LARGE를 통신 모드로 지정하고 nStartPort 또는 nEndPort가 1이 아닌 경우.
명령을 인터럽트 프로그램에서 실행한 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bSetConnection: BOOL:=FALSE;
bOpenConnection: BOOL:=FALSE;
bCloseConnection: BOOL:=FALSE;
END_VAR
변수 bSetConnection이 FALSE에서 TRUE로 변경되고 시스템 변수 sys_bIsEthernetInitializing가 TRUE가 아니면 기능이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_VARIN,,'GP~OPTNAV~SV~AUTO~UDP',30,2,32,4,);
B(B_VARIN,,'PORT=9000~DISCONT=0',30,3,32,5,);
B(B_VARIN,,SYS_ETHERNET_USER_CONNECTION_1,30,4,32,6,);
B(B_VARIN,,SYS_ETHERNET_USER_CONNECTION_13,30,5,32,7,);
B(B_CONTACT,,sys_bIsEthernetInitializing,15,1,17,3,N);
B(B_CONTACT,,bSetConnection,5,1,7,3,R);
B(B_VAROUT,,bError,48,2,50,4,);
B(B_F,FP_ETHERNET_CONNECTION_SET!,,32,0,48,7,,?DEN?DsMode?DsAddress?DnStartPort?DnEndPort?AENO?CbError);
L(17,2,32,2);
L(1,2,5,2);
L(7,2,15,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If DF(bSetConnection) AND NOT sys_bIsEthernetInitializing Then
FP_ETHERNET_CONNECTION_SET(sMode := 'GP,OPTNAV,SV,AUTO,UDP',
sAddress := 'PORT=9000,DISCONT=0,BUFTOP=DT10000,BUFSIZE=100',
nStartPort := SYS_ETHERNET_USER_CONNECTION_1,
nEndPort := SYS_ETHERNET_USER_CONNECTION_13);
END_IF;