设置以太网连接
此 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'
:客户端连接(默认)
对于客户端连接,从由nStartPort指定的用户连接到由nEndPort指定的用户连接的每个用户连接目标IP地址将递增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地址的最后一个块递增1来设置其他用户连接的IP地址。对于所有用户连接,目标端口号和断开时间的设置相同,且不会递增。
对于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;