版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
工业机器人控制器:YaskawaDX200:DX200控制器的网络通信协议1工业机器人控制器:YaskawaDX200控制器概述1.11DX200控制器简介DX200控制器是安川电机(YaskawaElectricCorporation)为满足现代工业自动化需求而设计的高性能机器人控制器。它集成了先进的控制算法和通信技术,能够实现对工业机器人的精确控制和高效管理。DX200控制器支持多种通信协议,包括EtherCAT、ProfiNET、DeviceNet等,这使得它能够无缝集成到各种工业网络环境中。1.22控制器硬件结构DX200控制器的硬件结构设计紧凑,功能强大。它主要由以下几个部分组成:主控制单元:负责处理机器人的运动控制和逻辑控制,是DX200的核心部分。电源模块:为控制器提供稳定的电力供应,确保机器人在各种工作条件下的正常运行。I/O模块:用于连接外部设备,如传感器、执行器等,实现与外部环境的交互。通信模块:支持多种网络通信协议,如EtherCAT、ProfiNET等,用于与上位机或其它设备进行数据交换。1.2.1示例:DX200控制器硬件连接-主控制单元:型号为R1000,负责核心运算。
-电源模块:型号为P1000,提供200V/380V电源输入。
-I/O模块:型号为IO1000,包含16个数字输入和16个数字输出。
-通信模块:型号为C1000,支持EtherCAT通信协议。1.33控制器软件环境DX200控制器的软件环境基于Yaskawa的专有操作系统,提供了丰富的编程工具和功能,使得用户能够轻松地开发和调试机器人程序。软件环境包括:编程语言:支持多种编程语言,如Yaskawa的专用编程语言(如YAML)和标准的C/C++语言。开发工具:提供图形化编程界面和文本编辑器,方便用户进行程序开发和调试。实时操作系统:确保机器人控制的实时性和稳定性,能够快速响应外部指令和传感器数据。1.3.1示例:使用YAML编程语言控制机器人#YAML示例代码:控制机器人移动到指定位置
MOVE:
-JOINT:
-1:0.0
-2:-90.0
-3:90.0
-4:0.0
-5:0.0
-6:0.0
-SPEED:100
-ACC:10这段代码示例展示了如何使用YAML编程语言来控制机器人移动到一个特定的关节位置。JOINT部分定义了机器人六个关节的目标角度,SPEED和ACC分别定义了移动的速度和加速度,确保机器人能够平稳且快速地到达目标位置。以上内容详细介绍了DX200控制器的概述,包括其简介、硬件结构和软件环境。通过具体的硬件连接示例和编程语言示例,读者可以更直观地理解DX200控制器的组成和操作方式。2网络通信基础2.11网络通信原理网络通信原理涉及数据在网络中的传输方式。数据在网络中传输时,遵循一系列规则和标准,这些规则和标准定义了数据如何被封装、传输、接收和解封装。网络通信的核心是分层模型,其中最著名的是OSI七层模型和TCP/IP四层模型。2.1.1OSI七层模型OSI模型将网络通信分为七层,每一层都有特定的功能:应用层:提供应用程序之间的接口,如HTTP、FTP等。表示层:处理数据的格式和加密。会话层:管理会话的建立和终止。传输层:负责端到端的数据传输,如TCP、UDP协议。网络层:处理数据包的路由,如IP协议。数据链路层:确保数据在物理链路上的可靠传输,如以太网协议。物理层:定义物理信号、接口和传输媒体。2.1.2TCP/IP四层模型TCP/IP模型简化了OSI模型,分为四层:应用层:与OSI模型的应用层、表示层和会话层对应。传输层:与OSI模型的传输层相同。网络层:与OSI模型的网络层相同。网络接口层:与OSI模型的数据链路层和物理层对应。2.22常用网络协议介绍2.2.1TCP协议TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过三次握手建立连接,确保数据的可靠传输。下面是一个使用Python实现的TCP客户端示例:importsocket
#创建TCP客户端套接字
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接到服务器
client_socket.connect(('localhost',12345))
#发送数据
client_socket.sendall(b'Hello,Server!')
#接收数据
data=client_socket.recv(1024)
print('Received:',data.decode())
#关闭连接
client_socket.close()2.2.2UDP协议UDP(用户数据报协议)是一种无连接的、不可靠的传输层协议,适用于对实时性要求高但对数据完整性要求不高的场景。下面是一个使用Python实现的UDP客户端示例:importsocket
#创建UDP客户端套接字
client_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#发送数据
client_socket.sendto(b'Hello,Server!',('localhost',12345))
#接收数据
data,server_address=client_socket.recvfrom(1024)
print('Received:',data.decode())
#关闭套接字
client_socket.close()2.2.3HTTP协议HTTP(超文本传输协议)是用于从Web服务器传输超文本到本地浏览器的传输协议。下面是一个使用Python实现的HTTP请求示例:importhttp.client
#创建HTTP连接
conn=http.client.HTTPConnection("")
#发送GET请求
conn.request("GET","/")
#获取响应
response=conn.getresponse()
print('Status:',response.status,response.reason)
#读取响应数据
data=response.read()
print('Data:',data.decode())
#关闭连接
conn.close()2.33网络拓扑结构网络拓扑结构描述了网络中设备的物理或逻辑连接方式。常见的网络拓扑结构包括:总线型拓扑:所有设备都连接到一个公共的通信线路,数据在总线上广播。星型拓扑:所有设备都连接到一个中心设备,如交换机或集线器。环型拓扑:设备以环形方式连接,数据沿环形路径传输。树型拓扑:设备以分支方式连接,形成树状结构。网状拓扑:设备之间有多条连接路径,提供高冗余和高可靠性。每种拓扑结构都有其优缺点,选择合适的拓扑结构取决于网络的规模、成本、性能需求和可靠性要求。例如,星型拓扑在大型网络中非常常见,因为它易于管理和扩展,同时提供了较高的故障隔离能力。而网状拓扑虽然提供了高可靠性,但成本和复杂性也相对较高,适用于对网络稳定性有极高要求的场景。以上内容详细介绍了网络通信的基础原理,包括网络通信的分层模型、常用网络协议以及网络拓扑结构,为理解工业机器人控制器如YaskawaDX200的网络通信协议提供了必要的背景知识。3工业机器人控制器:YaskawaDX200网络通信协议详解3.1DX200的网络接口3.1.11以太网接口以太网接口是YaskawaDX200控制器中最为通用的网络通信方式,它支持多种协议,包括EtherCAT、EtherCATG、EtherCATG10、EtherCATP、EtherCATV、Profinet、ModbusTCP、TCP/IP等。以太网接口的使用,使得DX200能够与各种工业设备和系统进行高效的数据交换。1.1EtherCAT通信示例EtherCAT是一种高性能的实时以太网通信协议,广泛应用于工业自动化领域。在DX200控制器中,可以通过EtherCAT接口与外部设备进行高速数据交换。#Python示例代码:使用EtherCAT与DX200通信
importethercat
#初始化EtherCAT主站
ec=ethercat.EtherCATMaster()
#连接到DX200控制器
ec.connect('00')
#定义一个EtherCAT从站
slave=ec.add_slave('01')
#读取从站的输入数据
input_data=slave.read_input()
#写入数据到从站的输出
output_data={'command':1,'speed':50}
slave.write_output(output_data)
#断开连接
ec.disconnect()在上述示例中,我们使用Python的ethercat库来初始化一个EtherCAT主站,连接到DX200控制器,并定义一个从站。然后,我们读取从站的输入数据,并向从站写入输出数据,最后断开连接。3.1.22DeviceNet接口DeviceNet是一种基于CAN总线的网络通信协议,主要用于连接简单的工业设备。DX200控制器的DeviceNet接口允许其与DeviceNet网络中的设备进行通信。2.1DeviceNet通信示例#Python示例代码:使用DeviceNet与DX200通信
importpydevicenet
#初始化DeviceNet主站
dn=pydevicenet.DeviceNetMaster()
#连接到DX200控制器
dn.connect('00')
#定义一个DeviceNet从站
slave=dn.add_slave('01')
#读取从站的输入数据
input_data=slave.read_input()
#写入数据到从站的输出
output_data={'command':1,'speed':50}
slave.write_output(output_data)
#断开连接
dn.disconnect()此示例展示了如何使用Python的pydevicenet库来初始化一个DeviceNet主站,连接到DX200控制器,定义从站,读取和写入数据,最后断开连接。3.1.33Profinet接口Profinet是基于以太网的工业通信标准,它结合了实时通信和标准以太网通信的优点。DX200控制器的Profinet接口使其能够作为Profinet网络中的IO控制器或IO设备。3.1Profinet通信示例#Python示例代码:使用Profinet与DX200通信
importprofinet
#初始化Profinet主站
pn=profinet.ProfinetMaster()
#连接到DX200控制器
pn.connect('00')
#定义一个Profinet从站
slave=pn.add_slave('01')
#读取从站的输入数据
input_data=slave.read_input()
#写入数据到从站的输出
output_data={'command':1,'speed':50}
slave.write_output(output_data)
#断开连接
pn.disconnect()在Profinet通信示例中,我们使用Python的profinet库来初始化一个Profinet主站,连接到DX200控制器,定义从站,读取和写入数据,最后断开连接。请注意,上述示例代码中的库ethercat、pydevicenet和profinet是假设的库,用于演示如何在Python中实现与DX200控制器的网络通信。在实际应用中,您需要使用与YaskawaDX200控制器兼容的官方或第三方库来实现通信功能。4通信协议详解4.11FINS协议FINS(FieldIntegratedNetworkSystem)是安川电机(Yaskawa)开发的一种专有通信协议,主要用于其工业机器人控制器之间以及与外部设备的通信。FINS协议支持多种网络类型,包括以太网、DeviceNet、和串行通信。在DX200控制器中,FINS协议被广泛应用于数据交换、状态监控和编程控制。4.1.1原理FINS协议基于TCP/IP或UDP/IP,使用特定的端口号进行通信。它通过发送和接收FINS命令来实现数据的读写、状态查询和控制指令的发送。FINS命令由命令头和数据体组成,命令头包含了命令类型、源地址、目标地址等信息,数据体则包含了实际的通信数据。4.1.2内容FINS命令格式FINS命令格式如下:FINSCommandFormat:
-CommandHeader
-CommandType(1byte)
-SourceAddress(3bytes)
-DestinationAddress(3bytes)
-CommandLength(2bytes)
-DataBody
-ActualData(Variablelength)示例:读取机器人状态使用FINS协议读取DX200机器人状态的示例代码如下:#Python示例代码:使用FINS协议读取DX200机器人状态
importsocket
#定义FINS命令
FINS_CMD_READ=0x01
FINS_CMD_WRITE=0x02
FINS_CMD_QUERY=0x03
#定义源地址和目标地址
SOURCE_ADDRESS=(0x00,0x00,0x00)
DESTINATION_ADDRESS=(0x01,0x00,0x00)
#定义读取命令
defcreate_fins_read_command(address,data_length):
#构建命令头
command_header=[
FINS_CMD_READ,#命令类型
SOURCE_ADDRESS[0],SOURCE_ADDRESS[1],SOURCE_ADDRESS[2],#源地址
DESTINATION_ADDRESS[0],DESTINATION_ADDRESS[1],DESTINATION_ADDRESS[2],#目标地址
data_length+10#命令长度
]
#构建数据体
data_body=[
address[0],address[1],address[2],#数据地址
data_length#数据长度
]
#合并命令头和数据体
command=command_header+data_body
returncommand
#创建读取命令
read_command=create_fins_read_command((0x00,0x00,0x01),4)
#发送FINS命令
withsocket.socket(socket.AF_INET,socket.SOCK_STREAM)ass:
s.connect(('0',9600))#连接到DX200控制器
s.sendall(bytearray(read_command))#发送读取命令
data=s.recv(1024)#接收数据
print('Received:',data)#打印接收的数据解释上述代码中,我们首先定义了FINS命令的类型和地址。然后,我们创建了一个读取命令,该命令指定了要读取的数据地址和长度。最后,我们通过TCP/IP连接到DX200控制器,并发送读取命令,接收并打印控制器返回的数据。4.22EtherCAT协议EtherCAT(EthernetforControlAutomationTechnology)是一种高速、实时的工业以太网通信协议,由Beckhoff公司开发。在DX200控制器中,EtherCAT协议被用于高速数据交换和实时控制。4.2.1原理EtherCAT协议通过以太网进行通信,但与标准以太网不同,它使用了特殊的帧结构和处理机制,以实现高速和实时的数据传输。EtherCAT主站可以同时发送和接收数据,而从站设备则在接收到主站数据的同时,将自身数据发送回主站,这种机制大大提高了通信效率。4.2.2内容EtherCAT帧结构EtherCAT帧结构如下:EtherCATFrameStructure:
-EthernetHeader
-EtherCATHeader
-EtherCATCommand(1byte)
-EtherCATLength(2bytes)
-DataBody(Variablelength)示例:配置EtherCAT从站使用EtherCAT协议配置DX200控制器中的从站设备的示例代码如下:#Python示例代码:使用EtherCAT协议配置DX200控制器中的从站设备
importethercat
#创建EtherCAT主站
master=ethercat.Master()
#连接到DX200控制器
master.connect('0')
#配置从站设备
slave=master.add_slave(1)#添加从站设备,ID为1
slave.set_input_type(ethercat.EC_TYPE_SDO)#设置输入类型为SDO
slave.set_output_type(ethercat.EC_TYPE_SDO)#设置输出类型为SDO
#读取从站设备状态
state=slave.read_state()
print('SlaveState:',state)
#断开连接
master.disconnect()解释在上述代码中,我们首先创建了一个EtherCAT主站,并连接到DX200控制器。然后,我们添加了一个从站设备,并配置了其输入和输出类型。最后,我们读取了从站设备的状态,并断开了与控制器的连接。4.33Profinet协议Profinet(ProcessFieldNetwork)是一种基于工业以太网的通信协议,由PROFIBUS&PROFINETInternational(PI)组织开发。在DX200控制器中,Profinet协议被用于与PLC、传感器、执行器等设备的通信。4.3.1原理Profinet协议使用了标准的以太网物理层和数据链路层,但在应用层上进行了扩展,以支持工业自动化设备的通信需求。Profinet支持多种通信模式,包括实时(RT)、同步实时(IRT)和异步通信。4.3.2内容Profinet通信模式Profinet支持的通信模式如下:实时(RT):用于需要快速响应的场合,如运动控制。同步实时(IRT):用于需要极高精度同步的场合,如多轴同步控制。异步通信:用于不需要实时响应的场合,如状态查询和数据读写。示例:使用ProfinetRT模式读取数据使用ProfinetRT模式读取DX200控制器数据的示例代码如下:#Python示例代码:使用ProfinetRT模式读取DX200控制器数据
importsnap7
#创建Profinet客户端
client=snap7.client.Client()
client.connect('0',0,1)#连接到DX200控制器
#读取数据
data=client.db_read(1,0,4)#从DB1读取4字节数据
print('ReceivedData:',data)
#断开连接
client.disconnect()解释在上述代码中,我们使用了Snap7库来创建一个Profinet客户端,并连接到DX200控制器。然后,我们使用db_read函数从控制器的DB1中读取了4字节的数据,并打印了接收的数据。最后,我们断开了与控制器的连接。以上内容详细介绍了DX200控制器中使用的三种网络通信协议:FINS协议、EtherCAT协议和Profinet协议。通过这些协议,DX200控制器能够与外部设备进行高效、实时的通信,满足工业自动化领域的各种需求。5网络配置与设置5.11网络参数配置在配置YaskawaDX200控制器的网络参数时,首先需要确保控制器与工厂网络的兼容性。DX200控制器支持多种网络协议,包括EtherCAT、Profinet、DeviceNet等。配置网络参数涉及以下几个关键步骤:选择网络类型:根据工厂网络的架构,选择DX200控制器将要连接的网络类型。设置网络接口:在DX200的网络设置菜单中,选择相应的网络接口进行配置。配置网络参数:包括网络ID、网络速度、网络节点等信息,确保与网络中的其他设备一致。5.1.1示例:配置EtherCAT网络参数假设我们正在配置DX200控制器以连接到EtherCAT网络,以下是一个基本的配置流程:进入网络设置:通过DX200的控制面板,选择“网络设置”菜单。选择EtherCAT:在“网络类型”选项中,选择“EtherCAT”。设置网络ID:将网络ID设置为10,这通常是EtherCAT网络的默认ID。配置网络速度:选择网络速度为100Mbps,以匹配工厂网络的速度。设置网络节点:根据网络拓扑,设置DX200控制器在网络中的节点位置。5.22IP地址设置IP地址是DX200控制器在网络中唯一标识,正确设置IP地址是确保网络通信的关键。设置IP地址时,需要遵循以下原则:IP地址唯一性:确保DX200的IP地址在网络中是唯一的。子网掩码:配置正确的子网掩码,以确保控制器与网络中的其他设备在同一子网内。默认网关:设置默认网关,用于跨子网通信。5.2.1示例:设置IP地址假设工厂网络的IP地址范围为/24,以下是如何在DX200控制器上设置IP地址的步骤:进入网络设置:通过DX200的控制面板,选择“网络设置”菜单。选择TCP/IP:在“网络类型”选项中,选择“TCP/IP”。设置IP地址:将IP地址设置为0。配置子网掩码:设置子网掩码为。设置默认网关:如果网络中有路由器,设置默认网关为。5.33网络连接测试完成网络配置后,进行网络连接测试是必要的,以验证DX200控制器是否能够成功连接到网络。测试网络连接的方法包括:使用ping命令:通过ping命令测试DX200控制器的IP地址,检查网络连通性。检查网络状态:在DX200的控制面板中,查看网络状态,确认网络连接是否正常。通信测试:使用DX200控制器的通信功能,如与PLC或上位机的通信,测试网络通信是否稳定。5.3.1示例:使用ping命令测试网络连接在Windows操作系统中,可以使用命令行工具进行ping测试。以下是一个示例:ping05.3.2解释ping:这是一个网络工具,用于测试网络连通性。0:这是DX200控制器的IP地址。如果网络连接正常,命令行将显示一系列的响应时间,表示数据包成功往返于DX200控制器。例如:Pinging0with32bytesofdata:
Replyfrom0:bytes=32time<1msTTL=64
Replyfrom0:bytes=32time<1msTTL=64
Replyfrom0:bytes=32time<1msTTL=64
Replyfrom0:bytes=32time<1msTTL=64
Pingstatisticsfor0:
Packets:Sent=4,Received=4,Lost=0(0%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=0ms,Maximum=0ms,Average=0ms这表明DX200控制器的网络连接是正常的,数据包能够成功发送和接收。以上内容详细介绍了YaskawaDX200控制器的网络配置与设置,包括网络参数配置、IP地址设置以及网络连接测试。通过遵循这些步骤,可以确保DX200控制器在网络中正确配置,实现稳定的数据通信。6实现网络通信6.11通信程序开发在开发与YaskawaDX200控制器的通信程序时,我们通常采用TCP/IP协议进行数据交换。以下是一个使用Python语言开发的简单示例,展示如何与DX200控制器建立连接并发送指令。importsocket
#定义DX200控制器的IP地址和端口号
DX200_IP='0'
DX200_PORT=5000
#创建一个socket对象
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#连接到DX200控制器
sock.connect((DX200_IP,DX200_PORT))
#定义要发送的指令
command='R[1]=100\n'
#将指令编码为字节流并发送
sock.sendall(command.encode())
#接收控制器的响应
response=sock.recv(1024)
#解码响应并打印
print('Response:',response.decode())
#关闭socket连接
sock.close()6.1.1解释导入socket库:这是Python的标准库,用于网络通信。定义IP和端口:这里使用的是示例IP和端口,实际应用中需要替换为DX200的实际地址。创建socket对象:使用socket.socket()函数,参数AF_INET表示使用IPv4地址,SOCK_STREAM表示使用TCP协议。连接到控制器:使用connect()方法,传入一个包含IP和端口的元组。发送指令:指令以字符串形式定义,然后使用sendall()方法发送,先通过encode()将字符串转换为字节流。接收响应:使用recv()方法接收控制器的响应,参数表示接收的最大字节数。解码并打印响应:使用decode()将字节流转换回字符串,然后打印。关闭连接:使用close()方法关闭socket连接。6.22数据交换流程与DX200控制器进行数据交换时,遵循以下流程:建立连接:使用TCP/IP协议建立与控制器的连接。发送指令:将指令编码为特定格式的字符串,然后发送给控制器。等待响应:控制器处理指令后,会返回一个响应。接收并解析响应:接收响应后,需要解析以理解控制器的状态或执行结果。关闭连接:完成数据交换后,安全地关闭连接。6.2.1示例假设我们需要读取DX200控制器的寄存器R[1]的值,可以发送以下指令:command='R[1]\n'控制器的响应可能如下:response='R[1]=100\n'解析响应以获取寄存器的值:#解析响应获取寄存器值
register_value=int(response.split('=')[1].strip())
print('R[1]value:',register_value)6.33故障排查与解决在与DX200控制器进行网络通信时,可能会遇到以下常见问题:连接失败:检查控制器的IP地址和端口是否正确,确保网络连接正常。指令格式错误:确保指令遵循DX200的通信协议,错误的指令格式可能导致控制器不响应。响应解析错误:检查响应的格式,确保解析代码能够正确处理控制器返回的数据。6.3.1解决方案连接失败:使用网络工具如ping检查网络连通性,确认控制器的网络设置。指令格式错误:参考DX200的通信手册,确保指令格式正确。响应解析错误:增加异常处理,确保程序能够优雅地处理解析错误。6.3.2代码示例增加异常处理的通信程序:importsocket
DX200_IP='0'
DX200_PORT=5000
try:
#创建并连接socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((DX200_IP,DX200_PORT))
#发送指令
command='R[1]\n'
sock.sendall(command.encode())
#接收响应
response=sock.recv(1024).decode()
#解析响应
register_value=int(response.split('=')[1].strip())
print('R[1]value:',register_value)
exceptsocket.errorase:
print('Socketerror:',e)
exceptValueError:
print('Failedtoparseresponse')
finally:
#关闭连接
sock.close()6.3.3解释try-except块:用于捕获并处理可能的异常,如网络错误或数据解析错误。finally块:确保无论程序是否异常,连接都会被关闭,这是良好的编程习惯。7网络安全与维护7.11网络安全策略在工业环境中,YaskawaDX200控制器的网络安全至关重要,它不仅保护了机器人的操作数据,还确保了生产过程的连续性和安全性。以下是一些关键的网络安全策略:访问控制:确保只有授权的用户和设备能够访问DX200控制器。这可以通过设置复杂的密码、使用双因素认证和限制物理访问来实现。防火墙设置:配置防火墙以阻止未经授权的网络流量。例如,可以设置规则只允许特定的IP地址或端口进行通信。安全更新:定期更新DX200控制器的软件和固件,以修复已知的安全漏洞。网络隔离:将DX200控制器置于一个独立的网络段中,限制其与外部网络的直接连接,减少潜在的攻击面。监控与审计:实施网络监控,记录所有网络活动,以便于检测异常行为和进行安全审计。7.1.1示例:使用iptables配置防火墙规则#添加规则,只允许从特定IP地址00访问DX200控制器的10000端口
sudoiptables-AINPUT-s00-ptcp--dport10000-jACCEPT
#拒绝所有其他IP地址访问10000端口
sudoiptables-AINPUT-ptcp--dport10000-jDROP7.22数据加密技术数据加密是保护DX200控制器通信安全的重要手段。通过加密,即使数据在传输过程中被截获,攻击者也无法轻易解读其内容。以下是一些常用的数据加密技术:SSL/TLS:用于加密HTTP和其他基于文本的协议,确保数据在传输过程中的安全。IPSec:为IP数据包提供安全保护,适用于点对点或网络对网络的通信。AES:高级加密标准,是一种对称加密算法,广泛用于数据加密。7.2.1示例:使用OpenSSL进行数据加密```bash#生成AES密钥opensslrand-hex168使用AES加密数据echo“Sensitivedata”|opensslenc-aes-256-cbc-a-K603deb1015ca71be2b73aef0857d77811f352c073b10a6105b6243f4904fb1ea-iv000000000000000000000000000000009输出加密后的数据U2FsdGVkX1+g1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1s1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位工伤事故调查报告范文
- 城市基础设施砌体拆除方案
- 化学品进口企业安全管理标准
- 护理查对制度在居家护理中的应用
- 汽车项目管理述职报告
- 基于风味导向解析四川晒醋特征风味物质及代谢途径
- 商业区道闸系统维保服务方案
- 新店开发岗位招聘面试题及回答建议(某大型国企)
- 软件资格考试信息技术支持工程师(中级)(基础知识、应用技术)合卷试题及答案指导
- 政府机关信息保密应急预案
- 《计算机视觉-基于OpenCV的图像处理》全套教学课件
- 2023年10月广东深圳市光明区马田街道办事处招聘一般专干21人笔试历年典型考题及考点剖析附答案带详解
- 《中国噬血细胞综合征诊断与治疗指南(2022年版)》解读
- 2024年社区工作者考试必背1000题题库附完整答案(全优)
- 2024-2030年中国口腔CBCT行业竞争格局分析及市场需求前景报告
- 湖南省建筑工程定额
- 大学生涯发展展示
- 人教版六年级数学上册《全册完整》课件
- 整本书阅读《平凡的世界》教案-2023-2024学年中职高一语文新教材同步教学讲堂(高教版2023·基础模块上册)
- 智慧农业鱼菜共生智能温室大棚项目可行性研究报告
- 浙江省杭州市小升初数学真题重组卷
评论
0/150
提交评论