DLMS/COSEM协议(二)——UDP、TCP、CoAP传输方式
用于IP网络的DLMS/COSEM传输层
用于在IP网络上使用的DLMS/COSEM通信配置文件:
- 基于无连接的UDP的传输层;
- 面向连接的基于TCP的传输层;
- 基于无连接层的传输层。
DLMS/COSEM TL由CoAP、UDP或TCP传输层和一个额外的子层组成,称为包装器。
此外,包装器子层还具有以下功能:
- 它在UDP/TCP端口上提供了一个额外的寻址能力(wPort);
- 它提供有关传输数据长度的信息。该功能帮助发送方发送和接收方识别一个完整的APDU的接收,该APDU可以在多个TCP数据包中发送和接收。
DLMS/COSEM AL只侦听一个UDP或TCP端口。另一方面,一个物理设备可以承载多个客户机或服务器AP。包装器子层提供的附加寻址功能允许寻址这些ap。
DLMS/COSEM无连接、基于UDP的传输层
UDP为应用程序提供了一个以最少的协议机制向其他程序发送消息的过程。一方面,该协议是面向事务的,并且不保证交付和重复保护。另一方面,UDP很简单,它增加了最小的开销,而且它非常高效且易于使用。一些著名的互联网应用程序,如SNMP,DHCP,TFTP等。利用这些性能优势,要么是因为某些数据报应用程序不需要可靠,要么是因为应用程序本身确保了所需的可靠性机制。请求/响应类型的应用程序,比如在基于DLMS/COSEM udp的TL上建立的已确认的COSEM应用程序关联,然后调用已确认的xDLMS数据传输服务是这第二类的一个很好的例子。UDP的另一个优点是没有连接,它很容易进行多播和广播。
UDP基本上为IP层提供了一个上层接口,并具有额外的识别能力,即UDP端口号。这允许区分托管在同一物理设备中并通过其IP地址标识的ap。
基于DLMS/COSEM udp的传输层的服务规范
基于DLMS/COSEM udp的TL只提供一个数据传输服务:无连接的udp数据服务。因此,该服务的服务规范对于客户端和服务器TLs都是相同的,如下图所示。
DLMS/COSEM无连接、基于udp的传输层的服务图:
Figure 28 – Services of the DLMS/COSEM connection-less, UDP-based transport layer
请求和指示( .request and .indication)服务原语是必需的。本地确认( local .confirm)服务原语的实现是可选的。
带包装头的xDLMS APDU应适合单个UDP数据报。
UDP-DATA服务(UDP-DATA.request)
原语应提供以下参数:
UDP-DATA.request (
Local_wPort,
Remote_wPort,
Local_UDP_Port,
Remote_UDP_Port,
Local_IP_Address,
Remote_IP_Address,
Data_Length,
Data
)
Local_wPort、Local_UDP_Port和Local_IP_Addases
表示请求发送数据的设备/ DLMS/COSEM AE的包装端口号、UDP端口号和IP地址参数。
Remote_wPort、Remote_UDP_Port和Remote_IP_Adress参数
表示要传输数据的设备/ DLMS/COSEM AE的包装端口号、UDP端口号和IP地址参数。
Data_Length表示以字节表示的数据参数的长度。
Data 表示数据包含要传输到对等AL的xDLMS APDU。
客户端或服务器DLMS/COSEM AL会调用UDP-DATA.request原语,以请求向单个对等AL发送APDU,或者在多播或广播的情况下,向多个对等AL发送APDU。
此服务原语的接收将使包装器子层将包装器头预固定到接收到的APDU上,然后使用正确形成的WPDU调用UDP子层的SEND()函数,作为DATA。UDP子层将WPDU传输到对等包装器子层。
UDP-DATA服务(UDP-DATA.indication)
原语应提供以下参数:
UDP-DATA.indication (
Local_wPort,
Remote_wPort,
Local_UDP_Port,
Remote_UDP_Port,
Local_IP_Address,
Remote_IP_Address,
Data_Length,
Data
)
Local_wPort、Local_UDP_Port和Local_IP_Addases
表示接收数据的设备/ DLMS/COSEM AE的包装端口号、UDP端口号和IP地址参数。
Remote_wPort、Remote_UDP_Port和Remote_IP_Adress参数
表示已发送数据的设备/ DLMS/COSEM AE的包装端口号、UDP端口号和IP地址参数。
Data_Length表示以字节表示的数据参数的长度。
Data 表示数据包含要传输到对等AL的xDLMS APDU。
UDP-DATA.indication原语由基于DLMS/COSEM UDP的TL生成,用于向服务用户DLMS/COSEM AL指示已接收到来自对等层实体的APDU。
如果接收到的消息的Local_UDP_Port和Local_wPort参数都包含有效的端口号,这意味着在接收设备中绑定到给定的端口号,则在UDP子层中有一个DLMS/COSEM AE。否则,所接收到的消息将会被简单地丢弃。
UDP-DATA服务(UDP-DATA.confirm)
原语应提供以下参数:
UDP-DATA.confirm (
Local_wPort,
Remote_wPort,
Local_UDP_Port,
Remote_UDP_Port,
Local_IP_Address,
Remote_IP_Address,
Result
)
Local_wPort、Remote_wPort、Local_UDP_Port、Remote_UDP_Port、Local_IP_Address
和Remote_IP_Address携带与正在确认的相应UDP-DATA.request服务相同的值。
Result 结果参数的值表示基于DLMS/COSEM UDP的TL是否能够发送所请求的UDP数据报(OK)/(NOK)。
UDP-DATA.confirm原语是可选的。如果实现,它将由DLMS/COSEM TL生成,以向服务用户DLMS/COSEM AL确认之前的UDP-DATA.request的结果。它是本地生成的,只指示是否可以发送.request原语中的数据。换句话说,具有Result == OK的UDP-DATA.confirm只表示数据已经发送,并不意味着数据已经(或将)成功发送到目标。
基于DLMS/COSEM UDP的传输层的协议规范
在这个通信配置文件中,包装器子层是一个无状态实体:它唯一的角色是确保使用wPort号码进行源和目标DLMS/COSEM AE识别,并提供osi格式的UDP-DATA.xxx服务调用和SE