基于PLC的船舶电力推进仿真系统的网络通信*

2007-09-20 05:49尚前明
船海工程 2007年4期
关键词:服务端组态客户端

尚前明,刘 安

(武汉理工大学 仿真中心,武汉430063)

基于PLC的数据采集和控制在实际系统中应用很广泛,随着计算机技术的发展,综合全电力推进系统(IPS)和船舶电力推进已经进入了发展的新时期[1]。为研究需要,建造小比例实物电力推进系统进行混合仿真,该系统应用了仿真技术、数据采集技术、控制技术以及网络通信技术。

1 研究对象描述

船舶电力推进仿真系统由配电室、推进装置、集中控制室等组成,该系统主要实现如下几方面研究:采用与实船相似的电力推进系统搭建了小比例实物电力推进系统;采用可编程控制器PLC和PC机组成数据采集系统,变频器、变压器、推进电机、负载电机、操作控制器等通过PROFIBUS总线组成电力推进控制系统;采用了TCP/IP协议的局域网;建立了船舶综合中央能量管理系统的数学模型并进行实时仿真研究[2];将电力推进系统分为不同的子模块,编制每个子系统仿真模型的数学模型并用仿真软件Saber对系统进行仿真分析。

2 网络拓扑结构和协议

2.1 网络组成及拓扑结构

电力推进仿真系统网络由4台PC机和1套PLC构成。PC机采用以太网的分布式结构,其中一台计算机作服务器(Server),运行电力推进系统的能量管理数学模型程序,另外三台计算机作为数据采集和监控计算机的客户端(Client)。型号为PLC314C-2DP的CPU一端通过插在集控台计算机上的CP5611通讯板卡实现与监控计算机的数据采集和通讯;另一端采用双绞线连接集控台、驾控台、机旁和变频柜,采用PROFIBUS_DP协议的PROFIBUS总线结构实现数据通讯。船舶电力推进系统的网络组成如图1所示,上位计算机网络特点:分布式结构、TCP/IP协议和C/S模式;下位计算机网络的特点:Profibus总线和PROFIBUS-DP协议。

图1 船舶电力推进系统网络结构图

2.2 网络的协议介绍

PLC与四个变频柜的通信采用了PROFIBUS-DP协议,Profibus/DP协议是一个复杂的通讯协议[3]。Profibus的重要电文结构为:令牌信息、FDL状态请求电文、数据电文[2]。

TCP/IP协议的基本传输单位是数据包(datagram),TCP协议负责把数据分成若干个数据包,并给每个数据包加上相应的编号的包头(就像给一封信加上信封),以保证在数据接收端能将数据还原为原来的格式;IP协议在每个包头上再加上接收端主机地址 (就像信封上要写明地址一样),如果传输过程中出现数据丢失、数据失真等情况,TCP协议会自动要求数据重新传输,并重新组包。总之,IP协议保证数据的传输,TCP协议保证数据传输的质量。

3 数据采集和通信实现

3.1 PLC的选型和组态编程

选用SIMATIC S7-300型PLC。在软件包STEP7中,设置通信端口,MPI地址设定,选择数据传输速率等。通过MPI端口对S7-300的机架、电源、CPU、信号模件、通信处理器等的类型和物理地址进行组态,并将组态程序下载到PLC[3]。在STEP7中,可用梯形图(Ladder)、语句表(STL)或流程图(FlowChart)进行编程,若选择“线性程序设计”方法,则把所有程序放在PLC操作系统与用户程序间的接口的OB1中,PLC周期性地调用此块。若选择“结构式程序设计”方法,则通过组织块OB1调用其它块,如功能块FB、数据块DB等。

3.2 PLC与WinCC之间的通信

工控组态软件 WinCC[4]提供PLC的通信驱动程序和功能强大的工具(打印报表、趋势图、报警、系统安全等)使开发监控应用程序变得非常方便。PLC与WinCC之间通信的实现方法首先启动WinCC,建立一个新的WinCC项目,然后在标签管理中选择添加PLC驱动程序,建立WinCC与PLC之间的通信连接。然后在编程软件STEP7下设置标签名、数据类型和地址,其中最重要的是标签地址,它定义了此标签与PLC中某一确定地址如某一输入位、输出位或标志位等一一对应的关系,实现PLC与WinCC之间需要通信的数据的一一定义标签,即可完成PLC与WinCC之间的数据通信。最后在图形编辑器(GraphicsEditor)中,用基本元件或图形库中对象制作工艺流程监控画面,并将变量标签与每个对象连接,即相当于画面中各对象与现场设备相连,从而可在CRT画面上监视、控制现场设备。

3.3 WinCC与Visual C++应用程序的进程间通信

