网络变量
网络变量的值可以在网络中不同的控制设备之间进行交换。网络变量定义在发送端设备和接收端设备相同的网络变量组中严格定义,对于同一组网络变量组,只可在一个设备中定义成发送组,其他一个或者多个设备中定义接收组。这个列表可以在一个或多个项目中。
发送端设备的网络变量组是一个网络变量发送组。网络变量发送组实质是一个全局变量组。通过添加网络属性, 可将一个普通的全局变量组修改成网络变量发送组,也可以直接向工程管理树中插入一个网络变量发送组。
接收端设备的网络变量组是一个网络变量接收组。创建一个网络变量接收组时,可以选择发送端设备的网络变量发送组,也可以选择从文件导入,文件来源是发送端设备中网络变量发送组的导出文件。
网络变量组通过广播方式从发送端设备向接收端设备发送。 对于同一组网络变量,发送端和接收端的标识符是唯一的。标识符可通过对话框属性-网络属性进行设置。
注意:
- 网络变量不可以是功能块实例,也不可以使用常量属性。
- 对于字符串变量,支持的最大长度为256字节。
配置网络变量
在发送设备和接收设备之间配置网络变量,步骤如下:
网络变量发送组
网络变量发送组是一组特殊的全局变量组,该变量组的全局变量可以被发送到网络变量接收组或者其他设备。
您可通过如下两种方式添加:
- 通过选中【全局变量】节点,点击【新建全局变量发送组】;
- 选中一个全局变量组,点击属性-网络属性选项卡中配置网络类型、修改属性,可将一个普通的全局变量组修改成网络变量发送组
网络变量接收组
网络变量接收组用于显示网络变量发送组定义的网络变量。
这些变量已在其他设备或者其他项目的网络变量发送组中定义,不可在网络变量接收组视图修改,命名规则:发送端设备名#网络变量名
您可以通过选中【全局变量】节点,点击【新建网络变量接收组】,将弹出网络变量接收组对话框:
- 任务:控制接收网络变量的任务,任务开始时接收变量。
- 发送者:下拉列表
- 项目中其他设备可用的网络变量发送组
- 从文件导入:发送者在其他项目已定义,且通过属性-链接到文件选择编译前导出成*.xml文件
- 导入路径:发送者选择从文件导入时文件名称,采用*.xml格式
更新
- 自动更新:如果网络变量接收组的发送者是项目中其他设备可用的网络变量发送组,当网络变量发送组修改,且网络变量接收组所在设备处于可编辑状态,那么网络变量接收组将自动更新。
- 手动更新:打开网络变量接收组视图,右键单击“更新”命令
- 编译更新:工程编译时,自动根据网络变量接收组或者链接到的文件更新。
属性-网络属性
用于定义全局变量组的网络属性。
调用:右键单击全局变量组-->点击属性(网络属性选项卡)
- 网络类型:下拉列表,UDP可选。如果为空,则为普通全局变量组
- 任务:控制发送网络变量的任务,任务结束时发送变量
- 标识符:网络变量发送组的标识号,必须唯一,范围1~32767
- 打包变量:不勾选,每个变量都生成一个数据包;勾选,数据包中变量个数取决于变量类型
- 传输校验:勾选后,每个数据包均进行校验,以确保发送组和接收组的变量定义相匹配,如果不匹配,数据包不被接受
- 确认:每个接收的数据分别发送一个确认消息。如果在发送之前,该发送组没有收到确认,则将该错误写入诊断信息
- 循环传输:在规定的时间间隔内发送网络变量
- 间隔:格式参见TIME数据类型定义
- 变化传输:变量发生改变时才发送网络变量,可通过使用“最小间隔”定义传输之间的最小时间间隔
- 最小间隔:格式参见TIME数据类型定义
- 事件传输:变量的值TRUE时,就会发送网络变量。
- 变量:仅支持BOOL型变量。
- 设置
- 端口:用于网络通讯的端口。范围0~65535,默认值是1202。注意:关联到同一任务的不同网络变量组端口可以相同,但是标识符必须不同。
- 广播地址:默认值 是255.255.255.255,表示本地广播,不经路由转发,发送本地网络下的所有主机,只能在局域网内转发。可设置为一个子网地址或者地址范围(如:192.168.200.255,表示192.168.200.X网络地址网段下的所有设备均可收到广播)。
属性-链接到文件
用于定义一个外部文件(*.xml)与全局变量组的链接。可选择将全局变量组导出到外部文件,也可选择从外部文件导入到全局变量组。
调用:右键单击全局变量组-->点击属性(链接到文件选项卡)
- 编译前导入:全局变量组编译前自动读入选定文件。
- 编译前导出:全局变量组编译前自动导出到选定文件。对于网络变量发送组,可导出文件供网络变量接收组引用。
网络变量诊断
网络变量的诊断存放在全局变量组network_management_variables中。编译时自动生成,仅支持查看,不支持修改。
可通过查看该全局变量组在线值,分析网络变量通讯是否正常。
该全局变量组有如下数据类型变量,且变量命名遵循一定规则,详见各类型说明。如果不同变量组复用同一端口,则命名规则中变量组名将替换成端口号。
网络管理块:NetVarManager_Udp
命名规则:NetVarManager_UDP_任务名_变量组名(端口号)
用于周期读取接收缓冲区中的数据,如果发现存在对应PDO需要解析的数据,则进行相应处理。
表1-网络管理块
名称 | 数据类型 | 含义 |
---|---|---|
nNetVarPDO_Rx | INT | 接收PDO个数 |
nNetVarPDO_Tx | INT | 发送PDO个数 |
pNetVarPDO_Rx | POINTER TO NetVarPDO_Rx_Udp | 接收PDO对象指针,指向PDO数组首地址 |
pNetVarPDO_Tx | POINTER TO NetVarPDO_Tx_Udp | 发送PDO对象指针,指向PDO数组首地址 |
bByteSwap | BOOL | 是否需要大小端转换 |
iPort | INT | 端口号 |
- 网络发送PDO:NetVarPDO_Tx_Udp
命名规则:TxPDOs_UDP_变量组名(端口号)
用于发送网络变量信息。实际定义是一个数组,数组大小与是否打包变量、变量组成员定义、及同端口变量组个数有关。PDO通过标识符和子标识符进行区分。
表2-网络发送PDO
名称 | 数据类型 | 含义 |
---|---|---|
nDataItems | INT | 成员个数 |
nIndex | INT | 标识符 |
nSubIndex | INT | 子标识符,用于区分同一标识符下的不同数据包 |
bWithCheckSum | BOOL | 是否需要传输校验 |
byCheckSum | BYTE | 传输校验值 |
bWithAcknowledge | INT | 是否需要确认 |
inhibitTimer | TON | 变化传输最小间隔定时器 |
repeatTimer | TON | 周期传输间隔定时器 |
sNetTelegramm | NetVarTelegarmm_Udp | 待发送数据包 |
stIPAddressBroadcast | STRING(20) | 广播地址 |
nStatus | INT | 状态字 |
其中,NetVarTelegarmm_Udp是数据包格式,如下:
表3-UDP数据包格式
名称 | 数据类型 | 含义 |
---|---|---|
Header | NetVarTlgHeader_Udp | 包头 |
pData | ARRAY[0..256] OF BYTE | 内容 |
包头数据类型定义:
表4-包头格式
名称 | 数据类型 | 含义 |
---|---|---|
dwIdentity | DWORD | 数据包类型标识 |
dwID | DWORD | 数据包状态 |
nIndex | INT | 标识符 |
nSubIndex | INT | 子标识符,用于区分同一标识符下的不同数据包 |
nItems | INT | 成员个数 |
nCount | INT | 包计数 |
byFlags | BYTE | 状态字 |
byCheckSum | BYTE | 传输校验值 |
- 网络接收PDO:NetVarPDO_Rx_Udp
命名规则:RxPDOs_UDP_变量组名(端口号)
用于接收网络变量信息。实际定义是一个数组,同网络发送功能块。
表5-网络接收PDO
名称 | 数据类型 | 含义 |
---|---|---|
sNetTelegramm | NetVarTelegarmm_Udp | 待接收数据包 |
nIndex | INT | 标识符 |
nSubIndex | INT | 子标识符 |
nDataItems | INT | 成员个数 |
byCheckSum | BYTE | 传输校验值 |
stReadIPAddressTransmitter | STRING(20) | 接收地址 |
nStatus | INT | 状态字 |
- 网络诊断:NetVarDiag_Udp
命名规则:NetVarRxDiag_UDP_变量组名(端口号)/NetVarTxDiag_UDP_变量组名(端口号)
用于查看网络变量组发送或者接收是否正常。
表6-网络诊断
名称 | 数据类型 | 含义 |
---|---|---|
nSendCount | UDINT | 发送计数 |
tLastSend | TIME | 最后一次发送时间 |
nReceiveCount | UDINT | 接收计数 |
tLastReceive | TIME | 最后一次接收时间 |
nWriteCount | UDINT | 接收组数据更新计数 |
sLastError | NetVarError_Udp | 最后一次错误 |
tLastError | TIME | 最后一次错误时间 |
nErrorCount | UINT | 错误计数 |
nAcknowledges | UINT | 应答次数 |
错误类型NetVarError_Udp:
表7-错误类型
UDPError_NOERROR | 网络变量通讯正常 |
---|---|
UDPError_UDPSENDDATA | 发送数据错误 |
UDPError_UDPSENDACKN | 确认数据包发送错误 |
UDPError_NOACKNOWLEDGEMENT | 未收到确认数据包 |
UDPError_NOTACKNOWLEDGED | 预期无需确认应答 |
UDPError_UDPSENDBOOTUPREQUEST | 启动请求错误 |
UDPError_UDPANSWERBOOTUPREQUEST | 启动请求应答错误 |
UDPError_CHECKSUM | 传输校验失败 |
UDPError_LAYOUT | 接收PDO与发送PDO定义不一致:包括但不限于成员个数,数据长度 |
UDPError_MANAGER_NOT_READY | 网络管理块未就绪 |