电气控制与PLC应用-基于S7-200 SMART PLC(第5版)课件 第8章 S7-200 SMART PLC的通信与应用_第1页
电气控制与PLC应用-基于S7-200 SMART PLC(第5版)课件 第8章 S7-200 SMART PLC的通信与应用_第2页
电气控制与PLC应用-基于S7-200 SMART PLC(第5版)课件 第8章 S7-200 SMART PLC的通信与应用_第3页
电气控制与PLC应用-基于S7-200 SMART PLC(第5版)课件 第8章 S7-200 SMART PLC的通信与应用_第4页
电气控制与PLC应用-基于S7-200 SMART PLC(第5版)课件 第8章 S7-200 SMART PLC的通信与应用_第5页
已阅读5页,还剩157页未读 继续免费阅读

下载本文档

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

文档简介

电气控制与PLC应用

—基于S7-200SMARTPLC(第5版)

(第8章)第8章S7-200SMARTPLC的通信与应用

S7-200SMARTPLC的通信基础(概念、端口与接口);自由口通信、ModbusRTU通信、USS协议通信的原理与应用;以太网通信、开放式用户通信(OUC)、PROFINET通信、ModbusTCP通信的配置与实操。学习目标:

教学内容:

8.1S7-200SMARTPLC的通信基础

8.2自由口通信

8.3ModbusRTU通信

8.4S7-200SMART与变频器的USS协议通信

8.5S7-200SMARTPLC之间的以太网通信

8.6开放式用户通信

8.7PROFINET通信

8.8ModbusTCP通信第7章PLC控制系统设计与应用8.1S7-200SMARTPLC的通信基础

返回8.1.1通信相关基本概念1.数据传输方式(1)并行通信与串行通信①并行通信:所传送数据的各位同时发送或接收。并行通信传递数据快,但由于一个并行数据有多少位二进制数就需要多少根传送线,所以通常用于近距离传输。在远距离传输时,会导致线路复杂,成本高。②串行通信:所传送的数据按顺序一位一位地发送或接收。串行通信只需一根到二根传输线,在长距离传送时,通信线路简单且成本低,但传递速度比并行通信速度低,故常用于长距离传送且速度要求不高的场合。8.1.1通信相关基本概念

(2)同步通信和异步通信①异步通信:异步传送也称起止式传送,它是利用起止法来达到收发同步的。在异步通信中,数据是一帧一帧(每帧包括一个字符代码或一个字节数据)的传送。在帧格式中,传输一个字符有四部分组成:起始位、数据(字符)、奇偶校验位和停止位,首先传送的起始位由“0”开始;然后是编码的字符,通常规定低位在前,高位在后,接下来是校验位(可省略);最后是停止位“1”(可以是1位、1.5位或2位)表示字节的结束。例如,传送一个ASCII字符(用8位表示1个字符),选用1位停止位,那么传送这个7位的ASCII字符就需11位,其中包含1位起始位、1位校验位、1位停止位和8位数据位。8.1.1通信相关基本概念

(2)同步通信和异步通信②同步传送:同步传输在数据开始处使用1到2个同步字符来指示。由定时信号(时钟)来实现收发端同步,一旦检测到与规定的同步字符相符合,接下去就连续按顺序传送数据。在这种传送方式中,数据以一组数据(数据块)为单位传送,数据块中每字节不需要起始位和停止位,因而就克服了异步传送效率低的缺点,但同步传送所需的软、硬件价格是异步传送的8~12倍。因此通常在数据传递速率超过2000bit/s的系统中才采用同步传送方式。8.1.1通信相关基本概念

2.数据传送方向数据在线路上传送的方向可分为单工、半双工和全双工通信方式三种。如图8-2所示。(1)单工通信方式:数据的传送始终保持同一个方向,而不能进行反向传送,如图8-2(a)所示。其中A端只能作为发送端发送数据,B端只能作为接收端接收数据。(2)半双工通信方式:信息流可以在两个方向上传送,但同一时刻只限于一个方向传送,如图8-2(b)所示。其中A端和B端都具有发送和接收的功能,但传送线路只有一条,或者A端发送B端接收,或者B端发送A端接收。(3)全双工通信方式:能在两个方向上同时发送和接收。8.1.1通信相关基本概念

3.开放系统互连参考模型国际标准化组织(ISO,InternationalStandardOrganization)于1978年提出了开放系统互连(OSI,OpenSystemsInterconnection)参考模型,它所用的通信协议一般为7层,如图所示。应用层表示层会话层传输层网络层数据链路层物理层8.1.1通信相关基本概念

3.开放系统互连参考模型(1)物理层:物理层为最底层,实际通信就是通过物理层在互联媒体上进行的。物理层为用户提供建立、保持和断开物理连接的功能,物理层常用的例子如RS-232C、RS-422A/RS485。7层模型中,上面的任何层都以物理层为基础,对等层之间实现开放系统互连。(2)数据链路层:数据链路中数据以帧为单位传送,每帧包含一定数量的数据和必要的控制信息,如同步信息、地址信息等,数据链路层负责在两个相邻节点间的链路上,实现差错控制,把输入的数据组成数据帧,并在接收端检验传输的正确性,若正确,则发送确认信息;若不正确,则抛弃该帧,等待发送端超时重发。(3)网络层:网络层的主要功能是报文包的分段、报文包阻塞的处理及通信子网路径的选择。8.1.1通信相关基本概念

