摘要:馈线终端单元(FTU)是配电自动化系统中的重要组成部分,以DSP为核心构成的FTU具有运算速度快和精度高等特点, 而DNP3.0则是FTU与配网主站通信的主流规约。讨论了在DSP平台上实现DNP3.0的特殊性,介绍了DSP片内异步串口的使用方法,给出了程序的主要流程图和数据结构以及涉及串行通信的C语言源码。
DNP (Distributed Network Protocol,分布式网络规约)是HARRIS公司推出的一种远动通信规约,是目前电力系统自动化产品市场上的一种主流通信规约。它既可作为FTU(Feeder Terminal Unit,馈线终端单元)与配网主站之间的规约,又可作为RTU与调度主站之间的规约。由于目前我国的大部分配电自动化(DA)产品都支持DNP3.0,为使产品更具兼容性和标准性,FTU有必要采用DNP3.0作为其与配网主站之间的通信规约。
FTU作为配电自动化系统(DAS)中重要的组成部分,除担负最基本的测量与控制任务外,还要与中心子站或主站进行通信。某些FTU还具有微机保护功能,故而其核心部分一般采用高档次的16位或32位单片机。但在交流采样的情况下,单片机计算U、I有效值以及P、Q等参数往往力不从心,导致实时性较差。虽然可以通过采用主—从结构来解决,但这样无疑要增加成本。DSP(数字信号处理器)恰恰以数学计算(如快速傅立叶变换)而见长,虽然它的控制功能逊于单片机,但由于FTU只负责监控一路柱上开关,故而在这种测控量不多的情况下,如果不需要就地保护功能,一片DSP还是完全能够胜任的。TMS320F206(以下简称F206) 是TI公司生产的TMS320C2000系列中的一款主流DSP,它属于16位定点DSP,可应用于电机控制以及工业自动化和电力行业中,价格接近普通16位单片机。FTU以一片TMS320F206为核心,并辅以A/D转换器等外围器件,即可完成测控、参数计算和通信等任务。
由于DNP3.0帧格式中的基本单元是8位整型数(BYTE字节),而F206中的数据总线是16位的,寻址时是以字(WORD)为单位,而且TI提供的C语言中也没有8位整型数,这样在F206平台上实现DNP3.0时就存在一个8位/16位转换的问题。另外,大多数DSP利用外接UART(通用异步收发器)来实现串行通信。本文着重讨论如何在保证程序清晰和高效的前提下利用F206片内异步串口实现以DNP3.0为通信协议的串行通信。
1 DNP3.0简介[4~5]
DNP3.0为纯软件的通信协议,其结构如图1所示。它基于IEC 870-5标准,采用了ISO七层模型中的三层:物理层、数据链路层和应用层,其结构为增强协议结构。这种分层结构使得数据传送的可靠性大大提高,同时也便于软件编程的模块化。物理层一般采用普通的RS232或RS485;链路层采用CRC校验;为了满足较长数据包的传送,又增加了一个伪传输层。发送数据时它可以将较长的应用层报文拆分为多个短帧然后多帧传送,反之,接收时将短帧组装成完整的应用层报文。
2 系统硬件
2.1 结构框图
硬件结构框图如图2所示。
2.2 F206片内异步串行口介绍[2~3]
F206片内具有一个8位全双工ASP(Asynchronous SerialPort,异步串行口),可以完成并行数据与串行数据的相互转换,并可以产生可屏蔽硬件中断TXRXINT。有关的外部引脚共6个:发送端TX、接收端RX、IO0、IO1、IO2、I03,一般情况下只使用TX和RX就足够了(另外还有一根地线)。
与编程有关的片内16位寄存器共4个:异步数据发送和接收寄存器ADTR、异步串口控制寄存器AS-PCR、I/O状态寄存器IOSR、波特率除数寄存器BRD,均映射至I/O空间。ADTR为读/写寄存器,高8位恒为0,向ADTR写数据即可启动串口发送。ASPCR用来控制串口的工作方式,BIT8为发送中断屏蔽TIM,BIT7为接收中断屏蔽RIM,BIT6为停止位选择STB。IOSR反映串口的工作状态,BITll为发送寄存器空指示位THRE,BIT8为接收数据准备就绪位DR。BRD用作波特率发生器,BRD值=CLKOUTl频率/(16×波特率)。
值得注意的是,F206片内串口与通用异步串口略有不同。它只支持最常见的1位起始位、8位数据位、1或2位停止位。另外几种特殊格式不予支持,如6或7位数据位、1.5位停止位等。为适应现场各种可能的通信方式,还应当扩展一路以上的通用异步收发器(UART),本例采用TI公司的单路异步串口TLl6C550。关于这类芯片有很多文章介绍过,在此不再赘述。
3 软件部分
3.1 编程语言
采用C语言开发DSP程序不仅可读性和可移植性都很好,还能大大加快开发速度。但用C语言实现某些硬件控制不如汇编方便,且实时性不如汇编[1]。因此采用在C程序中直接嵌入汇编语句来完成通信模块程序的编写,除极少数采用汇编语言以外,绝大部分采用C语言编写。
3.2 数据结构定义
由于F206中的数据总线为16位,故而TI提供的C语言(以下简称TI C)与标准C语言的数据类型略有不同。char、unsigned char、int和short均为16位,enum也为16位。相应地,sizeof(int)和sizeof(short)的结果为1,而不是2,这一点在计算帧长度时尤为重要,习惯于标准C的编程人员一定要特别注意。
由于DNP3.0帧格式中的基本单元是字节,而TI C中却没有这一数;据类型,在用结构体类型定义具体的数据结构时,都是按字(WORD)对齐的,因此只能将DNP3.0数据格式中的BYTE定义为16位无符号整数WORD,将DNP3.0中的WORD定义为32位无符号整数DWORD。接收数据时将每个字节都存储至一个字的低8位,发送时则只取每个字的低8位,这样虽然浪费了一半的存储器空间,但程序编写容易,效率也较高。
根据DNP3.0的层次结构定义三个结构体——链路层DL_LAYER、传输层T_LAYER和应用层APP_LAYER,每个结构体再按照DNP3.0中相应层规定的字段去逐个定义相应的成员即可。如链路层包括报头和n个数据块,报头又包括起始字、长度、控制字节等字段,控制字节按比特位又包括功能码、方向位和帧计数位等。链路层结构定义为:
(1)DL层控制字
typedef struct{
WORD b0-3_FuncCode:4,/*功能码*/
b4_FCV:1 /*帧计数有效位*/
b5_FCB:1, /*帧计数位*/
b6_PRM:l /*主站标志位*/
b7_DIR:1; /*方向位*/
}DL_CONTROL;
(2)DL层报头
typedef struct{
DWORD dwStart; /*起始字*/
WORD wLength; /*长度*/
DL_CONTROL DLCtrl; /*控制字*/
DWORD dwDest; /*目的地址*/
DWORD dwSource; /*源地址*/
DWORD dwCRC; /*校验码*/
}DL_HEADER;
(3)DL层数据块
typedef struct{
WORD awUserData[l6] /*用户数据*/
DWORD dwCRC; /*校验码*/
}DL_DATABLOCK;
3.3 流程图
DNP3.0已经详细规定了协议的层次结构及每一层的功能,程序的层次结构只要与其一致就会非常清晰,编程时只需遵照这些层次间的数据流向编写相应的函数即可。物理层对应串口收发中断子程序,链路层、传输层和应用层在接收与发送时各有一套函数去处理,以对应串口的全双工工作方式。其中,链路层接收处理流程如图3所示。
3.4 ASP的相关程序
3.4.1 ASP的寄存器定义
ioport unsigned portFFF4;
#define ADTR portFFF4 /*收发寄存器*/
ioport unsigned portFFF5;
#define ASPCR poaFFF5 /*控制寄存器*/
ioport unsigned portFFF6;
#define IOSR poaFFF6 /*I/O状态寄存器*/
ioport unsigned portFFF7;
#define BRD portFFF7 /*波特率发生器*/
3.4.2 初始化ASP
void InitASP(){ /*初始化异步串口*/
ASPCR=0xE080; /*RIM=1L:允许接收中断,
STB=0:一位停止位*/
IOSR=0xl800; /*THRE=1:ADTR空*/
BRD=0x0020; /*20MHz/38400bps*/
}
3.4.3 异步串口呻断服务子程序
void interrupt aspint(){
if((IOSR & 0x0l00)==0x0l00){
Recv();} /*有接收数据*/
if((IOSR & 0x0400)==0x0400){
……;} /*帧错误处理*/
if((IOSR & 0x0800)==0x0800){
Send();} /*可以发送数据*/
*IFR=0x20; /*清中断标志*/;
asm("clrc INTM") /开中断*/;
}
由于采用F206的片内串口作为通信工具,充分利用了DSP的片内集成外设,不仅使得通信模块可靠性较高,而且接口方法简单,ASP的控制和读写通过几个寄存器就可完成,非常方便。采用本文所介绍的方法编写的以DNP3.0为规约的通信子程序流程清晰,符合模块化的要求。自现场投入试运行以来,整个通信模块工作稳定可靠,能迅速响应主站请求,主动上报数据,及时准确。但是随着现场总线技术的发展,FTU还应具备至少一个现场总线接口(如CAN总线接口)。这样不光通信质量有保证,还可以简化通信规约(只保留一个应用层即可),这应该是FTU通信方式的一个发展方向.
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
相关推荐
某厂商在设计和生产FTU系统控制器时,选用具有蓄电池充电功能的AC-DC电源模块,以满足FTU由市电220VAC和后备电源供电的要求。
2017-08-15 14:16:523901 目前市面上大多电力FTU产品均采用MCU+MPU双处理器架构,以利用MCU的实时性和MPU上运行的稳定的网络协议和文件系统资源。那么,我们是否可以把MCU+MPU的结构用一个MPU来替代?答案是完全可以,本文就介绍一种单处理核心的FTU实现方案。
2018-01-25 22:32:435065 本帖最后由 mr.pengyongche 于 2013-4-30 03:27 编辑
在一些脱机运行的DSP系统中,用户代码需要在加电后自动装载运行。DSP系统的引导装载(Bootload
2011-07-08 11:10:56
DSP在DSA70000系列示波器中的新应用有哪些?
2021-05-08 07:48:43
DSP在现代测控技术中的应用
2020-05-25 09:36:48
的有较大延迟的真有效值转换发展为周期实时采样计算;相位测量则在幅值测量的基础上,由原来的间相脉冲填充法发展为乘法器矢量测量。 DSP 的高速处理能力,使其可以实现DDS 中的CPLD 或FPGA
2018-11-29 17:08:05
1 引言在信息技术高速发展的今天,电子系统数字化已经成为有目共睹的趋势,从传统应用中小规模芯片构造威廉希尔官方网站
系统到广泛地应用单片机,到今天DSP及FPGA在系统设计中的应用,电子威廉希尔官方网站
已迈入了一个全新
2021-10-29 08:55:40
DSP的实现方法一般有以下几种:(1) 在通用的计算机(如PC机)上用软件(如Fortran、C语言)实现;(2) 在通用计算机系统中加上专用的加速处理机实现;(3) 用通用的单片机(如MCS-51
2021-08-27 13:47:51
配网自动化是国家智能电网建设的重要工作内容之一,在国家电网“统一规划、统一标准、统一建设”的工作指导原则下,各类参与国家电网公司管辖下配电自动化建设的公司,在研制和生产配网终端设备(FTU
2018-10-16 06:09:27
一、故障信息的数学表示在上图中K表示断路器,每一个断路器上均有一个FTU装置,可以反馈断路器开关是否过流,用表示上传的故障信息,反映的是各分段开关处是否流过故障电流有故障电流为1,否则为0)。即
2021-07-07 07:42:43
在DSP中如何设置EALLOW保护?
2021-10-22 08:16:31
在DSP系统中如何去避免出现噪声和EMI问题?
2021-04-26 06:32:23
目前在使用 CCS5.4调试F2808,想实现一个功能:将DSP中的某个变量不断写入PC上的某个.txt文件中。想使用fopen、fwrite这类函数,但调试过程中总是出现这样那样的错误,所以想请教
2018-11-29 15:25:59
其他的调用,包括CyType。右键单击“包含”和“项目”.H>选择“转到实现”给出以下COSIL消息:“找不到实现”。它可能在一个没有可用源的库中。因此,看起来新的PSoC创建者3没有在必要时
2019-01-17 08:24:27
各位技术大神们,我想问问怎么在RT_Thread Studio中添加 STM官方的DSP文件?下图是在Keil中添加的步骤。
2023-02-22 14:21:34
在定点DSP系统中可否实现浮点运算?当然可以,因为DSP都可以用C,只要是可以使用c语言的场合都可以实现浮点运算。
2009-04-07 09:06:17
本文探讨了在电机DSP控制系统中,离散模型参考自适应算法的实现,对于各种先进的控制策略在电动汽车中的应用进行了积极的探索,对于推动电动汽车产业的发展具有重要意义。
2021-05-14 06:08:53
请问一下大家,图片中出现的红叉(DNP)是什么意思?在AD中如何放置这个标志?还请各位大神答疑解惑,谢谢!
2016-02-23 10:51:03
bq76920具有哪些特性功能?BQ76920EVM威廉希尔官方网站
图中DNP标识的含义是什么?
2021-09-26 08:57:20
CPLD在DSP系统中的应用设计
2011-08-03 16:15:49
DSP是什么?定点DSP和浮点DSP有何区别?C语言在DSP开发中的应用是什么?
2021-10-15 07:47:36
反复编程使用。DSP、FPGA芯片虽成本略微高于ASIC芯片,但具有货源畅通、可多次编程使用等优点。在中小批量通信产品的设计生产中,用FPGA和DSP实现HDLC功能是一种值得采用的方法。HDLC的帧
2011-03-17 10:23:56
HPI方式自举在TMS320VC5402 DSP芯片上的实现在由TI系列DSP组成的多机系统中,往往用HPI进行多机数据交换。由于HPI的功能特性,产生了一种新的应用—— 使用HPI对DSP进行自举
2009-08-20 18:59:35
M366S3323FTU-C7A - SDRAM Unbuffered Module - Samsung semiconductor
2022-11-04 17:22:44
,容易实现。 3.Matlab与 DSP混合编程的调试方法 在传统的开发过程中,总是先用 MATLAB进行仿真。当仿真结果满意时再把算法修改成 C/C++语言,再在硬件的 DSP目标板上实现。发现
2018-11-14 15:23:46
RCR-110DNP-100M
2023-03-29 21:51:48
RCR108DNP-101L
2023-03-29 22:38:18
RCR110DNP-181-L
2023-03-29 21:51:48
RCR110DNP-221L
2022-11-04 17:22:44
RCR110DNP-680L
2023-03-28 13:21:29
RCR664DNP-151K
2023-03-28 14:24:01
RCR664DNP-271K
2023-03-28 14:51:37
RCR664DNP-391K
2023-03-28 14:51:37
RCR664DNP-560K
2023-03-28 14:51:37
RCR664DNP-561K
2023-03-28 14:51:37
通信、控制、军事等领域。在DSP的应用中,数据的采集、信号处理及重建是DSP应用系统的重要任务。本文介绍TMS320C54X与 - 型A/D、D/A转换芯片TLC320AD50C的工作原理、硬件接口以及
2018-11-30 11:29:01
TSIC201FTU - High Precision Temperature Sensor IC - Zentrum Mikroelektronik Dresden AG
2022-11-04 17:22:44
TSIC506FTU - High Precision Temperature Sensor IC - Zentrum Mikroelektronik Dresden AG
2022-11-04 17:22:44
USB3.0中ESD应用的五大要素 1、ESD保护组件本身的寄生电容必须小于0.3pF,才不会影响USB3.0高达4.8Gbps的传输速率。2、保护组件的ESD耐受能力必须够高,至少要能承受IEC
2014-01-06 13:33:59
asm在dsp编程中是怎样使用的?它的作用是?
2020-06-01 13:17:19
dtu,rtu,ttu,ftu的区别,DTU是Data Transfer unit的缩写,中文名称是数据传输单元,用于在远端将PLC等下位机设备的数据透传到服务器上,专门用于将串口数据转换为IP数据
2021-07-21 07:03:19
ti官方威廉希尔官方网站
设计手册上的DNP是啥意思?
2016-01-08 17:32:44
自己做的DSP开发板,在DSP对SDRAM进行写操作的时候,发现一个问题:当往SDRAM中写的地址数超过128个的时候,再寻址的时候第8根地址线会乱掉,导致地址错位,此时,数据线第8根电压也反向了
2014-04-23 20:14:39
基于LABVIEW与DSP的串口通信在电力系统中的应用
2012-08-15 18:53:31
进一步降低,DSP解决方案在嵌入式图像、语音处理这样的数字信号处理典型应用中已成为工程师的首选。 虚拟仪器在很多情况下采用上位机实现,微机也可以进行数字处理,并且微机可以直接采用浮点运算,其运算精度也
2019-04-26 09:40:03
常用的红外数据传输规范是什么基于软件编码的中速红外技术在FTU中的应用
2021-04-27 06:42:39
在定点DSP系统中可否实现浮点运算?
2019-09-25 05:55:21
在定点DSP系统中可否实现浮点运算?
2019-09-26 05:55:42
基于线性预测的FIR自适应语音滤波器的系统结构由那几部分组成?如何降低LMS算法的计算复杂度,加快程序在DSP上运行的速度,实现DSP?
2021-04-12 06:27:49
USB 3.0 端口可通过分离超高速端口和标准 USB 2.0 端口来实现链路共享功能。目前,链路共享是赛普拉斯 HX3 USB 3.0 集线器控制器的独有功能。本文将介绍如何在扩展坞、笔记本电脑、电视机、机顶盒等嵌入式应用程序中实现 USB 3.0 链路共享。
2019-08-08 08:01:43
System Generator for DSP的特点是什么?如何使用System Generator for DSP实现系统级建模?怎么在Matlab中实现数字通信FPGA硬件设计?
2021-04-29 06:20:46
我是DNP(分布式网络协议)的新手。有人熟悉这个协议或者有任何信息可以帮助我开始吗?我想用微芯片5.42 TCP/IP协议栈在PIC24上实现它。
2019-09-23 09:49:21
已经有完整C语言程序,如何在CCS3.0中转化为bjt工程文件啊。
2016-10-28 16:12:26
FPU是什么?DSP又是什么?怎样在CUBEMX工程中移植FPU DSP库呢?
2021-10-26 06:50:34
延迟的真有效值转换发展为周期实时采样计算;相位测量则在幅值测量的基础上,由原来的间相脉冲填充法发展为乘法器矢量测量。 DSP 的高速处理能力,使其可以实现DDS 中的CPLD 或FPGA及测量威廉希尔官方网站
中
2018-10-23 16:22:43
DSP和FPGA在汽车电子中的应用比较汽车电子中的DSP和FPGA应用
2021-04-30 06:25:43
最近开始学习使用dspf28335,想要将以前开发的一个算法在dsp中应用,该算法中涉及到了车体的振动加速度,需要对振动加速度进行积分后获得速度,然后进行运算,我在网上查资料没有找到关于用c语言实现积分的,不知道该功能应该怎样实现?
2019-10-08 09:32:15
状态、电能参数、相间故障、接地故障以及故障时的参数,并执行配电主站下发的命令,对配电设备进行调节和控制,实现故障定位、故障隔离和非故障区域快速恢复供电功能。 二、 电源模块在FTU系统中
2018-10-09 10:42:15
值,所以必须对USB口进行过流保护,已确保其可靠性和稳定性。 在众多的过载保护方法中,我们建议应用WHPTC做USB3.0串行接口的保护是最佳的选择。WHPTC又叫自恢复保险丝,是深圳万瑞和公司
2013-10-29 10:12:01
本帖最后由 一只耳朵怪 于 2018-6-12 11:00 编辑
大家好,给大家看下这个控制图,进过一个PI后,这个积分环节怎么实现呢在DSP里?个人开始想的是用pid里的环节只用积分环节
2018-06-11 00:32:43
另外,在DSP系统中为什么要使用CPLD?有大侠指导吗?
2019-07-05 03:42:00
功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间的通信
2019-06-20 05:00:04
,是网络系统功能实现的基础。由于DSP可以实现对网卡的直接操作,对应于OSI网络模型,网卡包含了物理层和数据链路层的全部内容,因此,规定了数据链路层上数据帧封装格式,就可以为基于DSP的局域网络中任意站点之间
2019-06-20 05:00:05
DNP 3.0规约使SCADA行业有了国际标准规约。标准规约的适用面广,但理解、使用及实现标准规约的难度有所增大。DNP 3.0规约包括数据链路层规约,传输功能,应用层规约和数据
2008-12-02 08:50:4212 馈线终端单元(FTU)是配电网馈线自动化系统的主要装置,101 规约则是我国电力行业标准。本文讨论了基于新型DSP 芯片TMS320F2812 的FTU 设计,着
2009-09-12 11:54:4759 DNP3。0规约是一个基于IEC870-5标准的增强型体系结构的分布式网络规约,如图最上层为应用层,它定义了应用的报文格式。在DNP3。0规约中功能的实现是通过对象来实现的。第二
2010-09-24 16:16:4128 DNP双层背投屏幕技术及光学原理浅谈
1、光学屏幕定义 包含一个或多个光学镜头系统的屏幕称为光学屏幕,在镜头里面,光线被折射
2010-02-10 10:02:011126 根据软件编码的中速红外技术在FTU中的应用
概 述 馈线自动化终端(FTU)是自动化系统与一次设备联结的接口,主要用于配电系统变压器、断路器、重合器
2010-03-30 10:55:371211 海信TC2959DNP彩电图纸
2011-01-20 13:36:52150 海信TC3439DNP彩电图纸
2011-01-20 13:38:42129 在对张掖市农村电网改造和农电负荷变化情况调查的基础上,基于柔性输电理论,为提高农网供电质量和供电可靠性,分析了在张掖市农网中适时采用FTU技术的必要性及可行性。采用
2011-04-13 15:48:5832 CP 1243-1 DNP3 是 SIMATIC S7-1200 的通信处理器,用于将系统连接到工业以太网。该处理器支持用于遥控应用的 DNP3 协议。CP 1243-1 DNP3 和冗余控制中心
2017-09-27 11:08:3217 基于DSP开发系统设计与实现
2017-10-19 14:38:327 本应用报告总结了建立FlexRay传输单元(FTU)到必要的步骤FlexRay消息RAM和单片机的数据存储器之间的数据传输。详细的代码以不同的安装步骤为准则提供了示例。
2018-04-16 17:22:029 配网自动化系统一般由下列层次组成:配电主站、配电子站(常设在变电站内,可选配)、配电远方终端(FTU、DTU、TTU等)和通信网络。
2022-12-16 10:04:451655 R7F0C01072DNP, R7F0C010B2DFP-C 用户手册: 硬件
2023-03-29 19:22:000 FTU 是装设在馈线开关旁的开关监控装置。这些馈线开关指的是户外的柱上开关,例如10kV线路上的断路器、负荷开关、分段开关等。
2023-05-16 11:03:521074 FTU 是装设在馈线开关旁的开关监控装置。这些馈线开关指的是户外的柱上开关,例如10kV线路上的断路器、负荷开关、分段开关等。一般来说,1台FTU要求能监控1台柱上开关,主要原因是柱上开关大多分散安装,若遇同杆架设情况,这时可以1台FTU监控两台柱上开关。
2023-05-16 11:10:412255 DTU、FTU、TTU、RTU是在自动化控制系统中常用的数据采集与传输设备,它们都有着重要的作用,但在具体应用中有所区别。
2023-06-14 16:26:398102 超级电容以高牢靠性的放电能力,逐步被电力行业所选用,以 FTU 为代表的电力自动化运用,已在多家行业界领军型企业得以运用和推行。跟着电力行业对超级电容的认知逐步加深,超级电容器直流电源计划现已彻底走向老练并得到实践运用查验。
2022-05-09 10:38:57769 R7F0C01072DNP, R7F0C010B2DFP-C 用户手册: 硬件
2023-07-12 19:29:000 从DNP3.0到Profinet:BL122DN为工业应用带来高效数据交互
2023-09-04 17:33:25310 配网自动化终端DTU和FTU的区别? DTU和FTU都是配网自动化系统中常见的设备,用于实现数据的采集、传输和控制。虽然二者都是终端设备,但在功能、应用场景以及技术特点等方面存在一些区别。 首先
2024-02-01 10:52:58695
已全部加载完成
评论
查看更多