MCGS嵌入版说明书1.docx

上传人:b****8 文档编号:9210544 上传时间:2023-02-03 格式:DOCX 页数:65 大小:1.44MB
下载 相关 举报
MCGS嵌入版说明书1.docx_第1页
第1页 / 共65页
MCGS嵌入版说明书1.docx_第2页
第2页 / 共65页
MCGS嵌入版说明书1.docx_第3页
第3页 / 共65页
MCGS嵌入版说明书1.docx_第4页
第4页 / 共65页
MCGS嵌入版说明书1.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

MCGS嵌入版说明书1.docx

《MCGS嵌入版说明书1.docx》由会员分享,可在线阅读,更多相关《MCGS嵌入版说明书1.docx(65页珍藏版)》请在冰豆网上搜索。

MCGS嵌入版说明书1.docx

MCGS嵌入版说明书1

10.2数据前处理

在实际应用中,从硬件设备中输入或输出的数据一般是特定范围内的电压、电流等物理意义的值,通常要对这些数据进行相应的转换,才能得到真正具有实际意义的工程数据。

例如,从AD通道采集进来的数据一般都为电压mV值,需要进行量程转换或查表、计算等处理才能得到所需的工程物理量。

MCGS嵌入版系统对设备采集通道的数据可以进行八种形式的数据处理,包括:

多项式计算、倒数计算、开方计算、滤波处理、工程转换计算、函数调用、标准查表计算、自定义查表计算。

各种处理可单独进行也可组合进行。

MCGS嵌入版的数据前处理与设备是紧密相关的,在MCGS嵌入版设备窗口下,打开设备构件,设置其数据处理属性页即可进行MCGS嵌入版的数据前处理组态。

如图:

按“设置”按钮则打开“通道处理设置”,如图:

在MCGS嵌入版通道处理设置窗口中,进行数据前处理的组态设置。

如:

对设备通道0的输入信号1000~5000mV(采集信号)工程转换成0~2Mpa(传感器量程)的压力量,则选择第5项工程转换,设置如图:

MCGS嵌入版在运行环境中则根据输入信号的大小采用线性插值方法转换成工程物理量(0~2Mpa)范围。

MCGS嵌入版数据前处理八种方式说明如下:

●多项式处理:

对设备的通道信号进行多项式(系数)处理,可设置的处理参数有k0到k5,可以将其设置为常数,也可以设置成指定通道的值(通道号前面加“!

”),另外,还应选择参数和计算输入值X的乘除关系。

●倒数1/X:

对设备输入信号求倒数运算。

●开方:

对设备输入信号求开方运算。

●滤波:

也叫中值滤波,本次输入信号的1/2+上次输入信号的1/2。

●工程转换:

把设备输入信号转换成工程物理量。

●函数调用:

函数调用用来对设定的多个通道值进行统计计算,包括:

求和、求平均值、求最大值、求最小值、求标准方差。

●标准查表计算:

如下图所示,标准查表计算包括八种常用热电偶和Pt100热电阻查表计算。

Pt100热电阻在查表之前,应先使用其它方式把通过AD通道采集进来的电压值转换成为Pt100的电阻值,然后再用电阻值查表得出对应的温度值。

对热电偶查表计算,需要指定使用作为温度补偿的通道(热电偶已作冰点补偿时,不需要温度补偿),在查表计算之前,先要把作为温度补偿的通道的采集值转换成实际温度值,把热电偶通道的采集值转换成实际的毫伏数。

●自定义查表计算处理:

如下图所示,自定义查表计算处理首先要定义一个表,在每一行输入对应值;然后再指定查表基准。

注意:

MCGS规定用于查表计算的每列数据,必须以单调上升或单调下降的方式排列,否则,无法进行查表计算。

如下图,查表基准是第一列,MCGS系统处理时首先将设备输入信号对应于基准(第一列)线性插值,给出对应于第二列相应的工程物理量,即基准对应输入信号,另一列对应工程物理量(传感器的量程)。

10.3实时数据处理

MCGS嵌入版系统对实时数据的处理主要在用户脚本程序和运行策略中完成。

MCGS嵌入版组态软件中的脚本程序是一种类似普通Basic语言的编程脚本语言(Script语言),但与Basic相比,操作更为简单,可以用来编制某些复杂的多分支流程控制程序。