3.开放系统互连参考模型(4)传输层:传输层的信息传送单位是报文(Message),该层主要负责从会话层接收数据,把它们传到网络层,并保证这些数据正确地到达目的地。该层控制端点到端点数据的完整性,确保高质量的网络服务,起到网络层和会话层之间的接口作用。(5)会话层:会话层的功能是支持通行管理和实现最终用户应用进程的同步,按正确的顺序发送数据,进行各种对话。(6)表示层:表示层用于应用层信息内容的形式交换,如数据加密/解密、信息压缩/解压,消去重复的字符和空白等,把应用层提供的信息变成能够共同理解的形式。(7)应用层:应用层作为OSI的最高层,主要为用户的应用服务提供信息交换,为应用接口提供操作标准。负责与其他高级功能的通信,如分布式数据库和文件传输等。8.1.2S7-200SMART通信连接端口S7-200SMART标准型CPU提供了一个以太网端口和一个RS485端口(端口0),紧凑型CPU只提供一个RS485端口。标准型CPU还额外支持SBCM01信号板(端口1),信号板可通过STEP7-Micro/WINSMART软件组态为RS232或RS485通信端口。1.以太网端口S7-200SMART标准型CPU的以太网接口是标准的RJ45,可以自动检测全双工或半双工通信,10Mbit/s和100Mbit/s通信速率。通过基于TCP/IP的S7协议可以实现S7-200SMARTCPU与编程器、HMI、上位机以及S7-200SMARTCPU之间的以太网通信,通过TCP、UDP或ISO-on-TCP的开放式用户通信,可以实现与S7-200SMART标准型CPU或者第三方兼容开放式用户通信设备的通信。8.1.2S7-200SMART通信连接端口该以太网接口的连接资源如下:1个编程连接:同一时刻只能有1台安装了STEP7Micro/WINSMART的计算机连接S7-200SMARTPLC。最多8个HMI连接:CPU通过以太网口可以同时连接8个HMI设备。最多8个GET/PUT主动连接:1个CPU可以同时建立8个主动的通信连接与另外8个S7-200SMARTCPU进行通信。最多8个GET/PUT被动连接:1个S7-200SMARTCPU可以同时与其他8个被动建立连接的S7-200SMARTCPU进行通信。最多8个开放式通信(OUC)主动连接:1个S7-200SMART标准型CPU可以同时建立8个主动的开放式用户通信(连接与另外8个S7-200SMART标准型CPU或者第三方兼容开放式用户通信的设备进行通信。

最多8个开放式通信(OUC)被动连接:1个S7-200SMART标准型CPU可以同时与其他8个被动建立开放式用户通信连接的S7-200SMART标准型CPU或者第三方兼容开放式用户通信的设备进行通信。8.1.2S7-200SMART通信连接端口以太网端口有两种网络连接方法:直接连接和网络连接。(1)直接连接当一个S7-200SMARTCPU与一个编程设备、HMI或者另外一个S7-200SMARTCPU通信时,实现的是直接连接。直接连接不需要使用交换机,使用网线直接连接两个设备即可,通信设备的直接连接如左图所示。(2)网络连接:当两个以上的通信设备进行通信时,需要使用交换机来实现网络连接。可以使用导轨安装的西门子CSM1277(4端口)交换机来连接多个CPU和HMI设备,多个通信设备的网络连接如右图所示。8.1.2S7-200SMART通信连接端口2.RS485通信端口S7-200SMARTCPU集成的RS485通信端口(端口0)是与RS485兼容的9针D型连接器,引脚分配见表8-1。表8-1

S7-200SMARTCPU集成RS485端口的引脚分配连接器引脚标号信号引脚定义

1屏蔽机壳接地224V返回逻辑公共端3RS485信号BRS485信号B4发送请求RTS(TTL)55V返回逻辑公共端6+5V+5V,100Ω串联电阻7+24V+24V8RS485信号ARS485信号A9不适用10位协议选择(输入)外壳屏蔽机壳接地8.1.2S7-200SMART通信连接端口标准型CPU额外支持SBCM01信号板,该信号板可以通过STEP7-Micro/WINSMART软件组态为RS485通信端口或者RS232通信端口。SBCM01信号板的引脚分配见表8-2。表8-2S7-200SMARTSBCM01信号板端口(端口1)的引脚分配表8.1.2S7-200SMART通信连接端口S7-200SMARTCPU集成的RS485端口以及SBCM01信号板都是非隔离型通信端口,允许的最大通信距离为50m(该距离为网段中第一个通信节点到最后一个节点的距离)。如果网络中的通信节点数大于32个或者通信距离大于50m,则需要添加RS485连接器拓展网络连接。西门子提供了两种类型的RS485网络连接器,一种是标准型网络连接器,另一种则增加了可编程接口,可使用它们轻松地将多台通信节点连接到通信网络上。此外,西门子S7-200SMART标准型CPU可以通过扩展模块EMDP01扩展通信接口,支持MPI从站以及ProfibusDP从站的扩展。EMDP01上的RS485串行通信接口是一个RS485兼容的九针迷你D型插口,与欧洲标准EN50170规定的PROFIBUS标准一致。8.2自由口通信

自由口通信是S7-200SMARTPLC通过自定义帧格式实现的串行通信,支持用户灵活定义数据传输规则,适用于无标准通信协议的设备交互场景(如与自定义串口设备、特殊传感器的通信)。其核心优势在于适配性强,可根据实际需求配置波特率、数据位、校验方式及收发逻辑,是实现非标设备通信的关键方式。返回

S7-200SMARTCPU在RUN运行模式下,支持点对点接口(Point-to-PointInterface,PPI)与自由口下的两种通信模式选择;若CPU切换至STOP停止模式,将禁用自由口通信,自动进入PPI通信模式。SMB30(端口0)和SMB130(端口1)用于定义通信端口的工作模式。控制字节的定义如图8-7。返回8.2.1自由口通信模式

8.2.1自由口通信模式

当定义S7-200SMARTCPU通信端口0为自由口通信模式,8位数据位,偶校验,9600波特率,可将SMB30设置为2#01001001,程序如图8-8所示。

8.2.2自由口通信核心指令选择自由口通信模式后,CPU程序通过调用发送指令(XMT指令)、接收指令(RCV指令)、接收完成中断、发送完成中断等操作来实现CPU的串行通信。自由口通信模式为半双工模式,同一时刻不能同时执行发送指令与接收指令。1.发送指令(XMT指令)

发送指令(XMT指令)用于在自由口通信模式下将发送缓冲区(TBL)的数据通过指定的通信端口(PORT)发送出去。XMT指令一次最多可以发送255个字符。XMT指令发送缓冲区格式见表8-3。如果将中断子程序连接到发送完成事件,CPU将在发送完缓冲区的最后一个字符后产生一个中断事件(对于端口0为中断事件9,对于端口1为中断事件26)。如果不使用中断,也可以通过监视SM4.5(端口0)或SM4.6(端口1)的上升沿信号来判断发送是否完成。8.2.2自由口通信核心指令2.接收指令(RCV指令)接收指令(RCV指令)用于在自由口通信模式下通过指定的通信端口(PORT)接收数据,接收的数据存储到接收缓冲区(TBL),数据长度最多为255个字符。RCV指令接收缓冲区格式见表8-4。8.2.2自由口通信核心指令执行RCV指令时,必须预先使用接收信息控制字节SMB87(端口0)或SMB187(端口1)来定义接收消息的起始和结束条件。接收消息的起始条件可以同时包含多个条件,只有所有条件都满足才开始接收消息;接收消息的结束条件也可以同时包含多个条件,只要有一个条件满足就会结束消息的接收。8.2.3自由口通信实例在两个S7-200SMART之间进行自由口通信,所用的软件、硬件及通信任务如下所示:软件:STEP7-Micro/WINSMARTV2.8;硬件:通信主动发送方为CPUST20,使用集成RS485端口(端口0);通信接收回复方为CPUST20,使用集成RS485端口(端口0),硬件连接图如图8-9所示;通信任务:CPU1每秒触发一次XMT指令,将自身实时时钟发送到CPU2;CPU2接收到CPU1的消息后,立即将自身实时时钟回复到CPU1。

图8-9自由通信硬件连接图8.2.3自由口通信实例

1.CPU1编程(1)CPU1主程序主要功能为:①设置SMB30=2#00001001(自由口通信,波特率9600bit/s,8位数据位,无校验)。②设置SMB87=2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。③设置空闲线定时器SMW90=5ms,字符间定时器SMW92=5ms,允许最大接收字符个数SMB94=10。④连接中断子程序INT_0到通信端口0发送完成事件,并启用中断。⑤每秒钟读取一次CPU的实时时钟,并将发送缓冲区长度设置为8个字符。⑥执行XMT指令之前设置SM88.7=0,同时执行RCV指令,终止消息接收。⑦每秒钟执行一次XMT指令将CPU的实时时钟发送出去。8.2.3自由口通信实例

1.CPU1编程(2)CPU1发送完成中断子程序INT_0编程中断子程序INT_0用于恢复SMB87的设置(SM87.7=1),并执行RCV指令开始接收CPU2的应答信息,程序如图8-11所示。8.2.3自由口通信实例

2.CPU2编程(1)CPU2主程序编程如图8-12所示。该程序的主要功能如下:①设置SMB30=2#00001001(自由口通信,波特率9600bit/s,8位数据位,无校验)。②设置SMB87=2#10010100,使用空闲线检测为信息接收的起始条件,使用字符间定时器为信息接收的结束条件。③设置空闲线定时器SMW90=5ms,字符间定时器SMW92=5ms,允许最大接收字符个数SMB94=10。④连接中断子程序INT_0到通信端口0接收完成事件,中断子程序INT_1到通信端口0发送完成事件,并启用中断。⑤使用SM0.1调用RCV指令地执行。8.2.3自由口通信实例2.CPU2编程(2)CPU2接收完成中断子程序INT_0编程。中断子程序INT_0用于读取CPU实时时钟,并调用XMT指令将实时时钟信息发送出去,程序如图所示。(3)CPU2发送完成中断子程序INT_1编程。中断子程序INT_1用于执行RCV指令,并开始新的信息接收任务,程序如图8-14所示。8.3ModbusRTU通信

ModbusRTU(RTU,远程终端单元)是基于串行总线的主从式标准化通信协议,采用紧凑的二进制编码格式,兼具传输效率与通用性,广泛适用于工业现场PLC、变频器、传感器等设备间的数据交互。该通信方式通过明确的功能码和地址映射实现数据读写,配置简单、兼容性强,是工业自动化中跨品牌设备通信的常用方案。8.3.1ModbusRTU通信概述Modbus是一种应用层的主从问答式通信协议,它通过“功能码”和“数据地址”在设备间提供了一种标准化的数据访问方式。Modbus具有两种串行传输模式,ASCII和RTU。其中,RTU采用紧凑的二进制编码,效率高且通用,而ASCII采用可读的十六进制字符编码,传输可靠性更优但效率较低。S7-200SMART通过端口0(或端口1)支持ModbusRTU通信模式。8.3.1ModbusRTU通信概述Modbus库,如图8-15所示。Modbus库中包含Modbus主站指令和Modbus从站指令。Modbus主站指令用于组态S7-200SMARTCPU,使其作为ModbusRTU主站设备,可与一个或多个ModbusRTU从站设备通信;Modbus从站指令用于组态S7-200SMARTCPU,使其作为ModbusRTU从站设备,可与ModbusRTU主站设备进行通信。S7-200SMARTCPU集成的RS485端口(端口0)以及SBCM01信号板(端口1)都可以作为ModbusRTU主站或从站。但是两个通信端口不能同时作为从站。当两个通信端口都作为主站时,需分别调用ModbusRTUMaster和ModbusRTUMaster2主站指令库。8.3.1ModbusRTU通信概述Modbus的地址通常有5个字符值,其中包含数据类型和偏移量。第1个字符决定数据类型,后4个字符选择数据类型内的正确数值。ModbusRTU的寻址分为主站寻址和从站寻址两种情况。(1)ModbusRTU主站寻址ModbusRTU主站指令根据用户指定的操作类型(读/写)与目标数据区地址,自动选择正确的功能码,并生成完整的Modbus报文发送至从站。ModbusRTU主站指令支持下列Modbus地址:①00001~09999是数字量输出(线圈);②10001~19999是数字量输入(触点);③30001~39999是输入寄存器(通常是模拟量输入);④40001~49999是保持寄存器。所有Modbus地址均从1开始,也就是说,第1个数据值从地址1开始。实际有效地址范围取决于从站。不同的从站支持不同的数据类型和地址范围。8.3.1ModbusRTU通信概述(2)ModbusRTU从站寻址ModbusRTU从站指令将地址映射至正确的功能。ModbusRTU从站指令支持下列Modbus地址:①00001~00256是映射到Q0.0~Q31.7的数字量输出;②10001~10256是映射到I0.0~I31.7的数字量输入;③30001~30256是映射到AIW0~AIW110的模拟量输入寄存器;④40001~49999和400001~465535是映射到V存储器的保持寄存器。8.3.2ModbusRTU主站指令1.MBUS_CTRL指令初始化主设备指令MBUS_CTRL用于S7-200SMART端口0(或用端口1的MBUS_CTRL_PI指令)可初始化、监视或禁用Modbus通信。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令,指令执行完成后,立即设定“完成”位,才能继续完成下一条指令。指令输入/输出说明数据类型

EN使能BOOLMode为1将CPU端口分配给Modbus协议并启用该协议;为0将CPU端口分配给PPI协议,并禁用Modbus协议BOOLBaud支持的通信波特率为1200bit/s、2400bit/s、4800bit/s、9600bit/s、19200bit/s、38400bit/s、57600bit/s、115200bit/sDWORDParity为0时,无校验;为1时,奇校验;为2时,偶校验BYTEPort使用集成端口时为0;使用通信板时为1BYTETimeout主站等待从站响应的时间,以ms为单位,典型的设置值为1000msWORDDone初始化完成后自动置1BOOLError出错时返回错误代码BYTE8.3.2ModbusRTU主站指令2.MBUS_MSG指令MBUS_MSG指令用于启动对ModbusRTU从站的请求和处理响应。MBUS_MSG指令的EN输入参数和First输入参数同时接通时,MBUS_MSG指令会向Modbus从站发起主站的请求;发送请求、等待响应和处理响应通常需要多个CPU扫描周期,EN输入参数必须一直接通直到Done位被置1。输入/输出说明数据类型EN使能BOOLFirst“首次”参数应该在有新请求要发送时才打开,进行一次扫描。“首次”输入位应通过一个边沿检测元素(如上升沿)打开,这将保证请求被传送一次BOOLSlave“从站”参数是Modbus从站的地址,允许的范围是0~247BYTERW0为读,1为写BYTEAddr“地址”参数,读取Modbus的起始地址DWORDCount“计数”参数是读写的元素的数目INTDataPtrS7-200SMARTCPU的V存储器中与读取或写入请求相关数据的间接地址指针DWORDError出错时返回错误代码BYTE8.3.2ModbusRTU主站指令3.ModbusRTU主站指令库存储器地址分配ModbusRTU主站指令需要占用286字节V存储器,用于库存储器地址分配。该库存储器分配的地址不能与MBUS_MSG指令参数DataPtr指向的V存储器的地址重叠,也不能与其他程序使用的地址重叠。库存储器分配步骤如下:(1)在项目树中右击程序块,在弹出的快捷菜单中选择“库存储器”选项,如图所示(2)在弹出的“库存储器分配”对话框中为库存储器分配地址,需要保证该存储器使用的地址范围与其他程序使用的地址范围不能重叠,分配库存储器地址如图8-17所示。8.3.3ModbusRTU从站指令1.MBUS_INIT指令MBUS_INIT为S7-200Modbus通讯初始化指令,包含多个输入参数与2个输出参数,各参数含义、数据类型如下:输入参数:EN(BOOL型):指令使能端。Mode(BYTE型):通讯协议切换,值为1时将CPU端口分配并启用Modbus协议;值为0时端口分配给PPI协议,关闭Modbus功能。Baud(DWORD型):串口波特率,可选1200、2400、4800、9600、19200、38400、57600、115200bit/s。Parity(BYTE型):奇偶校验配置,0代表无校验,1代表奇校验,2代表偶校验。Addr(BYTE型):Modbus从站的站地址。Port(BYTE型):通讯端口选择,PLC本体集成端口填0,外接扩展通讯模块填1。Delay(WORD型):通讯延时参数,用于延长标准Modbus报文结束的超时时间,适配特殊通讯场景。MaxIQ(WORD型):限定Modbus地址0xxxx、1xxxx对应的I/Q点位数量,取值范围0~128。8.3.3ModbusRTU从站指令1.MBUS_INIT指令MaxAI(WORD型):限定Modbus地址3xxxx对应的AI输入寄存器数量,取值范围0~32。MaxHold(WORD型):限定Modbus地址4xxxx对应的保持寄存器总字数。HoldStart(DWORD型):PLC内部V存储区中,映射Modbus保持寄存器的起始地址。输出参数Done:指令执行完成标志位。Error(BYTE型):通讯异常时输出对应故障代码。8.3.3ModbusRTU从站指令

2.MBUS_SLAVE指令MBUS_SLAVE指令用于处理来自ModbusRTU主站的请求,必须在每个扫描周期都执行,以便检查和响应Modbus的请求。若未持续调用,将无法响应主站请求。3.ModbusRTU从站指令库存储器地址分配ModbusRTU从站指令库需要占用781字节V存储器用于库存储器地址分配。该库存储器分配的地址不能与MBUS_INIT指令参数HoldStart指向的V存储器的地址重叠,也不能与其他程序使用的地址重叠。8.3.4ModbusRTU通信应用实例

在两个S7-200SMARTPLC之间进行ModbusRTU通信,所用的软件、硬件及通信任务如下所示:软件:STEP7-Micro/WINSMARTV2.8;硬件:ModbusRTU主站为PLC1,其CPU型号为ST20(默认集成RS485端口);ModbusRTU从站为PLC2,其CPU型号为ST20(默认集成RS485端口),需配备PROFIBUS网络电缆及网络连接器实现RS485物理连接;通信任务:PLC1(主站)调用ModbusRTU主站指令,读取PLC2(从站)的IB0数值、QB0数值以及扩展模块EM0的AIW16~AIW22数值。8.3.4ModbusRTU通信应用实例1.PLC1ModbusRTU主站轮询编程PLC1主程序需要调用MBUS_CTRL指令启用、初始化ModbusRTU主站通信;调用3条MBUS_MSG指令分别用于读取Modbus从站CPU2IB0、QB0以及AIW16~AIW22的数据。因为同一时刻只能有一条MBUS_MSG指令处于激活状态,所以本例子中的3条MBUS_MSG指令的执行需要采用轮询方式。PLC1的具体编程步骤如下:(1)CPU启动时复位各Modbus主站指令完成位以及其他状态位;调用MBUS_CTRL指令启用、初始化ModbusRTU主站通信。复位主站指令状态位并初始化主站通信,如图8-18所示。8.3.4ModbusRTU通信应用实例1.PLC1ModbusRTU主站轮询编程(2)调用第一条MBUS_MSG指令用于读取ModbusRTU从站PLC2的IB0的数据,并将数据保存到VB1000,程序如图8-19所示。第一条MBUS_CTRL指令的Done完成位或者第三条MBUS_MSG指令的Done完成位用于触发该MBUS_MSG指令的执行。该MBUS_MSG指令的Done完成位复位其EN输入参数。8.3.4ModbusRTU通信应用实例

(3)调用第二条MBUS_MSG指令用于读取ModbusRTU从站PLC2的QB0的数据,并将数据保存到VB2000,程序如图8-20所示。其中,第一条MBUS_MSG指令的Done完成位用于触发第二条MBUS_MSG指令的执行,而第二条MBUS_MSG指令的Done完成位复位其EN输入参数。8.3.4ModbusRTU通信应用实例(4)调用第三条MBUS_MSG指令用于读取ModbusRTU从站PLC2的模拟量输入AIW16~AIW22的数据,并将数据保存到VW3000~VW3006,程序如图8-21所示。其中,第二条MBUS_MSG指令的Done完成位用于触发第三条MBUS_MSG指令的执行,而第三条MBUS_MSG指令的Done完成位复位其EN输入参数。8.3.4ModbusRTU通信应用实例(5)为ModbusRTU主站指令分配库存储器地址VB0~VB285。该库存储器分配的地址不能与MBUS_MSG指令参数DataPtr指向的V存储器的地址重叠,也不能与其他程序使用的地址有重叠。8.3.4ModbusRTU通信应用实例2.PLC2ModbusRTU从站编程PLC2主程序使用SM0.1调用MBUS_INIT指令,用于启用、初始化ModbusRTU从站通信;使用SM0.0调用MBUS_SLAVE指令,用于处理来自ModbusRTU主站的请求,并对请求作出应答。PLC2的具体编程步骤如下所述:(1)使用SM0.1调用MBUS_INIT指令;使用SM0.0调用MBUS_SLAVE指令。ModbusRTU从站指令编程如图8-22所示。8.3.4ModbusRTU通信应用实例

(2)为ModbusRTU从站指令分配库存储器地址VB0~VB780。该库存储器分配的地址不能与MBUS_INIT指令参数HoldStart指向的V存储器的地址重叠,也不能与其他程序使用的地址有重叠。8.4S7-200SMART与变频器的USS协议通信USS协议(UniversalSerialInterfaceProtocol,即通用串行接口协议)是西门子专为驱动装置开发的串行通信协议,采用主从访问机制,具备报文格式简单、硬件要求低、实现成本优的特点,主要用于S7-200SMARTPLC与西门子变频器(如V20、MM4系列)的通信。其核心功能是实现变频器启停控制、速度调节及参数读写,适用于对通信速率和同步要求不高的单机或小规模变频控制系统。8.4.1USS协议概述S7-200SMARTCPU集成的RS485通信口可实现USS通信,其功能特点如下:1.协议定位与发展USS(通用串行)通信协议是西门子专为驱动装置开发的协议,历经多年迭代完善。最初聚焦驱动装置的参数化操作(如参数设置),在驱动装置与操作面板、调试软件的连接中应用广泛;近年因协议简单、硬件要求低,也越来越多地用于与控制器的通信,实现低成本的数据交互。8.4.1USS协议概述2.适用场景限制USS协议提供了低成本、简便的通信控制方案,但受设计特点限制,不适用通信速率或数据传输量要求较高的场景。这类高要求场景建议选择实时性更优的通信方式(如PROFIBUS-DP),系统设计时需充分考虑这一局限性。3.多设备同步的局限若在速度同步要求较高的场景中,用USS协议控制十几台甚至数十台变频器,通信效果可能不够理想。4.核心特点USS协议的基本特点包括:支持RS485等网络;采用单主站“主-从”访问机制;单网络最多支持32个节点(含1个主站、31个从站),节点数受RS485总线负载限制,超过时需添加中继器;报文格式简单可靠,数据传输灵活高效;实现难度低,成本较优。8.4.1USS协议概述5.工作机制USS通信由主站主动发起。主站循环轮询各从站,从站仅在“主站报文无错误”且“自身被寻址”时才回应,否则(含接收到广播报文时)不做响应;同时,从站需在主站报文接收后的规定时间内回复,超时未回复会被主站判定为通信出错。8.4.2USS指令介绍

安装STEP7-Micro/WINSMART软件的同时会自动安装USS协议库。USS协议库包括初始化指令USS_INIT、控制指令USS_CTRL以及参数读/写指令USS_RPM_x指令、USS_WPM_x指令等。通过调用USS协议库,S7-200SMARTCPU集成的RS485端口(端口0)或SBCM01信号板(端口1),可以激活USS协议与西门子变频器进行通信,但是两个通信端口不可以同时激活USS协议。

返回8.4.2USS指令介绍1.USS_INIT指令USS_INIT指令用于启用和初始化或禁用Siemens变频器通信。在使用任何其它USS指令之前,必须执行USS_INIT指令且无错。该指令完成后,立即置位Done位,然后继续执行下一条指令。USS_INIT指令参数说明见表8-12。8.4.2USS指令介绍Active参数用于指定主站轮询表里需要访问的USS从站设备,采用32位双字映射全部从站地址:双字每一位对应一个USS从站地址号,对应位写1代表启用该地址变频器,写0代表不启用,最终将32位二进制换算为无符号整数,即为Active参数赋值。例如:假设要启用站地址为3的V20变频器,需在表8-13对应位号“03”的Active参数表格表中填入二进制“1”,其余无需激活的地址对应位则设为“0”。经取整计算后,得到的Active值为00000008h(即十六进制16#00000008),换算为十进制数是8。2.USS_CTRL指令USS_CTRL指令用于控制处于激活状态的西门子变频器,每台变频器只能使用一条USS_CTRL指令。USS_CTRL指令参数见表8-14。返回8.4.2USS指令介绍

8.4.2USS指令介绍

3.USS_RPM_x指令USS_RPM_x指令用于读取变频器的参数值。由于参数数据类型的不同,USS_RPM_x指令共有3条,其中USS_RPM_W指令用于读取无符号字参数,USS_RPM_D指令用于读取无符号双字参数,USS_RPM_R指令用于读取实数(浮点数)参数。USS_RPM_x指令参数见表8-15。8.4.2USS指令介绍

4.USS_WPM_x指令USS_WPM_x指令用于写入变频器的参数值。由于参数数据类型的不同,USS_WPM_x指令共有3条,USS协议共有三种写入指令:USS_WPM_W指令用于写入无符号字参数,USS_WPM_D指令用于写入无符号双字参数,USS_WPM_R指令用于写入浮点参数。USS_WPM_x指令参数见表8-16。返回8.4.2USS指令介绍返回2.

USS指令库存储器地址分配USS指令库存储器需要占用402字节V存储器用于库存储器地址分配。该库存储器分配的地址不能与USS_RPM_x指令或者USS_WPM_x指令DB_Ptr指向的V存储器的地址重叠,也不能与其他程序使用的地址重叠,否则会导致数据覆盖。8.4.3USS通信应用实例在S7-200SMARTPLC与SINAMICSV20变频器之间进行USS通信,所用的软件、硬件及通信任务如下所示:软件:STEP7-Micro/WINSMARTV2.8;l硬件:通信主站为S7-200SMARTPLC(其CPU集成RS485端口);通信从站为SINAMICSV20变频器(需配备RS485通信接口),硬件还包括PROFIBUS网络电缆(含网络连接器),用于实现PLC与变频器的RS485物理连接;通信任务:S7-200SMARTPLC通过USS通信指令控制SINAMICSV20变频器的启停及速度调节,同时读取变频器的实际输出频率(参数r0024)和实际输出电流(参数r0027)。8.4.3USS通信应用实例1.USS通信接线S7-200SMARTPLC与SINAMICSV20USS通信总线为RS485网络。PLC通信端口侧可以采用西门子RS485网络连接器,V20通信端口为端子连接,端子6、7用于RS485通信,PLC与V20之间的通信电缆建议使用西门子Profibus总线电缆。当V20变频器处于通信总线的终端时,需要为其添加终端电阻以及偏置电阻。8.4.3USS通信应用实例S7-200SMARTPLC与SINAMICSV20变频器USS通信接线如图8-23所示。该图中各对应项说明如下:①所有通信节点均需可靠接地。②S7-200SAMRTCPU通信端口0使用RS485网络连接器,网络连接器中提供了终端电阻和偏置电阻。③终端节点的V20变频器需要增加终端电阻和偏置电阻。其中P+与N-端子间的终端电阻为120Ω;10V与P+端子间的上拉偏置电阻为1500Ω,0V与N-端子间的下拉偏置电阻为470Ω。④各个通信节点之间需要做好等电位连接,以保护通信口不因共模电压差而损坏或中断通信。⑤USS通信电缆应为屏蔽双绞线(建议使用西门子PROFIBUS电缆),电缆的屏蔽层须双端接地。8.4.3USS通信应用实例。2.西门子V20系列变频器通信参数设置可以通过选择连接宏Cn010实现USS通信,也可以通过直接修改变频器参数的方法来实现USS通信。修改变频器参数的步骤如下:(1)变频器恢复到出厂默认设置:设置参数P0010(调试参数过滤)=30,P0970(工厂复位)=1或者21。P0970=1:所有参数(不包括用户默认设置)复位至默认值;P0970=21:所有参数以及所有用户默认设置复位至工厂复位状态。参数P2010、P2021、P2023的值不受工厂复位影响。(2)设置用户访问级别为专家级:设置参数P0003(用户访问级别)=3。(3)选择命令源来源于RS485总线:设置参数P0700(选择命令源)=5。(4)选择设定值源来源于RS485总线:设置参数P1000(选择设定值源)=5。(5)设置RS485总线协议为USS协议:设置参数P2023(RS485协议选择)=1。设置参数P2010,即设置RS485上的USS通信速率。根据S7-200SMARTPLC通信口的限制,P2010设置为6对应9600bit/s,7对应19200bit/s,8对应38400bit/s,9对应57600bit/s,10对应76800bit/s,11对应93750bit/s,12对应115200bit/s。8.4.3USS通信应用实例(7)设置USS通信的站地址:设置参数P2011(USS站地址)=3,即USS站地址为3。V20的USS站地址要包含在CPU的USS_INIT指令Active参数激活的轮询地址表内。(8)设定USSPZD长度:设置参数P2012(PZD长度)=2,即USSPZD长度为2个字长。(9)设定USSPKW长度:设置参数P2013(PKW长度)=127,即USSPKW长度可变。(10)设置USS报文间断时间:参数P2014可设置范围为0~65535,单位为ms,表示RS485上的USS协议通信控制信号中断超时时间。如设置为0,则不在此端口进行超时检查;如果设定了超时时间,报文间隔超过此设定时间未接收到下一条信息,则变频器将会停止运行。通信恢复后此故障才能被复位。根据USS协议网络通信速率和站数的不同,USS报文间断时间设定值会不同。该参数的设置建议:当网络节点数多或通信距离远时,需增大该值,避免误判通信超时。(11)保存参数到EEPROM。设置参数P0971(从RAM向EEPROM传输数据)=1,上述设置参数将保存到变频器的EEPROM中。8.4.3USS通信应用实例3.程序编写(1)CPU启动时复位各个USS指令完成位以及其他状态位;调用USS_INIT指令启用、初始化USS通信,USS主站的轮询地址表中激活地址为3的从站;USS_INIT指令的Done完成位用于触发第一条USS_RPM_R指令的输入参数EN。复位USS指令状态位并初始化USS通信的程序如图8-24所示。8.4.3USS通信应用实例3.程序编写(2)调用USS_CTRL指令控制V20变频器的启停和速度改变,程序如图8-25所示。其中M0.0用于控制V20的启停,浮点数VD1000用于改变速度设定值。8.4.3USS通信应用实例3.程序编写(3)调用第一条USS_RPM_R指令,用于读取V20的实际输出频率(r0024),程序如图8-25所示。该条USS_RPM_R指令的Done完成位的上升沿信号,用于保存读取到的变频器参数值,同时复位该条USS_RPM_R指令的EN输入参数,并置位第二条USS_RPM_R指令的EN输入参数。调用第一条USS_RPM_R指令读取V20实际输出频率的示例,如图8-26所示。8.4.3USS通信应用实例3.程序编写(4)调用第二条USS_RPM_R指令,用于读取V20的实际输出电流(r0027),程序如图8-27所示。该条USS_RPM_R指令的Done完成位的上升沿信号,用于保存读取到的变频器参数值,同时复位该条USS_RPM_R指令的EN输入参数,并置位第一条USS_RPM_R指令的EN输入参数。8.4.3USS通信应用实例3.程序编写(5)为USS指令分配库存储器地址VB0~VB401。该库存储器分配的地址,不能与USS_RPM_R指令参数DB_Ptr指向的V存储器地址重叠,也不能与其他程序使用的地址重叠。8.5S7-200SMARTPLC之间的以太网通信S7-200SMARTPLC之间的以太网通信基于GET/PUT指令或向导实现,依托TCP/IP协议,支持高速、稳定的数据传输,适用于PLC间远距离、大容量的数据交互场景(如多PLC分布式控制系统的数据共享)。该通信方式无需复杂协议配置,通过定义IP地址和数据区域即可实现点对点通信,连接资源充足且操作便捷。8.5.1GET/PUT通信资源数量S7-200SMARTCPU(固件版本V2.0及以上)配备了GET/PUT指令,专门用于实现同系列CPU之间的以太网通信。在以太网通信编程中,可采用两种核心方式:一是直接调用GET/PUT指令,二是借助GET/PUT向导进行编程。8.5.1GET/PUT通信资源数量S7-200SMARTCPU以太网端口同时具有8个GET/PUT主动连接资源和8个GET/PUT被动连接资源。1.主动连接与被动连接(1)GET/PUT主动连接资源用于主动建立与远程PLC的通信连接,并对远程PLC进行数据读/写操作;GET/PUT被动连接资源用于被动地接受远程PLC的通信连接请求,并接受远程PLC对其进行数据读/写操作。(2)调用GET/PUT指令的PLC占用主动连接资源;相应的远程PLC占用被动连接资源。2.

8个GET/PUT主动连接资源(1)同一时刻最多能对8个不同IP地址的远程PLC进行GET/PUT指令的调用,第9个远程PLC的GET/PUT指令调用将被报错(无可用连接)。(2)已经成功建立的连接将被保持,直到远程PLC断电或者物理连接断开。(3)同一时刻对同一个远程PLC的多个GET/PUT指令的调用,只会占用本地PLC的一个主动连接资源,本地PLC与远程PLC之间只会建立一条连接通道,同一时刻触发的多个GET/PUT指令将会在这条连接通道上顺序执行。8.5.1GET/PUT通信资源数量3.

8个GET/PUT被动连接资源(1)S7-200SMARTCPU调用GET/PUT指令,执行主动连接的同时也可以被动地被其他远程PLC进行通信读/写。(2)S7-200SMART最多可以与8个不同IP地址的远程PLC建立被动连接。已经成功建立的连接将被保持,直到远程PLC断电或者物理连接断开。8.5.1GET/PUT通信资源数量4.PUT/GET指令格式S7-200SMARTCPU提供了PUT/GET指令,用于S7-200SMARTPLC之间的以太网通信。PUT/GET指令格式见表8-17。PUT/GET指令只需要在主动建立连接的PLC中调用执行,被动建立连接的PLC不需要进行通信编程。PUT/GET指令中TABLE参数用于定义远程PLC的IP地址,本地PLC和远程PLC的数据区域及通信长度。8.5.2GET/PUT指令应用实例在两个S7-200SMARTPLC之间进行以太网GET/PUT通信,所用的软件、硬件及通信任务如下所示:软件:STEP7-Micro/WINSMARTV2.8;硬件:通信主动端为S7-200SMARTPLC,IP地址为192.168.2.100;通信被动端为S7-200SMARTPLC,IP地址为192.168.2.101,硬件需配备以太网电缆实现两台PLC的物理连接,网络配置如图8-28所示;通信任务:PLC1(主动端)调用PUT/GET指令,将自身的实时时钟信息写入PLC2;同时将PLC2中的实时时钟信息读取到PLC1中。8.5.2GET/PUT指令应用实例1.PLC1主动端编程PLC1主程序中包含读取CPU实时时钟、初始化PUT/GET指令的TABLE参数表、调用PUT指令和GET指令等。(1)使用READ_RTC指令读取PLC1实时时钟,并将其存储到VB100至VB107,程序如图8-29所示。8.5.2GET/PUT指令应用实例1.PLC1主动端编程(2)定义PUT指令TABLE参数表,用于将PLC1的VB100~VB107传输到远程CPU2的VB0~VB7,程序如图8-30所示。程序的主要功能如下:①定义通信状态字节;②定义PLC2IP地址为192.168.2.101;③定义PLC2的通信区域,从VB0地址开始;④定义通信数据长度为8;⑤定义PLC1的通信区域,从VB100地址开始。8.5.2GET/PUT指令应用实例1.PLC1主动端编程(3)定义GET指令TABLE参数表,用于将远程PLC2的VB100~VB107读取到PLC1的VB0~VB7,程序如图所示。程序的主要功能如下:①定义通信状态字节;②定义PLC2的IP地址;③定义PLC2的通信区域,从VB100地址开始;④定义通信数据长度;⑤定义PLC1的通信区域,从VB0地址开始;8.5.2GET/PUT指令应用实例1.PLC1主动端编程(4)调用PUT指令和GET指令,程序如图8-32所示。2.PLC2被动端编程PLC2的主程序只需包含一条语句用于读取CPU的实时时钟,并存储到VB100~VB107,如图8-33所示。8.5.3使用GET/PUT向导编程PLC1的GET/PUT指令的编程也可以使用GET/PUT向导以简化编程步骤。该向导最多允许组态16项独立的GET/PUT操作,并生成子程序来协调这些操作。GET/PUT向导编程步骤如下:(1)在“工具”菜单功能区的“向导”区域单击Get/Put按钮,启动GET/PUT向导,如图8-34所示。8.5.3使用GET/PUT向导编程(2)在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释,如图8-35所示。其中点击“添加”按钮,添加PUT/GET操作;为每一个要使用的操作创建名称并添加注释。8.5.3使用GET/PUT向导编程(3)定义PUT/GET操作选择操作类型为PUT操作;设置通信数据长度为8;设置远程PLC的IP地址为192.168.2.101;设置本地PLC的通信区域和起始地址,从VB100地址开始;设置远程PLC的通信区域和起始地址,从VB0开始。选择操作类型为GET操作;设置通信数据长度为8;设置本地PLC的通信区域和起始地址,从VB0地址开始;设置远程PLC的通信区域和起始地址,从VB100开始。8.5.3使用GET/PUT向导编程(4)定义PUT/GET向导存储器地址分配,如图8-38所示。点击“建议”按钮向导会自动分配存储器地址。需要确保程序中已经占用的地址、PUT/GET向导中使用的通信区域与不能存储器分配的地址重复,否则将导致程序不能正常工作。8.5.3使用GET/PUT向导编程(5)在图8-38中点击“生成”按钮,向导将自动生成NET_EXE子例程、符号表等。在主程序中使用SM0.0调用NET_EXE子例程,即可启用程序内部的网络通信,如图8-39所示。NET_EXE子例程会依次执行已组态的GET和PUT操作。8.6开放式用户通信8.6.1开放式用户通信概述开放式用户通信(OpenUserCommunication,OUC)采用开放式标准,是S7-200SMARTPLC实现跨设备、跨系统通信的关键能力。它支持与第三方设备(如PC)及S7-300、400、1200、1500等系列PLC通信,依托TCP、ISO-on-TCP和UDP三种协议,基于OSI模型第4层(传输层)工作,借助第3层(网络层)的IP路由功能,为工业自动化场景中设备间数据交互提供支撑。8.6.1开放式用户通信概述1.TCPTCP是TCP/IP协议簇的核心,也是S7-200SMARTPLC开放式用户通信支持的协议之一。它提供面向连接、可靠安全的全双工通信服务。通信过程:需经历建立连接、数据传输、断开连接三个阶段。可靠性保障:基于重传机制和接收确认,确保数据无丢失、无差错。潜在问题:TCP是流式传输,不包含消息边界,可能导致接收方无法准确识别数据包的起始和结束,出现粘包或拆包现象。应用建议:为避免消息识别问题,建议在实际应用中,让通信双方约定并使用固定长度的数据块进行传输。8.6.1开放式用户通信概述2.ISO-on-TCPISO-on-TCP是基于RFC1006在TCP上扩展的面向消息的协议,工作于OSI第四层,使用102号端口,并通过TSAP(传输服务访问点)进行端点路由。连接建立:调用ISO_CONNECT指令,需配置伙伴地址、连接ID,并确保本地与远端TSAP交叉对应。数据传输:通过TCP_SEND发送数据,TCP_RECV接收数据。Done位表示接收完整,Error位表示消息被截断。连接终止:调用DISCONNECT指令终止指定ID的连接。8.6.1开放式用户通信概述3.UDPUDP是不面向连接的协议,无需建立连接即可发送数据,仅需指定目标IP和端口。特点:无应答机制,传输不可靠,但简单快速,面向消息,吞吐量更高。连接:无主动/被动之分,S7-200SMART最多支持8个独立UDP连接。通信流程:通过UDP_CONNECT注册本地连接,UDP_SEND发送数据,UDP_RECV接收数据。8.6.2指令介绍S7-200SMARTPLC的开放式用户通信指令库是实现设备与多种设备通信的关键工具,涵盖了建立连接、数据传输和断开连接等多种功能指令,开放式用户指令库如图8-40所示。OUC指令库中的指令分别用于TCP、UDP、ISO-on-TCP通信。具体的开放式用户通信指令见表8-18。8.6.2指令介绍TCP和ISO-on-TCP是面向连接的通信,数据交换之前首先需要建立连接。TCP_CONNECT和ISO_CONNECT指令分别用于建立TCP和ISO-on-TCP通信连接。连接建立后可使用TCP_SEND和TCP_RECV指令发送和接收数据。8.6.2指令介绍UDP是不面向连接的通信,发送和接收数据之前也需要调用UDP_CONNECT指令。该指令不是用于创建与通信伙伴的连接,而是用于告知CPU操作系统定义一个UDP通信服务。定义完UDP通信服务后,S7-200SMARTCPU就可使用UDP_SEND和UDP_RECV指令发送和接收数据了。DISCONNECT指令用于终止现有通信的连接并释放通信资源。8.6.2指令介绍TCP和UDP通信,在配置连接时需要使用IP地址和端口号作为通信端点。对于S7-200SMARTCPU有一些IP地址不能使用,如下所述:①0.0.0.0仅在CPU作为服务器时可用,表示接收所有连接请求;作为客户端时不可用。②不可用任何广播IP地址(如255.255.255.255)。③不可用任何多播地址。④不可填写本地CPU的IP地址,填写的IP地址为通信伙伴的IP地址。8.6.2指令介绍ISO-on-TCP通信时,必须同时为两个通信伙伴分配TSAP。TSAP的设置规则如下:TSAP须为S7-200SMARTCPU字符串数据类型。长度至少为2个字符,但不得超过16个ASCII字符。本地TSAP不能以字符串“SIMATIC-”开头。如果本地TSAP恰好为2个字符,则必须以十六进制字符“0xE0”开头。例如:TSAP“$E0$01”是合法的,而TSAP“$01$01”则是不合法的,其中“$”字符表示后续值为十六进制字符。8.6.2指令介绍1.TCP_CONNECT指令:用于建立TCP协议的面向连接通信。EN/Req/Active:EN为使能,Req上升沿触发连接操作;Active为TRUE时作客户端主动连接,FALSE为服务器被动监听。ConnectID:连接唯一标识符(0-65534),后续TCP通信指令需通过此ID关联连接。RemoteIP/RemotePort:指定远程设备的IP地址和端口号(1-49151),被动连接时RemotePort可设为0。LocalPort:本地端口号需唯一,严禁使用系统保留端口,建议使用1000-5000区间。01.输入参数(Inputs)Done/Busy:Done为TRUE表示连接建立成功且无错误;Busy为TRUE表示指令正在执行连接操作中。Error/Status:Error为TRUE表示连接失败;Status代码用于诊断,Done=1时Status=0,Done=0时Status指示具体失败原因。02.输出参数(Outputs)8.6.2指令介绍2.ISO_CONNECT指令:用于ISO-on-TCP通信建立连接。需要填写IP地址和TSAP。EN/Req/Active:EN为使能;Req上升沿触发建立连接操作;Active为TRUE时作客户端主动连接,FALSE为服务器被动监听。ConnID:连接唯一标识符(0-65534),后续ISO通信指令需通过此ID关联连接。IPAddr1~IPAddr4:指定远端设备IP地址四段八位字节,IPAddr1为IP最高有效字节,IPAddr4为最低有效字节。RemTsap:远端设备TSAP,主动连接时填写远端TSAP;被动连接时可设为空字符串。LocTsap:本地CPU的TSAP,主动连接时用于本地监听;被动连接时CPU开放该TSAP接收远端连接。01.输入参数(Inputs)Done/Busy:Done为TRUE表示连接建立成功且无错误;Busy为TRUE表示指令正在执行连接操作中。Error/Status:Error为TRUE表示连接失败;Status代码用于诊断,Done=1时Status=0,Done=0时Status指示具体失败原因。。02.输出参数(Outputs)8.6.2指令介绍3.TCP_SEND:使用TCP和ISO-on-TCP时,TCP_SEND指令用于将指定数量(Datalen)的发送缓冲区(DataPtr)数据,发送到已建立连接的通信伙伴。EN/Req:EN为使能;Req上升沿触发数据发送操作。ConnID:连接标识符,用于标识当前数据通过哪一条TCP连接进行发送。DataLen:要发送的数据长度,单位为字节,取值范围1~1024。DataPtr:指向待发送数据缓冲区的内存指针。01.输入参数(Inputs)Done/Busy:Done为TRUE表示数据发送完成且无错误;Busy为TRUE表示指令正在执行数据发送操作中。Error/Status:Error为TRUE表示发送操作异常报错;Status代码用于故障诊断,Done=1时Status=0,Done=0时Status指示具体发送失败原因。02.输出参数(Outputs)8.6.2指令介绍4.TCP_RECV使用TCP和ISO-on-TCP时,TCP_RECV指令将接收到的数据复制到由DataPtr指定的数据缓冲区。EN:使能输入。ConnID:连接标识符,有效范围0~65534,需与建立连接的TCP_CONNECT/ISO_CONNECT指令ConnID保持一致,指定本次接收操作使用的连接通道。MaxLen:接收数据的最大长度,上限1024字节。DataPtr:接收缓冲区首地址指针,支持I、Q、V、M存储区,用于存放接收到的数据。01.输入参数(Inputs)Done/Busy:Done为TRUE代表数据接收完成且无错误;Busy为TRUE表示指令正在执行接收操作,完成或报错后复位为FALSE。Error/Status:Error为TRUE代表接收操作发生故障;Status为诊断状态码,Done=1时Status=0,Done=0时Status标识具体接收失败原因,需查阅手册解析。Length:实际收到的数据字节长度,仅当Done或Error置位时该参数有效。02.输出参数(Outputs)8.6.2指令介绍(1)TCP_RECV指令行为使用TCP_RECV指令时,一次执行TCP_RECV指令后,CPU将通过指定连接接收数据,此时指令会置位忙态。下一次执行TCP_RECV指令时将第一次调用TCP_RECV指令后CPU接收到的所有字节复制到程序的数据区(DataPtr),并在指令的Length参数输出接收到的字节长度。8.6.2指令介绍(2)TCP_RECV指令的操作1)使用TCP协议因为TCP是“流”协议,在TCP协议中没有开始或结束标记,所以程序必须足够频繁地调用TCP_RECV指令以确保正确地接收数据。例如:发送方发送20字节数据,TCP_RECV指令的MaxLen设置为40字节,发送方发送数据时,接收指令EN禁止接通,发送方连续两次发送20字节的消息给CPU。对于TCP通信,接收使用使能接通,将只接收一条40字节的消息。2)使用ISO-on-TCP协议ISO-on-TCP协议有开始和结束标记,TCP_RECV指令则可以在以单独消息的形式接收发送方发送的所有消息并保持,TCP_RECV指令每次调用均可以正确地接收发送方发送的数据。例如:发送方发送20字节数据,TCP_RECV指令的MaxLen设置为40字节。发送方发送数据时,接收指令EN禁止接通;发送方连续两次发送20字节的消息给CPU。对于ISO-on-TCP通信,接收方要接收两次数据,接收两条20字节的消息。建议TCP_RECV指令的EN端保持常通,以确保数据及时接收。8.6.2指令介绍(3)TCP_RECV指令的接收缓冲区使能接收指令后,在一条消息中最多可以接收1024字节的数据。如果CPU接收到的数据字节数大于TCP_RECV指令设置的MaxLen,TCP_RECV指令只接收MaxLen字节长度的数据。因此,建议用户将发送方发送的数据长度和TCP_RECV的MaxLen设定为相等。例如:发送方发送20字节数据,TCP_RECV指令的MaxLen设置为15。接收方将只接收前15字节,字节16~20的数据被舍弃。此时,TCP_RECV指令的输出参数Done始终为0,Error置位为1,Status输出25,表示接收缓冲区过小,实际接收字节数Length为15。8.6.2指令介绍5.UDP_CONNECT指令UDP_SEND指令用于UDP通信时向伙伴方发送数据。S7-200SMARTPLC进行UDP通信时不支持广播,也不支持组播。EN:使能输入。Req:请求建立连接操作,上升沿触发。ConnID:连接标识符,取值范围0~65534,用于关联后续UDP收发指令。LocPort:本地CPU端口号;有效范围1~49151,禁止使用系统保留端口,推荐2000~5000区间;多个被动UDP连接时本地端口必须唯一不重复。01.输入参数(Inputs)Done/Busy:Done为TRUE代表本地端口成功打开、可收发UDP数据;Busy为TRUE代表指令正在执行端口打开操作,完成或报错后复位为FALSE。Error/Status:Error为TRUE表示端口打开操作出现故障;Status为诊断状态码,Done=1时Status=0(无错误),Done=0时Status为故障代码,查阅手册可定位失败原因。02.输出参数(Outputs)8.6.2指令介绍5.UDP_CONNECT指令UDP_SEND指令用于UDP通信时向伙伴方发送数据。S7-200SMARTPLC进行UDP通信时不支持广播,也不支持组播。EN:使能输入。Req:请求建立连接操作,上升沿触发。ConnID:连接标识符,取值范围0~65534,用于关联后续UDP收发指令。LocPort:本地CPU端口号;有效范围1~49151,禁止使用系统保留端口,推荐2000~5000区间;多个被动UDP连接时本地端口必须唯一不重复。01.输入参数(Inputs)Done/Busy:Done为TRUE代表本地端口成功打开、可收发UDP数据;Busy为TRUE代表指令正在执行端口打开操作,完成或报错后复位为FALSE。Error/Status:Error为TRUE表示端口打开操作出现故障;Status为诊断状态码,Done=1时Status=0(无错误),Done=0时Status为故障代码,查阅手册可定位失败原因。02.输出参数(Outputs)8.6.2指令介绍6.UDP_SEND指令UDP_SEND指令将来自请求的缓冲区位置的请求的字节数传输到通过IP地址和端口指定的设备。该指令仅用于UDP协议和通过UDP_CONNECT创建的连接。EN/Req:EN为使能输入;Req上升沿触发数据发送操作。ConnID:连接标识符,取值范围0~65534,匹配UDP_CONNECT开启的本地端口通道。DataLen:待发送数据字节长度,取值范围1~1024。DataPtr:指向待发送数据缓冲区的指针。IPaddr1~IPaddr4:远端设备四段IP地址,IPaddr1为IP最高有效字节,IPaddr4为最低有效字节。RemPort:远端设备端口号,有效范围1~49151。01.输入参数(Inputs)Done/Busy:Done为TRUE代表数据发送完成且无错误;Busy为TRUE代表指令正在执行发送操作。Error/Status:Error为TRUE代表发送操作异常;Status为故障诊断码,Error置位时显示错误代码,Busy或Done置位时Status值为0。02.输出参数(Outputs)8.6.2指令介绍6.UDP_SEND指令UDP_SEND指令将来自请求的缓冲区位置的请求的字节数传输到通过IP地址和端口指定的设备。该指令仅用于UDP协议和通过UDP_CONNECT创建的连接。EN/Req:EN为使能输入;Req上升沿触发数据发送操作。ConnID:连接标识符,取值范围0~65534,匹配UDP_CONNECT开启的本地端口通道。DataLen:待发送数据字节长度,取值范围1~1024。DataPtr:指向待发送数据缓冲区的指针。IPaddr1~IPaddr4:远端设备四段IP地址,IPaddr1为IP最高有效字节,IPaddr4为最低有效字节。RemPort:远端设备端口号,有效范围1~49151。01.输入参数(Inputs)Done/Busy:Done为TRUE代表数据发送完成且无错误;Busy为TRUE代表指令正在执行发送操作。Error/Status:Error为TRUE代表发送操作异常;Status为故障诊断码,Er

温馨提示

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

评论

0/150

提交评论