Wincc仿真教程.docx

上传人:b****3 文档编号:10954479 上传时间:2023-05-28 格式:DOCX 页数:47 大小:2.38MB
下载 相关 举报
Wincc仿真教程.docx_第1页
第1页 / 共47页
Wincc仿真教程.docx_第2页
第2页 / 共47页
Wincc仿真教程.docx_第3页
第3页 / 共47页
Wincc仿真教程.docx_第4页
第4页 / 共47页
Wincc仿真教程.docx_第5页
第5页 / 共47页
Wincc仿真教程.docx_第6页
第6页 / 共47页
Wincc仿真教程.docx_第7页
第7页 / 共47页
Wincc仿真教程.docx_第8页
第8页 / 共47页
Wincc仿真教程.docx_第9页
第9页 / 共47页
Wincc仿真教程.docx_第10页
第10页 / 共47页
Wincc仿真教程.docx_第11页
第11页 / 共47页
Wincc仿真教程.docx_第12页
第12页 / 共47页
Wincc仿真教程.docx_第13页
第13页 / 共47页
Wincc仿真教程.docx_第14页
第14页 / 共47页
Wincc仿真教程.docx_第15页
第15页 / 共47页
Wincc仿真教程.docx_第16页
第16页 / 共47页
Wincc仿真教程.docx_第17页
第17页 / 共47页
Wincc仿真教程.docx_第18页
第18页 / 共47页
Wincc仿真教程.docx_第19页
第19页 / 共47页
Wincc仿真教程.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Wincc仿真教程.docx

《Wincc仿真教程.docx》由会员分享,可在线阅读,更多相关《Wincc仿真教程.docx(47页珍藏版)》请在冰点文库上搜索。

Wincc仿真教程.docx

Wincc仿真教程

0项目要求:

(1)有一台三相交流异步电动机,可以用操作站上的按钮控制,也可以用监控站的触摸屏控制;

(2)操作站安装有三个按钮SB1、SB2和SB3,其中按钮SB1可以实现电动机的点动控制,按钮SB2控制电动机的连续运行,按钮SB3用来控制电动机的停止。

另外操作站还有一个绿色指示灯HL1,当电动机点动运行时,HL1以1Hz的频率闪烁;当电动机连续运行时,HL1常亮;电动机停止运行时,HL1熄灭。

(3)触摸屏上设置有三个按钮,分别显示“点动”、“连续”和“停止”,其作用和操作站按钮SB1、SB2和SB3作用一样。

触摸屏上同时有图形和文字显示当前电动机的三种状态(点动运行、连续运行与电机停止)。

1项目分析与规划:

在本项目中,需要使用按钮和触摸屏来控制PLC程序,进而控制电动机的运行与停止,而PLC同时要通知触摸屏显示电动机的工作状态,PLC还需要控制指示灯指示电机目前的工作状态,所以项目的控制结构如图2.1所示。

2.1项目控制结构

2系统IO口分配:

输入

输出

符号

地址

功能

特性

符号

地址

功能

特性

SB1

I0.1

点动按钮

NO

KA

Q0.0

输出驱动

SB2

I0.2

启动按钮

NO

HL1

Q0.1

指示灯驱动

SB3

I0.3

停止按钮

NO

3系统接线原理图:

(略)

4系统控制方式规划:

(1)PLC控制程序规划

程序作用

块类别

块名称

备注

初始化程序

组织块

OB100

主程序

组织块

OB1

触摸屏和PLC交换数据

数据块

DB1

(2)触摸屏画面规划

1)只需要一幅画面

2)需要放置三个按钮对象,名称分别为“点动”、“连续”和“停止”

3)需要用图形来表示电动机的状态,可以采取用三个图形分别表示三种状态,也可以用一个图形不同颜色来表示三种状态,还可以用一个图形不同颜色/不同表现形式表示三种状态,在实例中选择一个图形不同颜色/不同表现形式表示。

4)需要用文本来显示电动机的状态,可以用文本的可见性来完成控制效果(电动机点动时,“点动运行”文本可见并闪烁;电动机连续运行时,“连续运行”文本可见;电动机停止时,“电机停止”文本可见)。