利用脚本程序中的三个最基本的程序控制语句(赋值语句、条件语句和循环语句),以及系统提供的各种系统函数和系统变量,可以完全满足用户的实际需要,设计出理想的控制系统。

用户脚本程序可以嵌入到MCGS嵌入版组态软件的许多部件中,包括:

●运行策略窗口,脚本程序策略块中;

●用户窗口,按钮控件的脚本程序中;

●用户窗口,窗口属性中的启动脚本、循环脚本以及退出脚本中;

●用户窗口,窗口及各个控件的事件组态中。

MCGS嵌入版脚本程序中不能自定义变量,但可以把实时数据库中的数据对象当作全局变量。

象使用普通的变量一样,用数据对象的名字直接读写数据对象的值。

如:

IF ADdat0>100 THEN

   DODat1=0

ELSE

   DODat1=1

ENDIF

假定ADdat0是实时数据库中的一个数值型数据对象,它与模拟量输入(AD)接口板的0号通道建立了连接;DODat1是实时数据库中的一个开关型数据对象,其与数字量输出板(DO)接口板的1号通道建立了连接。

那么,上段程序的含义是:

当AD板0号通道采集进来的数据(经工程转换后)大于100时,DO板的1号通道关闭(输出低电平);反之,DO板的1号通道打开(输出高电平)。

下面给出一个采用脚本程序构件实现“比例-微分-积分”(PID)控制算法的实例。

首先在循环策略块中创建一个策略行,如下图所示。

在策略行的条件部分可以控制该算法是否启动,设置循环策略的定时时间为1秒,在策略行的功能部分放置脚本程序构件。

在实时数据库中定义如下数据对象:

对象名称

类型

初始值

注 释

ADdat0

数值型

0

和模拟量输入通道建立连接

DAdat0

数值型

0

和模拟量输出通道建立连接

SetV

数值型

100

控制设定值

Tempdx

数值型

0

用作存储临时数据

Tempdx1

数值型

0

用作存储临时数据

Tempdx2

数值型

0

用作存储临时数据

Pdat

数值型

100

PID算法中的参数P

Idat

数值型

20

PID算法中的参数I

Ddat

数值型

20

PID算法中的参数D

在设备窗口中加入相应的设备构件,指定ADdat0数据对象和设备的模拟量输入通道0建立连接,指定DAdat0数据对象和设备的模拟量输出通道建立连接。

在策略行的脚本程序构件中编制如下所示的脚本程序:

 Tempdx=SetV-ADdat0

 Tempdx2=Tempdx2+Tempdx

 IFIdat<>0THEN

   DAdat0=Pdat*(Tempdx+Tempdx2/Idat+Ddat*(Tempdx-Tempdx1))

 ELSE

   DAdat0=Pdat*(Tempdx+Ddat*(Tempdx-Tempdx1))

 ENDIF

 Tempdx1=Tempdx

应用系统运行时,每隔一秒钟,执行一次上面的脚本程序,从而进行一次PID调节。

在脚本程序中,由设定值和采集进来的实际值计算输出值,而采集和输出的操作,由系统指挥设备构件来完成。

程序设定值和PID参数值可以通过动画构件进行设置,如:

在用户窗口中配置四个滑动输入器构件,分别对应于设定值、P参数、I参数和D参数,运行时,用鼠标操作滑块就可随意改变这些参数的值。

10.4实时数据存储

10.4.1数据存储方式

在工程应用中,常常需要把采集的数据存储到历史数据库中,以便日后查询和生成报表。

MCGS嵌入版把实时数据的存储作为数据对象的属性,封装在数据对象内部,由实时数据库完成存储操作。

实时数据的存储有两种方式:

●定时存储

●在脚本程序中按特定条件控制存储

组对象采用定时存储方式,按照设定的时间周期,定时存储所有成员在同一时刻的值。

在脚本程序中利用数据对象操作函数的存盘操作功能,可在运行过程中向实时数据库发出信息,通知实时数据库把指定组对象的值进行存储处理。

用户可通过脚本程序的组态配置来实现各种自动、手动或有条件控制的存盘功能。

当磁盘空间到达最小预留空间时,软件会自动删除存盘数据。

删除数据依据两个原则:

●只删除运行工程的存盘数据

