admin 管理员组文章数量: 1087139
2024年3月13日发(作者:mfc findwindow)
维普资讯
机电工程2002年第l9卷第6期 Mechanical&Electrical Engineering Magazine Vo1.19 No.6 2002
使用命名管道(NPFS)技术进行生产过程监控
艾欣,张光新,周泽魁
(浙江大学工业控制技术国家重点实验室,浙江杭州 310027)
摘要:阐述了常见的几种实现远程监控的通信方法,着重介绍了命名管道这种方法,并结合实际
应用证实了其可靠性。
关键词:命名管道;网络通信;NPFS;多线程
中图分类号:TP29 文献标识码:A 文章编号:1001—4551(2002)06—0043—03
Appficafion of Named Pipes in Remote Process Control
AI Xin,ZHANG Guang.xin,ZHOU Ze.kui
(National lab.ofIndustrial Control Technology,Zhejiang University,Hangzhou 310027)
Abstract:This paper introduces several methods of network communication,mainly expands some details of named pipes fries sys—
tem(NPFS),using a example to proved the stabihty f othis method.
Key words:named pipes;NPFS;network communication;mnltithreadig n
1引言
之间或在跨越整个网络的不同进程之间,协助进行
随着计算机广泛应用,许多企业都在其内部构
建了属于自己的厂域网络系统,并且对控制软件提
出了远程监控实时生产数据的要求,这就要求提供
一
消息的传输。邮槽不要求对T℃P/IP或者IPC这样
的基层网络传送协议有着非常深入的了解。由于邮
槽是围绕一个广播通信体系设计出来的,所以当然
不能指望能通过它实现数据的“可靠”传输。然而,
在某些特殊类型的网络构成环境中,假如对数据传
个简单可靠的服务器/客户模型,以现场的工控机
为服务器,其他网络内的计算机可以有选择的对其
感兴趣的数据进行监控,例如温度/压力曲线、实时
流量等等。许多客户不仅仅需要实时读取的数据,
还需要从硬盘上读取一些存盘数据。另外由于工厂
在不断发展,故可能有更多的客户机要求得到数据
访问,即在服务器/客户系统构建好之后仍然会有客
户不断加入,而这些客户的IP地址是未知的。这需
要使用对IP硬件地址不敏感的通信方法来建立局
域网系统。
输的可靠性要求不高,那么邮槽忍让是一种非常有
价值的技术。但是需要注意的是,在Windows NT以
及Windows 2000中数据报的格式不能超过424字
节,故如果在发送或者接受方的主机中任何一方使
用了以上操作系统,只能获得所有字节中的前424
个,该技术的另外一个缺点是数据报发送是一种非
面向连接的,故其可靠性并不能满足较高的要求。
2.2使用Winsock API函数进行通信
2常见网络通信方法
目前常采用邮槽、Socket、命名管道和NetBIOS
协议以及其他协议和网络硬件等多种编程方法实现
网络的数据传输,其中最受人们欢迎的方法是采用
Socket、命名管道和NetBIOS协议进行编程。
Winsock是一种广泛应用的通信编程接口,它可
以通过参数的设置选择可靠的面向连接或无连接的
网络通信模式。常用的编程模式分别为:客户/服务
器模式;点对点连接;远程过程调用(RPC)等3种,
也可以有选择的进行IP、ATM地址多播,实现多点
2.1邮槽方法(Mailslot)
通过邮槽,客户机进程可将消息传送或广播给
一
通信。其缺点是编程较其他方法复杂,另外要实现
多播时如果远程计算机地址更改或者增加播放为原
有多播地址范围之外的,就要修改IP地址或者更改
个或多个服务器进程。在同一计算机的不同进程
收稿日期:2002—09—18
作者简介:艾欣(1979一),男,重庆人,浙江大学信息学院控制系硕士研究生,主要研究方向为:检测技术和自动化装置。
维普资讯
Mechanical&Elcterical Engineering lMa ̄zine Vo1.19 No.6 2002 机电工程2002年第l9卷第6期
设置。最后,在不同的协议之下的定址方法是不相
同的,增加了编程的复杂性。
2.3使用NetBIOS接口编程
(1)使用WaitNamedPipe等候一个命名管道可供
自己使用;
(2)使用CreateFile函数建立同服务器的连接;
(3)若连接成功,调用ReadFile,WriteFile函数进
行管道读与写操作;
(4)调用CloseHandle函数关闭管道句柄。
当服务器进程调用CreateNamedPipe函数创建
一
NetBIOS同时提供了面向连接和无连接两种模
式。与Winsock接口相比,NetBIOS接口的一项重要
优点在于:它提供了一种统一的名字解析及注册方
法。对一个NetBIOS来说,它只需要一个NetBIOS名
字便可工作,Winsock则不同,假如它利用了不同的
条命名管道时,服务器进程为所建立的命名管道
协议,那么每种协议的定址方案都要考虑到。尽管
NetBIOS接口功能非常强大,但可惜的是,由于问世
提供一个名字,其他进程无论是本地的还是远程的,
均可以使用该管道与那些建立管道的进程通信。一
较早,它在功能上存在着诸多限制,已不适合现在的
需要,除了少数点对点的通信还在使用外,一般都不
太使用。
2.4命名管道(NPFS)方法
NPFS是首先在UNIX SYSTEM上实现的一种进
程间通信机制。因为采用先进先出的方式来写/读
数据,又被称之为FIFO。这种进程间通信机制在
Microsoft Windows系列操作系统中被称为命名管道,
因为其编程简捷,操作简单,而且不依附于具体协
议,支持可靠的、单向或者双向数据通信。其通信程
序适用范围更广、通用性更强,便于移植且能适应于
网络升级。因此,利用命名管道,结合Win32中多线
程编程实现Win32组网环境下的实时数据通信,是
当前网络通信应用的热门课题,它还有一个突出的
优点就是能直接使用Windows NT或Windows2000的
安全机制,这是其他网络技术均不具备的一项好处。
3使用命名管道进行网络通信
3.1创建服务器及客户机
命名管道是由应用程序指定的唯一名字的单向
或双向管道进程通过名字而不是句柄访问命名管
道。在使用命名管道的应用程序中,设计两类进程:
服务器进程和客户进程。命名管道操作,如图1所
示。其操作步骤说明如下:
服务方:
(1)使用CreateNamedPipe函数创建命名管道;
(2)调用ConnectNamedPiPe函数等待客户连接,
服务方在等待连接时,可以阻塞方式或查询方式;
(3)若连接成功,调用ReadFile,WriteFile函数进
行管道读/写操作;
(4)使用DisconnectNamedPipe函数关闭命名管
道连接;
(5)调用CloseHandle函数关闭管道句柄。
客户方:
个服务器进程能为同样的命名管道建立任意数量的
实例,一个命名管道所有的实例共享同样的管道名
字。但每个实例有自己的命名管道缓冲区和句柄,
且每个实例为客户服务器通信提供了一个分离的管
道线。当一个客户进程调用CreateFile或Cal1.
NamePipe并提供存在的命名管道的名字时,Win32
系统建立客户进程与管道实例的连接。这样,在
Win32系统中,由于多线程的支持,使上面的操作和
编程应用于网络实时数据通信成为可能。由于实时
数据往往被网上多个客户进程所共享,服务器进程
必须为每个管道的实例使用单独的线程,服务于各
个管道实例的线程读取各自管道的请求,使每个线
程为一个客户服务,实现多个客户进程与服务器进
程之间的实时数据传输通信。
服务器方 客户方
图1命名管道操作过程
3.2模式问题
它提供了两种基本通信模式:字节模式和消息
模式。在字节模式中,消息以一个连续的字节流的
形式,在服务器与客户机之间流动。这意味着,对客
户机应用和服务器应用来说,在任何一个特定的时
间段内,它们不能准确知道有多少字节从管道中读
入或者写入。在一方写入某个数量的字节,并不表
示在另一方会读出等量数据。这样一来,客户机和
服务器在传输数据的时候,便不必关心数据的内容。
而在消息模式中,客户机和服务器泽通过一系列不
连续的数据单位,进行数据的收发。每次在管道上
维普资讯
机电工程2002年第19卷第6期 Mechar cal&Electrical Engineering Magazine Vo1.19 No.6 2OO2
发出一条消息后,它必须作为一条完整的消息读出。
3.3安全问题
证,故在客户机上必须以分配的帐号登陆才能进行
数据访问,并且只能访问已经建立的管道中的数据
(如果是“安全模拟”则可以访问到服务器的所有资
源),较好的实现了对数据的保护和安全的分级。不
NPFS的一个突出优点就是能够使用Windows
NT(2000)自带的安全机制,从而能更好的保障数据
的安全,这就需要操作系统赋予应用程序设置访问
控制列表的权利,通过API函数InitializeSe—
用像使用其他方法要自定义安全模式。
(2)由于采用命名管道,管道名直接写入服务
器/客户机程序中,故无需像Winsock所组建的网络
curityDescriptor设置一个安全描述,然后把它的值赋
给一个空的授权访问控制列表,并在创建管道时使
用这个列表,就可以达到保证服务器端数据安全的
作用。相应的在客户机上就必须使用对应的帐号才
能得到访问许可。
3.4平台和性能问题
(1)CreateNamedPipe函数中管道名不能作为子
通信那样要根据客户机的 地址更改设置。
(3)系统构成简单可靠,减轻了维护及升级的
负担。
质量管理f I生产报表f f优化数据库f客户移
{
{
工控机(服务器)
{
{
{ 一 tem。
目录使用,如果已经创建了“\.Pipe\MyPipes”管
道,就不能再创建诸如“\.Pipe\MyPies\Pipe1”这 p
工控机(服务器)
{ {
l PLC2 I
MPI
样一个管道;
(2)命名管道的写操作限制在64kb之内,如果
试图用一个大于64|d)的缓冲区写入,则函数会返回
FALSE,而GetLastError调用则会返回ERROR—
MORE—DATA;
回}
l
{
}
l PLC3 I
}
}
l 被控对象(检测仪表、执行器等)
图2远程监控系统
5结论
(3)单台工作站最多只能建立49个命名管道,
如果服务器应用创建了49个以上的直接命名管道,
那么在远程计算机上,一个客户机最多只能建立前
在Win32环境下编程实现网络通信的方法很
多,各有自身的特点,相对于别的编程方法来说,命
名管道编程简单、灵活,方便。而且可以使用Win.
dow NT以及Windows2000自带的安全机制,保证了
数据的安全性。可广泛应用于Windows系列组网环
面的49个命名管道连接,多余的只好忽略;
(4)如果一台客户机是使用本地系统帐号运行
而不是网络帐号,则无法打开在Windows NT或Win.
dows2000上创建的命名管道,返回错误“拒绝访问”。
境下的网络通信,是通信协议中不可少的一种方法,
其实现实时数据通信的方案已经在啤酒生产自动化
中得到了验证。
参考文献
[1]Anthony Jones,Jim Ohlund[关].Windows网络编程技术
[M].北京:机械工业出版社,1999.11.
[2]Kris Jamesa Ken cope.Intemet Programming[M].北京:电
子工业出版社,1996.
4实际应用
目前,命名管道技术已在浙江某酒厂发酵车间
成功构建远程监控系统,系统构成,如图2所示。监
控系统以现场的2台工控机作为服务器(Windows
NT),局域网上任选计算机作为客户机对实时生产
数据进行监控和远程查询温度曲线、操作/报警记录
等历史数据。可以满足质量管理、生产报表和其他
统计等功能。并且还为今后建立生产过程全局优化
所需的数据库系统奠定了基础,经实践证明使用命
名管道方法完全可以满足用户要求。系统的主要特
点可以归纳为:
[3]Hedbom Lindskog.Analysis of the Security of Windows NT,
1999.
[4] 范春晓,等.在WINDOWS NT上实现远程进程间同步的
一
种方法[J].北方工业大学学报,1998,(3):68—73.
(1)因为服务器指定了“验证”级别的安全验
版权声明:本文标题:使用命名管道(NPFS)技术进行生产过程监控 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1710262477a564999.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论