5)触摸屏需要传送给PLC的变量包括三个按钮,需要使用布尔变量来模拟一个按钮的动作(包括按钮按下和释放);触摸屏需要读取PLC的信息来显示电动机的状态,可以使用布尔变量,也可以使用整数变量(在实例中使用整数变量较为方便),并且图形显示和文本显示可以共用一个变量。

5系统硬件选择与组态

在本项目中,选择PLC的类型为CPU314C-2DP,该CPU集成的输入输出点可以满足系统要求。

触摸屏的型号为TP177B6”colorPN/DP。

(1)新建项目,起名并保存(最好不要包括中文)

双击桌面上的“SIMATICManager”图标,启动西门子PLC编程软件。

第一次使用编程软件,会启动Step7向导,如果不想使用向导进行硬件组态已经编程应用,请选择“取消”。

选择“取消”以后,将进入一个空的项目管理器(SIMATICManager)界面。

如果以前已经有人使用过Step7软件,选择“取消”以后将会显示上次打开后没有关闭的项目窗口,你可以点击项目窗口右上角的关闭按钮来关闭它,也可以选择菜单栏中的“文件”→“关闭”来关闭该项目。

关闭了该项目以后,同样会进入空的项目管理器(SIMATICManager)界面。

在新的项目管理器(SIMATICManager)界面中选择“文件”→“新建”或点击“新建项目/库”图标,打开新建项目窗口,输入新项目的名称,注意在该窗口可以看到项目所存储的路径。

新项目的名称输入完成后,点击“确定”,将打开新项目的工作界面。

此时的新项目工作界面里面只有一个项目名称,以及一个基本的MPI网络。

(2)插入SIMATIC300站站点以及HMI站点等

在新项目的工作界面中,选中新项目,从菜单栏中选择“插入”→“站点”→“2SIMATIC300站点”(或者在项目名称上直接点击右键,选择“插入新对象”,然后选择“SIMATIC300站点”),将会在该项目中插入一个SIMATIC300站点。

用同样的方法插入一个HMI站点,系统会要求用户选择设备型号,使用的TP177B6’colorPN/DP触摸屏在“Panels”下“170”系列中可以找到。

选择确定以后,系统会自动调用WinCCflexible软件,并将HMI设备集成到项目中。

如果项目中还有其它的设备,利用这样的方法,可以全部集成到项目中。

(3)设置SIMATIC300站CPU型号,规划SIMATIC300站硬件系统

将鼠标移到SIMATIC300站点的图标上,双击,可以打开SIMATIC300站点的配置窗口。

选择硬件图标并双击,将会在一个新窗口中打开SIMATIC300硬件配置(HWConfig)界面。

选择右边硬件选项中的SIMATIC300前面的“+”号,可以展开SIMATIC300站点的可选项,继续选择其子项RACK-300,点击“+”号展开该子项,双击其中的Rail,为SIMATIC300站点插入一个底板。

在该底板上有11个插槽位置,其中第一个插槽只能插入电源模块。

如果使用西门子为SIMATIC硬件提供的专用电源模块,可以选中第一个插槽位置,然后选择SIMATIC选项中的PS-300子项,点击“+”号展开该子项,然后从中选择对应的电源模块并双击,将电源模块插入对应的底板插槽。

如果不使用西门子为SIMATIC提供的电源模块,而是使用其它外置电源,请将该模块空置(*如果不知道自己使用的电源模块形式,请空置该插槽)。

底板上第二个插槽需要插入CPU模块,选中第二个插槽位置,然后选择SIMATIC选项中的CPU-300子项,点击“+”号展开该子项,然后从中选择对应的CPU模块(*我们使用的CPU模块是CPU-314C-2DP,订货号为6ES7314-6CG03-0AB0,版本号为V2.6)。

双击该模块,会弹出该模块的附加属性设置界面。

由于CPU314C-2DP自带有一个PROFIBUS接口,将会打开接口属性设置对话框。

如果暂时不利用(或不知道是否利用)该PLC的PROFIBUS接口作为通讯应用,直接点击“确定”即可。

将该窗口中的界面分割线进行拖动,可以使各种信息更加直观呈现。

新组态的SIMATIC300站点对硬件自动分配地址,从图中可以看出,默认的输入为124-126(3通道,24点,对应输入为I124.0-I124.7,I125.0-I125.7,I126.0-I126.7),输出为124-125(2通道,16点,对应输出为Q124.0-Q124.7,Q125.0-Q125.7)。

