版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PLC应用技术项目教程10S7-1200PLC通信系统设计提升篇知识目标2掌握S7-1200的S7通信1掌握点对点通信相关基本概念能力目标2能够使用ModbusTCP通信进行S7-1200与蓝普峰PLC、S7-1200与信捷PLC之间进行通信1能够使用S7通信进行S7-1200PLC之间传输数据、S7-1200PLC与smart200PLC之间传输数据项目十
S7-1200PLC通信系统设计提升篇3掌握ModbusTCP、ModbusRTU通信能够使用ModbusRTU通信进行S7-1200与信捷VB5N变频器之间进行通信素质目标1通过通讯学习培养细致严谨的工作习惯项目学思1通信的过程实际上就是数据在不同设备之间进行数据交换的过程,只要双方遵守相同的通信协议就能够进行建立通信,通过通信协议的介绍引出工作中互相合作的重要性,合作双方均有诚信,互惠互利、才能达成合作共赢。项目十
S7-1200PLC通信系统设计基础篇2通过通讯设置培养细心的工作态度3412项目背景及控制分析相关知识项目实施项目考核项目十
S7-1200PLC通信系统设计基础篇项目背景
大型工厂运行中往往是很多智能控制设备进行配合完成复杂工艺生产过程,整个过程设备与设备之间需要进行实时通信以交换数据。不同的设备厂商使用的主控PLC品牌型号不尽相同,相互通信交换数据就需要双方PLC遵循同一个通信协议。
通信组网
互联工业控制分析本项目选取西门子S7通信协议、Modbus进行讲解1.S7-1200与S7-1200之间的S7通信;2.S7-1200与smart200之间的S7通信;3.S7-1200与蓝普锋PLC之间的ModbusTCP通信;4.S7-1200与信捷PLC之间的ModbusTCP通信;5.S7-1200与信捷VH5变频器之间进行ModbusRTU通信。3412项目背景及控制分析相关知识项目实施项目考核项目十
S7-1200PLC通信系统设计提升篇S7协议1Modbus协议21.S7协议
S7协议是专门为西门子控制产品优化设计的通信协议,它是面向连接的协议,在进行数据交换之前,必须与通信伙伴建立连接,面向连接的协议具有较高的安全性。单向连接中的客户端(Client)是向服务器端(Server)请求服务设备,客户端调用GET/PUT指令读写服务器端的存储区。服务器是通信中的被动方,用户不用编写服务器的S7通信程序,服务器端的操作系统完成S7通信。客户端可以读写服务器端的存储区内容,这样的单向连接实际上可以完成双向传输数据。V2.0及以上版本的S7-1200CPU的PROFINET通信口可以作为S7通信服务器端或客户端。1.S7协议
(1)GET指令:从服务器端CPU读取数据在控制输入REQ的上升沿启动指令:要读出的区域的相关指针(ADDR_i)随后会发送给伙伴CPU(注:伙伴CPU则可以处于RUN模式或STOP模式)。伙伴CPU返回数据:如果回复超出最大用户数据长度,那么将在STATUS参数处显示错误代码“2”,下次调用时,会将所接收到的数据复制到已组态的接收区(RD_i)中。如果状态参数NDR的值变为“1”,则表示该动作已经完成。只有在前一读取过程已经结束之后,才可以再次激活读取功能。如果读取数据时访问出错,或如果未通过数据类型检查,则会通过ERROR和STATUS输出错误和警告。“GET”指令不会记录伙伴CPU上所寻址到的数据区域中的变化。1.S7协议使用指令的要求:1)已在伙伴CPU属性的“保护”(Protection)保护中激活“允许借助PUT/GET通信从远程伙伴访问”(PermitaccesswithPUT/GETcommunicationfromremotepartner)函数。2)使用“GET”指令访问的块是通过访问类型“标准”创建的。3)请确保由参数ADDR_i和SD_i定义的区域在数量、长度和数据类型等方面都匹配。4)待读取的区域(ADDR_i参数)不能大于存储数据的区域(RD_i参数)。GET指令如图11-1所示,GET指令参数如表10-1所示。1.S7协议参数声明数据类型存储区说明REQInputBOOLI\Q\M\D\L或常量控制参数request,在上升沿时激活数据交换功能。IDInputWORDI\Q\M\D\L或常量用于指定与伙伴CPU连接的寻址参数。NDROutputBOOLI\Q\M\D\L状态参数NDR:0:作业尚未开始或仍在运行。1:作业已成功完成。ERROROutputBOOLI\Q\M\D\L状态参数ERROR和STATUS,错误代码:ERROR=0STATUS的值为:0000H:既无警告也无错误<>0000H:警告,详细信息请参见STATUSERROR=1出错。STATUS提供了有关错误类型的详细信息。STATUSOutputWORDI\Q\M\D\LADDR_1InOutREMOTEI\Q\M\D指向伙伴CPU上待读取区域的指针。指针REMOTE访问某个数据块时,必须始终指定该数据块。示例:P#DB10.DBX5.0字节10。ADDR_2InOutREMOTEADDR_3InOutREMOTEADDR_4InOutREMOTERD_1InOutVARIANTI\Q\M\D\L指向本地CPU上用于输入已读数据的区域的指针。RD_2InOutVARIANTRD_3InOutVARIANTRD_4InOutVARIANT1.S7协议(2)PUT指令:将数据写入服务器端CPU在控制输入REQ的上升沿启动指令:写入区指针(ADDR_i)和数据(SD_i)随后会发送给伙伴CPU(注:伙伴CPU则可以处于RUN模式或STOP模式)。从已组态的发送区域中((SD_i)复制了待发送的数据。伙伴CPU将发送的数据保存在该数据提供的地址之中,并返回一个执行应答。如果没有出现错误,下一次指令调用时会使用状态参数DONE="1"来进行标识。上一作业已经结束之后,才可以再次激活写入过程。如果写入数据时访问出错,或如果未通过执行检查,则会通过ERROR和STATUS输出错误和警告。1.S7协议使用指令的要求:1)已在伙伴CPU属性的“保护”(Protection)保护中激活“允许借助PUT/GET通信从远程伙伴访问”(PermitaccesswithPUT/GETcommunicationfromremotepartner)函数。2)使用“PUT”指令访问的块是通过访问类型“标准”创建的。3)确保由参数ADDR_i和SD_i定义的区域在数量、长度和数据类型等方面都匹配。4)待写入区域(ADDR_i参数)必须与发送区域(SD_i参数)一样大。1.S7协议参数声明数据类型存储区说明REQInputBOOLI\Q\M\D\L或常量控制参数request,在上升沿时激活数据交换功能。IDInputWORDI\Q\M\D\L或常量用于指定与伙伴CPU连接的寻址参数。DONEOutputBOOLI\Q\M\D\L状态参数DONE:0:作业未启动,或者仍在执行之中1:作业已执行,且无任何错误。ERROROutputBOOLI\Q\M\D\L状态参数ERROR和STATUS,错误代码:ERROR=0STATUS的值为:0000H:既无警告也无错误<>0000H:警告,详细信息请参见STATUS。ERROR=1出错,有关该错误类型的详细信息,请参见STATUS。STATUSOutputWORDI\Q\M\D\LADDR_1InOutREMOTEI\Q\M\D指向伙伴CPU上用于写入数据的区域的指针。指针REMOTE访问某个数据块时,必须始终指定该数据块。示例:P#DB10.DBX5.0字节10。传送数据结构(例如Struct)时,参数ADDR_i处必须使用数据类型CHAR。ADDR_2InOutREMOTEADDR_3InOutREMOTEADDR_4InOutREMOTERD_1InOutVARIANTI\Q\M\D\L指向本地CPU上包含要发送数据的区域的指针。仅支持BOOL、BYTE、CHAR、WORD、INT、DWORD、DINT和REAL数据类型。传送数据结构(例如Struct)时,参数SD_i处必须使用数据类型CHAR。RD_2InOutVARIANTRD_3InOutVARIANTRD_4InOutVARIANT2.Modbus协议2.1Modbus-TCP采用Modbus-TCP通信可以使用的指令为MB_CLIENT、MB_SERVER。(1)MB_CLIENT指令“MB_CLIENT”指令作为ModbusTCP客户端通过PROFINET连接进行通信。通过“MB_CLIENT”指令,可以在客户端和服务器之间建立连接、发送Modbus请求、接收响应并控制ModbusTCP客户端的连接终端。S7-1200固件版本V4.0支持“MB_CLIENT”指令和最高V3.1版本的库。S7-1200固件版本V4.1及更高版本和S7-1500,支持“MB_CLIENT”指令的所有库版本。可通过CPU或CM/CP的本地接口建立连接.使用该指令时,无需其它任何硬件模块。ModbusTCP客户端可以支持多个TCP连接,连接的最大数目取决于所使用的CPU。一个CPU的总连接数,包括ModbusTCP客户端和服务器的连接数,不能超过所支持的最大连接数。ModbusTCP连接还可由“MB_CLIENT”和/或“MB_SERVER”实例共用。2.Modbus协议使用各客户端连接时需遵循一下规则:1)每个“MB_CLIENT”连接都必须使用唯一的背景数据块。2)对于每个“MB_CLIENT”连接,必须指定唯一的服务器IP地址。3)每个“MB_CLIENT”连接都需要一个唯一的连接ID。该指令的各背景数据块都必须使用各自相应的连接ID。连接ID与背景数据块组合成对,对每个连接,组合对都必须唯一。4)根据服务器组态,可能需要或不需要IP端口的唯一编号。MB_CLIENT指令如图11-3所示,PUT指令参数如表10-3所示。2.Modbus协议参数声明数据类型说明REQInputBOOL对ModbusTCP服务的Modbus查询REQ参数受到等级控制。这意味着只要设置了输入(REQ=true),指令就会发送通信请求。Modbus查询开始后,背景数据块将锁定,其它客户端无法使用。在服务器进行响应或输出错误消息之前,对输入参数的更改不会生效。如果在请求期间再次设置了参数REQ,此后将不会进行任何其它传输。DISCONNECTInputBOOL通过该参数,可以控制与Modbus服务器建立和终止连接:0:与通过CONNECT参数组态的连接伙伴(请参见CONNECT参数)建立通信连接。1:断开通信连接。在终止连接的过程中,不执行任何其它功能。成功终止连接后,STATUS参数将输出值0003。而如果在建立连接的过程中设置了参数REQ,将立即发送Modbus请求。MB_MODEInputUSINT选择Modbus的请求模式(读取、写入或诊断)或直接选择Modbus功能MB_DATA_ADDRInputUDINT取决于MB_MODEMB_DATA_LENInputUINT数据长度:数据访问的位数或字数(参见“”)。MB_DATA_PTRInOutVARIANT指向待从Modbus服务器接收数据的数据缓冲区或指向待发送到Modbus服务器的数据所在数据缓冲区的指针。CONNECTInOutVARIANT指向连接描述结构的指针可以使用以下结构(系统数据类型):TCON_IP_v4:包括建立指定连接时所需的所有地址参数。使用TCON_IP_v4时,可通过调用指令“MB_CLIENT”建立连接。TCON_Configured:包括所组态连接的地址参数。使用TCON_Configured时,将使用下载硬件配置后由CPU创建的已有连接。DONEOutBOOL如果最后一个Modbus作业成功完成,则输出参数DONE中的该位将立即置位为“1”。BUSYOutBOOL0:无Modbus请求在进行中1:正在处理Modbus请求在建立和终止连接期间,不会设置输出参数BUSY。ERROROutBOOL0:无错误1:出错。出错原因由参数STATUS指示。OutWORD指令的详细状态信息。2.Modbus协议(2)MB_SERVER指令“MB_SERVER”指令作为ModbusTCP服务器通过PROFINET连接进行通信。“MB_SERVER”指令将处理ModbusTCP客户端的连接请求、接收并处理Modbus请求并发送响应。S7-1200固件版本V4.0支持“MB_SERVER”指令和最高V3.1版本的库。S7-1200固件版本V4.1及更高版本和S7-1500,支持“MB_SERVER”指令的所有库版本。可通过CPU或CM/CP的本地接口建立连接。使用该指令时,无需其它任何硬件模块。可以创建多个服务器连接。这允许一个单独CPU能够同时接受来自多个ModbusTCP客户端的连接。ModbusTCP服务器可以支持多个TCP连接,连接的最大数目取决于所使用的CPU。一个CPU的总连接数,包括ModbusTCP客户端和服务器的连接数,不能超过所支持的最大连接数。ModbusTCP连接还可由“MB_CLIENT”和/或“MB_SERVER”实例共用。2.Modbus协议连接服务器时,需遵循以下规则:1)每个“MB_SERVER”连接都必须使用唯一的背景数据块。2)每个“MB_SERVER”连接都必须使用唯一的连接ID。3)该指令的各背景数据块都必须使用各自相应的连接ID。连接ID与背景数据块组合成对,对每个连接,组合对都必须唯一。4)对于每个连接,都必须单独调用“MB_SERVER”指令。2.Modbus协议参数声明数据类型说明DISCONNECTInputBOOL“MB_SERVER”指令建立与一个伙伴模块的被动连接。服务器会响应在CONNECT参数的SDT“TCON_IP_v4”中输入的IP地址的连接请求。接受一个连接请求后,可以使用该参数进行控制:0:在无通信连接时建立被动连接。1:终止连接初始化。如果已置位该输入,那么不会执行其它操作。成功终止连接后,STATUS参数将输出值0003。MB_HOLD_REGInOutVARIANT指向“MB_SERVER”指令中Modbus保持性寄存器的指针MB_HOLD_REG引用的存储区必须大于两个字节。保持性寄存器中包含Modbus客户端通过Modbus功能3(读取)、6(写入)、16(多次写入)和23(在一个作业中读写)可访问的值。作为保持性寄存器,可以使用具有优化访问权限的全局数据块,也可以使用位存储器的存储区。CONNECTInOutVARIANT指向连接描述结构的指针可以使用下列结构(SDT):TCON_IP_v4:包括建立指定连接时所需的所有地址参数。默认地址为0.0.0.0(任何IP地址),但也可输入具体IP地址,以便服务器仅响应来自该地址的请求。使用TCON_IP_v4时,可通过调用指令“MB_SERVER”建立连接。TCON_Configured(仅限S7-1500):包括所组态连接的地址参数。使用TCON_Configured时,会在下载硬件配置后由CPU建立连接。NDROutputBOOL“NewDataReady”:0:无新数据1:从Modbus客户端写入的新数据DROutputBOOL“DataRead”:0:未读取数据1:从Modbus客户端读取的数据ERROROutputBOOL如果在调用“MB_SERVER”指令过程中出错,则将ERROR参数的输出设置为“1”。有关错误原因的详细信息,将由STATUS参数指定。OutputWORD指令的详细状态信息。2.Modbus协议(3)将Modbus地址映射到过程映像“MB_SERVER”指令允许到达的Modbus功能(1、2、4、5和15)直接读取和写入访问CPU的过程映像输入和输出(使用数据类型BOOL和WORD)。对于S7-1200-CPU,输入和输出过程映像的地址空间为1KB;对于S7-1500CPU,为32KB。Modbus功能的地址空间如表10-5所示。Modbus功能功能代码功能数据区地址空间01读取:位Output0至6553502读取:位Input0至6553504读取:WORDInput0至6553505写入:位Output0至6553515写入:位Output0至655352.Modbus协议“MB_SERVER”指令支持的所有Modbus功能如表10-6所示。功能代码说明01读取输出位02读取输入位03读取保持性寄存器04读取输入字05写入输出位06写入保持性寄存器08诊断功能:回送测试(子功能0x0000):“MB_SERVER”指令接收数据字并按原样返回Modbus客户端。复位事件计数器(子功能0x000A):使用指令“MB_SERVER”,可复位以下事件计数器:“Success_Count”、“Xmt_Rcv_Count”、“Exception_Count”、“Server_Message_Count”和“Request_Count”。11诊断功能:获取通信的事件计数器“MB_SERVER”指令使用一个通信的内部事件计数器,记录发送到Modbus服务器上成功执行的读写请求数。执行功能8或11时,事件计数器不会递增。这种情况同样适用于会导致通信错误的请求。例如,发生协议错误(如,不支持所接收Modbus请求中的功能代码)。15写入多个输出位16写入保持性寄存器23通过请求写入和读取保持性寄存器2.Modbus协议2.2Modbus-RTU采用Modbus-RTU通信可以使用的指令为Modbus_Comm_Load、Modbus_Master、Modbus_Slave。(1)Modbus_Comm_Load指令Modbus_Comm_Load指令可组态用于ModbusRTU协议通信的SIPLUSI/O或PtP端口。ModbusRTU端口硬件选项:最多安装三个CM(RS485或RS232),及一个CB(R4845)。ModbusRTUSIPLUSI/O选项:安装ET200MPS7-1500CMPtP(RS485/422或RS232)或ET200SPS7-1500CMPtP(RS485/422或RS232),将Modbus_Comm_Load指令放入程序时自动分配背景数据块。该指令如图10-5所示。2.Modbus协议表10-7Modbus_Comm_Load指令参数参数声明数据类型说明REQINBool当此输入出现上升沿时,启动该指令。PORTINPort指定用于以下通信的通信模块:对于S7-1500/S7-1200:设备组态中的“硬件标识符”。符号端口名称在PLC变量表的“系统常数”(Systemconstants)选项卡中指定并可应用于此处。对于S7-300/S7-400:设备组态中的“输入地址”。在S7-300/400/WinAC系统中,在HWCN中分配的输入地址中分配端口参数。BAUDINUDInt选择数据传输速率有效值为:300、600、1200、2400、4800、9600、19200、38400、57600、76800、115200bit/s。PARITYINUInt选择奇偶校验:0–无1–奇校验2–偶校验FLOW_CTRLINUInt选择流控制:0–(默认)无流控制1–硬件流控制,RTS始终开启(不适用于RS422/485CM)2–硬件流控制,RTS切换(不适用于RS422/485CM)RESP_TOINUInt响应超时:5ms到65535ms-Modbus_Master等待从站响应的时间(以毫秒为单位)。如果从站在此时间段内未响应,Modbus_Master将重复请求,或者在指定数量的重试请求后取消请求并提示错误(请参见下文,RETRIES参数)。MB_DBIN/OUTMB_BASE对Modbus_Master或Modbus_Slave指令的背景数据块的引用。MB_DB参数必须与Modbus_Master或Modbus_Slave指令的(静态,因此在指令中不可见)MB_DB参数相连。DONEOUTBool如果上一个请求完成并且没有错误,DONE位将变为TRUE并保持一个周期。ERROROUTBool如果上一个请求完成出错,则ERROR位将变为TRUE并保持一个周期。STATUS参数中的错误代码仅在ERROR=TRUE的周期内有效。STATUSOUTWord错误代码2.Modbus协议注意:Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,有效的工作模式包括:•0=全双工(RS232)•1=全双工(RS422)四线制模式(点对点)•2=全全双工(RS422)四线制模式(多点主站,CMPtP(ET200SP))•3=全全双工(RS422)四线制模式(多点从站,CMPtP(ET200SP))•4=半双工(RS485)二线制模式。2.Modbus协议(2)Modbus_Master指令Modbus_Master指令作为Modbus主站利用之前执行Modbus_Comm_Load指令组态的端口进行通信。将Modbus_Master指令放入程序时自动分配背景数据块。指定Modbus_Comm_Load指令的MB_DB参数时将使用该Modbus_Master背景数据块。该指令如图10-6所示。2.Modbus协议参数和类型数据类型说明REQINBool0=无请求1=请求将数据传送到ModbusMB_ADDRINV1.0:USIntV2.0:UIntModbusRTU从站地址标准寻址范围(1-247)扩展寻址范围(1-65535)值0被保留用于将消息广播到所有的Modbus从站。只有Modbus功能代码05、06、15和16可用于广播的功能代码。MODEINUSInt模式选择:指定请求类型(读、写或诊断)。请参见下面的Modbus功能表了解详细信息。DATA_ADDRINUDInt从站中的起始地址:指定要在Modbus从站中访问的数据的起始地址。请参见下面的Modbus功能表了解有效地址信息。DATA_LENINUInt数据长度:指定此请求中要访问的位数或字数。请查阅Modbus功能表了解有效长度信息。DATA_PTRINVariant数据指针:指向要写入或读取的数据的M或DB地址(标准DB类型)。DONEOUTBool上一请求已完成且没有出错后,DONE位将保持为TRUE一个扫描周期时间。BUSYOUTBool无Modbus_Master操作正在进行Modbus_Master操作正在进行ERROROUTBool上一请求因错误而终止后,ERROR位将保持为TRUE一个扫描周期时间。STATUS参数中的错误代码值仅在ERROR=TRUE的一个扫描周期内有效。STATUSOUTWord错误代码2.Modbus协议指令使用注意事项:●必须先执行MB_COMM_LOAD组态端口,然后Modbus_Master指令才能与该端口通信。●如果要将某个端口用于初始化Modbus主站请求,则MB_SLAVE不应使用该端口。Modbus_Master执行的一个或多个实例可使用该端口,但是对于该端口,所有Modbus_Master执行都必须使用同一个Modbus_Master背景数据块。●Modbus指令不使用通信中断事件来控制通信过程。用户程序必须轮询Modbus_Master指令以了解传送和接收的完成情况。2.Modbus协议(3)Modbus_Slave指令程序可利用CM(RS422/485或RS232)端口,使用Modbus_Slave指令来作为Modbus从站进行通信。添加指令时,STEP7将自动创建背景数据块。Modbus_Comm_Load指令的MB_DB参数必须连接到Modbus_Slave指令的(静态)MB_DB参数。该指令如图10-7所示。2.Modbus协议Modbus从站通信的规则必须运行Modbus_Comm_Load以组态端口,以便Modbus_Slave指令可以通过该端口进行通信。如果端口作为从站响应Modbus主站,则不能使用Modbus_Master指令对该端口进行编程。只有Modbus_Slave的一个实例可与特定端口一起使用;否则可能遇到意外行为。Modbus指令不会使用通信报警事件来控制通信过程。为实现完整的发送和接收过程,程序必须通过查询Modbus_Slave指令来控制通信过程。必须以允许及时响应Modbus主站进入请求的频率,定期执行Modbus_Slave指令。建议在每个来自程序周期OB的周期内执行Modbus_Slave。Modbus_Slave可在周期性中断OB中执行,但不建议这样做,因为中断程序中过长的时间延迟会临时地阻碍其它中断程序的执行。3412项目背景及控制分析相关知识项目实施项目考核项目十
S7-1200PLC通信系统设计提升篇
设置两个PLC,在一个PLC中使用PUT指令从本地数据块中传送数据到伙伴PLC的数据块中,使用GET指令将伙伴PLC的数据块中的数据传送到本地PLC的数据块中。具体步骤如表10-10所示。序号图片示例操作步骤1
在项目中插入2个S7-1200PLC,在网络视图中选中“连接”,选择“S7连接”,并设置同网段且不相同的两个IP地址“192.168.0.1”、“192.168.0.2”。2
在PLC的CPU属性中的“常规”、“连接机制”中勾选“允许来自远程对象的PUT/GET通信访问”。3
端口互联中选择“任何伙伴”4
别在两个PLC中建立数据块,并在发送数据块中写入初始数据以方便发送,在需要读取的数据块中设置初始值以方便读取,注意创建数据块时不要勾选“优化的块访问”。5
采用PLC1向PLC2读取及写入数据,所以只需要在PLC1中写入梯形图指令即可完成通信。PUT指令编写。6采用PLC1向PLC2读取及写入数据,所以只需要在PLC1中写入梯形图指令即可完成通信。GET指令编写。7
PUT和GET指令左侧地址“ADDR_1”、“SD_1”、“RD_1”的填写及连接参数必须单击指令右上角“组态”图标后进行设置,PUT指令块参数设置。8PUT和GET指令左侧地址“ADDR_1”、“SD_1”、“RD_1”的填写及连接参数必须单击指令右上角“组态”图标后进行设置,GET指令块参数设置。9
运行后,通过监控数据块中的参数,可以判断数据传输是否成功。PLC1数据发送的值与PLC2数据接收的值相同。PLC1发送的数据10PLC2接收的数据11
PLC1数据接收的值与PLC2中待读取的数据值相同。PLC2中待读取的数据12PLC1中接收到的数据S7-1200与smart200之间的S7通信只需要在smart200PLC侧进行编程,S7-1200侧只需要在CPU属性设置“允许来自远程对象的PUT/GET通信访问”,本项目smart200采用ST30CPU。S7-1200与smart200之间的S7通信操作步骤如表10-11所示。1S7-1200与smart200进行S7通信在S7-1200端只需要设置CPU属性中勾选“允许来自远程对象的PUT/GET通信访问”。2
在smart200PLC侧创建GET/PUT向导,put类型向导创建。3get向导创建注意:创建时注意本地地址和远程地址的设置需要在范围内且不被其他用户程序或系统程序占用。
4
单击“下一个”后“存储器分配”按建议地址设置。5存储器分配完毕后单击下一个,组件设置。6
设置完成的GET/PUT向导7完成GET/PUT向导设置后,可以在调用子程序中找到“NET_EXE(SBR1)”子例程。8
在Smart200PLC侧编写程序,程序段1中MB20为smart200端发送给S7-1200侧的数据,MB10为smart200从S7-1200侧读取的数据。Smart端程序监控。9S7-1200侧对MB100和MB200进行监测发现数据正确传输
实际项目中使用的PLC绝大多数都支持modbus协议,而带网口的PLC设备基本上都支持ModbusTCP通信,本项目使用西门子S7-1200PLC做ModbusTCP服务端,蓝普锋PLC做ModbusTCP客户端建立通讯连接,蓝普锋PLC的型号为RPC2117N,IP地址设置为192.168.1.20,西门子PLC的型号为1214CDC/DC/RLY,版本号为4.4,IP地址设置为192.168.1.50。(1)设置S7-1200为服务器端,具体步骤如表10-12所示。序号图片示例操作步骤1
新建项目,插入CPU,在属性中设置IP地址为192.168.1.50,打开Main在程序段中插入“MB_SERVER”指令,并自动创建背景数据块DB12需要创建全局数据块保存IP_V4参数给MB_SERVER指令使用,添加新块,选择DB数据块,输入任意名称,这里输入RUNPOWER_CONNECT3
在RUNPOWER_CONNECT(DB2)数据块中,在“新增”位置输入名称CONNECT,数据类型输入TCON_IP_v4,硬件标识符为64,ID为13,本地端口号为502,TCON_IP_v4数据类型的描述见信息系统说明4注意:在博途17中硬件标识符查看需要单击CPUPROFINET接口中系统常数查看5
修改MB_SERVER指令输入引脚,MB_HOLD_REG输入引脚插入一个Any数据类型的变量P#DB1.DBX0.0BYTE100,代表从DB1.DBX0.0开始的100个字节数据,CONNET输入引脚插入DB2的CONNECT变量6对程序进行编译并下载至PLC中,选择在线可以看到当前MB_SERVER指令的STATUS输出引脚值为16#7002,状态码描述见表10-13。STATUS*(W#16#)说明0000指令已执行,且无任何错误。0001连接已建立。0003连接已终止。7000未激活任何调用且未建立任何连接(REQ=0,DISCONNECT=1)。7001首次调用。已触发连接建立操作。7002中间调用。正在建立连接。7003正在终止连接。7005正在发送数据。7006正在接收数据。表10-13STATUS状态码描述
(2)设置蓝普锋PLC为客户端,具体操作步骤如表10-14所示。表10-14设置蓝普锋PLC为客户端序号图片示例操作步骤1
打开蓝普锋编程软件CODESYS,选择菜单栏中的工具-设备存储库-安装,全选设备库文件并打开,设备库描述文件格式为XML文档安装设备库文件2再次选择菜单栏中的工具-库存储-安装,全选指令库文件并打开,指令库文件格式为CODESYSLibrary。打开指令库3
新建标准工程,选择菜单栏中的文件-新建工程,选择RPC2000设备,主程序可以选择为ST编程语言,后续可以删除。新建标准工程4新建标准工程5
项目内添加通讯指令库,单击库管理器,选择添加库,添加CmpRPCCommon指令库。项目内添加指令库。6修改任务配置,选择项目树中的MainTask,修改类型为惯性滑行。7
添加程序单元,在Application处右键添加POU单元,修改任意名称,这里修改为ModbusTCP,编程语言为LD梯形图。8打开并添加到任务配置中。9
在程序编辑处,右键选择输入带EN/ENO的功能块,在空白指令处选择输入助手,输入MODBUS选择ModbusTCP_Master指令,并自动实例化。10实例化后的ModbusTCP_Master指令。11
实例化后的ModbusTCP_Master指令。12在指令的输入引脚处,输入变量名称即可自动在变量区域创建变量,指令引脚功能参见指令说明书或CODESYS的库指令说明。13
指令参数功能说明14这里直接使用通讯例程继续描述,双击set_ip_ld程序单元,通过调用SET_LOCAL_IP指令设置RPC2117N的网口IP为192.168.1.20。设置蓝普锋PLC的ip地址15
双击modbus_tcp_ld程序单元,ModbusTCP_Master指令的索引为0,西门子PLC的IP地址为192.168.1.50。16蓝普锋PLC下载程序,双击项目树中的Device,选择通讯设置中的扫描网络,选择对应设备。17
右下角显示节点名称等信息,代表成功连接到PLC设备,选择菜单栏中的登录到设备,等待下载完成再单击设备运行。18同时在线监测S7-1200侧和蓝普锋PLC侧,查看通信状态。打开modbus_tcp_ld程序单元,可以看到ModbusTCP_Master指令的STATUS输出引脚值为6-8切换,ERROR输出引脚值为0,代表成功建立连接并获取到有效数据。19
在线监控西门子PLC,可以看到MB_SERVER指令的STATUS的输出引脚值为16#7005-16#7006切换,通信正常。西门子S7-1200与信捷ModbusTCP通信时,S7-1200做客户端,信捷PLC做服务器,信捷PLC的以太网机型上电默认开启MODBUS服务器功能不须编写程序。本项目中信捷PLC选择XDH-60T4,信捷PLC机型选择如图10-8所示。4.1信捷PLC参数设置在工程-PLC配置-以太网口-弹出以太网口设置对话框-设置信捷PLC的IP地址:192.168.0.3,子网掩码:255.255.255.0,设置完成后单击“写入PLC”,写入完成后,单击确定,以太网设置如图10-9所示。4.2西门子S7-1200主站程序编写编写主站网络读写程序段,只有在主站程序中实用Modbus-TCP指令MB_CLIENT指令来读写从站信息,信捷PLC作为从站不需要编写程序。在编写主站程序之前,预先进行通信数据规划。(1)主站向各从站发送数据的长度。(2)发送的数据位于主站的地址。(3)数据发送到从站的地址。(4)主站从各从站接收数据的长度(字节数)。(5)主站从从站读取数据的地址。(6)接收到的数据放在主站的地址。以上数据应根据系统工作要求,信息交换量等统一规划。本项目以发送和接收的数据均为16个点为例。网络读写数据区规划如表10-15所示。主站程序编写步骤如表10-16所示。表10-15网络读写数据区规划序号S7-1200主站传输方向XDH-60T4从站1M100.0-M101.7
M1000-M10152M120.0-M121.7
M1020-M1035表10-16主站程序编写1创建MB_CLIENT指令使用数据块并命名为“与信捷TCP通信”,勾选优化块访问2
创建MB_CLIENT指令使用数据块并命名为“与信捷TCP通信”,勾选优化块访问3TCP”,数据类型为“TCON_IP_v4”(可以将拷贝到该对话框中),然后单击“回车”按键,该数据类型结构创建完Interfaceld:16#40,ID:16#2,:,ActiveEstablished:1,ADDR:服务器侧的IP地址,RemotePort:502,4
背景数据块中静态变量“Connected”用于指示TCP连接是否建立;连接建立后复位MB_CLIENT指令控制位和状态位;触发第一个MB_CLIENT指令的REQ。5M100.0开始的16位写入信捷PLC的M1000开始的16位6
2中写入完成后将MW200赋值2进入程序段3中读数据7捷M1020开始的16位读入S7-1200PLC的M1120.0开始的16位8
4中读数据完成后将MW200赋值1进入程序段2中写数据注意:在数据块中创建变量名称“TCP”,数据类型“TCON_IP_v4”各引脚说明如表10-17所示。表10-17“TCON_IP_v4”各引脚说明引脚名称说明Interfaceld硬件标识符ID连接ID,取值范围1~4095ConnectionType连接类型。TCP连接默认为16#0BActiveEstablished建立连接。主动为1(客户端),被动为0(服务器)ADDR服务器侧的IP地址RemotePort远程端口号LocalPort本地端口号信捷
VH5系列变频器是信捷公司的一款开环矢量变频器,具有小体积、高可靠性等优点。本项目中使用型号为VH5-20P7-B单相0.75KW变频器,S7-1200中使用通信扩展模块CB1241与VB5N变频器建立标准RS485通信连接,通信连接硬件接线详见VH5-20P7-B说明书。在物理连接建立好后需将变频器参数进行设置(注意:参数设置完成后需断电重启变频器),VH5-20P7-B参数设置表(Modbus-RTU通信功能)如表10-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肠癌手术患者的心理护理与支持
- 2025年办公室地面环氧地坪协议
- 《吸嗅类(合香制品)保健用品生产技术规范》标准 征求意见稿
- 太阳能建筑一体化原理与应 课件 第3章 太阳能的吸收与透射
- 城市历史文化保护传承
- 2025年智慧养老院监护技术 AI陪护机器人24小时应用
- 2026 年中职咖啡科学与工程(咖啡基础)试题及答案
- 小升初苏教版试题及答案
- 基于量子计算的JavaScript框架探索
- 2025年海南省公需课学习-全民健身计划实施方案716
- 2025中央广播电视总台招聘144人笔试历年题库附答案解析
- 2026年瓦工职业技能鉴定考试题库及答案
- 2025年云南省人民检察院聘用制书记员招聘(22人)笔试考试参考题库及答案解析
- 胃肠外科围手术期护理要点
- MOOC 理解马克思-南京大学 中国大学慕课答案
- 《荷塘月色》《故都的秋》比较阅读-统编版高中语文必修上册
- 中央电大护理专业本科通科实习出科考核病历
- 卫生院基本公共卫生服务奖惩制度
- 气动冲床设备日常点检标准作业指导书
- β-丙氨酸补充对运动能力的影响
- 南昌工程学院水电站课程设计
评论
0/150
提交评论