在某试验台的开发研制过程中,为了实现远程计算机控制,系统采用上。下位机分级控制方案。上位机采用台湾研华公司的工控机,下位机采用德国西门子公司的S7-300PLC可编程控制器,中央处理单元为CPU312IFM.上位机主要完成监视控制设备的状态。实时地修改下位机的控制参数,对故障进行报警并作历史纪录。
下位机则负责现场控制和现场数据采集,PLC带有数字I/O和模拟I/O专用模块1用来下传和接收数字以及模拟信号。下传信号用来控制工业现场的各被控对象,而通过传感器从现场采集的信号再反馈到PLC中。整个闭环控制的实现依赖于PLC与上位机之间准确。及时的数据通信。在S7-300PLC控制系统中可用以下两种通信方式:以专用的SIEMENSS7-300通信接口模块CP342-5DP作为联系上位机和PLC的桥梁组成PROFIBUS网络,往往使用在节点较多的系统中;通过多点接口(MPI)组成MPI网络,通常组成小型网络。由于本系统节点较少,所以采用MPI网络形式,MPI采用全局数据通信模式,可在PLC和工控机之间进行数据交换。它不需要额外的硬件和软件,不但成本低,而且用法简便,因此本系统采用MPI接口实现PLC与工控机之间的通信。
2PLC与工控机之间的通信软硬件关系bookmark3用于连接PLC中央处理单元的接口称为多点接口(MPI),因为多个设备能通过此接口访问CPU,所以带多点接口的CPU不需要附加模块就能网络化。系统中的每一个MPI节点都应有不同地址,以便它们能与网络中其他节点相互通信,同时每个节点都应提供高地址。表1给出了MPI子网中能接入的节点,表2给出各节点缺省的MPI地址。
系统硬件包括工控机。PLC.CP5611通信卡以及一条通信编程电缆。软件包括利用VC++6.0编制的控制系统程序。西门子PRDAVE软件包以及PLC的语句表程序。是本系统中工控机与PLC进行通信的软硬件结构示意图。
操作员面板表2节点缺省的MPI地址bookmark4节点(设备)编程器(PG/工控机)缺省的MPI地址缺省的高MP1地址硬件中CP5611MPI通信卡插在工控机的PCI槽内,通信编程电缆将CP5611和PLC的MPI相连接,这样就构成了一个基本的MPI网络。软件中PLC语句表程序与VC++程序之间通过PRODAVE提供的动态连接库(DLL)进行通信CP5611模块是一块热插拔(PNP)网卡,为S7-300PLC与工控机的通信提供服务。可安装在32bit的PCI总线接口上。通过CP5611模块编程器(PG)和工控机可以与S7-300PLC相联。根据网络配置在MPI网络中可实现9.6kbps或1.5Mbps的传输率。
PLC带有西门子公司的数字1/0和模拟I/O模块。SM321为数字量输入模块,可以将现场过程送来的数字信号电平转换成S7-300内部信号电平。SM332数字量输出模块将S7-300内部信号电平转换成过程所要求的外部信号电平,可直接用于驱动电磁阀。接触器。小型电动机。灯和电动机启动器等。本系统采用8x12位模拟量输入模块SM331,该模块有8个输入通道。模拟输出模块采用4x12位的SM332,该模块带有4个输出通道。
列的CPU和操作员面板0P以及工控机。图中各网络节点下方的数字是对应节点的MPI地址。利用西门子STEP7组态软件包中Configuration功能儿INE2003产品应用可为每个网络节点设定其MPI地址和高地址。
当工控机与某节点通信时,首先要利用入口设定函数写入其MPI地址,然后才能进行数据交互。
3工控机与PLC通信流程分析控制平台以Windows98作为其操作系统,开发语言采用VisualC++.VC++不仅仅是C++语言的集成开发环境,而且与WIN32紧密相连,其功能非常强大,几乎包括了Windows应用的各个方面本试验台控制系统软件采用VC++6.0版本编制而成。该应用程序承担以下的任务:从PLC指定的存储区读取数据经过转换显示在计算机上:把需要设定的参数写入PLC特定的存储区中;实现闭环控制算法;把从PLC中读出的数据绘制成曲线和图表并实现打印功能;实现数据入库与检索。其中基本也是重要的任务就是完成PLC与工控机之间的数据传输是建立通信的流程。
西门子提供的软件包ProdaveS7中包含有用来建立通信的动态连接库(dll)文件和库文件(lib)(见表3),这些文件可以为用户提供可靠的工具函数。
在安装西门子PLC组态软件STTEP7时,系统会自动把动态连接库文件拷贝到Windows系统目录system和system32下,只要确保W95s7.dll.Komfort.dll在系统目录下,这两个文件就可工作。要使VC++程序与PLC程序之间通信,还要把上表中的头文件和库文件添加到VC++应用程序的头文件夹中。下面的工作就是在VC++中编程实现通信。
入口设定。首先为连接提供地址表,其形式如下:其中一维数组中是地址表结束标志,其余元素代表了对应PLC的入口地址。各元素四位数字分别表示站。段、槽。架的位置号。
如上所示丨2,0,2,0中位表示S7-300CPU的MPI地址,与缺省的相同;第二位表示只有一个MPI网段,没有RS485中继器;第三位表示S7- 300CPU位于当前架的第二槽;后一位表示当前PLC位于第0号架。有了以上的地址表,程序就可以找到对应的目标进行通信。
利用以下loadool函数初始化适配器,这里的适配器是指CP5611通信卡。该函数原型为:其中个参数指明建立连接的节点个数第二个参数是MPI适配卡驱动名称,MPI驱动为"S70NLINE"或0;第三个参数指明地址表入口。
以上面提供的地址表为例,该函数应为:在进行数据交换之前函数newSS启动各个节点与工控机之间的连接。
假设启动第二个连接则应用函数newss(2),以上面的地址表为例,因为只有一个PLC要和工控机相连,所以启动函数为newSS(l)。
利用各个函数进行通信,表4给出了各个通信函数,及对应的PLC中被读写的存储单元。
表4通信函数表函数:被读/写的PLC单元PLC存储区缩写说明afleldread输出过程暂存区Q读出afieidwrite输出过程皙存区Qv::::写入efleldread输入过程暂存区1读出dleldread数据炔DBX、DiX读出dfieldwrite数据块D巳X、DIX写入mfieidread位存区M读出mieid―writeO位存储区M写入tfieldreacl.定时器T卜读出z一f丨eld「ead计数器C读出fleldwrite计数器C:写入mixread混合数据的读出mix,wr1te::混台数据的写入表4中的各个函数可以实现工控机中应用程序与PLC各种存储单元的通信。
下面给出系统的一小段PLC程序,其逻辑意在系统控制界面上为M5.3、M5.4、M7.7赋化适配器‘