如果觉得不习惯,可以自行修改。

双击模块中的DI24/DO16行,打开该子模块的属性页,选择其中的“地址”标签,将“系统默认”前面的勾去掉,然后在上面的“开始”输入框中输入自己想要的通道名称(一般习惯从0开始)。

输入和输出都修改完毕后,点击“确定”。

可以看到,输入和输出的地址变成了0-2和0-1。

CPU模块中的AI5/AO2子模块,计数子模块,定位子模块地址都是可以修改的。

在本项目中有可能需要输出指示灯HL1以1Hz的频率闪烁,所以需要SIMATIC300站站点提供1Hz的时钟脉冲。

为此,需要为SIMATIC300站站点组态时钟存储器,方法是双击SIMATIC300站站点的CPU314C-2DP行,打开CPU属性界面,然后选择“周期/时钟存储器”标签,将下面的时钟存储器勾选,存储器字节写入一个地址。

该地址自动选取内部继电器M为时钟存储器区,占用一个字节(8位),提供8种不同频率的时钟脉冲,其时钟频率如表所示。

时钟存储字节的位

7

6

5

4

3

2

1

0

周期持续时间(s)

2.0

1.6

1.0

0.8

0.5

0.4

0.2

0.1

频率(Hz)

0.5

0.625

1

1.25

2

2.5

5

10

本项目中时钟存储器的存储器字节选择200,以后的1Hz时钟存储器位即为M200.5。

基本的硬件组态完成后,选择菜单栏中的“站点”→“保存并编译”选项或直接点击“保存和编译”图标,将该硬件组态进行保存(如果弹出来报警对话框选项,直接选择“确定”忽略该报警)即可,然后关闭该窗口。

(4)系统网络规划与组态

在SIMATICManager中选中项目名称,可以看到MPI文字和图标。

双击MPI图标,打开“NetPro(网络组态)”窗口。

现在网络中有一个MPI网络总线,有两个设备,分别为SIMATIC300和SIMATICHMI站,但是相互之间没有连接。

首先将SIMATIC300设备连接到MPI网络上。

在此界面上常用有两种方法:

将鼠标按住红色方块直接拖动,连接到MPI站点;或者双击红色方块,然后选择MPI,然后点击确定即可。

MPI网络连接完成后,如下图所示。

双击DP模块下的紫色方块,打开PROFIBUS接口设置窗口。

选择新建,打开PROFIBUS子网设置窗口,然后在网络设置标签里面选择合适的通讯速率,连续选择两次确定。

完成之后,就将SIMATIC300设备连接到了PROFIBUS子网上,如图所示。

SIMATICHMI站和SIMATIC300设备之间需要连结进行控制,可以有很多种方法,最简单和方便的就是通过PROFIBUS子网连接在一起。

为了实现这种连接,需要将SIMATICHMI站的IF1B接口设置为PROFIBUS子网设备(默认为MPI网络设备)。

修改的方法是双击SIMATICHMI站的设备图标(最左面的蓝色设备块),在接下来的窗口中选择“确定”,即可打开SIMATICHMI站的硬件配置窗口。

双击其中的IF1BMPI/DP设备(索引4),打开IF1BMPI/DP设备属性。

将接口类型修改为PROFIBUS,并在其属性中选择其通讯的速率与前面的SIMATIC300站点保持一致,否则会发生通讯错误。

然后选择确定,忽视接下来的警告窗口(其实是提醒该设备还有一个端口闲置,是以太网接口,暂时不用)。

将回到SIMATICHMI站的HWConfig界面,编译以后存盘并关闭HWConfig界面,这样,SIMATICHMI站的端口已经修改为PROFIBUS工作模式,原来的表示IF1B端口MPI网络模式的红色方块已经变成了表示PROFIBUS网络模式的紫色方块。

用鼠标按下该紫色方块并拖动到PROFIBUS总线上,实现网络组态。

保存并编译检查完成后,会出现一个警告。

忽略该报警信息,然后存盘关闭网络组态配置窗口。

6PLC程序设计

(1)创建SIMATIC300站符号表

(2)创建SIMATIC300站中的块

