当前位置:首页 > 工业控制 > 工业控制
[导读]0 引言组态软件是面向工程监控和数据采集的软件平台工具,具有丰富的设置项目。组态软件所涉及的工业领域非常广泛,在工业监控系统中发挥着越来越重要的作用。组态软件要接收现场的采集数据,并形成动态画面,以反映

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所示是其通讯模块与组态软件的其它模块及控制器之间进行数据交互的流程图。其中,通讯模块发送给框架窗口的消息主要有三项功能:一是通知在线模块读取控制器返回的应答数据;二是在通讯中出现异常时,返回错误信息;三是在通讯出现超时时,返回超时信息。

2.3  数据传输协议

TCP/IP协议族的核心部分是传输层和网络层。传输层主要为应用程序提供端到端的通信,TCP/IP协议族有两个互不相同的传输协议,即TCP(传输控制协议)和UDP(用户数据报协议)。

TCP是一种面向连接的协议,它可给用户进程提供可靠的全双工的数据通信,其所做的工作是把应用程序交给它的数据分成合适的小块交给下面的网络层,同时确认接收到的分组,并提供流量控制、设定超时及重传等机制。由于TCP提供有高可靠性的端到端的通信,因此,应用程序可以忽略所有这些细节。

Winsock的Nagle算法会降低小数据包的发送速度,因此应当定义一种数据结构,以将发送的数据按照这种数据结构以字符型ASCII发送,客户端接收到服务器传来的数据,按照这种数据结构解析数据,这样做可以减少小数据包的数目,避免协议使用Nagle算法。此外通过消息响应代替轮询也是提高传输实时性的一种措施。

2.4  阻塞的预防及处理

TCP/IP协议本身的滑动窗口控制可以有效的防止阻塞的发生。假设服务器和客户端的收发缓冲区大小为100 K字节,服务器每发送一个大小为80 K字的数据包,客户端接收到这个数据包后,将返回一个应答,应答中包含有下次服务器能够发送的最大的字节数,即下次服务器只能发送大小不能超过20 K字的数据。按照这种控制方法,TCP/IP可根据滑动窗口的大小控制发送的速度,滑动窗口大,则发送的数据量大,滑动窗口过小,则发送的数据量也会减小,这样即可以防止阻塞的发生。

该通讯模块中使用的防阻塞方法是在同步方式中采用select函数来检查接收发送缓冲区的读写可用状态。服务器端发送数据前,应先检查服务器的发送缓冲区是否可写,如不可写,说明发送缓冲区己经写满,需要等待发送缓冲区有剩余空间时再发送,以避免阻塞。同样,客户端在读缓冲区数据前,也应先检查一下缓冲区是否可读。如果发送缓冲区一直不可写,那么可能是因为网络断开,或者网络负载过大,使数据不能发送出去。

设置一个超时时限,可以阻塞发生时,当发送缓冲区不可写的状态超过设置的超时时间,系统则重新建立一个连接。

将这种方法和TCP/IP协议本身的防阻塞控制结合使用,可以有效地防止阻塞的发生。

3  通信模块的实现

3.1  实现思路

为了实现与控制器之间的异步通讯,通讯模块的总体设计如图4所示。

首先,由主线程调用外部接口函数以建立连接,同时,创建发送和接收线程,以分别用于数据的发送和接收。

当要发送数据时,主线程调用外部接口函数来发送数据。该函数先将待发送的数据填充到通讯模块的发送缓冲区中,然后通知发送线程,并由发送线程负责将发送缓冲区中的数据发送出去。

当数据发送成功后,可由发送线程发送消息,通知接收线程准备接收数据。

当有应答数据到来时,接收线程将接收数据并将数据放入通讯模块的接收缓冲区。接收完后,接收线程将发送消息以通知主线程读取应答数据。

主线程接到通知后,将调用外部接口函数接收数据。该函数可将通讯模块的接收缓冲区中的应答数据复制到应用程序指定的缓冲区中。

数据的发送和接收交替进行,就可以完成特定的操作。

3.2  模块封装

通过动态链接库技术可以提供一种方便、快捷的资源共享途径。这实质上是一些函数、数据和类集合成的可执行模块。通信模块采用动态链接库形式,可以在实现同一台机器上的多个工程师站组态软件进程的同时与多个控制器进行通讯。

将通信模块中套接字的建立、端口的绑定、数据的接收和发送封装到动态链接库中,同时屏蔽一些操作细节,这样的方法可以方便地被其它程序所调用,更易于程序维护和移值,也方便将来程序的升级。

根据窗口句柄发送消息至该窗口,然后通知应用程序有数据到达。最后,还需要在函数前面使用extern“C”_declspec(dllexport)关键字,以使该PEI数能够被其它程序所调用。函数的参数分别为端口号和应用程序的句柄。在应用程序中,只需要调用该函数,就可以开启TCP/IP服务。按照同样的方法,也可以封装连接服务函数和发送数据函数。组态软件的在线等模块通过调用这些导出函数,就可以完成与控制器的通讯,而不用考虑具体的通讯细节。具体的通讯细节可在这些导出函数中实现。

4  结束语

在基于TCP/IP协议网络通讯的基础上,针对状态监测中数据传输的间歇这一特殊性,提出了一种基于事件驱动的网络通讯模块的设计方法,并将这种方法封装到动态链接库中,然后通过函数接口与应用程序交互。由于该通讯模块是以动态链接库形式给出的,编程者可以不需要深入了解TCP/IP协议以及Socket高级编程,而中需简单地调用通讯模块中的函数,即可实现局域网中数据的传输。本文所介绍的通信模块的设计方法目前已经实现,其可行性也得到了验证,并已应用在实际的组态软件开发项目中。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