●按照各个组对象存盘文件10%大小比例删除数据

10.4.2存盘数据库类型

MCGS嵌入版使用了灵活的文件系统来存储和管理数据。

其中,组态配置数据和报警数据存储在MCGSE.DAT这一大小固定的文件中,运行过程中,组态配置数据不会改变,只有当报警存盘数据达到限制后,MCGS嵌入版会自动覆盖前面的数据。

组对象存盘数据由多个小的二进制文件组成,文件的大小可以在组态的系统存盘参数中定义,方便了用户维护(包括复制,转移,查询等)。

10.5数据后处理

10.5.1数据后处理概述

MCGS嵌入版组态软件中的数据后处理,其本质上是对MCGS历史存盘数据库的处理,MCGS嵌入版组态软件提供的历史曲线、历史表格、存盘数据浏览等构件,可用来提炼和形象地显示或打印历史数据。

10.5.2数据后处理功能

MCGS嵌入版组态软件的数据后处理中,用于数据处理和数据显示的构件及各自实现的功能为:

●动画构件:

历史曲线

MCGS嵌入版历史曲线构件(动画工具箱中图标为:

)用于实现历史数据的曲线浏览功能。

运行时,历史曲线构件可以根据指定的历史数据源,将一段时间内的数据以曲线的形式显示或打印出来,同时,还可以自由地向前、向后翻页或者对曲线进行缩放等操作。

●动画构件:

历史表格

MCGS嵌入版历史表格构件(动画工具箱中图标为:

)为用户提供了强大的数据报表功能。

使用MCGS历史表格,可以显示静态数据、实时数据库中的动态数据、历史数据库中的历史记录以及对它们的统计结果,可以方便、快捷地完成各种报表的显示和打印功能;在历史表格构件中内建了数据库查询功能和数据统计功能,可以很轻松地完成各种数据查询和统计任务;同时,历史表格具有数据修改功能,可以使报表的制作更加完美。

●动画构件:

存盘数据浏览

MCGS嵌入版存盘数据浏览构件(动画工具箱中图标为:

)可以按照指定的时间和数值条件,将满足条件的数据显示在报表中,从而快速地实现简单报表的功能。

以上构件中,历史表格和历史曲线的详细功能和使用方法将在本书的第十二章和第十三章分别予以详细阐述,存盘数据浏览构件的功能,请参见《MCGS嵌入版参考手册》以及MCGS嵌入版电子文档中的相关内容。

第十一章报警处理

本章介绍MCGS嵌入版系统进行报警处理的机制,详细说明在组态过程中,快速构造用户应用系统报警处理方案的方法和步骤,主要内容包括:

●报警的定义

●报警的处理

●对报警的应答

●报警信息的显示、存盘和打印

●报警操作函数

11.1概述

重点:

1MCGS嵌入版的报警处理机制

MCGS嵌入版把报警处理作为数据对象的属性,封装在数据对象内,由实时数据库在运行时自动处理。

当数据对象的值或状态发生改变时,实时数据库判断对应的数据对象是否发生了报警或已产生的报警是否已经结束,并把所产生的报警信息通知给系统的其它部分,同时,实时数据库根据用户的组态设定,把报警信息存入指定的存盘数据库文件中。

实时数据库只负责关于报警的判断、通知和存储三项工作,而报警产生后所要进行的其它处理操作(即对报警动作的响应),则需要设计者在组态时制定方案,例如希望在报警产生时,打开一个指定的用户窗口,或者显示和该报警相关的信息等。

11.2定义报警

重点:

1MCGS嵌入版报警的定义

1各种数值对象的报警方式

在处理报警之前必须先定义报警,如下图所示,报警的定义在数据对象的属性页中进行。

首先要选中“允许进行报警处理”复选框,使实时数据库能对该对象进行报警处理;其次是要正确设置报警限值或报警状态。

数值型数据对象有六种报警:

下下限、下限、上限、上上限、上偏差、下偏差。

开关型数据对象有四种报警方式:

开关量报警,开关量跳变报警,开关量正跳变报警和开关量负跳变报警,开关量报警时可以选择是开(值为1)报警,还是关(值为0)报警,当一种状态为报警状态时,另一种状态就为正常状态,当在保持报警状态保持不变时,只产生一次报警;开关量跳变报警为开关量在跳变(值从0变1和值从1变0)时报警,开关量跳变报警也叫开关量变位报警,即在正跳变和负跳变时都产生报警;开关量正跳变报警只在开关量正跳变时发生;开关量负跳变报警只在开关量负跳变时发生。

