Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 其他文档 > S7-200-SMART-S7通信

S7-200-SMART-S7通信

收藏

本作品内容为S7-200-SMART-S7通信,格式为 doc ,大小 2499624 KB ,页数为 29页

S7-200-SMART-S7通信


('一、S7-200SMARTCPU之间的以太网通信S7—200SMARTCPU固件版本V2.0及以上版本的CPU可实现CPU、编程设备和HMI(触摸屏)之间的多种通信:—CPU与编程设备之间的数据交换.—CPU与HMI之间的数据交换。—CPU与其他S7—200SMARTCPU之间的PUT/GET通信.S7-200SMARTCPU以太网连接资源如下:—1个连接用于与STEP7Micro/WinSMART软件的通信。—8个连接用于CPU与HMI之间的通信。—8个连接用于CPU与其他S7-200SMARTCPU之间的PUT/GET主动连接-8个连接用于CPU与其他S7—200SMARTCPU之间的PUT/GET被动连接PUT/GET指令格式S7—200SMARTCPU提供了PUT/GET指令,用于S7-200SMARTCPU之间的以太网通信(PUT/GET指令格式见表1)。PUT/GET指令只需要在主动建立连接的CPU中调用执行,被动建立连接的CPU不需要进行通信编程。PUT/GET指令中TABLE参数用于定义远程CPU的IP地址、本地CPU和远程CPU的数据区域以及通信长度(TABLE参数定义见表2)。表1PUT和GET指令:LAD/FBDSTL描述PUTTABLEPUT指令启动以太网端口上的通信操作,将数据写入远程设备。PUT指令可向远程设备写入最多212个字节的数据。GETTABLEGET指令启动以太网端口上的通信操作,从远程设备获取数据。GET指令可从远程设备读取最多222个字节的数据。表2PUT和GET指令的TABLE参数定义:字节偏移量Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit00D1A2E30错误代码41远程CPU的IP地址2345预留(必须设置为0)6预留(必须设置为0)7指向远程CPU通信数据区域的地址指针(允许数据区域包括:I、Q、M、V)891011通信数据长度512指向本地CPU通信数据区域的地址指针(允许数据区域包括:I、Q、M、V)1314151D:通信完成标志位,通信已经成功完成或者通信发生错误。2A:通信已经激活标志位.3E:通信发生错误,错误原因需要查询错误代码4。4错误代码:见表3PUT和GET指令TABLE参数的错误代码。5通信数据长度:需要访问远程CPU通信数据的字节个数,PUT指令可向远程设备写入最多212个字节的数据,GET指令可从远程设备读取最多222个字节的数据。表3PUT和GET指令TABLE参数的错误代码:错误代码描述0通信无错误1PUT/GETTABLE参数表中存在非法参数:\uf0b7本地CPU通信区域不包括I、Q、M或V。\uf0b7本地CPU不足以提供请求的数据长度。\uf0b7对于GET指令数据长度为零或大于222字节;对于PUT指令数据长度大于212字节。\uf0b7远程CPU通信区域不包括I、Q、M或V。\uf0b7远程CPU的IP地址是非法的(0.0。0.0)。\uf0b7远程CPU的IP地址为广播地址或组播地址。\uf0b7远程CPU的IP地址与本地CPU的IP地址相同\uf0b7远程CPU的IP地址位于不同的子网。2同一时刻处于激活状态的PUT/GET指令过多(仅允许16个)3无可以连接资源,当前所有的连接都在处理未完成的数据请求(S7-200SAMRTCPU主动连接资源数为8个)。4从远程CPU返回的错误:\uf0b7请求或发送的数据过多。\uf0b7STOP模式下不允许对Q存储器执行写入操作.\uf0b7存储区处于写保护状态5与远程CPU之间无可用连接:\uf0b7远程CPU无可用的被动连接资源(S7-200SMARTCPU被动连接资源数为8个)。\uf0b7与远程CPU之间的连接丢失(远程CPU断电或者物理断开)。6—9预留通信资源数量S7-200SMARTCPU以太网端口含有8个PUT/GET主动连接资源和8个PUT/GET被动连接资源.例如:CPU1调用PUT/GET指令与CPU2~CPU9建立8主动连接的同时,可以与CPU10~CPU17建立8被动连接(CPU10~CPU17调用PUT/GET指令),这样的话CPU1可以同时与16台CPU(CPU2~CPU17)建立连接。关于主动连接资源和被动连接资源的详细解释如下:1、主动连接资源和被动连接资源\uf0b7调用PUT/GET指令的CPU占用主动连接资源数;相应的远程CPU占用被动连接资源。2、8个PUT/GET主动连接资源\uf0b7S7-200SMARTCPU程序中可以包含远多于8个PUT/GET指令的调用,但是在同一时刻最多只能激活8个PUT/GET连接资源。\uf0b7同一时刻对同一个远程CPU的多个PUT/GET指令的调用,只会占用本地CPU的一个主动连接资源和远程CPU的一个被动连接资源.本地CPU与远程CPU之间只会建立一条连接通道,同一时刻触发的多个PUT/GET指令将会在这条连接通道上顺序执行。\uf0b7同一时刻最多能对8个不同IP地址的远程CPU进行PUT/GET指令的调用,第9个远程CPU的PUT/GET指令调用将报错,无可用连接资源.已经成功建立的连接将被保持,直到远程CPU断电或者物理断开。3、8个PUT/GET被动连接资源\uf0b7S7-200SMARTCPU调用PUT/GET指令,执行主动连接的同时也可以被动地被其他远程CPU进行通信读写。\uf0b7S7—200SMART最多可以与被8个不同IP地址的远程CPU进行建立被动连接.已经成功建立的连接将被保持,直到远程CPU断电或者物理断开。指令编程举例在下面的例子中,CPU1为主动端,其IP地址为192。168.2。100,调用PUT/GET指令;CPU2为被动端,其IP地址为192。168.2.101,不需调用PUT/GET指令,网络配置见图1。通信任务是把CPU1的实时时钟信息写入CPU2中,把CPU2中的实时时钟信息读写到CPU1中。图1CPU通信网络配置图1、CPU1主动端编程CPU1主程序中包含读取CPU实时时钟、初始化PUT/GET指令的TABLE参数表、调用PUT指令和GET指令等。网络1:读取CPU1实时时钟,存储到VB100~VB107.图2读取CPU1实时时钟注:READ_RTC指令用于读取CPU实时时钟指令,并将其存储到从字节地址T开始的8字节时间缓冲区中,数据格式为BCD码。网络2:定义PUT指令TABLE参数表,用于将CPU1的VB100~VB107传输到远程CPU2的VB0~VB7.图3定义PUT指令TABLE参数表\uf0b7a。定义通信状态字节\uf0b7b.定义CPU2IP地址\uf0b7c.定义CPU2的通信区域,从VB0地址开始\uf0b7d。定义通信数据长度\uf0b7e.定义CPU1的通信区域,从VB100地址开始网络3:定义GET指令TABLE参数表,用于将远程CPU2的VB100~VB107读取到CPU1的VB0~VB7.图4定义GET指令TABLE参数表\uf0b7a.定义通信状态字节\uf0b7b。定义CPU2IP地址\uf0b7c。定义CPU2的通信区域,从VB100地址开始\uf0b7d.定义通信数据长度\uf0b7e。定义CPU1的通信区域,从VB0地址开始网络4:调用PUT指令和GET指令.图5调用PUT指令和GET指令2、CPU2被动端编程CPU2的主程序只需包含一条语句用于读取CPU2的实时时钟,并存储到VB100~VB107,如图6所示。图6读取CPU2实时时钟PUT/GET例程为了更好地理解PUT/GET指令的编程,可参考下面的例程。PUT_GET_CPU1.smartPUT_GET_CPU2.smart注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。二:S7-200SMARTCPUPUT/GET向导在S7-200SMARTCPU之间以太网通信章节中CPU1的PUT/GET指令的编程可以使用PUT/GET向导以简化编程步骤。该向导最多允许组态16项独立PUT/GET操作,并生成代码块来协调这些操作。PUT/GET向导编程步骤1、STEP7Micro/WINSMART在“工具”菜单的“向导”区域单击“Get/Put”按钮,启动PUT/GET向导(见图1)。图1启动PUT/GET向导2、在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释(见图2)。图2添加PUT/GET操作\uf0b7a。点击“添加”按钮,添加PUT/GET操作\uf0b7b。为每个操作创建名称并添加注释3、定义PUT/GET操作(见图3、图4)。图3定义PUT操作\uf0b7a。选择操作类型,PUT或GET\uf0b7b.通信数据长度\uf0b7c.定义远程CPU的IP地址\uf0b7d。本地CPU的通信区域和起始地址\uf0b7e.远程CPU的通信区域和起始地址图4定义GET操作\uf0b7a.选择操作类型,PUT或GET\uf0b7b。通信数据长度\uf0b7c。定义远程CPU的IP地址\uf0b7d.本地CPU的通信区域和起始地址\uf0b7e。远程CPU的通信区域和起始地址4、定义PUT/GET向导存储器地址分配(见图5)。图5分配存储器地址注:点击“建议”按钮向导会自动分配存储器地址。需要确保程序中已经占用的地址、PUT/GET向导中使用的通信区域与不能存储器分配的地址重复,否则将导致程序不能正常工作。5、在图5中点击“生成”按钮将自动生成网络读写指令以及符号表。只需用在主程序中调用向导所生成的网络读写指令即可(见图6)。图6主程序中调用向导生成的网络读写指令PUT/GET向导例程为了更好地理解PUT/GET指令的编程,可参考下面的例程。PUT_GET_CPU1.smartPUT_GET_CPU2.smart注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任.使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门.常见问题1、S7-200SMARTCPU以太网通信端口支持哪些通信协议,是否支持TCP、UDP和ISOonTCP等开放式用户通信或ModbusTCP通信?S7—200SMARTCPU以太网通信端口从V2。2固件支持TCP、UDP和ISOonTCP等开放式用户通信及ModbusTCP通信。2、S7-200SMARTCPU标准型和紧凑型产品是否都支持GET/PUT通信?S7—200SMARTCPU全系列产品都支持GET/PUT通信。但是固件版本低于V2.0的产品不支持GET/PUT通信,CPU固件可以通过MicroSD卡进行升级.3、S7-200SMARTCPU在同一时刻能否对同一个远程CPU调用多于8个GET/PUT指令?同一时刻对同一个远程CPU可以调用多于8个GET/PUT指令。同一时刻对同一个远程CPU调用多个GET/PUT指令只会占用1个GET/PUT主动连接资源,而不是8个主动连接资源.4、为什么有些第三方触摸屏不能与STEP7—Micro/WINSMART软件同时访问S7—200SMARTCPU?虽然S7-200SMARTCPU以太网端口具有25个连接资源,但是其中只有1个连接资源(PG连接资源)用于与STEP7-Micro/WINSMART软件的通信。如果第三方触摸屏与S7—200SMARTCPU的连接也使用PG连接资源,就会造成第三方触摸屏不能与STEP7—Micro/WINSMART软件同时访问S7—200SMARTCPU。5、GET/PUT指令可以传送的最大用户数据是多少?GET指令可从远程站点读取最大222个字节的用户数据,PUT指令可向远程站点写入最大212个字节的用户数据;大数据量的用户数据通信可以调用多个GET/PUT指令来实现。采用GET/PUT向导时每个操作的读写用户数据的最大个数为200个字节。6、GET/PUT通信错误有哪些可能原因?GET/PUT指令TABLE参数表的第一个字节提供了“错误代码”,用于排查错误原因。GET/PUT指令故障可能原因:●S7-200SMARTCPU固件版本较低,通信双方CPU固件都需要V2。0及以上版本。●超出了本地CPU主动连接资源限制或远程CPU无可用的被动连接资源.●GET/PUT指令TABLE参数定义错误。●通信站点之间的物理连接出错.二:S7—200SMARTCPU与S7-300/400以太网接口进行S7通信S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。经过测试发现S7-300/400通过集成的PN口或CP343-1/CP443—1与S7—200SMARTPLC之间的S7通信也是可以成功的,但是需要S7—300/400侧编程调用PUT/GET指令。注意:1。S7-200SMARTCPU与S7-300/400CPU之间的S7通信未经西门子官方测试,本文档仅供客户测试使用,使用该种通信方式所产生的任何危险需要有客户自己承担!2。S7—200SMARTPLCV2.0版本才开始支持PUT/GET通信,V1。0版本的CPU需要升级固件后方可支持PUT/GET。3.S7-300/400若采用CP通信时,则需要采用Standard或Advanced类型通信模块,CP343—1Lean模块不支持。4.本文仅介绍S7-300集成PN口与S7—200SMARTCPUS7通信。S7通信介绍S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7—300/400PLC之间的通信。S7-300/400通过以太网接口与S7-200SMARTPLC之间的S7通讯经过测试是可以成功的,但是需要S7-300/400侧编程调用PUT/GET指令,见表1所示。表1PUT和GET:S7—400S7—300描述简要描述SFB14FB14读数据单边编程读访问。SFB15FB15写数据单边编程写访问。S7-300/400根据使用通信接口(集成的PN口或CP343—1/CP443—1)不同,调用的功能块来源也不同。通信接口为S7-300集成PN接口时,需要使用StandardLibrary中PUT/GET指令,如图1所示.图1S7—300PN接口需采用StandardLibrary通信接口为S7-300CP通信模块时,需要使用SIMATIC_NET_CP库中PUT/GET指令,如图2所示.图2S7-300CP模块接口需采用SIMATIC_NET_CP库S7—400CPU不区分通信接口,需要使用SystemFunctionBlocks中的SFB14/SFB15指令块,如图3所示。图3S7-400需采用SFB程序块硬件及网络组态本文以采用1个315-2PN/DP,1个S7—200SMARTPLC为例,介绍它们之间的S7通信。在STEP7中创建一个新项目,项目名称为S7-300-SMART。插入1个S7-300站,在硬件组态中插入CPU315-2PN/DP.如图4所示。图4STEP7项目中插入S7—300站点设置CPU315-2PN/DP的IP地址:192。168.0。1,如图5所示.硬件组态完成后,即可下载该组态。图5设置CPUPNIP地址打开“NetPro”设置网络参数,选中CPU315—2PN/DP,在连接列表中建立新的连接。步骤如图6所示。图6NetPro组态视图中插入新连接选择Unspecified站点,选择通讯协议S7connection,点击Apply,如图7所示。图7组态新连接在弹出的S7connection属性对话框中,勾选Establishanactiveconnection,设置Partneraddress:192。168。0。2(S7-200SMARTPLCIP地址),如图8所示。图8设置S7连接参数点击"AddressDetails",再弹出来的对话框设置Partner的Slot为1,如图9所示。点击OK即可关闭该对话框。图9设置“addressdetails”参数网络组态创建完成后,需要编译,如图10所示。图10保存并编译连接网络组态编译无错,鼠标先点击CPU315-2PN/DP,然后点击下载按钮下载网络组态,步骤如图11所示.图11下载组态连接程序编程可以通过SFB/FB14"GET”,从远程CPU中读取数据。S7—300:在REQ的上升沿处读取数据.在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。远程伙伴返回此数据。在下一个SFB/FB调用处,已接收的数据被复制到组态的接收区(RD_i)中。必须要确保通过参数ADDR_i和RD_i定义的区域在长度和数据类型方面要相互匹配.通过状态参数NDR数值为1来指示此作业已完成。只有在前一个作业已经完成之后,才能重新激活读作业。远程CPU可以处于RUN或STOP工作状态。如果正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示.通过使用SFB/FB15”PUT",可以将数据写入到远程CPU。S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。S7-400:在控制输入REQ的上升沿处启动SFB。在此过程中,将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。远程伙伴将所需要的数据保存在随数据一起提供的地址下面,并返回一个执行确认。必须要确保通过参数ADDR_i和SD_i定义的区域在编号、长度和数据类型方面相互匹配。如果没有产生任何错误,则在下一个SFB/FB调用时,通过状态参数DONE来指示,其数值为1。只有在最后一个作业完成之后,才能再次激活写作业。远程CPU可以处于RUN或STOP模式.如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。打开SIMATIC315PN-1的OB1,在OB1中依次调用FB14,FB15如图12、图13所示:图12FB14调用表2。FB14参数说明:参数描述数据类型存储区描述REQINPUTBOOLI、Q、M、D、L上升沿触发调用功能块IDINPUTWORDM、D、常数地址参数IDNDROUTPUTBOOLI、Q、M、D、L为1时,接收数据成功ERROROUTPUTBOOLI、Q、M、D、L接收到新数据STATUSOUTPUTWORDI、Q、M、D、L故障代码S7-300:ADDR_1S7-400:ADDR_i(1≤i≤4)IN_OUTANYM、D、I、Q、M、D、T、C从S7—200SMART的数据地址中读取数据;V区数据对应DB1。S7-300:RD_1S7-400:RD_iIN_OUTANYS7—300:M、DS7-400I、Q、M、D、T本站接收数据地址(1≤i≤4)、C图13FB15调用表3。FB15参数说明:参数描述数据类型存储区描述REQINPUTBOOLI、Q、M、D、L上升沿触发调用功能块IDINPUTWORDM、D、常数地址参数DONEOUTPUTBOOLI、Q、M、D、L为1时,发送完成ERROROUTPUTBOOLI、Q、M、D、L为1时,有故障发生STATUSOUTPUTWORDI、Q、M、D、L故障代码S7-300:ADDR_1S7—400:ADDR_i(1≤i≤4)IN_OUTANYM、D、I、Q、M、D、T、C从S7-200SMART的数据地址中读取数据;V区数据对应DB1。S7-300:SD_1S7—400:SD_i(1≤i≤4)IN_OUTANYS7-300:M、DS7—400I、Q、M、D、T、C本站发送数据地址注意:S7-200SMARTPLC不需要编程。S7-200SMART中的V存储区在S7-300/400PLC编程中以DB1数据块的形式体现。三:S7-200SMARTCPU与S7-1200进行S7通信S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。经过测试发现S7—1200与S7—200SMARTPLC之间的S7通信也是可以成功的,S7—1200侧编程调用PUT/GET指令或者S7-200SMART侧编程调用PUT/GET指令都是可以的。注意:1.S7—200SMARTCPU与S7-1200之间的S7通信未经西门子官方测试,本文档仅供客户测试使用,使用该种通信方式所产生的任何危险需要有客户自己承担!2。S7-200SMARTPLCV2.0版本才开始支持PUT/GET通信,V1。0版本的CPU需要升级固件后方可支持PUT/GET。3.本文只介绍了S7—1200侧调用PUT/GET指令编程方式(S7—200SMARTCPU作为服务器方,无需编程),未介绍S7-200SMART侧编程调用PUT/GET方式。硬件和软件需求及所完成的通信任务本文以采用1个CPU1215C(6ES7215-1AG40-0AB0),1个S7—200SMARTPLC为例,介绍它们之间的S7通信。硬件:①S7—1200CPU②S7-200SMARTCPU(固件V2。0)③PC(带以太网卡)④TP以太网电缆软件:①STEP7V13SP1②STEP7Micro/WINSMARTV2.1所完成的通信任务:①S7-1200将通信数据区DB1中的200个字节发送到S7-200SMART的VB数据区.②S7-1200读取S7-200SMART中的VB数据区存储到S7-1200的数据区DB2.S7-1200侧硬件组态和网络组态1。使用TIAV13软件新建一个项目,添加1个S7-1200站点并为其分配网络和IP地址,如图1。所示。图1。TIA软件中添加S7-1200站点2.TIA软件的网络视图中为S7-1200CPU添加一个新连接,如图2。所示。图2。S7-1200添加新连接在弹出”创建新连接”对话框中选择”未指定",然后点击”添加"按钮,添加新连接,如图3。所示.图3.选择未指定连接需要为新创建的连接指定连接伙伴方的IP地址和TSAP,设置方法如图4.,图5。所示。注意:S7-200SMART侧的TSAP只能设置为03。00或者03。01。图4.设置连接伙伴方IP地址图5.设置连接伙伴方TSAP地址TIA软件程序编程1.创建发送数据块DB1(接收区数据块DB2类似),数据块定义为200个字节的数组且数据块的属性中需要取消”优化的块访问"选项,如图6。所示。图6.创建数据块并取消优化访问2.发送数据块与接收数据块创建完成后,即可在OB1中调用PUT/GET指令,进行S7通信了,如图7。所示。图7。调用PUT/GET指令表1.PUT指令参数说明CALL“PUT”,%DB3//调用PUT,使用背景DB块:DB3REQ:=%M0。0//上升沿触发程序块的调用ID:=W#16#0100//连接号,要与连接配置中一致,创建连接时的连接号,见图1.标记7DONE:=%M2。0//为1时,发送完成ERROR:=%M2.1//为1时,有故障发生STATUS:=%MW4//状态代码ADDR_1:=P#DB1.DBX0.0BYTE200//发送到通信伙伴数据区的地址,对应S7-200SMARTVB0-VB199SD_1:=P#DB1。DBX0.0BYTE200//本地发送数据区表2。GET指令参数说明CALL“GET”,%DB4//调用GET,使用背景DB块:DB4REQ:=%M0.1//系统时钟2秒脉冲ID:=W#16#0100//连接号,要与连接配置中一致,创建连接时的连接号,见图1.标记7NDR:=%M2。2//为1时,接收到新数据ERROR:=%M2.3//为1时,有故障发生STATUS:=%MW6//状态代码ADDR_1:=P#DB1。DBX200.0BYTE200//从通信伙伴数据区读取数据的地址,对应S7—200SMARTVB200-VB399RD_1:=P#DB2.DBX0.0BYTE200//本地接收数据地址综合以上步骤,已经完成了S7—1200硬件和软件部分的编程,下载只需要将程序下载到S7-1200PLC即可.状态监控1.连接状态监控S7连接成功的建立是调用PUT/GET指令的基础,S7连接成功建立后,方能正确执行PUT/GET指令.在TIA软件的网络视图中,将软件切换到在线模式,可以监控S7连接状态,如图8.所示。图8。监控S7连接状态S7连接成功建立后,S7—1200触发PUT/GET指令,通过TIA软件监控表和STEP7Micro/WINSMART软件的状态表,可以监控数据通信是否正常。注意:S7-200SMART中V区对应于DB1,即在PUT指令中使用的通信伙伴数据区ADDR_1=P#DB1.DBX0.0BYTE200在S7—200SMAR中对于为VB0~VB199.本文档中S7—200SMART做S7通讯的服务器,占用S7—200SMARTPLC的服务器连接资源,S7—200SMARTPLC本身不需要编写通讯程序.S7-1200与S7—200SMARTS7通讯的另外一种方法是S7-200SAMRTPLC做客服端,S7—1200做服务器。该方式需要S7—200SMART调用PUT/GET指令,S7—1200侧不需要编写通讯程序.该方式比较简单,本文档不做介绍.',)


  • 编号:1700774113
  • 分类:其他文档
  • 软件: wps,office word
  • 大小:29页
  • 格式:docx
  • 风格:商务
  • PPT页数:2499624 KB
  • 标签:

广告位推荐

相关其他文档更多>