双击SIMATIC300设备右面的“块”,可以看到属于该设备的各个块列表(开始该站只包括“系统数据”和主程序“OB1”)。

选择菜单里中的“插入”→“S7块”(或在右面的窗口空白处点击右键,选择插入新对象),分别插入组织块OB100(需要改名字),数据块DB1。

(3)为数据块定义变量

在本项目中,SIMATIC300站站点中规划了数据块的目的是为了方便触摸屏和PLC之间进行信息交换,这种交换需要通过数据块中的变量来实现。

通过分析和规划,已经知道触摸屏需要给PLC三个BOOL(布尔)型的变量,分别用来传递“点动”、“连续”和“停止”;而PLC也需要给触摸屏一个INT(整数)型的变量,用来通知触摸屏显示电机不同的状态(当该变量为0时,表示电动机处于停止状态;当该变量为1时,表示电动机处于点动运行状态;当该变量为2时,表示电动机处于连续运行状态)。

双击DB1数据块,打开。

可以看到DB1数据块里面默认有个整数变量,整数变量需要占用16个位,所以结束地址(END_STRUCT的地址是2.0),尽量不要修改它。

用鼠标点击白底输入框“临时占位符变量”,然后回车,将自动插入一个空白输入行。

在名称一栏写入自己想要用来控制触摸屏显示的变量名称(例如:

START1,不要使用中文),在类型一栏用鼠标右键点击,选择“基本类型”中的“BOOL”(代表布尔变量),初始值为FALSE(即逻辑假,代表常态为0,属于NO类型,常开接点)(也可以不写初始值,系统默认就是FALSE)。

按照这个步骤,依次添加“START2”、“STOP”两个BOOL(布尔)变量,还有一个名称叫做“MOTORSTATE”的INT(整数)变量,

注意该数据块中的地址一栏的标识,0.0是系统临时占位符变量,不是用户创建的,用户暂时用不到,可以不关心。

地址2.0代表了变量“START1”,今后要用到该变量的时候,其绝对地址为DB1.DBX2.0,其中第一个.前面表示变量所处的数据块名称,后面的DB表示是数据块内变量,X表示是BOOL(布尔)变量,2.0表示地址。

类似的,变量“START2”和“STOP”的绝对地址为DB1.DBX2.1和DB1.DBX2.2。

其后的4.0代表了变量“MOTORSTATE”,由于其为整数变量,所以该变量的绝对地址为DB1.DBW4。

除了现在看到的这两类变量之外,系统中还可能会出现.DBB类型和.DBD类型的变量,分别表示的数据长度为8位和32位。

将数据块编写完成后,存盘关闭。

(4)对SIMATIC300站组织块和功能、功能块进行编程

1)初始化程序OB100编程

初始化程序OB100主要用来完成程序的初始化,本项目中,系统通电后,PLC热启动(由Stop模式转入Run模式)时,OB100将会并且只会执行一个扫描周期。

在此过程中,需要保证两个输出继电器Q0.0(控制KA)和Q0.1(控制HL1)为断开状态,触摸屏显示电动机状态为停止(对应DB1数据块中MOTORSTATE变量为0)。

注意其中的DB1.DBW4表示DB1数据块中起始通道为4的整数变量(其实就是MOTORSTATE变量的地址)。

2)主程序OB1编程

本项目比较简单,可以将所有的控制程序都放在OB1内完成。

OB1目前主要完成的工作包括两个,一个工作是根据各个按钮的不同状态来控制电动机和指示灯的状态,另一个工作是根据电动机的运行状态通知触摸屏显示不同的信息。

程序段1用来实现点动控制,不论是按下按钮站的按钮SB1或者在触摸屏上操作了点动运行按钮(使DB1.DBX2.0闭合),均会使内部继电器M0.0闭合,表示电动机处于点动运行状态下。

如果松开按钮SB1或者触摸屏上的点动按钮,或者停止信号有效,点动状态断开。

程序段2用来实现连续控制,不论是按下按钮站的SB2或者是在触摸屏上操作了连续运行按钮(使DB1.DBX2.1闭合),均会使内部继电器M0.1闭合并且自保持,实现连续运行,M0.1表示电动机处于连续运行状态。

如果停止信号有效或者是点动按钮有效(M0.0会闭合),连续运行状态断开。