四种方式的开关量报警是为了适用不同的使用场合,用户在使用时可以根据不同的需要选择一种或多种报警方式。

事件型数据对象不用进行报警限值或状态设置,当它所对应的事件产生时,报警也就产生,对事件型数据对象,报警的产生和结束是同时完成的。

字符型数据对象和组对象不能设置报警属性,但对组对象所包含的成员可以单个设置报警。

组对象一般可用来对报警进行分类,以方便系统其它部分对同类报警进行处理。

当多个报警同时产生时,系统优先处理优先级高的报警。

当报警信息产生时,我们还可以设置报警信息是否需要自动存盘和自动打印,如图所示,这种设置操作需要在数据对象的存盘属性中完成。

11.3处理报警

重点:

1报警条件、报警应答和报警限值的设置方法

报警的产生、通知和存储由实时数据库自动完成,对报警动作的响应由设计者根据需要,在报警策略中组态完成。

在工作台窗口中,鼠标单击“运行策略”标签,在运行策略窗口中,单击“新建策略”按钮,弹出选择策略类型的对话框,选择“报警策略”,单击“确定”按钮,系统就添加了一个新的报警策略,缺省名为策略X(X表示数字)。

11.3.1报警条件

在运行策略中,报警策略是专门用于响应变量报警的,在报警策略的属性中可以设置对应的报警变量和响应报警的方式,在运行策略窗口中,选中刚才添加的报警策略,单击“策略属性”按钮,弹出“策略属性设置”对话框,如下图所示,各部分说明如下:

策略名称:

输入报警策略的名称。

策略执行方式:

●对应数据对象:

用于与实时数据库的数据对象连接。

●对应报警状态:

对应的报警状态有三种:

报警产生时执行一次、报警结束时执行一次、报警应答时执行一次

●确认延时时间:

当报警产生时,延时一定时间后,再检查数据对象是否还处在报警状态,如是,则条件成立,报警策略被系统自动调用一次。

策略内容注释:

用于对策略加以注释。

当设置的变量产生报警,且其对应报警状态和确认延时时间满足条件时,系统就会调用此策略,用户可以在策略中组态报警时执行的动作,如打开一个报警提示窗口或执行一个声音文件等。

11.3.2报警应答

报警应答的作用是告诉系统:

操作员已经知道对应数据对象的报警产生,并作了相应的处理,同时,MCGS嵌入版将自动记录下应答的时间(要选取数据对象的报警信息自动存盘属性才有效)。

报警应答可在数据对象策略构件中实现,也可以在脚本程序中使用系统内部函数!

AnswerAlm来实现。

在实际应用中,对重要的报警事件都要由操作员进行应急处理,报警应答机制能记录报警产生的时间和应答报警的时间,为事后进行事故分析提供实际数据。

11.4显示报警信息

重点:

1MCGS嵌入版动画构件“报警显示”的属性设置

在用户窗口中放置报警显示动画构件,并对其进行组态配置,运行时,可实现对指定数据对象报警信息的实时显示。

如下图所示,报警显示动画构件显示的一次报警信息包含如下内容:

●报警事件产生的时间

●产生报警的数据对象名称

●报警类型(限值报警、状态报警、事件报警)

●报警事件(产生、结束、应答)

●对应数据对象的当前值(触发报警时刻数据对象的值)

●报警界限值

●报警内容注释

组态时,在用户窗口中双击报警显示构件可将其激活,进入该构件的编辑状态。

在编辑状态下,用户可以用鼠标来自由改变各显示列的宽度,对不需要显示的信息,将其列宽设置为零即可。

在编辑状态下,再双击报警显示构件,将弹出如下图所示的属性页。

一般情况下,一个报警显示构件只用来显示某一类报警产生时的信息。

定义一个组对象,其成员为所有相关的数据对象,把属性页中的“报警对应的数据对象”设置成该组对象,则运行时,组对象包括的所有数据对象的报警信息都在该报警显示构件中显示。

11.5报警操作函数

重点:

1了解几种报警操作函数

