CVI与PLC通信MPI

2  MPI通信接口设计 
21 MPI通信接口的基本原理 
 
  MPI通信的最高速率达187.5KB/S。IPC与PLC的通信分为两种物理连接方法一种是
在工控机PCI总线上插接CP5611卡通过此卡和MPI电缆将IPC连接到S7系列PLC本机
上集成的MPI接口形成MPI网络另一种方法是直接使用PC/MPI编程电缆将连接具体
连接方式见图1二者的通信速度不一样。 
MPI通信协议属于S7系列Siemens公司的内部通信协议因此必须借助于专用的MPI

通信软件包PRODOVE S7来实现与第三方软件的通信接口设计【5】。PRODAVE S7软

件包提供了各种IPC与PLC进行MPI通信的函数并将这些函数封装DLL动态链接库
中为了能在程序中调用这些函数开发人员需要在开发环境中导入相关的DLL并编写相
应代码。 
Labwindows/CVI应用程序
PRODOVE S7 DLL
CP5611卡MPI电缆
PC/MPI 编程电缆
S7系列PLC
PCIRS232
MPI
 
图 1 LabWindows/CVI与PLC的MPI通信接口方案
 
2.2 MPI通信接口软件设计 
2.2.1 加载DLL库 
由于PRODOVE软件提供的是DLL库函数故软件设计的首要的关键点就是如何将此
DLL库函数加载到LabWindows/CVI开发环境中并能被应用程序所调用。 
LabWindows/CVI中只能使用由Borland C++、Microsoft Visual C++、Symantec C++ 和
Watcom C++四种编译器生成的外部模块不能使用Microsoft Visual C ++ 6.0生成的DLL导
出库文件。由于PRODAVE S7软件包是使用Microsoft Visual C++ 6.0开发的所以需要利
用LabWindows/CVI从DLL生成相应的导出库文件具体按如下步骤实施 
1安装PRODAVE S7软件包到LabWindows/CVI工程项目所在的目录安装完毕后
在目录中会出现W95_S7.LIB的静态库文件将此文件删除。 
2在LabWindows/CVI开发环境下打开W95_S7.h文件分别单击文件窗口的“Option”
菜单栏并点击“Generate Import Library”选项。在弹出的对话框中选择“Generate import 
library for current compatibility mode”选项。 
3在DLL文件选择对话框中选择W95_S7.DLL文件生成与头文件同名的导出库
文件W95_S7.LIB。按照以上方法重新生成名为KOMFORT.LIB文件 
4重新生成“W95_S7.LIB”和“KOMFORT.LIB”文件后在LabWindows/CVI开
发环境下打开需要加载导出库文件的源文件包含“W95_S7.h”和“KOMFORT.h”文件即
可。 
完成上述步骤后即可在LabWindows/CVI环境下调用PRODAVE S7软件包中的各种
功能函数了。 
222 接口程序设计 
Prodove S7提供的功能函数可以访问PLC的存储区主要有输入I、输出Q、位
存储区M、定时器T、计数器C、外设输入PI、外设输出PQ、数据块DB
程序数据存储区等。其通信函数与PLC存储区的对应关系见表1。

odove S7功能函数 功能介绍 对应存储区 
e_field_read( ) 读输入过程映像 I 
a_field_read( )/a_field_write( ) 读/写输出过程映像Q 
mb_bittest( ) 位状态检测 M 
mb_setbit( )/mb_resetbit( ) 置位/复位位 M 
m_field_read( )/m_field_write()读/写位存储器 M 
db_buch( ) 数据块测试 DB 
d_field_read( )/d_field_write( ) 读写数据块中数据 DB 
db_read( )/db_write( ) 整块数据读/写 DB 
z_field_read( )/z_field_write( ) 读/写计数器 C 
t_field_read( ) 读计时器 T 
ag_zustand( ) PLC启停状态检测 
要对PLC存储区进行读写操作首先建立IPC与PLC的连接。对于S7系列PLC的
MPI网络来说最多可同时建立32个连接。用STEP7软件包可以为每一个节点分配MPI
地址然后就可以对MPI通信进行编程操作了下面结合“变极性等离子弧焊”过程监控
软件中MPI通信接口程序编程过程说明LabWindows/CVI与PLC之间的MPI通信的实现方
法。 
1建立地址表 
PRODAVE S7软件中有一个结构体“adr_table_type”定义如下 
typedef struct  

