首页 理论教育以太网通信程序设计|现场总线应用技术

以太网通信程序设计|现场总线应用技术

【摘要】:图11-16 uIP与系统底层硬件驱动和上层应用程序的关系2.第二路以太网通信程序设计及W5100的Socket编程W5100内嵌硬件TCP/IP协议栈,支持TCP、UDP、IPv4、ARP和ICMP等。

以太网是上位机与控制卡进行通信的唯一方式,上位机通过以太网周期性地向主控制卡索要测控板卡的采样信息,向主控制卡发送模拟量/数字量输出命令,向控制卡下载控制算法信息等。在测控板卡或从控制卡故障的情况下,主控制卡通过以太网主动连接上位机的服务器,向上位机报告故障情况。

在网络通信过程中经常遇到的两个概念是客户端与服务器。在控制卡的设计中,在常规的通信过程中,控制卡作为服务器,上位机作为客户端主动连接控制卡进行通信。而在故障报告过程中,上位机作为服务器,控制卡作为客户端主动连接上位机进行通信。

在控制卡中,以太网通信已经构成双以太网的平行冗余通信网络,两路以太网处于平行工作状态,相互独立。上位机既可以通过网络1与控制卡通信,也可以通过网络2与控制卡通信。第一路以太网在硬件上采用STM32F407ZG内部的MAC与外部PHY构建,在程序设计上采用了一个小型的嵌入式TCP/IP协议栈uIP;第二路以太网采用的是内嵌硬件TCP/IP协议栈的W5100,采用端口编程,程序设计要相对简单。

1.第一路以太网通信程序设计及嵌入式TCP/IP协议栈uIP

第一路以太网通信程序设计,采用了一个小型的嵌入式TCP/IP协议栈uIP,用于网络事件的处理和网络数据的收发。

uIP是由瑞典计算机科学学院的Adam Dunkels开发的,其源代码完全由C语言编写,并且是完全公开和免费的,用户可以根据需要对其做一定的修改,并可以容易地将其移植到嵌入式系统中。在设计上,uIP简化了通信流程,裁剪掉了TCP/IP中不常用的功能,仅保留了网络通信中必须使用的基本协议,包括IP、ARP、ICMP、TCP和UDP,以保证其代码具有良好的通用性和稳定的结构。

应用程序可以将uIP看作一个函数库,通过调用uIP的内部函数实现与底层硬件驱动和上层应用程序的交互。uIP与系统底层硬件驱动和上层应用程序的关系如图11-16所示。

978-7-111-55649-7-Chapter11-23.jpg

图11-16 uIP与系统底层硬件驱动和上层应用程序的关系

2.第二路以太网通信程序设计及W5100的Socket编程(www.chuimin.cn)

W5100内嵌硬件TCP/IP协议栈,支持TCP、UDP、IPv4、ARP和ICMP等。W5100还在内部集成了16KB的存储器作为网络数据收发的缓冲区。W5100的高度集成特性使得以太网控制和协议栈运作对用户应用程序是透明的,应用程序直接进行端口编程即可,而不必考虑细节的实现问题。

在完成了W5100的初始化操作之后,即可以开始基于W5100的以太网应用程序的开发。W5100中的应用程序开发是基于端口的,所有网络事件和数据收发都以端口为基础。启用某一端口前需要对该端口做相应设置,包括端口上使用的协议类型、端口号等。

3.网络事件处理

以太网通信程序主要用于实现控制卡与上位机间的通信,及主从控制卡间的数据同步操作。控制卡与上位机间的通信采用TCP协议,并且正常情况下,控制卡作为服务器,接受上位机的访问,或回送上位机的数据索要请求,或处理上位机传送的输出控制命令和控制算法信息;在控制卡或测控板卡或通信线出现故障时,控制卡作为客户端,主动连接上位机的服务器,并向上位机报告故障情况。主从控制卡间的数据同步操作使用UDP协议,以增加数据传输的效率,当从控制卡死机重启后,主控制卡会主动要求与从控制卡进行信息传输,以实现数据的同步。主控制卡以太网程序功能见表11-8。

表11-8 主控制卡以太网程序功能

978-7-111-55649-7-Chapter11-24.jpg

注:源端口为客户端的端口,目的端口为服务器端的端口。

主控制卡与从控制卡的以太网功能略有不同,如故障信息的传输永远由主控制卡完成,因为某一控制卡死机后,依然运行的控制卡一定会保持或切换成主控制卡。从控制卡死机重启后,在进行同步信息的传输时,主控制卡作为客户端主动向作为服务器的从控制卡传输同步信息。