MCGS报警操作函数是MCGS报警功能的扩展,用户利用报警操作函数可以更加方便、快捷的完成各种报警需要的功能,报警函数列表如下,详细资料请参考《MCGS嵌入版参考手册》。

●!

AnswerAlm(DatName):

应答数据对象DataName所产生的报警。

●!

SetAlmValue(DatName,Value,Flag):

设置数据对象DatName对应的报警限值。

●!

GetAlmValue(DatName,Value,Flag):

读取数据对象DatName报警限值。

●!

EnableAlm(name,n):

打开/关闭数据对象的报警功能。

第十二章报表输出

本章介绍MCGS嵌入版系统实现工程报表的机制,各种形式报表的使用与组态过程。

12.1概述

重点:

1报表的概念和作用

在实际工程应用中,大多数监控系统需要对数据采集设备采集的数据进行存盘、统计分析,并根据实际情况打印出数据报表,所谓数据报表就是根据实际需要以一定格式将统计分析后的数据记录显示并打印出来,以便对系统监控对象的状态进行综合记录和规律总结。

数据报表在工控系统中是必不可少的一部分,是整个工控系统的最终结果输出。

实际中常用的报表形式有实时数据报表和历史数据报表(班报表、日报表、月报表)等。

12.2报表机制

重点:

1报表的常用分类

1MCGS嵌入版的报表实现机制

在大多数应用系统中,数据报表一般分成两种类型,即实时数据报表和历史数据报表。

实时数据报表是实时地将当前数据对象的值按一定的报表格式(用户组态)显示和打印出来,它是对瞬时量的反映。

实时数据报表可以通过MCGS嵌入版系统的自由表格构件来组态显示实时数据报表并将它打印输出。

历史数据报表是从历史数据库中提取存盘数据记录,把历史数据以一定的格式显示和打印出来。

为了能够快速方便地组态工程数据报表,MCGS嵌入版系统提供了灵活方便的报表组态功能。

系统提供了“历史表格”动画构件,可以用于报表组态。

“历史表格”动画构件是MCGS嵌入版系统提供的内嵌的报表组态构件,用户只需在MCGS嵌入版系统下组态绘制报表,通过MCGS嵌入版的打印和显示窗口即可打印和显示数据报表。

本章主要介绍如何通过MCGS嵌入版的“历史表格”动画构件组态报表。

MCGS嵌入版历史表格构件实现了强大的报表和统计功能,主要特性有:

●可以显示静态数据、实时数据库的动态数据、历史数据库中的历史记录以及对它们的统计结果;

●可以方便、快捷的完成各种报表的显示和打印功能;

●在历史表格构件中内建了数据库查询功能和数据统计功能,可以很轻松的完成各种查询和统计任务;

●历史表格具有数据修改功能,可以使报表的制作更加完美;

●历史表格构件是基于“所见即所得”机制的,用户可以在窗口上利用历史表格构件强大的格式编辑功能配合MCGS嵌入版的画图功能作出各种精美的报表。

包括与曲线混排,在报表上放置各种图形和徽标;

●可以打印出多页报表。

MCGS嵌入版自由表格是一个简化的历史表格,它取消了与历史数据的连接,历史表格中的统计功能,以及历史数据报表制作有关的功能。

但是具备与历史表格一样的格式化和表格结构组态,可以很方便的和实时数据连接,构造实时数据报表。

由于自由表格的组态与历史表格非常接近,只是在数据连接上稍有差异,因此我们将一起介绍它们的使用方法。

12.3创建报表

在MCGS嵌入版的绘图工具箱中,选择自由表格或历史表格,在用户窗口中,按下鼠标左键就可以在用户窗口中绘制出一个表格来。

如图:

选择表格,使用工具条上的按钮对表格的各种属性进行调节,比如去掉外面的粗边框。

改变填充颜色,改变边框线型等等。

如图,在报表上拉出一根直线,并放置一幅位图:

也可以对表格的事件进行组态:

在表格上点击鼠标右键,在右键菜单中选择事件编辑,弹出事件编辑对话框,就可以对表格的事件进行编辑。

12.4报表组态

报表创建后,缺省为一张空表。

需要对表格进行组态,才能形成最终需要的报表,下面就来详细介绍报表的组态过程。

对报表的组态,需要先双击表格构件,进入报表组态状态,如图:

