时间间隔定时器指令2020/3/25电气控制与PLC2时间间隔定时器指令:触发时间间隔指令(BITIM)和计算时间间隔指令(CITIM)。BITIM指令:读内置的1ms计数器的当前值,并将此值存储到OUT中,双字ms值的最大定时间隔是2的32次幂或49.7天。CITIM指令:计算当前时间和IN提供的值之间的时间差,时间差被存储到OUT中,双字ms值的最大定时间隔是2的32次幂或49.7天。依据BITIM指令执行的时间,CITIM自动处理在最大间隔内发生的1ms定时器翻转。LADFBDSTL操作数BGN-ITIMEENENOOUTBGN-ITIMEENENOOUTBITIMOUTCAL-ITIMEENENOOUTCAL-ITIMEENENOOUTCITIMIN,OUTININOUT:ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*LD、*ACIN:ID、QD、VD、MD、SMD、SD、LD、HC、AC、*VD、*LD、*AC高速计数器指令2020/3/25电气控制与PLC3用于对S7-200扫描速率无法控制的高速事件进行计数,最高计数频率取决于CPU的类型。高速计数器指令包括定义高速计数器指令(HDEF)和高速计数指令(HSC)。DEF指令:为指定的高速计数器HSCx选择操作模式,决定高速计数器的时钟、方向、启动和复位功能,每一个高速计数器使用一条定义高速计数器指令。HDEF指令ENO=0的错误条件为:输入点冲突(代码0003)、中断中的非法指令(0004)和HSC重复定义(代码000A)。HSC指令:在HSC特殊存储器位状态的基础上,配置和控制高速计数器,参数N指定高速计数器的标号。高速计数器可以配置为12种模式中的任意一种(见表7-2)。每一个高速计数器都有时钟、方向控制、复位、启动的特定输入。对于双相计数器,两个时钟都可以运行在最高频率。在正交模式下,可以选择一倍速(1x)或4倍速(4x)计数频率。所有计数器都可以运行在最高频率下而互不影响。HSC指令ENO=0的错误条件为:在HDEF指令之前执行HSC指令(代码0001)和同时执行HSC/PLS(代码0005)。LADFBDSTLENENOENENOHDEFHSCMODEENENOHDEFHSCMODEENENOHSCHSCNNHSC:字节常数MODE:字节常数N:字常数HSCNHDEFHSC,MODE操作数高速计数器指令2020/3/25电气控制与PLC4高速计数器的编程必须完成定义计数器和模式、设置控制字节、设置初始值、设置预置值、指定并使能中断服务程序和激活高速计数器等基本操作。HDEF指令定义计数器的模式和输入。与HSC相关的时钟、方向控制、复位和启动输入点如表所示。同一个输入点不能用于两个不同的功能,但任何一个没有被高速计数器当前模式使用的输入点,可用作其他用途。HSC可以有最多三个控制位用于配置复位和启动信号的有效状态以及选择一倍或者4倍计数模式(仅用于正交计数器),这些位位于各个计数器的控制字节中,如表所示。这些位只有在HDEF指令执行时使用,在执行HDEF指令前,必须把这些控制位设定到希望的状态,否则,计数器对计数模式的选择取缺省模式。一旦HDEF指令被执行,除非先进入STOP模式,否则不能再更改计数器的设置。高速计数器指令2020/3/25电气控制与PLC5高速计数器对应的控制字节其他控制位的功能如表所示,其控制功能包括使能或者禁止计数器、控制计数方向(模式0、1和2)或者对所有其它模式定义初始化计数方向、初始值与预置值的更新控制等。高速计数器指令2020/3/25电气控制与PLC6设置初始值与预置值:每个高速计数器都有一个32位的初始值和一个32位的预置值,都是符号整数。为了向高速计数器装入新的初始值和预置值,必须先设置控制字节,并且把初始值和预置值存入特殊存储器中,然后执行HSC指令,从而将新的值传送到高速计数器。每个高速计数器的当前值只能使用数据类型HCx的格式进行读取,可用读操作指令直接访问当前值,但是写操作只能用HSC指令实现。HSC初始值、预置值和当前值特殊存储器如表所示。中断服务:所有计数器模式都支持在HSC的当前值等于预设值时产生一个中断事件,使用外部复位端的计数模式支持外部复位中断。除模式0、1和2外,所有计数器模式支持计数方向改变中断,每种中断条件都可以分别使能或禁止。需要注意的是:当使用外部复位中断时,不要写入初始值,或者在该中断服务程序中禁止再使能允许高速计数器,否则会产生致命的错误。每个高速计数器都有一个状态字节,其中的存储位指出了当前计数方向,当前值是否大于或等于预置值,如表所示。同样需要注意的是:只有在执行中断服务程序时,状态位才有效,监视高速计数器状态的目的是使其他事件能够产生中断以完成更重要的操作。高速计数器指令2020/3/25电气控制与PLC7时钟指令2020/3/25电气控制与PLC8读实时时钟指令(TODR):从硬件时钟中读取当前日期,并把它装载到一个8字节、起始地址为T的时间缓冲区。写实时时钟指令(TODW):将当前时间和日期写入硬件时钟,当前时钟存储在以地址T开始的8字节时间缓冲区中。时钟指令见表。使ENO=0的错误条件:间接寻址(代码:0006)、TOD数据错误(代码:0007,只对写实时时钟指令有效)、时钟模块不存在(代码:000C)。时钟指令所有日期和时间值必须按照BCD码的格式编码,如图所示。时间和日期(TOD)时钟在电源掉电或内存丢失后,初始化日期和时间为:日期01-Jan-90、时间00:00:00、星期日。LADFBDSTL操作数WRITE_RTCTODWTTENENOWRITE_RTCTENENOREAD_RTCTODRTTENENOREAD_RTCTENENOT:IB、QB、VB、MB、SMB、SB、LB、*VD、*LD、*AC网络读写指令2020/3/25电气控制与PLC9网络读指令(NETR):初始化一个通信操作,根据表TBL的定义,通过指定端口从远程设备上采集数据。NETR指令可以从远程站点读取最多16字节的信息。网络写指令(NETW):初始化一个通信操作,根据表TBL的定义,通过指定端口向远程设备写数据。NETW指令可以向远程站点写最多16字节的信息。在程序中,可以使用任意条网络读写指令,但在同一时间,最多只能有总共8条网络读写指令被激活。使ENO=0的错误条件为:间接寻址(代码0006)、功能返回出错(置位表状态字节中的E)。LADFBDSTL操作数ENENOENENOENOENENOENTBLTBLPORTPORTNETRNETRNETWNETWTBLTBLPORTPORTNETWTBL,PORTNETRTBL,PORTPORT:常数0或1TBL:VB、MB、*VD、*LD、*AC发送和接收指令2020/3/25电气控制与PLC10发送指令(XMT):用于在自由口模式下依靠通信口发送数据。接收指令(RCV):启动或者终止接收信息功能,必须为接收操作指定开始和结束条件。从指定的通信口接收到的信息被存储在数据缓冲区TBL中,数据缓冲区的第一个数据指明了接收到的字节数。使ENO=0的错误条件为:间接寻址(代码0006)、在PORT0同时发送和接收(代码0009)、在PORT1同时发送和接收(代码000B)、RCV参数错误(置位SM86.6或SM186.6)、S7-200CPU未处于自由口模式等。LADFBDSTL操作数RCVRCVTBL,PORTPORTENENORCVPORTENENOXMTXMTTBL,PORTPORTENENOXMTPORTENENOTBLTBLTBLTBLTBL:IB、QB、VB、MB、SMB、SB、*VD、*LD、*ACPORT:常数0或1发送和接收指令2020/3/25电气控制与PLC11通过编程,可以选择自由口模式来控制S7-200的串行通信口,当选择了自由口模式,用户程序通过使用接收中断、发送中断、发送指令和接收指令来控制通信口的操作通信协议完全由梯形图程序控制,SMB30(对于端口0)和SMB130(对于端口1)用于选择波特率和校验类型。当S7-200处于STOP模式时,自由口模式被禁止,重新建立正常的通信。只有当S7-200处于RUN模式时,才能进行自由口通信,使能自由口模式,应该在SMB30(端口0)或者SMB130(端口1)的协议选择区设置01,处于自由口通讯模式时不能与编程设备通信。可以使用特殊寄存器SM0.7来控制自由口模式,当SM0.7=0,开关处于TERM位置;SM0.7=1,开关处于RUN位置。SMB30和SMB130分别配置通信口0和通信口1,并且为自由口操作提供波特率、校验和数据位数的选择,控制字节如图所示,每个配置都产生一个停止位。发送和接收指令2020/3/25电气控制与PLC12发送指令发送一个或多个字节的缓冲区,最多255个,发送缓冲区的格式如图a所示。如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区中的最后一个字时,则会产生一个中断(对端口0为中断事件9,对端口1为中断事件26)。可以不使用中断来执行发送指令,通过监视SM4.5或SM4.6的信号,判断发送是否完成。把字符数设置为0并执行XMT指令,可产生一个BREAK状态,这样产生的BREAK状态,在线上会持续以当前波特率传输16位数据所需要的时间,发送BREAK和发送其他任何信息的操作是一样的。当BREAK完成时,产生一个发送中断并且SM4.5或SM4.6反应发送操作的当前状态。接收指令接收一个或多个字节的缓冲区,最多255个,接收缓冲区的格式如图b所示。如果有一个中断服务程序连接到接受信息完成事件上,在接收完缓冲区中的最后一个字符时,S7-200会产生一个中断(对端口0为中断事件23,对端口1为中断事件24)。可以不使用中断,通过监视SMB86(端口0)或者SMB186(端口1)来接收信息,当接收指令未被激活或者已经被中止时,这一字节不为0;当接收正在进行时,这一字节为0。发送和接收指令2020/3/25电气控制与PLC13接收指令允许选择信息的起始和结束条件,使用SMB86~SMB94对端口0进行设置,SMB186~SMB194对端口1进行设置。当超限或有校验错误时,接收信息功能会自动终止,必须为接收信息功能定义一个起始条件和一个结束条件(最大字符数)。接收指令用接收信息控制字节(SMB87或SMB187)中的位来定义信息起始和结束条件。当接收指令执行时,在接收口上有来自其他器件的信号,接收信息功能有可能从一个字符的中间开始接收字符,从而导致校验错误和接收信息功能的中止。如果校验没有被使能,接收到的信息有可能包含错误字符。当起始条件被指定为一个特定的起始字符或者任意字符时,这种情况有可能发生。如果指定包含一个停顿或者一个空闲线检测的起始条件,在将字符放到信息缓冲区之前,用一个字符的起始来强制接收信息功能和信息的起始相同步,可以避免以上问题。发送和接收指令2020/3/25电气控制与PLC14接收指令支持的几种起始条件:空闲线检测空闲线条件是指在传输线上一段安静或者空闲的时间。在SMW90或者SMW190中指定其毫秒数。当接收指令在程序中执行时,接收信息功能对空闲线条件进行检测,如果在空闲线时间到之前接收到任何字符,接收信息功能会忽略那些字符并且按照SMW90或SMW190中给定的时间值重新启动空闲线定时器,如图所示。在空闲线时间到之后,接收信息功能将所有接收到的字符存入信息缓冲区。空闲线时间应该总是大于在指定波特率下传输一个字符(包括起始位、数据位、校验位和停止位的时间),空闲线时间的典型值为在指定波特率下传输3个字符的时间。对于二进制协议、没有特定起始字符的协议或者指定了信息之间最小时间间隔的协议,可以使用空闲线检测作为起始条件。设置:il=1,sc=0,bk=0,SMW90/SMW190=空闲线超时时间(单位为ms)。发送和接收指令20