由于西门子S7-300系列PLC通讯协议不公开[5],要实现电力推进能量管理必须将PLC采集的数据与仿真的数据集成于服务器。实现与PLC的数据交换实际上是实现Visual C++与WinCC之间的进程通信。由于WinCC可以读写Excel数据库和进行文件操作,并且支持C语言脚本编程,但是WinCC在运行时必须打开Excel数据表才能动态刷新采集的数据,而且Excel数据表并非真正的数据库,应该算是数据视图。所以通过ODBC或DAO的数据库记录集类CRecordSet实现对Excel的读,只有通过SQL查询语句才能实现对Excel表的修改,而且同时实现对Excel读写,这种方式的数据刷新的实时性很差。因此在应用程序中开辟了两个线程:ReadExcelProc线程负责从Excel表读取来自PLC的数据,WriteFileProc线程负责将服务器下传的数据写进文件里,WinCC通过long_main()函数去读文件数据,从而实现了进程间数据通信。

3.4 C/S模式下服务器与客户端之间的命名管道通信

3.4.1 命名管道程序实现原理

1)建立连接和通信。服务端使用CreateN-amedPipe函数创建一个命名管道的实例并返回相应的句柄,或为已存在的管道创建新的实例。如果在已定义超时值变为零以前,实例管道成功创建并返回管道句柄,可以用ConnectNamedPipe函数来侦听客户端的连接请求。客户端通过函数WaitNamedPipe实现客户进程连接到一个命名管道,如果在超时值变为零以前,有一个管道可以为连接使用,则 WaitNamedPipe将返回True,调用CreateFile或CallNamedPipe函数来呼叫对服务端的连接。当服务端与客户端成功建立连接后,服务端ConnectNamedPipe返回True,客户端CreateFile将返回一指向管道文件的句柄。以后客户端与服务器端即可通过ReadFile和WriteFile,利用得到的管道文件句柄,进行彼此间网络通信。

2)连接终止。当客户端与服务端的通信结束,或由于某种原因一方需要断开时,客户端应调用CloseFile,而服务端应接着调用DisconnectN-amedPipe。当然服务端亦可通过单方面调用DisconnectNamedPipe终止连接。最后应调用函数CloseHandle来关闭该管道。

3.4.2 通信代码的实现

1)客户端代码

HANDLE ClientHandle;

Char PipeNameStr[200];

sprintf(PipeNameStr,″\\\\ServerName\\Pipe\\PipeName″);

if(WaitNamedPipe(PipeNameStr,NMPWAIT _WAIT_FOREVER)==FALSE

MessageBox(″建立管道失败!″);

else

CltHandle=CreateFile(ClientPipeStr,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_WRITE_THROUGH,NULL);

If(ClientHandle==INVALID_HANDLE_VALUE)

MessageBox(″管道连接失败!″);

else//连接成功,从管道读写信息

……。

2)服务端代码

HANDLE ServerHandle;

char PipeNameStr[200];

sprintf(PipeNameStr,″\\\\ServerName\\Pipe\\PipeName″);

ServerHandle=CreateNamedPipe(PipeNameStr,

PIPE_ACCESS_DUPLEX|FILE_FLAG_WRITE_THROUGH,

FILE_WAIT|PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,

128,128,NULL,NULL);

if(ServerHandle = =INVALID_HANDLE_VALUE)

MessageBox(″建立管道失败!″);

else

If(ConnectNamedPipe(ServerHandle,NULL)==FALSE)

MessageBox(″管道连接失败!″);

else////连接成功,从管道读写信息

……

}。

4 结论

SIMATIC S7-314C的PLC可编程控制器数据采集的精度和实时性很好,用WinCC作为数据采集和监控的应用软件是可行的方案。基于命名管道的C/S模式网络通讯能够保证数据传输的实时性和安全性,可以适用于与服务器与多个客户端的连接与通信。船舶电力推进系统作为“211”重点建设项目,已经通过了省科技厅举行的专家鉴定会,与会专家参加一致认为该系统达到国际先进水平。

[1]杨晓丽.吊舱式电力推进系统的动态仿真的研究[D].上海:上海海事大学,2004.

[2]温 洪.潜艇电力推进系统负载特性的计算方法[J].机电设备,1999(4):16-22.

[3]罗耀华,叶瑰昀,刘 勇.舰船全电力推进系统模拟研究[J].船舶工程,2002(4):45-49.

[4]展在宏.西门子S7-300及工控组态软件 WinCC的应用[J].包钢科技,2002(2):32-37.

[5]Adnanes AK.Maritime Electrical Installations and Diesel Electric Propulsion[R].Norway:ABB Marine AS,Oslo,2003.

猜你喜欢
服务端组态客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
浅谈力控ForceControl V7.2组态软件在自动化控制工程中的应用
基于PLC及组态技术的恒温控制系统开发探讨
如何看待传统媒体新闻客户端的“断舍离”?
Rh XIII—Cd XVI 离子4s24p3—4s4p4 能级与跃迁的理论计算*
新时期《移动Web服务端开发》课程教学改革的研究
组态软件技术现状与发展
新华社推出新版客户端 打造移动互联新闻旗舰
摸清黑客套路防范木马侵入