1、第七章 MPI通讯技术,通讯是PLC应用过程中非常重要的部分,本章重点介绍了MPI通讯的基本概念,组建MPI网络的基本方法,分别介绍了无阻态的单边通讯和双边通讯的方法,通过一个项目详细介绍了全局数据通讯的实现过程。,7.1 MPI通讯简介,本节首先绍MPI通讯网络的基本概念和如何设置MPI参数,还介绍了PC侧的MPI通信卡的类型。,7.1.1 MPI概述,MPI(Multi Point Interface)是多点接口的简称,是当通信速率要求不高,通信数据量不大时可以采用的一种简单经济的通信方式。通过它可组成小型PLC通讯网络,实现PLC之间的少量数据交换,它不需要额外的硬件和软件就可网络化。每
2、个S7-300 CPU都集成了MPI通信协议,MPI的物理层是RS-485。通过MPI,PLC可以同时与多个设备建立通信连接,这些设备包括编程器PG或运行STEP7的计算机PC、人机界面(HMI)及其它SIMATIC S7,M7和C7。同时连接的通信对象的个数与CPU的型号有关。,7.1.2 MPI网络的组建,仅用MPI接口构成的网络称为MPI分支网络或(MPI网络)。两个或多个MPI分支网络由路由器或网间连接器连接起来,就能构成较复杂的网络结构,实现更大范围的设备互连,如图7.1所示。这里介绍MPI网络的组态问题。,图7.1MPI网络结构示意图,1MPI网络连接规则及硬件介绍,MPI网络如图
3、7.1所示,构建MPI网络时应遵从下述连接“规则”: 1)MPI网络可连接的节点。凡能接入MPI网络的设备均称为MPI网络的节点。可接入的设备有:编程装置(PG/个人计算机PC),操作员界面(OP),S7/M7 PLC。 2)为了保证网络通信质量,组建网络时在一根电缆的末端必须接入浪涌匹配电阻,也就是个网络的第一个和最后一个节点处应接通终端电阻(一般西门子专用连接器中都自带终端匹配电阻)。,3) 两个终端电阻之间的总线电缆称为段(Segments)。每个段最多可有32个节点(默认值16),每段最长为50m(从第一个节点到最后一个节点的最长距离)。 4) 如果覆盖节点距离大于50m,可采用RS4
4、85中继器来扩展节点间的连接距离。如果在两个RS485中继器之间没有其他节点,那就能在两个中继器之间设一条长达1000m的电缆,这是两个中继器之间的最长电缆长度。连接电缆为PROFIBUS电缆(屏蔽双绞线),网络插头(PROFIBUS接头)带有终端电阻,如图7.2所示,如果用其它电缆和接头不能保证标称的通讯距离和通讯速率。,图7.2 PROFIBUS转接器,5) 如果总线电缆不直接连接到总线连接器(网络插头)而必须采用分支线电缆时,分支线的长度是与分支线的数量有关的,一根分支线时最大长度可以是10m,分支线最多为6根,其长度限定在5m。 6) 只有在启动或维护时需要用的那些编程装置才用分支线把
5、它们接到MPI网络上。 7) 在将一个新的节点接入MPI网络之前,必须关掉电源。,2MPI网络参数及编址,MPI网络苻合RS-485标准,具有多点通信的性质,MPI的波特率固定地设为1875kbps(连接S7-200时为19.2kbps)。 每个MPI网有个分支网络号,以区别不同的MPI分互网;在MPI分互网或称MPI网上的每一个节点都有一个网络地址,称为MPI地址。MPI地址的编址规则:,1) MPI分互网号缺省设置为0,在一个分支网络中,各节点要设置相同的分支网络号;2) 必须为MPI网络上每一节点分配一个MPI地址和最高MPI地址同一MPI分支网络上各节点地址号必须是不同的,但各节最高地
6、址号均是相同的。,3) 节点MPI地址号不能大于给出的最高MPI地址号;最高地址号可以是126。为提高MPI网络节点通信速度最高MPI地址应设置得较小。 4) 如果机架上安装有功能模块(FM)和通信模板,则它们的MPI地址是由CPU的MPI地址顺序加1构成, 如图7.3所示。,图7.3 为可编程模板自动分配MPI地址,5)表71 给出了出厂时一些装置的MPI地址缺省值。,表7.1 缺省的MPI地址,按上述规则组建的个MPI网络及地址分配示于图74中。可用STEP 7软件包中Configuration的功能为每个网络节点分配一个MPI地址和最高地址,地址般标在该节点外壳上,用户看起来很方便。分配
7、地址时可对PG,OP,CP,FM等进行地址排序。网络中可以为一台维护用的PG预留MPI地址0,为一台维护用的OP预留MPI地址1,PG和OP地址应该是不同的;图74中分支虚线表示只在起动或维护时才接到MPI网的PG或OP,需要它们时可以很方便地接入网内。,图7.4MPI网络连接示例,3MPI网络连接部件,连接MPI网络常用到两种部件:网络插头和网络中继器;这两种部件也可用在PROFIBUS现场总线中。 1) 网络插头(LAN插头) 网络插头是节点的MPI口与网电缆之间的连接器。网络插头有两种类型,一种带PG插座,一种不带PG插座。,编程装置PG对MPI网络节点有两种工作方式:一种是PG固定地连
8、接在MPI网上,则使用网络插头将其直接归并到MPI网络里;另一种是在对网络进行启动和维护时接入PG,使用时才用一根分支线接到一个节点上。PG固定连接时,可以用带有出入双电缆的双口网络插头(不带接口),上位计算机主板上则应插上MPI通讯卡(如)。 如果PG是使用时才连接,可以用带PG插座的网络接头,上位计算机则需使用MPI适配器。,对于临时接入的PG节点其MPI地址可设为0;或设为最高MPI地址如126,然后用S7组态软件确定此MPI网所预设的最高地址,如果预设的小,则把网络里的最高MPI地址改为与这台PG样的最高MPI地址。 网络插头如果是安装在段的起点和终点,必须将插头上的终端电阻接通(ON
9、)。,2)网络中继器(RS485),网络中继器可以放大信号并带有光电隔离,所以可用于扩展节点间的连接距离(最多增大20倍);也可用作抗干扰隔离,如用于连接下接地的节点和接地的MPI编程装置的隔离器。对于MPI网络系统,在接地的设备和不接地的以备之间连接时,应该注意RS485中继器的连接与使用。,7.1.3 设置MPI参数,设置MPI参数可分为两部分:PLC侧和PC侧MPI的参数设置。 1. PLC侧参数设置: 在通过HW Config进行硬件组态时双击“CPU313C”后出现如图7.5所示,图7.5 “HW Config”对话框中配置硬件,再点击上图中的“Properties”按钮来设置CPU
10、的MPI属性,包括地址及通信速率,具体操作如图7.6所示。,图7.6 设置CPU的MPI属性,注意: 在通常应用中不要改变MPI通信速率。请注意在整个MPI网络中通信速率必须保持一致,且MPI站地址不能冲突。,2.PC侧参数设置,在PC侧同样也要设置MPI参数,在STEP7软件 SIMATIC Manager界面下点击菜单“Options”选项的“Set PG/PC Interface”(图7.7所示)(或“控制面板”中选中“Set PG/PC Interface”)例如用CP5611作为通讯卡,如图7.8所示,选择“CP5611(MPI)”后点击OK即可。设置完成后,将STEP7中的组态信息
11、下载到CPU中。,图7.7 点击“Options”选项的“Set PG/PC Interface”界面,图7.8 选择“CP5611(MPI)”界面,7.1.4 PC侧的MPI通信卡的类型,1. PC Adapter(PC适配器)一端连接PC的RS232口或通用串行总线(USB)口,另一端连接CPU的MPI,它没有网络诊断功能,通信速率最高为1.5Mbit/s,价格较低。 2. CP5511 PCMCIA TYPE 卡,用于笔记本电脑编程和通信,它具有网络诊断功能,通信速率最高为12Mbit/s,价格相对较高。 3. CP5512 PCMCIA TYPE CardBus(32位)卡,用于笔记本
12、电脑编程和通信,具有网络诊断功能,通信速率最高为12Mbit/s,价格相对较高。,4. CP5611 PCI卡,用于台式电脑编程和通信,此卡具有网络诊断功能,通信速率最高为12Mbit/s,价格适中。 5. CP5613 PCI卡(替代原CP5412卡),用于台式电脑编程和通信,它具有网络诊断功能,通信速率最高为12Mbit/s,并带有处理器,可保持大数据量通信的稳定性,一般用于PROFIBUS网络,同时也具有MPI功能,价格相对最高。 了解上述功能后,可以很容易地选择适合自己应用的通信卡,在CP 通信卡的代码中,5代表PCMCIA接口,6代表PCI总线,3代表有处理器。,7.2 掌握S7-3
13、00PLC的MPI通讯方法,本节主要通过两个实例,简要、直观的介绍用S7-300PLC的全局数据块进行MPI通讯和无组态的MPI通讯的方法,使读者可以快速、准确的掌握S7-300PLC的MPI的使用方法。,7.2.1 掌握全局数据块进行MPI通讯的方法,1. 全局数据块通讯方式的概述 在MPI网络中的各个中央处理单元(CPU)之间能相互交换少量数据,只需关心数据的发送区和接收区,这一过程称做全局数据块通讯。全局数据块的通讯方式是在配置PLC硬件的过程中,组态所要通讯的PLC站之间的发送区和接收区,不需要任何程序处理,这种通讯方式只适合S7-300/400 PLC之间相互通讯。下面以例子说明全局
14、数据块通讯的具体方法和步骤。,2. 网络配置图7.9,图7.9 网络配置图,3. 硬件和软件需求 硬件: CPU313C CPU313C MPI电缆 软件:STEP 7 V5.2 SP24. 网络组态及参数设置步骤。 (1) 建立MPI网络 在STEP 7中建立一个新项目,如MPIEXE1_GD,在此项目下插入两个PLC站,分别为STATION1(CPU313C)和STATION2(CPU313C),并分别插入CPU完成硬件组态,建立MPI网络并配置MPI的站地址和通信速率,本例中MPI的站地址分别设置为2号站和4号站,通信速率为187.5kbit/s。,图7.10 右击“MPI(1)”选择
15、“Define Global Data”,(2) 组态数据的发送区和接收区 如图7.10所示,右击“MPI(1)”或选择“Options”项下的“Define Global Data”进入组态画面,如图7.11所示。,图7.11选择 “Define Global Data”进入组态画面,(3) 插入所有需要通信的CPU 双击“GD ID”右边的CPU栏选择需要通信的CPU。CPU栏总共有15列,这就意味着最多有15个CPU能够参与通信。在每个CPU栏底下填上数据的发送区和接收区,例如第一列的CPU313C(1)的发送区填为“DB1.DBB0:12”(DB1.DBB0:12表示从DB1.DBB0
16、开始的22个字节),然后在菜单“Edit”下选择“Sender”设置为发送区,该方格变为深色,同时在单元中的左端出现符号“”,表示在该行中CPU313C(1)为发送站,在该单元中输入要发送的全局数据的地址。只能输入绝对地址,不能输入符号地址。包含定时器和计数器地址的单元只能作为发送方。在每一行中应定义一个且只能有一个CPU作为数据的发送方,而接收方可以有多个。同一行中各个单元的字节数应相同。,点击第二列的CPU313C(2)下面的单元,输入MB20:12(表示从MB20开始的12B),该格的背景为白色,表示在该行中CPU313C(2)是接收站。编译保存后,把组态数据分别下载到相应CPU中,这样
17、就可以进行数据通信了,如图7.12所示。地址区可以为DB、M、I、Q区,S7-300地址区长度最大为22字节,发送区和接收区的长度必须一致。如果数据包由若干个连续的数据区组成,一个连续的数据区占用的空间为数据区内的字节数加上两个头部说明字节。一个单独的双字占6B,一个单独的字占4B,一个单独的字节占3B,一个单独的位也占3B。例如DB2.DBB0:10和QW0:5一共占用22B(第一个连续数据区的两个头部说明字节不包括在22B之内),图7.12 各个CPU栏底下设置数据的发送区和接收区,程序详见 实训十三(4) 多CPU通讯 多CPU通讯首先要了解GD ID参数,编译以后,每行通信区都会有GD
18、 ID号,如图7.13所示。,图7.13 GD ID参数,() 参数A: 全局数据块的循环数。每个循环数表示和一个CPU通信。例如S7-300 CPU通信,两个发送与接收是一个循环,图中CPU313C(1)和CPU313C(2)组成1号GD环,两个CPU向对方发送GD包,同时接收对方的GD包,相当于全双工点对点通信方式。支持的循环数与CPU有关,S7-300 CPU最多为4个,即最多能和4个CPU通信。,()参数B: 全局数据块的个数。表示一个循环有几个全局数据块,例如两个S7站相互通信,一个循环有两个数据块,如图7.14所示。,图7.14 参数B示例,()参数C: 一个数据包里的数据区数。参
19、考图图7.15,CPU313C SIMATIC 300(1)的CPU发送3组数据到SIMATIC 300(2)的CPU,3个数据区是一个数据包。,图7.15 参数C示例,对于参数A、B、C的介绍只是为了优化数据的接收区和发送区,减少CPU的通信负载。简单应用可以不用考虑这些参数,GD ID编译后会自动生成。(5)通信的诊断 在多个CPU通信时,有时通信会中断,可通过下述方法进行检测: 在编译完成后,在菜单“View”中分别点击“Scan Rates”和“GD Status”,可以查看扫描系数和状态字,如图7.16所示。,图7.16查看扫描系数和状态字,()SR: 扫描频率系数。图中,SR1.1
20、为225,表示发送更新时间为225xCPU循环时间,SR范围为1225。通信中断的问题往往是因扫描时间设置得过快引起的,可根据需要适当增大。()GDS: 每包数据的状态字(双字),参见表7.2。,表 7.2 状态字对应的错误状态,() GST: 所有GDS进行逻辑或运算的结果。用CP5511/5611等通信卡可以首先诊断接线是否可靠,如上例中S7-300(1)MPI地址是2,S7-300(2)MPI地址是4,用CP通信卡连接到MPI网上(必须是带有有编程口的PROFIBUS总线连接器)可以读出2、4号站地址,具体方法是依次点击“控制面板”“Set PG/PC Interface”“Diagno
21、stics(诊断)”“Read”读出所以在网上的站地址,如图7.17所示。0号站为CP5611的站地址,如果没有读出2、4号站地址,说明硬件连接或软件设置有问题,需要进一步具体分析。,图7.17 点击 “Read”后读出所以在网上的站地址,(6)事件触发的数据传送 如果我们需要控制数据的发送与接收,比如在某一事件或某一时刻,接收和发送所需要的数据,这时将用到事件触发的数据传送方式。这种通信方式是通过调用CPU的系统功能SFC60(GD_SND)和SFC61(GD_RCV)来完成的,而且只支持S7-400的CPU,并且相应设置CPU的SR(扫描频率)为0。,7.2.2 掌握无组态的MPI通讯方法
22、,无组态的MPI通讯需要调用系统功能块SFC65SFC69来实现,这种通信方式适合于S7-300、S7-400和S7-200之间的通信,是一种应用广泛、经济的通信方式。 通过调用SFC来实现的MPI通信又可分为两种方式:双边编程通信方式和单边编程通信方式。调用系统功能通信方式不能和全局数据通信方式混合使用。,1.双边编程通信方式 (1)概述 在通信的双方都需要调用通信块,一方调用发送块发送数据,另一方就要调用接收块来接收数据。这种通信方式适用S7-300/400之间的通信,发送块是SFC65 “X_SEND”,接收块是SFC66 “X_RCV”。下面举例说明怎样调用系统功能来实现通信。(2)网
23、络配置图7.18,图7.18 网络配置图,(3) 硬件和软件需求 硬件: CPU313C、 CPU313C、 MPI电缆 软件:STEP 7 V5.2 SP2,(4)网络组态及参数设置步骤 ()新建项目: 在SIMATIC Manager界面下,建立一个项目,加入两个300 Station。然后在HW Config中分别对这两个300 Station进行硬件组态,设置MPI地址,在这里SIMATIC 300(1)的CPU的MPI地址为2,SIMATIC 300(2)的CPU的MPI地址为4。最后把组态信息下载到两台PLC中。,()编程: 首先在SIMATIC 300(1)的CPU下插入OB35
24、,把发送方的程序写入OB35中(见图7.19)。,图7.19插入OB35对话框,双击OB35进入程序编辑界面,点击“Libraries”“Standard Library”“System Function Blocks”,选择SFC65 “X_SEND”后见图7.20。图7.21中当REQ的值等于“TURE”后就把M20.0开始的5个字节发送出去。,图7.20 双击OB35进入发送站的程序编辑界面,发送站的程序编好后,接下来在SIMATIC 300(2)的CPU的OB1里编写接收方程序。同样双击OB1进入程序编辑界面,点击“Libraries”“Standard Library”“System
25、 Function Blocks”,选择SFC66 “X_RCV”(见图7.21)。通过下面这个程序SIMATIC 300(2)的CPU就可以接收SIMATIC 300(1)的CPU发送过来的数据,并存放在MB50MB54中。,图7.21 双击OB1进入接收站的程序编辑界面注意:在程序编写时SFC65 “X_SENG”和SFC66 “X_RCV”必须成对使用。,程序中参数说明见表7.3和表7.4。,表7.3 SFC65 “X_SEND”参数说明,2. 单边编程通信方式,与双边编程通信方式不同,单边编程通信只在一方PLC内编写通信程序,即客户机与服务器的访问模式。编写程序一方的PLC作为客户机,
26、无需编写程序一方的PLC作为服务器,客户机调用SFC通信块访问服务器。这种通信方式适合S7-300/400/200之间的通信,S7-300/400的CPU可以同时作为客户机和服务器,S7-200只能作为服务器。SFC67“X_GET”用来将服务器指定数据区中的数据读回并存放到本地的数据区中, SFC68 “X_PUT” 用来将本地数据区中的数据写到服务器中指定的数据区。下面举例说明怎样调用系统功能来实现两个300 Station的通信。,(1)网络配置图7.22,(2) 硬件和软件需求,硬件: CPU313C、 CPU313C、 MPI电缆软件:STEP 7 V5.2 SP2,(3) 新建项目
27、: 同样在SIMATIC Manager界面下,建立一个项目,加入两个300 Station。硬件组态与做双边编程通讯方式相同。把组态信息下载到CPU中。 在SIMATIC 300(1)的CPU下插入OB35,双击OB35进入程序编辑界面,点击“Libraries”“Standard Library”“System Function Blocks”,选择SFC68 “X_PUT”(见图7.23)。,图7.23 选择SFC68 “X_PUT”,双击SIMATIC 300(1)的CPU下的OB1,进入程序编辑界面,点击“Libraries”“Standard Library”“System Fun
28、ction Blocks”,选择SFC67 “X_GET”(见图7.24)。,图7.24 选择SFC67 “X_GET”,注意:无论运用双边编程通信方式还是单边编程通信方式,最好在SIMATIC Manager界面下插入OB82、OB86、OB122,并下载到CPU中,可以防止通信时系统出错。(4) 项目说明: 、利用无组态的MPI通信方式不能和全局数据通信方式混合使用。 、对于单边编程通信方式,只有主动站才能调用系统功能块SFC67、SFC68。 、在双边编程通信方式和单边编程通信方式中,每次块(SFC65、SFC66、SFC67、SFC68)调用最多76个字节的用户数据。对于S7-300C
29、PU,数据传送的数据一致性是8个字节,对于S7-400CPU则是全长。如果连接到S7-200,必须考虑到S7-200只能用作一个被动站。,7.3 实训十三 三个S7-300之间的MPI通讯,多个S7-300之间的MPI通信方法在实际工业控制中非常普遍,本实训以一个313C为主站,另两个313C为从站,介绍了三个S7-300PLC(CPU313C)构成的MPI通讯的方法。,7.3.1 通讯要求/硬件连接,通讯要求:三个S7-300PLC(CPU313C)构成MPI通讯,要求:按下第一站的按钮I2.0,第二站的指示灯Q1.0和第三站的Q0.1会被点亮; 松开按钮则会熄灭。按下第二站的按钮I2.1控
30、制第一站的指示灯Q0.0以2.5Hz的频率闪烁。硬件连接: 三个CPU313的PLC站通过MPI电缆连接成MPI网。,7.3.2通过HW Config进行硬件组态,在STEP 7的SIMATIC Manager界面下建立一个新项目,如项目名为“MPIEXE1_GD”,在此项目下插入三个300 Station PLC站,分别为SIMATIC 300(1) 、SIMATIC 300(2)和SIMATIC 300(3),分别双击三个站的“Hardware”并分别插入机架Rail和正确序列号的CPU。如图7.30、图7.31所示:,图7-30 创建多S7-300 CPU通信项目,图7-31 “HW C
31、onfig”对话框中配置硬件,下面再分别双击各站的“CPU313C”, 如图7.32所示,点中“Properties”建立MPI网络并配置MPI的站地址和通信速率,本例中MPI的站地址分别设置为2号站、4号站和6号站,通信速率为187.5kbit/s。,图7.32 分别双击各站的“CPU313C”点中“Properties”,图7.33 建立MPI网络并配置MPI的站地址,图7.34 配置MPI的通信速率,注意:在整个MPI网络中通讯速率必须保持一致,且各MPI站地址不能冲突。针对第一站的指示灯Q0.0要以2.5Hz的频率闪烁,我们配置第一站的CPU“Cycle/Clock Memory”选项
32、卡,在“Clock Memory”左面打上勾,Memory Byte:右边填上100, 如图7.35所示:,图7.35 配置CPU“Cycle/Clock Memory”选项卡,“Addresses”选项卡上把“Input”和“Output”的起始地址改成0,如图7.36所示。,图7.36 配置CPU的“Addresses”选项卡,设置完成后,将STEP7中的组态信息“保存编译”,将STEP7中的组态信息“保存编译”最后“下载”到PLC, 完成硬件的组态。,7.3.3 定义全局数据(Define global data),1. 组态数据的发送区和接收区 右击“MPI(1)”或选择“Option
33、s”项下的“Define Global Data(图7.37)”进入组态画面(如图7.38)。,图7.37 右击“MPI(1)”选择 “Define Global Data”,图7.38 选择 “Define Global Data”进入组态画面,2. 插入所有需要通信的CPU 双击“GD ID”右边的CPU栏选择需要通信的CPU。第一列的CPU313C(1)的发送区填为“M1.0”,然后在菜单“Edit”下选择“Sender”设置为发送区,该方格变为深色,同时在单元中的左端出现符号“”,表示在该行中CPU313C(1)为发送站,在该单元中输入要发送的全局数据的地址。第二、三列的CPU313C
34、填写内容如图7.39所示。,图7.39 各个CPU栏底下设置数据的发送区和接收区,7.3.4 通过LAD/STL/FBD进行编程,分别在CPU313C(1)和CPU313C(2)中的OB1中编程,如图7.40和图7.41所示。再分别把程序“保存”和“下载”。,图7.40 在CPU313C(1)的OB1中编程,图7.41 在CPU313C(2)的OB1中编程,7.3.5 下载调试,在SIMATIC Manager界面里点击工具栏的“Configure Network ” 工具按钮,如图7.42所示:,图7.42 点击工具栏的“Configure Network ” 工具按钮,我们注意到三个站的C
35、PU已经挂到了MPI网络中,全部选中三个站,“编译”和“下载”, 如图7.43和图7.44所示。,图7.43 全部选中三个站,“编译”和“下载”,图7.44 正在“编译”和“下载”,检查整个MPI网的联接情况可以通过点击工具栏的“Accessible Nodes ”工具按钮,出现图7.45。,图7.45 整个MPI网的联接情况,注意:PLC三个站的CPU模块上的按钮在运行前都需打一下“STOP”再“RUN”,以免被以前PLC里的程序结果影响。,7.3.6 运行,最后按下第一站的按钮I2.0,第二站的指示灯Q1.0和第三站的Q0.1会被点亮; 松开按钮则会熄灭。按下第二站的按钮I2.1控制第一站的指示灯Q0.0以2.5Hz的频率闪烁。,