程序段3用来控制继电器KA,无论是在点动运行状态还是连续运行状态,Q0.0都会接通,KA继电器闭合,驱动接触器KM,电动机将会运行。

程序段4用来控制指示灯,在点动运行状态下,M0.0闭合,串入1秒时钟继电器触点M200.5(在SIMATIC300站站点的硬件组态中组态),Q0.1驱动的指示灯HL1将会以1Hz的频率闪烁;在连续运行模式下,M0.1闭合,HL1常亮。

程序段5、6、7用来通知触摸屏显示电动机状态。

当电动机停止转动(Q0.0断开),变量“MOTORSTATE”(绝对地址为DB1.DBW4)将被送入0,其它情况类似。

7触摸屏通讯设置、画面设计与变量控制

(1)对触摸屏的连接和变量进行设置

选择SIMATICManager下的SIMATICHMI站,并点击“+”号打开其各级子项,选择“通讯”下的“连接”。

双击右面窗口中的“连接”,将会启动WinCCflexible软件,软件启动完成后,自动打开“连接”标签。

将“激活的”选项下的“关”修改为“开”(点击“关”就可以出现选择下三角选择符,点击选择符后选择“开”即可),将SIMATICHMI站点和SIMATIC300站站点连接。

然后选择“通讯”下的“变量”选项。

双击变量选项,在新开的书签窗口第一个空白行出双击鼠标左键,将会自动出现一个变量_1。

选中其中的“符号”选项,可以看到项目。

点击项目前面的“+”号,可以打开下一层,继续点击下一层的“+”号,如此层层展开,可以找到已经在SIMATIC300设备上DB1数据块中已经建立的变量名称。

选中变量名称“START1”后双击或者点击右下角的“

”图标,就可以将变量_1修改为DB1.START1。

利用同样的方法,将自己建立的其它三个变量都添加进SIMATICHMI站的变量表中。

(2)对触摸屏画面进行制作,放置各个对象(元素),并调整位置和大小

打开画面1标签,首先根据需要,在该画面上应该放置三个按钮,1个图形(本项目中用圆形),三个文本框。

(3)修改各个对象的基本属性

三个按钮的名称分别修改为“点动运行”、“连续运行”和“电机停止”。

如果有时间,可以按钮改成图形模式,利用WinCCflexible软件对象库中提供的丰富的按钮,选取自己喜欢的风格来替代文本显示的按钮。

将三个文本的内容分别修改为“电动机停止运行”、“电动机点动运行”和“电动机连续运行”。

修改完的画面1如图所示。

(4)为各个对象元素关联对应变量及动作

1)按钮的组态

画面1中有三个按钮,按钮的动作包括按下和释放两个过程,对应的变量如果为常开状态,则当按钮按下时,变量应该为1(ON,接通),当按钮释放时,变量应该为0(OFF,断开);如果对应的变量为常闭状态,当按钮按下或释放时,其变量的数值(1或者0)恰好和上述相反。

本项目中三个按钮均为常开状态,所以应该利用按钮的动作激活相应的变量,使其在1和0两种状态中切换,在此要用到按钮的事件中的“按下”和“释放”两个动作,并且“按下”要用到函数中的“编辑位”内的“SetBit”(置位位,目的是使某一个BOOL变量闭合,为1)。

选取该函数以后,还需要为该函数指定一个变量,否则会标示错误,用橘黄色标记,如图所示。

鼠标左键双击橘黄色的“无值”,可以使其出现一个三角选择符号,点击三角选择符号,即可看到已经为SIMATICHMI站已经添加好的变量列表。

从列表中选择相应的变量名称双击,或者点击右下角的“

”图标,即可将变量设定完毕。

用同样的方法为事件中的“释放”动作绑定一个函数“ResetBit”(复位位,目的是使某一个BOOL变量断开,为0),一个按钮的动作组态就完成了,以后,只要在触摸屏上按下该按钮,则相应的变量将被置位为1(闭合),当在触摸屏上释放该按钮,则相应的变量将被复位为0(断开)。

用同样的方法,为另外两个按钮组态相应的变量。

按钮名称

按钮事件

函数名称

变量符号

PLC地址

点动运行

按下

SetBit

DB1.START1

DB1.DBX2.0

释放

ResetBit

