- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于SOCK盯编程实现的 态软件与控制器的网络通讯
0 引言
组态软件是面向工程监控和数据采集的软件平台工具,具有丰富的设置项目。组态软件所涉及的工业领域非常广泛,在工业监控系统中发挥着越来越重要的作用。组态软件要接收现场的采集数据,并形成动态画面,以反映工业现场的各种状态,并能够对现场设备进行控制。这些都依赖于组态软件的通信模块。通信模块作为组态运行环境中数据交互的重要渠道,通常处于监控组态软件运行环境的核心区,其功能直接决定着组态软件的性能。本文在基于TCP/IP网络协议和SOCKET接口技术的基础上,介绍了基于IEC61131-3标准的组态软件通讯模块的设计与实现方法。
1 通信模块功能
组态监测系统分为控制器和工程师站两部分,图1所示是系统的总体结构图。图中的控制器负责采集并处理数据,工程师站负责接收控制器发送过来的数据,并将数据显示和保存。通信模块根据用户定义的通信协议实现工程师站组态软件与控制器之间的数据通信,完成数据通信帧的组织下行和上行数据帧的校验、解析。由此可见,在整个组态软件中,通信功能模块担负着上层组态运行环境与下层控制器之间数据交互的重要作用。
2 通信模块设计
为了能够及时、准确的反映设备运行状况,设计时可采用基于TCP/IP协议的流式套接字(SOCK_STREAM)来实现组态软件通信模块的程序设计。
为了实现网络通讯,Windows为应用程序提供了各种编程接口,如Windows Sockets API等,应用程序可以直接使用这些API函数。但对于较大型的应用程序来说,应该设计一个虚拟网络接口层,以使能用windows提供的各种通讯API来为应用程序提供通用的网络功能。这样的接口层可以采用中间DLL的形式,它将应用程序和windows的各种API隔离开来,使程序员能更方便地设计自己的应用程序。这样的设计可使应用程序更易于维护和移植。
基于通信需求和上述思路,利用基于TCP_IP的SOCKET接口可以实现网络通信,通信模块通常以动态链接库的形式存在。
2.1 Socket套接字
Windows Sockets不是一种网络协议,而是一套开放的、可支持多种协议的、Windows下的网络编程接口。Winsock实际在计算机中提供了一个通信接口,应用程序在网络上传输信息都可以通过这个Socket接口来实现。Windows Sockets分为三种类型:其中流式套接字(sock-stream)定义了一种可靠的面向连接的服务,它使用TCP作为传输层协议,可实现无差错无重复地顺序数据包传输;数据报套接字(sock-dgram)定义了一种无连接的服务,它使用UDP协议,数据通过相互独立的报文进行传输,而且是无序的,同时不保证可靠和无差错;原始套接字(sock-raw)允许对低层协议(如IP或ICMP)直接访问,主要用于新网络协议的实现和测试等。
图2给出了一种典型的C/S(客户端服务器)面向连接套接字调用的实现流程。
本系统中,工程师站组态软件一般可作为客户端向控制器发送连接请求,以建立连接。由于控制器采集数据是周期性的,组态软件采用异步选择机制判断控制器是否有数据发送过来。Windows Sockets的异步选择函数提供了消息机制的网络事件选择功能,当它所登记的网络事件发生时,应用程序相应的窗口会收到一个消息,消息中指明了所发生的网络事件以及与该网络事件相关的一些信息。
连接建立之后,即可调用Winsock提供的函数来发送和接收数据,进程结束时,则关闭两个套接字。
2.2 数据交互
通讯模块主要与框架、在线两个模块以及控制器存在数据交互。图3所示是其通讯模块与组态软件的其它模块及控制器之间进行数据交互的流程图。其中,通讯模块发送给框架窗口的消息主要有三项功能:一是通知在线模块读取控制器返回的应答数据;二是在通讯中出现异常时,返回错误信息;三是在通讯出现超时时,返回超时信息。
来源:电子元器件应用
上一篇:IPv6与流媒体传输在互联网的应用
下一篇:基于串口通讯的维护网络设计与开发