版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现C#与信捷PLC通讯
实现C#与信捷PLC通讯
信捷PLC在与PC通讯的时候,作为下位机,则上机必须按照MODBUS
RTU的数据格式与其进行数据交换;下面为大家讲解相关使用:
1、什么是MODBUSRTU协议?
MODBUSRTU的数据格式:请阅读《Modbus协议中文版.pdf》,通过这个
介绍你会对MODBUS协议有所了解,其中还详细介绍了modbus通讯的另一种
模式一一MODBUSASCII模式,关于两者之间的区别,在此不再重复阐述,
《Modbus协议中文版.pdf》上都有介绍,使用中请区分RTU和ASCH模式,
不能笼统的认为使用的协议是MODBUS协议。
2、MODBUSRTU的数据格式:
地址域功能码数据CRC或(LRC)
例如:0106000100179804
0106000100179804
从机地址功能码数据地址数据CRC校验
这一串数据的意思是:把数据0x0017(十进制23)写入1号从机地址
0x0001数据地址。
2.1功能码
「功能码描述功能码描述I
0x01读线圈状态0x05写单个线圈
0x02读离散输入状态0x06写单个保持寄存器
0x03读保持寄存器0x10写多个保持寄存器
0x04读输入寄存器0x0F写多个线圈
2.2读寄存器:(0x03功能码)
读取格式:
地址功能码寄存器起始地址寄存器数量CRC16校验
Adrr0x03高8位低8位高8位低8位低8位高8位
返回格式:
地址功能码字节数寄存器数据CRC16校验
Adrr0x03N高8位低8位低8位高8位
2.3写寄存器:(0x10功能码):
写入格式:
地址功能码寄存器起始地址寄存器数量寄存器数据CRC16校验
Adr0x10高8位低8位高8位低8位高8位低8位低8位高8位
r
返回格式:
地址功能码寄存器起始地址寄存器数量CRC16校验
Adrr0x10高8位低8位高8位低8位低8位高8位
2.4示例
发送:()1()3()0()100()1D5CA
从机地址功能号数据地址读取数据个数CRC校验
1
实现C#与信捷PLC通讯
那么PLC接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断
数据无误,则返回信息给主机:
返回内容:0103020017F84A
从机地址功能号数据字节个数数据CRC校验
MODBUS主机就完成了一次对从机PLC数据的读操作,实现了通讯。
3、核心代码
usingSystem;
usingSystem.IO.Ports;
usingSystem.Threading;
namespaceSylowIy.Base
{
publicclassPLCHelper
{
publicSerialPortSerPort{get;set;}
publicintIntTimeOut{get;set;}
publicstringStrPError{get;set;)
publicPLCHelper(SerialPortmserPort,intmTimeOut)
1
this.SerPort=mserPort;
this.IntTimeOut=mTimeOut;
)
//CRC校验
publicbyteflCRC16(byte[]bytData)
(
byte[]numArray=newbyte[bylData.Length+2];
intmaxValue=(int)ushort.MaxValue;
intnuml=40961;
for(intindex1=0;index1<bylData.Lenglh;++indexl)
(
maxValueA=(int)bytData[index1];
for(intindex2=0;index2<8;++index2)
(
intnum2=maxValue&1;
maxValue»=1;
if(num2==1)
maxValueA=num1;
)
)
Anay.Copy((Array)bytData,0,(Array)numArray,0,bytData.Length);
numArray[numArray.Length-2|=(byte)(maxValue&(int)byte.MaxValue);
numArray[numArray.Length-1]=(byte)(maxValue»8);
returnnumArray;
publicbytelJstringToBytes(stringstrValue)
(
strValue=strValue.Replace("",
byte[]numArray=newbyte[strValue.Leng(h/2];
for(intstartindex=0;startindex<strValue.Length;startindex+=2)
numArray[startIndex/2]=Convert.ToByte(strValue.Substring(startIndex,2),16);
returnnumArray;
)
〃初始化端口
2
实现C#与信捷PLC通讯
publicboolPlc_Ini(stringstrCom)
(
try
(
if(this.ScrPort.IsOpcn)
this.SerPort.Close();
this.SerPort.PortName=strCom;
this.ScrPort.BaudRatc=19200;
Ihis.SerPort.DataBits=8;
this.SerPort.Parity=Parity.Even;
this.ScrPort.StopBits=StopBits.One;
ihis.SerPort.ReadTimeoul=2000;
this.SerPort.Open();
returntrue;
)
catch(Exceptionex)
{
ihis.StrPError="初始化PLC通讯端口错误:"+ex.Message;
returnfalse;
publicstringhytcToHcxStr(bytc[]bytes)
{
stringstr=string.Empty;
if(bytes!=null)
(
for(intindex=0;index<bytes.Length;++index)
str=str+bytes[index].ToString("X2")+"
)
returnstr;
I
〃读取M寄存器
publicboolRead_M(intintAddr,intintCount,refstringflstrValue)
(
sirValue=newstring[intCount];
boolflag;
try
(
bytc[]bytData=newhyte[6]
(
(byte)1,
(byte)I,
(byte)0,
(byte)0,
(byte)0,
(byte)0
1;,
byte[]bytes1=this.stringToBytes(intAddr.ToString("X2").PadLeft(4,,()1));
bytData⑵=bytesl[0J;
bytData[3]=bytcsl[l];
bytData[4]=(byte)0;
bytData[5]=(byte)Convert.ToInt32(intCount.ToString(),16);
byte[]buffer1=this.CRC16(bytData);
lhis.SerPort.DiscardInBuffer();
3
实现C#与信捷PLC通讯
)
returnflag;
)
〃写入M寄存器
publicboolWritc_M(intintAddr,stringstrValuc)
{
TimeSpantimeSpan1=newTimeSpan();
boolflag;
try
(
if(this.SerPort.IsOpen)
(
byte[]bytData=newbyte[6]
(
(byte)1,
(byte)5,
(byte)0,
(byte)0,
(byte)0,
(byte)0
);,
bytc[]bytes1=this.stringToBytcs(intAddr.ToString("X2',).PadLcft(4,'0'));
bytData[2]=bytesl[0];
bytData(3]=byteslfl];
byte[]bytes2=this.stringToBytcs(strValue.PadLeft(4,'0'));
bytData[4]=bytes2[l];
bytData[5]=bytes2[0];
byte[]numArrayI=this.CRC16(bytData);
this.SerPorl.DiscardInBiiffer();
this.SerPort.Write(numArray1,0,numArray1.Length);
DateTimenow=DateTime.Now;
Thread.Sleep(50);
intbytesToRead=this.SerPort.BytesToRead;
if(bytesToRead>0)
(
TimeSpantimcSpan2=DateTime.Now-now;
if(timeSpan2.Milliseconds<=this.IntTimeOut)
(
bytc[]numArray2=newbytc[bytcsToRcad];
this.SerPort.Read(numArray2,0,numArray2.Length);
if(nurnArray2.Length>=6)
(
flag=this.byteToHexSlr(nuinArray2)==this.byteToHexStr(nuinArray1);
}
else
I
this.StrPError="写取寄存器:"+intAddr.ToStringO+"反馈数据长度不够:"+
nuniAiray2.Length.ToSlring();
flag=false;
)
)
else
(
ihis.SlrPError;”写取寄存器:"+intAddr.ToStringO+”数据超时广+
5
实现C#与信捷PLC通讯
timeSpan2.Milliseconds.ToString();
flag=false;
)
)
else
(
flag=false;
this.StrPError="PLC未反馈数据帧
}
)
else
flag=false;
)
catch(Exceptionex)
(
flag=false;
I
returnflag;
}
〃读取D寄存器
publicboolRead_D(
intintAddr,
stringstrRType,
intintCount,
refstringstrSendStr,
refstringstrRecStr,
refstringllstrValue)
(
sirValue=newstring[inlCount];
boolflag;
try
(
byte[]bytData=newbyte[6]
(
(byte)1,
(byte)3,
(byte)0,
(byte)0,
(byte)0,
(byte)0
};,
byte[]bytes1=this.stiingToBytes(intAddr.ToString(',X2").Pa(iLcft(4,'0'));
by(Data[2]=bytes1(0];
bytData[3]=bytesl[1];
bytData[4]=(byte)0;
bytData[5]=!(strRType=="0")?(byte)2:(byte)Convert.ToInt32(intCount.ToString(),16);
bytc[]numArrayI=this.CRC16(bytData);
lhis.SerPort.DiscardInBuffer();
this.SerPort.Write(numArray1,0,numArray1.Length);
strSendStr=this.bytcToHcxStr(numArray1);
DaleTimenow=DateTime.Now;
Thread.Sleep(IOO);
intbytesToRead=this.ScrPort.BytesToRead;
if(bytesToRead>0)
6
实现C#与信捷PLC通讯
TimeSpantirneSpan=DateTime.Now-now;
if(tirneSpan.Milliseconds<=this.IntTimeOut)
(
byteflnumArray2=newbytefbytcsToRcad];
intnum=this.SerPort.Read(numArray2,0,numArray2.Length);
if(num>=7)
(
byle[]bytes2=!(strRType=="0")?newbyte[4]:newbyle[2];
if(numArray2[I]==(byte)3&&(strRType=="0"&&(int)numArray2[2]==2*
intCount||strRType=="1"&&numArray2[2]==(byte)4))
(
for(intindex=0;index<intCount;++index)
(
if(strRType=="0")
Array.Copy((Array)numArray2,3+2*index,(Array)bytes2,0,2);
else
Array.Copy((Array)numArray2,3,(Array)bytes2,0,4);
strRecStr=this.byteToHexStr(numArray2);
stringstr=this.byteToHexStr(bytes2).Replace(n","n).Trim();
if(strRType==,,1")
(
floatsingle=BitConverter.ToSingle(bytes2,0);
strValuefO]=single.ToString(HF3");
1
else
strValuefindex]=Convert.ToInt32(str,16).ToString();
1
flag=true;
1
else
(
加56皿^^0「、*1/:反馈字符串不符合要求!”;
flag=false;
)
)
else
f
this.StrPError="读取寄存器:"+intAddr.ToStringO+"反馈数据长度不够:"十
num.ToStringO;
flag=false;
I
}
else
(
thi$.StrPError="读取寄存器:"+intAddr.ToStringO+”数据超时/+
tirneSpan.Milliseconds.ToStringO;
flag=false;
)
1
else
flag=false;
this.StrPError二"PLC未反馈数据帧
7
实现C#与信捷PLC通讯
)
1
catch(Exceptionex)
(
flag=false;
ihis.StrPError="读取寄存器:'+intAddr.ToStringO+"发生异常:"+ex.Message;
)
returnflag;
I
〃写D寄存器
publicboolWrite_D(intintAddr,stringstrDType,stringstrValue)
(
TimeSpantimeSpan1=newTimeSpanO;
boolflag;
try
(
if(this.SerPort.IsOpen)
(
bytc[]bytData=!(strDTypc=="0")?newbyte[11]:newbyte[6];
stringempty=string.Empty;
bytel]bytes1=this.stringToBytes(intAddr.ToString(',X2").PadLeft(4,'0'));
bytData[0]=(byte)I;
bytData[1]=!(strDType=="0")?(byte)16:(byte)6;
bytData[2]=bytesl[0]:
hytData[3]=bytesl[l];
if(strDType=="0")
(
if(intAddr==151)
strValue=int.Parse(slrValue).ToString("X2");
byte[]bytes2=this.stringToBytes(strValue.PadLeft(4,'0'));
this.byteToHexStr(bytes2);
bytData[4]=bytes2[0];
bytData[5]=bytes2[l];
(
else
(
bytData[4]=(byte)0;
bytData[5]=(byte)2;
bytData[6]=(byte)4;
byte[]bytes2=BitConverier.GetBytes(Convert.ToSingle(strValue));
bytData[7]=bytes2[0];
hytData[8]=bytes2[l];
bytData[9]=bytes2[2];
bytData[10]=bytes2[3];
I
bytelJnumArray1=this.CRCI6(bytData);
this.SerPort.DiscardInBuffer();
this.SerPort.Write(numArray1,0,numArray1.Length);
DateTimenow=DateTime.Now;
Thrcad.Slccp(50);
intbytesToRead=this.SerPort.BytesToRead;
if(bytesToRead>0)
TimeSpantimeSpan2=DateTime.Now-now;
8
实现C#与信捷PLC通讯
if(timeSpan2.Milliseconds<=this.IntTimeOut)
(
byte[]nuniArray2=newbyte[bytesToRead];
this.SerPort.Read(numArray2,0,numArray2.Length);
if(numArray2.Length>=8)
{
flag=this.byteToHexStr(numArray2)==this.byteToHexStr(numArrayl);
)
else
(
this.StrPError="写取寄存器:"+intAddr.ToStringO+"反馈数据长度不够:"+
numArray2.Length.ToSlring();
flag=false;
I
)
else
(
this.StrPError="写取寄存器:"+intAddr.ToStringO+"数据超时丁'+
timcSpan2.Milliseconds.ToString();
flag=false;
)
)
else
(
flag=false;
this.StrPError="PLC未反馈数据帧...”;
)
}
else
flag=false;
I
catch(Exceptionex)
(
flag=false;
)
returnflag;
)
publicstringGctHcxOrdcr(stringstrHcx,intintValuc)
{
siringempty=string.Empty;
return(Convert.ToInt32(strHex,16)+intVaIue).ToString("X4");
I
〃关闭
publicboolPLC_Close()
(
try
(
this.SerPort.DiscardInBuffer();
this.ScrPort.Closc();
lhis.SerPort.Dispose();
returntrue;
)
catch(Exceptionex)
9
实现C#与信捷PLC通讯
returnfalse;
附录Modbus通讯地址
可编程控制器内部软元件编号与对应的Modbus地址编号如下表示:
1)XDKXD2、XD3、XL1、XL3系^PLC的Modbus地址与内部软元件对照表:
注意:X、Y的Modbus地址计算详见表格最底部注意点。
元件个Modbus地址Modbus地址
类型元件编号
符号数(十六进制)(十进制)
MM0-M799980000-1F3F0-7999
X0-X77(本体)645OOO-5O3F20480-20543
X10000-X10077(#1模块)6451OO-513F20736^20799
X10100-X10177(#2模块)64514O-517F20800~20863
X10200-X10277(#3模块)645I80-51BF20864-20927
X10300-X10377(#4模块)6451co~5IFF20928~20991
XI0400X1()477(#5模块)6452OO-523F20992*21055
X10500-X10577(#6模块)645240-527F21056-21119
X
X10600-X10677(#7模块)645280-52BF21120-21183
线X10700-X10777(#8模块)6452C0-52FF21184~21247
圈XI1000-XI1077(#9模块)6453OO-533F21248-21311
、X11IOO-XI1177(#10模块)64534O-537F21312-21375
位X2OOOO-X2OO77(#1BD)6458D0-590F22736-22799
对X20100-X20177(#2BD)645910~594F22800~22863
象X3OOOO-X3OO77(#1ED)645BFO-5C2F23536-23599
Y0-77(本体)646000-603F24576-24039
YKXXJ0-Y10()77(#1模块)646IOO-613F24832-24895
Y10I00-Y10I77(#2模块)646140-617F24896-24959
Y10200-Y10277(#3模块)646180-61BF24960-25023
YY10300-Y10377(#4模块)6461C0-61FF25024-25087
Y10400-Y10477(#5模块)6462OO~623F25088-25151
Y10500-Y10577(#6模块)646240~627F25152-25215
Y10600-Y10677(#7模块)646280-62BF25216-25279
Y10700-Y10777(#8模块)6462C0-62FF25280〜25343
10
实现C#与信捷PLC通讯
元件个Modbus地址Modbus地址
类型元件编号
符号数(十六进制)(十进制)
Y11000-Yl1077(#9模块)6463OO-633F25344-25407
Y11100-Yl1177(#10模块)646340~637F25408-25471
Y2OOOO-Y2OO77(#1BD)6468DO〜690F26832〜26895
Y2O1OO-Y2O177(#2BD)646910~694F26896-26956
Y30000~Y30077(#1ED)646BF0-6C2F27632~27695
SS0-SI02310247(XX)~73FF28672-29695
SMSM0-SM204720489(XX)~97FF36864〜38911
TT0-T575576AOOO-A23F40960-41535
CC0-C575576B000-B23F45056-45631
ETET0-ET3132C000-C01F49152-49183
SEMSEMO〜SEM3132C080-C09F49280-49311
HM"1HM0-HN4959960C100-C4BF49408-50367
HS如HS0-HS127128D900-D97F55552-55679
HT知HT0-HT9596E100-E15F57600〜57695
HC%1HC0-HC9596E500-E55F58624-58719
HSC*iHSC0-HSC3132E900-E9IF59648〜59679
DD0-D79998000O~1F3F0-7999
ID0-ID99(本体)1005000〜506320480〜20579
ID10000-ID10099(#1模块)1005100~516320736-20835
ID10100-ID10199(#2模块)1005164-51C720836〜20935
寄ID1()2(X)~1D10299(#3模块)1(X)51C8-522B20936~21035
存ID10300~ID10399(#4模块)l(X)522C~528F21036-21135
器ID10400-ID10499(#5模块)1005290-52F321136-21235
、ID10500-ID10599(#6模块)10052F4-535721236-21335
ID
字ID106004DI0699(#7模块)1005358~53BB21336〜21435
对ID10700-ID10799(#8模块)10053BC-541F21436-21535
象ID10800-ID10899(#9模块)1005420〜548321536~21635
ID10900UD10999(#10模块)1005484-54E721636~21735
ID2OOOO-ID2OO99(#1BD)10058D0-593322736~22835
ID20100-ID20199(#2BD)1()05934~599722836〜22935
ID30000-ID30099(#1ED)1005BF0-5C5323536~23635
QD0-QD99(本体)1005000-606324576-24675
QD10000〜QD10099(#1模块)1006100-616324832-24931
QDI0I00-QDI0199(#2模块)1006164-6IC724932-25031
QD10200-QD10299(#3模块)10061C8-622B25032~25131
QD10300-QD10399(#4模块)100622C-628F25132~25231
寄QD10400-QD10499(#5模块)1(X)6290~62F325232~25331
存QD10500~QD10599(#6模块)1(K)62F4~635725332~25431
QD
器QD10600-QD10699(#7模块)1006358-63BB25432-25531
、QD10700-QD10799(#8模块)10063BC-64IF25532~25631
字QD108()()~QD10899(#9模块)1005420~648325632-25731
对QD10900-QD10999(#10模块)100W84-64E725732-25831
象QD2(XXX)~QD20099(#1BD)10068D0~693326832-26931
QD20100-QD20199(#2BD)1006934-699726932-27031
QD3OOOO-QD3OO99(#1ED)1006BF0-6C5327632-27731
SDSD0-SD204720487OOO-77FF28672-30719
TDTD0-TD5755768000~823F32768~33343
CDCD0~CD5755769000〜923F36864-37439
11
实现C#与信捷PLC通讯
元件个Modbus地址Modbus地址
类型元件编号
符号数(十六进制)(十进制)
ETDETD0-ETD3132A000-A01F40960-40991
HD""HD0-HD9991000A080-A46741088-42087
HSD刈HSD0-HSD499500B880-BA7347232〜47731
HTD即HTD0-HTD9596BC80-BCDF48256-48351
HCD孙HCD0〜HCD9596C080〜C0DF49280~49375
HSCD列HSCD0~HSCD3l32C480-C49F50304〜50335
FD%2FD0-FD5U95120C4C0-D8BF50368〜55487
SFD«2SFD0-SFDI9992000E4C0-EC8F58560-60559
FS*2FS0-FS4748F4co〜F4EF62656-62703
2XD5xXDM、XDC、XD5E、XDME、XL5、XL5E、XLME系列Modbus地址与内部软元件对照表:
元件Modbus地址Modbus地址
类型元件编号个数
符号(十六进制)(十进制)
MM0-M20479204800-4FFF0-20479
X0-X77(木体)645OOO-5O3F20480-20543
X10000-X10077(#1模块)6451OO-513F20736-20799
X10100-X10177(#2模块)645140~517F20800-20863
X10200-X10277(#3模块)64518O-51BF20864-20927
XI0300-X10377(#4模块)6451co~5IFF20928~20991
X10400-X10477(#5模块)645200-523F20992-21055
XI05(X)-X10577(#6模块)645240~527F21056-21119
X10600-X10677(#7模块)645280-52BF21120-21183
X10700-X10777(#8模块)6452C0-52FF21184-21247
XJ1OOO-X1IO77(#9模块)6453OO-533F21248-21311
XX11100-X1I177(#10模块)645340〜537F21312-21375
X11200-X11277(#11模块)64538O-53BF21376-21439
线XiI3()(>X11377(#12模块)6453C0-53FF21440-21503
演XI1400-X11477(#13模块)645400-543F21504-21567
、X11500-X11577(#14模块)645440-547F21568-21631
XII600-X11677(#15模块)645480〜54BF21632~21695
位
(模块)64
对X117OO-X11777#1654C0-54FF21696-21759
象X20000-X20077(#1BD)6458DO〜59OF22736〜22799
X20100-X20177(#2BD)645910~594F22800~22863
X30000-X30077(#1ED)645BF0-5C2F23536〜23599
Y0~77(本体)646000-603F24576-24639
Y10000-Y10077(#1模块)646100~613F24832〜24895
YI0I00-YI0I77(#2模块)646140-617F24896~24959
Y10200-Y10277(#3模块)646180-61BF24960-25023
Y10300-Y10377(科4模块)6461C0-61FF25024~25087
Y10400-Y10477(#5模块)646200-623F25088-25151
Y
Y10500-Y10577(#6模块)646240~627F25152-25215
Y10600-Y10677(#7模块)646280~62BF25216~25279
Y10700-Y10777(#8模块)6462C0-62FF25280-25343
Y11000-Y11077(#9模块)646300~633F25344~25407
Y11100-Y1U77(#10模块)646340-637F25408-25471
Y11200-Y11277(#11模块)646380-63BF25472-25535
12
实现C#与信捷PLC通讯
元件Modbus地址Modbus地址
类型元件编号个数
符号(十六进制)(十进制)
Y1I300-Y11377(#12模块)6463C0-63FF25536-25599
Y11400-Y11477(#13模块)646400-643F25600-25663
YI1500-Y11577(#14模块)646440-647F25664-25727
Y11600-Y11677(#15模块)646480-64BF25728-25791
Y11700-Y11777(#16模块)6464C0-64FF25792~25855
Y2OOOO~Y2OO77(#1BD)6468D0-690F26832~26895
Y20100-Y20177(#2BD)646910-694F26896~26956
Y30000-Y30077(#1ED)646BF0-6C2F27632-27695
SS0-S799980007OOO-8F3F28672-36671
SMSM0-SM409540969000-9FFF36864-40959
TT0-T40954096A000〜AFFF40960-45055
CC0-C40954096B000-BFFF45056-49151
ETET0-ET3940C000-C02749152-49191
SEMSEM0-SEM127128C080-C0FF49280-49407
HM"HM0-HM6I436144C100-D8FF49408~55551
HS孙HS0-HS9991000D900〜DCEF55552-56551
HT*"HT0~HT10231024EI00-E4FF57600-58623
HC如HC0-HCI0231024E500-E8FF58624〜59647
HSC*1HSC0-HSC3940E900-E92759648^59687
DD0-D20479204800-4FFF0-20479
ID0-1D99(本体)1(X)5000~506320480~20579
ID10000-1D10099(#1模块)KX)5100-516320736-20835
IDI0100-1DI0I99(#2模块)1005164~51C720836-20935
ID10200-1D10299(#3模块)10051C8-522B20936-21035
IDI0300-1D10399(#4模块)100522C~528F21036-21135
ID10400-1D10499(#5模块)1005290-52F321136-21235
ID10500-ID10599(#6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T-UNP 562-2025 卷烟水固件在线复合设备管理要求
- 第23课《马说》课件-统编版语文八年级下册
- 第7课《月亮是从哪里来的》说课课件统编版语文八年级下册
- 小升初数学全册总复习易错题集
- 2026年哈利 波特分院测试题及答案
- 2026年国际忧郁测试题及答案
- 九年级数学下册28锐角三角函数28.2.2第二课时利用方位角坡度解直角三角形练习
- 2026年教师国学知识测试题及答案
- 2026年休克三基测试题及答案
- 2026年医疗常识测试题及答案
- 山西沁水盆地柿庄南区块煤层气资源开发利用与矿区生态保护修复方案
- 长沙市建筑施工安全生产“一会三卡”
- 110kVGIS设备运行规程
- 综合医院外派住院医师规范化培训协议书
- GB/T 6075.1-1999在非旋转部件上测量和评价机器的机械振动第1部分:总则
- 计算机组织与结构 第5章 输入输出组织课件
- 外交学院外交学考研真题(2000-2019)
- 非标设备验收重点标准
- T∕ZZB 2708-2022 化妆品包装用玻璃瓶
- 系统工程第5讲-系统评价方法
- SF∕T 0112-2021 法医临床影像学检验实施规范
评论
0/150
提交评论