连续运行

按下

SetBit

DB1.START2

DB1.DBX2.1

释放

ResetBit

电机停止

按下

SetBit

DB1.STOP

DB1.DBX2.2

释放

ResetBit

2)图形的组态

图形符号需要根据PLC传递给触摸屏的变量内容不同而产生不同的颜色变化或形式,具体的要求是当变量内容为0时(表示电动机停止运行),指示灯为一种颜色(本项目规定为白色);当变量内容为1时(表示电动机点动运行),指示灯为一种颜色并且闪烁(本项目规定为绿色);当变量内容为2时(表示电动机连续运行),指示灯为一种颜色(本项目仍旧规定为绿色)。

要想实现该种变化,需要对图形的“动画”→“外观”进行设置。

首先勾选“启用”,然后在变量中选择用来控制图形的变量(在SIMATIC300站站点中已经在DB1中设置好的MOTORSTATE,即DB1.DBW4,可以通过三角下拉框来选择)。

双击相应变量或者点击右下角的“

”图标,将该变量作为控制图形动画效果的变量。

在右面的“值”一栏双击鼠标左键,会自动出现根据变量范围圆形显示的默认效果。

点击“0-100”,可以打开设置框,根据本项目的SIMATIC300站站点的程序,当数值为0-0时,表示电动机停止,对应的图形选择为白色,故“前景色”和“背景色”选择为白色,并且闪烁为“否”。

利用这样的方法,为该图形继续添加值为1和2时的状态(绿色闪烁及绿色不闪烁),如下图所示。

3)文本的组态

根据项目要求,当电动机处于不同的状态时,触摸屏需要显示不同的文本,可以利用文本的“动画”→“可见性”来实现该功能。

当电机为停止状态(MOTORSTATE变量为0)时,使“电机停止运行”文本可见;当电机为点动运行状态(MOTORSTATE变量为1)时,使“电机点动运行”文本可见;当电机为连续运行状态(MOTORSTATE变量为2)时,使“电机连续运行”文本可见。

选择相应的文本,对其“动画”→“可见性”进行设置。

和图形的外观设置一样,文本的可见性也需要“启用”和添加相应变量,在本项目中,文本使用的变量和图形的变量是一样的,故选择和添加方法一样,但是本项目中要求该变量符合某一个数值时该文本才可见,所以需要设置变量的相应范围和“对象状态”为“可见”。

在本项目中,变量范围为0~0时,文本域1(电机停止运行)可见;变量范围为1~1时,文本域2(电机点动运行)可见;变量范围为2~2时,文本域3(电机停止运行)可见。

至此,所有的触摸屏画面已经基本设置完毕,然后进行画面元素微调(本项目中将三个文本上下左右全部对齐,这样当文本切换时,会感觉好像是文本从同一个地方出现),项目生成然后存盘(在此过程中一定要注意输出窗口提示的信息,如果有错误或报警信息,必须进行检查和排错)。

(5)使用仿真器启动运行系统,来进行模拟测试。

从菜单栏中选择“项目”→“编译器”→“使用仿真器启动运行系统”,或者点击图标栏中的

图标,即可启动仿真器。

打开仿真器之后,会启动两个窗口,一个是仿真SIMATICHMI站的输出窗口,一个是WinCCflexible运行模拟器窗口。

首先在运行模拟器窗口添加各个变量,方法是点击“变量”下的空白栏,即可出现选择三角箭头,点击三角箭头,即可看到所有的变量列表。

点击各变量名称,将各个变量依次添加进变量列表中,然后勾选运行模拟器中想要显示或模拟的变量后的“开始”框。

依次点击SIMATICHMI站上的按钮,当该按钮按下时,Winccflexible运行模拟器中相应的变量“当前值”变为“-1”,当该按钮释放时,相应的变量“当前值”变为“0”,即说明所有的按钮组态正确(如果自己组态有常闭类型的按钮,则变量的表现形式应该恰好相反)。

然后测试图形和文本,在Winccflexible运行模拟器相应的变量(本例中为INT型变量DB1.MOTORSTATE)中的“设置数值”一栏中,分别写入相应的数值(0、1或2),则相应的图形应该产生相应的变化,文本也应该有相应的显示。

当DB1.MOTORSTAT

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

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2