unsigned char adr;  /*MPI站地址*/ 
unsigned char segmentid; /*MPI网络段ID号*/ 
unsigned char slotno; /*PLC CPU 槽号*/ 
unsigned char rackno; /*PLC 架号*/ 
} adr_table_type; 
此结构体中四位数字分别表示站、段、槽、架的位置号第一位表示PLC的MPI地址
第二位表示MPI网段的编号第三位表示PLC的CPU当前的槽号第四位表示PLC当前
的架号。在此采用默认设置建立地址表 
adr_table_type plc_adr_table[1]= {{2,0,2,0}} 
2建立连接 
用load_tool (char nr, char * device, char * adr_table) 功能函数建立连接第一个参数代表
连接中的节点个数第二个参数代表设备驱动器的名称第三个参数代表地址表人口。用
new_ss (char no)功能函数激活连接参数代表所要建立的连接号即地址表中的第几个连接。
两个函数返回值均为整数若操作成功返回“0”。unload_tool是断开连接的功能函数。 
int res1, res2; 
if((res1=load_tool(1,"S7ONLINE",plc_adr_table)) ! = 0) 

MessagePopup("异常","与PLC连接失败");  
   unload_tool(); 

if((res1=load_tool(1,"S7ONLINE",plc_adr_table)) = = 0) 

  res2 = new_ss(1);   //激活连接 

3读写PLC内部的存储区 
在“变极性等离子弧焊”控制软件需要通过读取PLC内部系统状态位的当前值来显示

焊接作业所处的状态。在PRODAVE S7软件包中读取状态位当前值的功能函数为mb_bittest
int mbno, int bitno, char * retwert其中mbno为字节地址bitno为位地址retwert为存
储返回值的缓冲区地址。程序如下 
char buffer ;  //建立缓冲区 
for( ; ; ) 

 mb_bittest10buffer; //读取PLC中状态位的值 
  if (buffer = = 1) 

……//状态指示灯亮起程序 
}  
else if (buffer = = 0) 

……//状态指示灯熄灭程序 

Sleep200; 

以上程序可以以200毫秒为间隔来检测PLC中状态位M1.0的当前值并根据这个值
来控制程序界面上相应指示灯的状态如图2。 
 
图2 焊接进程状态监测界面 
将用户设定的焊接工艺参数传送给PLC是通过功能函数db_writeint dbno, int dwno, int 
* amount, void * buffer来实现的。此函数功能是将参数写到DB块中。dbno为目的数据块
号dwno为数据的起始地址amount为数据的个数buffer为数据的值程序如下 
int buffer = 100;   //数据的值为100  
int dbno = 2;      //选择数据块2 
int dwno = 5;     //写入数据的起始地址为DW5 
int amount = 1;   //写入数据的个数为1个 
int res;          //保存写操作的返回结果 
res = db_writedbno, dwno, &amount, buffer;  //写入数据到PLC的DB块中 
以上程序是将整数100写入到PLC数据块DB2中地址为DW5的存储区中。 
 
3  MPI通信速度测试 
 本文利用VC6.0开发MPI通信测试程序进行了基于CP5611卡方案1和基于
PC/MPI编程电缆方案2的MPI通信速度测试实验。测试实验的软件平台选用

Windows2000硬件平台为Advantech IPC其CPU为PIV 2.4G256M内存。 
测试原理测试程序在传输数据时控制API定时函数开始计时待到测试程序成功接
收PLC返回数据标志位自动停止计时这段时间间隔就定义为MPI通信时间。基于方案1
向PLC存储区中分别写入1个Bit数据基于方案2向PLC存储区写入1个Bit的数据
各进行10次测试记录完成通信所用的时间。 
测试结果如图3所示图中的横坐标为试验序号纵坐标为测试通信时间。其中利用方
案1平均时间为20ms利用方案2通信的平均时间为192ms。前者比后者的速度快大约10
倍。 
01234567891011
020406080100120140160180200
Communication Time Span(ms)
Test Number
 Method 1
 Method 2
 
图 3 MPI数据通信时间测试结果 
5 结论 
本文的创新点在于研究了虚拟仪器软件LabWindows/CVI与S7系列PLC的MPI数据通
信接口原理给出了MPI通信接口实现方案详细说明了MPI通信接口程序设计方法利
用所设计的通信接口测试程序对基于CP5611卡和基于编程电缆的MPI数据通信方案进行了
测试后发现这两种方案适合于通信负载较轻的数据传输场合。综上所述本文对今后此类
MPI通信软件的开发具有指导意义。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值