可以注意到,MCGS嵌入版弹出了表格组态工具条,同时菜单中的表格菜单也可以使用了,在表格周围,浮现出一个行列索引条,原先摆在表格上方的直线和位图也暂时放到表格后面了。

表格的组态,不论是自由表格还是历史表格,都分为两个层次来进行,这两个层次在表格的组态中,体现为表格两种状态组态:

显示界面组态和连接方式组态。

显示界面的组态,包括表格单元是否合并;表格单元内固定显示的字符串;如果表格单元内连接了数据,使用什么样的形式来显示这些数据(格式化字符串);表格单元在运行时是否可以编辑;是否需要把表格单元中的数据输出到某个数据变量上去。

数据连接的组态,在自由表格中,对每个单元格进行数据连接;在历史表格中,用户可以根据实际情况确定是否需要构成一个单元区域以便连接到数据源中,或是否对数据对象进行统计处理等等。

下面,我们就来详细介绍表格的具体组态方法。

12.4.1表格编辑菜单和表格工具条

表格编辑菜单和表格工具条实现了表格结构的组态,具体的用法可以参照《MCGS嵌入版参考手册》。

12.4.2表格基本编辑方法

报表的基本编辑方法有:

●鼠标左键单击某单元格,选中的单元格上有黑框显示。

●鼠标左键单击某个单元格后拖动则为选择多个单元格。

选中的单元格区域周围有黑框显示,第一个单元格反白显示,其他单元格反黑显示。

●鼠标左键单击行列索引条(报表中标识行列的灰色单元格)为选择整行或整列。

●单击报表左上角的固定单元格为选择整个报表。

●允许在获得焦点的单元格直接输入文本。

用鼠标左键双击单元格使输入光标位于该单元格内,输入字符。

按下回车键或鼠标左键单击其它单元格为确认输入。

●如果某个单元格在界面组态状态下输入了文本,而且没有在连接组态状态下连接任何内容,则在运行时,输入的文本被当作标签直接显示;如果在连接组态状态下连接了数据,则在运行时,输入的文本被试图解释为格式化字符串,如果不能被解释为格式化字符串(不符合要求),则忽略输入的文本。

●在单元格内输入文本时,可以使用Ctrl+Enter组合键(同时按下Ctrl键和回车键)来输入一个回车。

利用这个方法可以在一个表格单元内书写多行文本,或输入竖状文字。

如下图所示:

●允许通过鼠标拖动来改变行高、列宽。

将鼠标移动到固定行或固定列之间的分割线上,鼠标形状变为双向黑色尖头时,按下鼠标左键,拖动,修改行高、列宽。

●当选定一个单元格时,可以使用一般组态工具条上的字体设置按钮,字色设置按钮来设置字体和字色。

可以使用填充色来设置单元格内填充的颜色。

可以使用线型、线色来设置单元格的边线。

通过表格组态工具条中的设置边线按钮组,可以选择设置哪条边线的线型和颜色。

通过表格组态工具条中的边线消隐按钮组,可以选择显示和消隐边线。

●可以使用编辑菜单中的复制、剪切、粘贴命令和一般组态工具条上的复制、剪切和粘贴按钮来进行单元格内容的编辑。

●可以使用表格编辑工具条中的对齐按钮来进行单元格的对齐设置。

●可以使用合并单元格和拆分单元格来进行单元格的合并与拆分。

对自由表格的界面组态,只有直接填写显示文本和直接填写格式化字符串两种方式,对历史表格,除了填写显示文本和填写格式化字符串以外,还可以进行单元的编辑和输出组态,方法是在界面组态状态下,选定需要组态的一个或一组单元格,按下鼠标右键,弹出右键菜单,选择表元连接,或者在表格菜单中选择表元连接,则弹出单元格界面属性设置对话框。

在单元格界面属性设置对话框中,有如下选项:

●表格名称:

历史表格的名称,用于在用户窗口中标识历史表格。

比如,可以使用:

控件1.Visible=0来使名为“控件1”的历史表格不可见。

●单元格列表:

列出了所有正在组态的单元格。

R3C2表示第3行第2列的单元格。

使用鼠标选定某列后,就可以在右边的表格单元设置中对选定的单元格进行设置。

●表格单元设置:

在表格单元中可以设置如下选项:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1