Modbus通讯规约.doc_第1页
Modbus通讯规约.doc_第2页
Modbus通讯规约.doc_第3页
Modbus通讯规约.doc_第4页
Modbus通讯规约.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MODBUS通讯规约MODBUS通讯规约 V2.01 通讯参数和传输特性传输方式:异步串行通信方式。MODBUS规约模式: RTU模式。传输速率:2400 bps,4800bps,9600bps,19200bps。串行口通讯数据格式:1 个起始位,8 个数据位, 无校验位,1个停止位。最大传输距离:1200米。通讯介质:推荐采用0.5mm的双绞线,不带屏蔽层。(原因是如果使用屏蔽双绞线,但现场接地处理不好反而影响通讯质量)。网络连接主站数目:1个。网络连接从站数目:最多31个。应答时间:小于 4.5个byte传输时间(帧间隔最小时间) + 10ms。2网络连接 RS-485网络的匹配电阻选取:双绞线网络两端的匹配电阻选取,以现场通信正常为准,一般地1.2km时取120,600m时取220,300m时取330,如通信误码率较大,观察通信时的波形,匹配电阻做适当改变: 末端匹配电阻合适 末端匹配电阻偏小 末端匹配电阻偏大3通信参数选择 通信站号:在通讯参数中修改装置地址,范围199,禁止使用0作为装置地址,地址0作为广播地址使用。 通信波特率: 通讯参数中修改装置485口,修改通信波特率:选择范围: 2400bps, 4800bps,9600bps,19200bps。4MODBUS协议通用格式4.1 支持的MODBUS功能码功能码02H: 读取开关量输入(读实遥信和虚遥信)。功能码03H: 读取保持寄存器(读事件记录等)功能码04H: 读取输入寄存器(读远动遥测) 功能码05H: 强制单点继电器输出(远方复归、单步的遥控跳闸、遥控合闸)。功能码06H: 向保持寄存器写单个字(遥控跳闸、遥控合闸的选择和执行操作)功能码10H: 向保持寄存器(内存区)写多个16位的字(通讯对时)。4.2 异常响应报文格式由于软件编程错误,对协议理解错误或通讯干扰等原因,MODBUS通信子站接收到主站的报文后,可以采用异常响应报文给予回答,异常响应报文格式举例如下: 异常响应报文 子站=主站报文内容含义备注1字节MODBUS地址01H 举例1字节功能码85H1字节异常代码02H1字节CRC高字节C3H1字节CRC低字节51HFC 05H 主站=子站:远方复归报文内容含义备注1字节MODBUS地址01H 举例1字节功能码05H1字节线圈地址高字节01H1字节线圈地址低字节07H1字节强制线圈数值高字节FFH1字节强制线圈数值低字节00H1字节CRC高字节3CH1字节CRC低字节07H子站通过校验,发现主站报文有问题,将响应报文将主站的功能码最高位(D7)置1,如例子中的85H,异常响应报文中有固定的一个字节作为“异常代码”,表示异常原因。异常代码含义01非法功能码。子站无法处理主站报文中的功能码。02非法数据地址。子站无法处理主站报文中的数据地址。03非法数据内容。主站报文中的数据不能满足子站的要求格式。04子站设备错误。当子站试图执行主站报文,会产生无法恢复的设备错误。05确认帧。 子站接改到主站报文并执行,但由于执行时间比较长,采用本报文通知主站,防止产生主站接收报文超时错误。06子站忙。4.3时间格式本规约中使用到的对时报文的时间格式,事件记录中的时间格式,参见下面说明。七个八位位组的二进制时间 27 毫秒 20 215 毫秒 28IV(RES1)025 分 200(SU)(RES2) 0 024 时 20 22 星期 20 24 日 20 (RES3) 0 0 0 0 23 月 20 (RES4) 026 年 20 4.4 MODBUS规约中CRC码的计算 采用RTU通讯方式的MODBUS规约,要将报文中除CRC码外的所有字节进行CRC码校验,校验程序如下:static unsigned char auchCRCHi = /* Table of CRC values for high-order byte */0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40;static unsigned char auchCRCLo = /* Table of CRC values for low-order byte */0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,0x43, 0x83, 0x41, 0x81, 0x80, 0x40 ;unsigned short Modbus_CRC16(unsigned char *puchMsg, unsigned short usDataLen) unsigned char uchCRCHi = 0xFF ; /* high CRC byte initialized */unsigned char uchCRCLo = 0xFF ; /* low CRC byte initialized */unsigned short uIndex ; /* will index into CRC lookup*/ while (usDataLen-) /* pass through message buffer */ uIndex = uchCRCHi *puchMsg+ ; /* calculate the CRC */ uchCRCHi = uchCRCLo auchCRCHiuIndex ; uchCRCLo = auchCRCLouIndex ; return (uchCRCHi 8 | uchCRCLo) ;5 报文格式详解以下报文以MMP-5000D为例说明,相应通讯信息点表见MMP-5000D测点表。 报文中的字节都是以16进制的方式显示。5.1 读全遥信主站发送:从机地址功能码开始地址H开始地址L遥信点数H遥信点数LCRC码 HCRC码 L01020000002079D2子站响应地址功能码字节数遥信数值(LSB-MSB)CRC码 HCRC码 L01020401本字节的LSB对应遥信点号102 0000本字节的MSB对应遥信点号325BDE注意:1)MMP-5000D供有32个遥信(实遥信和虚遥信),因此主站从开始地址0读0x20个遥信点。2)本例应答报文中:数值01的D0位为1代表MMP-5000D的“远方控制”为1;数值02中的D1位为1代表MMP-5000D的跳位信号为1。3)子站响应中的LSB,MSB指D0位和D7位,通讯点号依次采用升序的方式,比如第一个字节的D0位为遥信点号1它的D7位为遥信点号8;第二个节字的D0位就为遥信点号9,它的D7位为遥信点号16,依次类推。5.2 读全遥测(远动遥测)主站发送:从机地址功能码开始地址H开始地址L遥测点数H遥测点数LCRC码 HCRC码 L01040000000FB00E子站响应地址功能码字节数设备状态字 H L第一个遥测值 H L第N个遥测值CRC码 HCRC码 L01041E00016AA0B61B“设备状态字”的D0为1,表示请求读全遥信MMP-5000D的“频率”遥测值注意: 1)遥测报文第一个测点为“设备状态字”,不用入库,第二个开始才是“频率”,以后依次后推。2)远动遥测值的数据格式采用带品质描述的被测值(MEA)定义 BIT0 = 溢出位(OV) BIT1 = 差错位(ER) BIT2 = 测试位(TEST),该位置1表示本遥测量为综自功能 BIT15BIT3 = 被测值(MVAL),范围 -4096 40953)“设备状态字”占用两个字节,它的低字节的D0位为1表示有实遥信和虚遥信变位,要求主站使用“读全遥信”报文来读取,一旦执行了“读全遥信”,则“设备状态字的D0位变为0;“设备状态字”的D1位为1:表示保护装置有事件记录,要求主站使用连续执行“读单个事件记录”来读取事件记录,子站没有新的事件记录时,D1位自动变为0。通讯管理机可以根据需要选择是否使用“设备状态字”。4)如果不需要使用“设备状态字”,可以将报文中的开始地址设为0x0001,则第一个读到的遥测值就是“频率”。5)遥测值计算方法:u 电压4095对应1.2倍的额定值1.2*100 = 120Vu 电流4095对应1.2倍的额定值1.2*5 = 6Au 功率4095对应1.2倍的额定值(1.2*57.77*1.2*5)*3 = 1248Wu 频率4095对应1.2倍的额定值1.2*50 = 60Hzu 功率因素4095对应1倍的额定值 1.000本例中:6AA0为第一个遥测值(频率),它被放大8倍,满量程值为4095,对应60Hz(50Hz的1.2倍)。因此频率如下计算:0x6AA0/8/4095*60.0Hz = 49.993Hz例:=MMP-5000D读全遥测=TX:01 04 00 00 00 0F B0 0E RX: 01 04 1E 00 01 6A A0 00 00 00 00 00 00 36 C0 40 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 C0 B6 1B5.3 读电度值主站发送:从机地址功能码电度对象起始地址H电度对象起始地址L电度对象数目H电度对象数目LCRC码 HCRC码 L01030000000185B2子站响应:地址功能码字节数正向有功电度LSB MSB反向有功电度LSB MSB正向无功电度LSB MSB反向无功电度LSB MSB010310E8030000D0070000B80B0000A00F0000正向有功电度值为:0x000003E8(1000W/1kW)反向有功电度0x000007D0(2000W/2kW)正向无功电度0x00000BB8(3000Var/3kVar)反向无功电度0x00000FA0(4000Var/4kvar)CRC码 HCRC码 LB61B注意:1) 每个电度值由4个字节组成一个32位字,它的单位是W(瓦特)或Var(乏)2) 报文中先收到的是电度的低位字节,后收到的是高位字节。例:=MMP-5000D读电度值=TX:01 03 02 00 00 01 85 B2 RX:01 03 10 E8 03 00 00 D0 07 00 00 B8 0B 00 00 A0 0F 00 00 93 CD 5.4 广播对时主站发送:从机地址功能码开始地址H开始地址L寄存器数H寄存器数L字节总数毫秒L毫秒H0010048000040898B7 分钟小时日月份年份保留CRC码 HCRC码 L1612170107008778说明:1) 对时时间为07年1月23日18时22分47秒000毫秒2) 广播对时的从机地址设为005.5 广播信号复归 方式一:采用功能码05H向单个线圈264写ON信号(0xFF00),产生远方信号复归功能。主站发送:从机地址功能码线圈地址H线圈地址L强制线圈数值H强制线圈数值LCRC码 HCRC码 L00050107FF003DD6 方式二:采用功能码06H向单个保持寄存器0x0000写数值0x0000,产生远方复归功能。主站发送:从机地址功能码寄存器地址H寄存器地址L设置数值H设置数值LCRC码 HCRC码 L00060000000089CA说明:1)如果需要点对点复归,只要将从机地址从广播地址00改为相应设备地址即可。2)两种方式通讯管理机可以任意选择。5.6 遥控跳闸的选择命令采用功能码06H向单个保持寄存器0x0101写数值0xFFFF,产生遥控跳闸的选择功能。主站发送:从机地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060101FFFFD846子站响应:子站地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060101FFFFD8465.7 遥控跳闸的执行命令采用功能码06H向单个保持寄存器0x0011写数值0xFFFF,产生遥控跳闸的执行。主站发送:从机地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060011FFFFD87F子站响应:子站地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060011FFFFD87F5.8 遥控合闸的选择命令采用功能码06H向单个保持寄存器0x0100写数值0xFFFF,产生遥控合闸的选择功能。主站发送:从机地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060100FFFF8986子站响应:子站地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060100FFFF89865.9 遥控合闸的执行命令采用功能码06H向单个保持寄存器0x0010写数值0xFFFF,产生遥控合闸的执行。主站发送:从机地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数值LCRC码 HCRC码 L01060010FFFF89BF子站响应:子站地址功能码寄存器地址H寄存器地址L寄存器数值H寄存器数据LCRC码 HCRC码 L01060010FFFF89BF5.10 单报文直接遥控跳闸采用功能码05H向线圈0x0001写数值0xFF00,产生单报文直接遥控跳闸。慎用本命令!主站发送:从机地址功能码线圈地址H线圈地址L强制线圈数值H强制线圈数值LCRC码 HCRC码 L01050001FF00DDFA子站响应:从机地址功能码线圈地址H线圈地址L强制线圈数值H强制线圈数值LCRC码 HCRC码 L01050001FF00DDFA5.11 单报文直接遥控合闸采用功能码05H向线圈0x0000写数值0xFF00,产生单报文直接遥控合闸。慎用本命令!主站发送:从机地址功能码线圈地址H线圈地址L强制线圈数值H强制线圈数值LCRC码 HCRC码 L01050000FF008C3A子站响应:从机地址功能码线圈地址H线圈地址L强制线圈数值H强制线圈数值LCRC码 HCRC码 L01050000FF008C3A5.12 读单个事件记录采用功能码03H向保持寄存器地址0x0001,读一个字,产生读一个事件记录的作用。主站发送:从机地址功能码事件记录地址H事件记录地址L事件记录个数H事件记录个数LCRC码 HCRC码 L010300010001D5CA子站响应:从机地址功能码字节数事件条目数H事件条目数L事件代码H(事件组号)事件代码L(事件代码)动作值02:合; 01:分01030C0001040902毫秒L毫秒H分钟小时日月份年份CRC码 HCRC码 LA54D19121701072FEB注意:1) 事件代码高字节用于事件组号,为保证与本规约与事件代码无分组功能的保护测控装置兼容,特保留00组(事件代码的高字节为0x00),作为无分组的事件代码,此时只识别低字节,高字节无效;01组保留作为无分组事件代码的扩展。02组:保护事件动作,03组:告警事件,04组:实遥信变位事件组号只是用来显示分类的,仅用于表示本事件是保护动作事件、保护告警事件还是实遥信变位事件,事件具体含义由事件代码低字节表示。2)事件代码低字节MMP-5000D系列产品是使用分组事件代码的保护装置,事件代码低字节表示的点号定义如下:0x00-0x0F:代表实遥信;0x10-0x2F:代表保护动作事件/保护告警事件;0x30-0x4F:代表子站的自检错误事件,保留。对于测控装置来说,事件代码低字节表示的点号只有实遥信,实遥信的个数可以超过16个,按实际情况定。对于其它系列产品,有可能实遥信或虚遥信有增加,按装置实际测点表定义。对于事件代码分组的保护装置来说,实遥信变位、保护动作/告警虚遥信变位、自检事件虚遥信变位的“事件地址码”定义与FC 02H中的开关量地址定义是一致的。例:=MMP-5000D读单个事件记录=TX:01 03 00 01 00 01 D5 CA RX:01 03 0C 00 01 04 09 02 A5 4D 19 12 17 01 07 2F EB 本例中,事件组号为04,表示是实遥信变位,对于MMP-5000D来说,事件代码09对应“跳闸位置”,动作值为合,表示2007年01月23日18点25分19秒877毫秒 断路器跳闸位置信号为1。 13MODBUS规约编程指南1 MODBUS规约简化版通讯流程1.1 巡检流程对于保护测控装置平时执行读全遥信 N次后, 执行读全遥测 1次, 执行读全遥信 N+M次后, 执行读电度值 1次。对于纯保护装置,由于没有远动遥测值和电度值,平时只执行读全遥信 。=MMP-5000D读全遥信=TX:01 02 00 00 00 20 79 D2 RX:01 02 04 01 02 00 00 5B DE =MMP-5000D读全遥测=TX:01 04 00 00 00 0F B0 0E RX:01 04 1E 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1A 3F 说明: 第一个遥测值为保护状态字, 不用上传入库=MMP-5000D读电度值=TX:01 03 02 00 00 01 85 B2 RX:01 03 10 E8 03 00 00 D0 07 00 00 B8 0B 00 00 A0 0F 00 00 93 CD 说明:报文中的电度值为: 正向有功电度1000W(1KW); 反向有功电度2000W(2kW); 正向无功电度3000W(3KW); 反向无功电度4000W(4kW).1.2 远方复归 简单处理方法,采用广播复归05功能码, 这样只要执行一次, 全站所有预告总信号,事故总信号复归(各装置动作条件消失的情况下)。问题:如果一次有多个保护装置动作,可能有的保护还没有处理完毕, 所有动作的保护装置的信号灯就都被复归了。=MMP-5000D广播复归05功能码=TX:00 05 01 07 FF 00 3D D6 说明:1)复归保护装置的动作灯和告警灯, 复归菜单的弹出画面.2)采用05功能码, 复归264线圈.1.3 通讯对时: 采用广播对时方式. =MMP-5000D广播对时=TX:00 10 04 80 00 04 08 98 B7 16 12 17 01 07 00 58 F0 说明:对时时间07年1月23日18时22分47秒000毫秒1.4 遥控跳闸=MMP-5000D遥跳选择=TX:01 06 01 01 FF FF D8 46 RX:01 06 01 01 FF FF D8 46 =MMP-5000D遥跳执行=TX:01 06 00 11 FF FF D8 7F RX:01 06 00 11 FF FF D8 7F 1.5 遥控合闸=MMP-5000D遥合选择=TX:01 06 01 00 FF FF 89 86 RX:01 06 01 00 FF FF 89 86 =MMP-5000D遥合执行=TX:01 06 00 10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论