1、西门子S7-200系列PLC应用指令Prof.Qi HanhongYanshan U2022-8-161电气控制与电气控制与PLC时间间隔定时器指令2022-8-16电气控制与电气控制与PLC2u 时间间隔定时器指令时间间隔定时器指令:触发时间间隔指令(触发时间间隔指令(BITIM)和和计算时间间隔指令(计算时间间隔指令(CITIM)。)。u BITIM指令指令:读内置的读内置的1ms计数器的当前值,并将此值存储到计数器的当前值,并将此值存储到OUT中,双字中,双字ms值的最值的最大定时间隔是大定时间隔是2的的32次幂或次幂或49.7天。天。u CITIM指令指令:计算当前时间和计算当前时间和
2、IN提供的值之间的时间差,时间差被存储到提供的值之间的时间差,时间差被存储到OUT中,双中,双字字ms值的最大定时间隔是值的最大定时间隔是2的的32次幂或次幂或49.7天。依据天。依据BITIM指令执行的时间,指令执行的时间,CITIM自动自动处理在最大间隔内发生的处理在最大间隔内发生的1ms定时器翻转。定时器翻转。LADFBDSTL 操作数BGN-ITIMEENENOOUTBGN-ITIMEENENOOUTBITIM OUTCAL-ITIMEENENOOUTCAL-ITIMEENENOOUTCITIM IN,OUTININOUT:ID、QD、VD、MD、SMD、SD、LD、AC、*VD、*L
3、D、*ACIN:ID、QD、VD、MD、SMD、SD、LD、HC、AC、*VD、*LD、*AC高速计数器指令2022-8-16电气控制与电气控制与PLC3u 用于对用于对S7-200扫描速率无法控制的高速事件进行计数,最高计数频率取决于扫描速率无法控制的高速事件进行计数,最高计数频率取决于CPU的类的类型。高速计数器指令包括定义型。高速计数器指令包括定义高速计数器指令(高速计数器指令(HDEF)和和高速计数指令(高速计数指令(HSC)。u DEF指令指令:为指定的高速计数器为指定的高速计数器HSCx选择操作模式,决定高速计数器的时钟、方向、选择操作模式,决定高速计数器的时钟、方向、启动和复位功
4、能,每一个高速计数器使用一条定义高速计数器指令。启动和复位功能,每一个高速计数器使用一条定义高速计数器指令。HDEF指令指令ENO=0的的错误条件为:输入点冲突(代码错误条件为:输入点冲突(代码0003)、中断中的非法指令()、中断中的非法指令(0004)和)和HSC重复定义重复定义(代码(代码000A)。)。u HSC指令指令:在在HSC特殊存储器位状态的基础上,配置和控制高速计数器,参数特殊存储器位状态的基础上,配置和控制高速计数器,参数N指定指定高速计数器的标号。高速计数器可以配置为高速计数器的标号。高速计数器可以配置为12种模式中的任意一种(见表种模式中的任意一种(见表7-2)。每一个
5、)。每一个高速计数器都有时钟、方向控制、复位、启动的特定输入。对于双相计数器,两个时钟高速计数器都有时钟、方向控制、复位、启动的特定输入。对于双相计数器,两个时钟都可以运行在最高频率。在正交模式下,可以选择一倍速(都可以运行在最高频率。在正交模式下,可以选择一倍速(1x)或)或4倍速(倍速(4x)计数频率。)计数频率。所有计数器都可以运行在最高频率下而互不影响。所有计数器都可以运行在最高频率下而互不影响。HSC指令指令ENO=0的错误条件为:在的错误条件为:在HDEF指令之前执行指令之前执行HSC指令(代码指令(代码0001)和同时执行)和同时执行HSC/PLS(代码(代码0005)。)。LA
6、DFBDSTLENENOENENO HDEFHSCMODEENENO HDEFHSCMODEENENO HSC HSCNNHSC:字节常数MODE:字节常数N:字常数HSC NHDEF HSC,MODE 操作数高速计数器指令2022-8-16电气控制与电气控制与PLC4u 高速计数器的编程必须完成定义计数器和高速计数器的编程必须完成定义计数器和模式、设置控制字节、设置初始值、设置预置模式、设置控制字节、设置初始值、设置预置值、指定并使能中断服务程序和激活高速计数值、指定并使能中断服务程序和激活高速计数器等基本操作。器等基本操作。u HDEF指令定义计数器的模式和输入。指令定义计数器的模式和输入
7、。u 与与HSC相关的时钟、方向控制、复位和启相关的时钟、方向控制、复位和启动输入点如表所示。同一个输入点不能用于两动输入点如表所示。同一个输入点不能用于两个不同的功能,但任何一个没有被高速计数器个不同的功能,但任何一个没有被高速计数器当前模式使用的输入点,可用作其他用途。当前模式使用的输入点,可用作其他用途。u HSC可以有最多三个控制位用于配置复位可以有最多三个控制位用于配置复位和启动信号的有效状态以及选择一倍或者和启动信号的有效状态以及选择一倍或者4倍倍计数模式(仅用于正交计数器),这些位位于计数模式(仅用于正交计数器),这些位位于各个计数器的控制字节中,如表所示。这些位各个计数器的控制
8、字节中,如表所示。这些位只有在只有在HDEF指令执行时使用,在执行指令执行时使用,在执行HDEF指令前,必须把这些控制位设定到希望的状态,指令前,必须把这些控制位设定到希望的状态,否则,计数器对计数模式的选择取缺省模式。否则,计数器对计数模式的选择取缺省模式。一旦一旦HDEF指令被执行,除非先进入指令被执行,除非先进入STOP模模式,否则不能再更改计数器的设置。式,否则不能再更改计数器的设置。高速计数器指令2022-8-16电气控制与电气控制与PLC5高速计数器对应的高速计数器对应的控制字节其他控制位的功能控制字节其他控制位的功能如表所示,其控制功能包括使能或者禁止如表所示,其控制功能包括使能
9、或者禁止计数器、控制计数方向(模式计数器、控制计数方向(模式0、1和和2)或者对所有其它模式定义初始化)或者对所有其它模式定义初始化计数计数方向、初始方向、初始值与预置值的更新控制等。值与预置值的更新控制等。高速计数器指令2022-8-16电气控制与电气控制与PLC6设置初始值与预置值设置初始值与预置值:每个高速计数器都有一个每个高速计数器都有一个32位的初始值和一个位的初始值和一个32位的预置值,都位的预置值,都是符号整数。为了向高速计数器装入新的初始值和预置值,必须先设置控制字节,并且是符号整数。为了向高速计数器装入新的初始值和预置值,必须先设置控制字节,并且把初始值和预置值存入特殊存储器
10、中,然后执行把初始值和预置值存入特殊存储器中,然后执行HSC指令,从而将新的值传送到高速计指令,从而将新的值传送到高速计数器。每个高速计数器的当前值只能使用数据类型数器。每个高速计数器的当前值只能使用数据类型HCx的格式进行读取,可用读操作指的格式进行读取,可用读操作指令直接访问当前值,但是写操作只能用令直接访问当前值,但是写操作只能用HSC指令实现。指令实现。HSC初始值、预置值和当前值特初始值、预置值和当前值特殊存储器如表所示。殊存储器如表所示。中断服务中断服务:所有计数器模式都支持在所有计数器模式都支持在HSC的当前值等于的当前值等于预设值时产生一个中断事件,使用外部复位端的计数模预设值
11、时产生一个中断事件,使用外部复位端的计数模式支持外部复位中断。除模式式支持外部复位中断。除模式0、1和和2外,所有计数器外,所有计数器模式支持计数方向改变中断,每种中断条件都可以分别模式支持计数方向改变中断,每种中断条件都可以分别使能或禁止。需要注意的是:当使用外部复位中断时,使能或禁止。需要注意的是:当使用外部复位中断时,不要写入初始值,或者在该中断服务程序中禁止再使能不要写入初始值,或者在该中断服务程序中禁止再使能允许高速计数器,否则会产生致命的错误。每个高速计允许高速计数器,否则会产生致命的错误。每个高速计数器都有一个状态字节,其中的存储位指出了当前计数数器都有一个状态字节,其中的存储位
12、指出了当前计数方向,当前值是否大于或等于预置值,如表所示。同样方向,当前值是否大于或等于预置值,如表所示。同样需要注意的是:只有在执行中断服务程序时,状态位才需要注意的是:只有在执行中断服务程序时,状态位才有效,监视高速计数器状态的目的是使其他事件能够产有效,监视高速计数器状态的目的是使其他事件能够产生中断以完成更重要的操作生中断以完成更重要的操作。高速计数器指令2022-8-16电气控制与电气控制与PLC7时钟指令2022-8-16电气控制与电气控制与PLC8u 读实时时钟指令(读实时时钟指令(TODR):从硬件时钟中读取当前日期,并把它装载到一个从硬件时钟中读取当前日期,并把它装载到一个8
13、字节、字节、起始地址为起始地址为T的时间缓冲区。的时间缓冲区。u 写实时时钟指令(写实时时钟指令(TODW):将当前时间和日期写入硬件时钟,当前时钟存储在以地将当前时间和日期写入硬件时钟,当前时钟存储在以地址址T开始的开始的8字节时间缓冲区中。时钟指令见表。字节时间缓冲区中。时钟指令见表。u 使使ENO=0的错误条件的错误条件:间接寻址(代码:间接寻址(代码:0006)、)、TOD数据错误(代码:数据错误(代码:0007,只对,只对写实时时钟指令有效)、时钟模块不存在(代码:写实时时钟指令有效)、时钟模块不存在(代码:000C)。)。u 时钟指令所有日期和时间值必须按照时钟指令所有日期和时间值
14、必须按照BCD码的格式编码,如图所示。码的格式编码,如图所示。u 时间和日期(时间和日期(TOD)时钟在电源掉电或内存丢失后,初始化日期和时间为:日期)时钟在电源掉电或内存丢失后,初始化日期和时间为:日期01-Jan-90、时间、时间00:00:00、星期日。、星期日。LADFBDSTL 操作数WRITE_RTCTODW TTENENOWRITE_RTCTENENOREAD_RTCTODR TTENENOREAD_RTCTENENOT:IB、QB、VB、MB、SMB、SB、LB、*VD、*LD、*AC网络读写指令2022-8-16电气控制与电气控制与PLC9u 网络读指令(网络读指令(NETR
15、):初始化一个通信操作,根据表初始化一个通信操作,根据表TBL的定义,通过指定端口从远程设备上的定义,通过指定端口从远程设备上采集数据采集数据。NETR指令可以从远程站点读取最多指令可以从远程站点读取最多16字节的信息。字节的信息。u 网络写指令(网络写指令(NETW):初始化一个通信操作,根据表初始化一个通信操作,根据表TBL的定义,通过指定端口向远程设备写的定义,通过指定端口向远程设备写数据数据。NETW指令可以向远程站点写最多指令可以向远程站点写最多16字节的信息。字节的信息。u 在程序中,可以使用任意条网络读写指令,但在同一时间,最多只能有总共在程序中,可以使用任意条网络读写指令,但在
16、同一时间,最多只能有总共8条网络读写指令被激条网络读写指令被激活。活。使使ENO=0的错误条件为的错误条件为:间接寻址(代码:间接寻址(代码0006)、功能返回出错(置位表状态字节中的)、功能返回出错(置位表状态字节中的E)。)。LADFBDSTL 操作数ENENOENENOENOENENOENTBLTBLPORTPORT NETR NETR NETW NETWTBLTBLPORTPORTNETW TBL,PORTNETR TBL,PORTPORT:常数0或1TBL:VB、MB、*VD、*LD、*AC发送和接收指令2022-8-16电气控制与电气控制与PLC10u 发送指令(发送指令(XMT)
17、:用于在自由口模式下依靠通信口发送数据。用于在自由口模式下依靠通信口发送数据。u 接收指令(接收指令(RCV):启动或者终止接收信息功能,必须为接收操作指定开始启动或者终止接收信息功能,必须为接收操作指定开始和结束条件。和结束条件。u 从指定的通信口接收到的信息被存储在数据缓冲区从指定的通信口接收到的信息被存储在数据缓冲区TBL中,数据缓冲区的第中,数据缓冲区的第一个数据指明了接收到的字节数。一个数据指明了接收到的字节数。u 使使ENO=0的错误条件为的错误条件为:间接寻址(代码:间接寻址(代码0006)、在)、在PORT0同时发送和接收同时发送和接收(代码(代码0009)、在)、在PORT1
18、同时发送和接收(代码同时发送和接收(代码000B)、)、RCV参数错误(置位参数错误(置位SM86.6或或SM186.6)、)、S7-200 CPU未处于自由口模式等。未处于自由口模式等。LADFBDSTL 操作数 RCVRCV TBL,PORTPORTENENO RCVPORTENENO XMTXMT TBL,PORTPORTENENO XMTPORTENENOTBLTBLTBLTBLTBL:IB、QB、VB、MB、SMB、SB、*VD、*LD、*ACPORT:常数0或1发送和接收指令2022-8-16电气控制与电气控制与PLC11u 通过编程,可以选择自由口模式来控制通过编程,可以选择自由
19、口模式来控制S7-200的串行通信口,当选择了自由口模式,用户程序通的串行通信口,当选择了自由口模式,用户程序通过使用接收中断、发送中断、发送指令和接收指令来控制通信口的操作通信协议完全由梯形图程序过使用接收中断、发送中断、发送指令和接收指令来控制通信口的操作通信协议完全由梯形图程序控制,控制,SMB30(对于端口(对于端口0)和)和SMB130(对于端口(对于端口1)用于选择波特率和校验类型。)用于选择波特率和校验类型。u 当当S7-200处于处于STOP模式时,自由口模式被禁止,重新建立正常的通信。模式时,自由口模式被禁止,重新建立正常的通信。u 只有当只有当S7-200处于处于RUN模式
20、时,才能进行自由口通信,使能自由口模式,应该在模式时,才能进行自由口通信,使能自由口模式,应该在SMB30(端口(端口0)或者或者SMB130(端口(端口1)的协议选择区设置)的协议选择区设置01,处于自由口通讯模式时不能与编程设备通信。,处于自由口通讯模式时不能与编程设备通信。u 可以使用特殊寄存器可以使用特殊寄存器SM0.7来控制自由口模式,当来控制自由口模式,当SM0.7=0,开关处于,开关处于TERM位置;位置;SM0.7=1,开,开关处于关处于RUN位置。位置。u SMB30和和SMB130分别配置通信口分别配置通信口0和通信口和通信口1,并且为自由口操作提供波特率、校验和数据位数,
21、并且为自由口操作提供波特率、校验和数据位数的选择,控制字节如图所示,每个配置都产生一个停止位的选择,控制字节如图所示,每个配置都产生一个停止位。发送和接收指令2022-8-16电气控制与电气控制与PLC12u 发送指令发送一个或多个字节的缓冲区,最多发送指令发送一个或多个字节的缓冲区,最多255个,发送缓冲区的格式如图个,发送缓冲区的格式如图a所示。所示。u 如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区中的最后一个字时,则会产生如果有一个中断服务程序连接到发送结束事件上,在发送完缓冲区中的最后一个字时,则会产生一一 个中断(对端口个中断(对端口0为中断事件为中断事件9,对端口,对
22、端口1为中断事件为中断事件26)。)。u 可以不使用中断来执行发送指令,通过监视可以不使用中断来执行发送指令,通过监视SM4.5或或SM4.6的信号,判断发送是否完成。的信号,判断发送是否完成。u 把字符数设置为把字符数设置为0并执行并执行XMT指令,可产生一个指令,可产生一个BREAK状态,这样产生的状态,这样产生的BREAK状态,在线上状态,在线上会持续以当前波特率传输会持续以当前波特率传输16位数据所需要的时间,发送位数据所需要的时间,发送BREAK和发送其他任何信息的操作是一样的。和发送其他任何信息的操作是一样的。u 当当BREAK完成时,产生一个发送中断并且完成时,产生一个发送中断并
23、且SM4.5或或SM4.6反应发送操作的当前状态。反应发送操作的当前状态。u 接收指令接收一个或多个字节的缓冲区,最多接收指令接收一个或多个字节的缓冲区,最多255个,接收缓冲区的格式如图个,接收缓冲区的格式如图b所示。所示。u 如果有一个中断服务程序连接到接受信息完成事件上,在接收完缓冲区中的最后一个字符时,如果有一个中断服务程序连接到接受信息完成事件上,在接收完缓冲区中的最后一个字符时,S7-200会产生一个中断(对端口会产生一个中断(对端口0为中断事件为中断事件23,对端口,对端口1为中断事件为中断事件24)。)。u 可以不使用中断,通过监视可以不使用中断,通过监视SMB86(端口(端口
24、0)或者)或者SMB186(端口(端口1)来接收信息,当接收指令未)来接收信息,当接收指令未被激活或者已经被中止时,这一字节不为被激活或者已经被中止时,这一字节不为0;当接收正在进行时,这一字节为;当接收正在进行时,这一字节为0。发送和接收指令2022-8-16电气控制与电气控制与PLC13u 接收指令允许选择信息的起始和结束条接收指令允许选择信息的起始和结束条件,使用件,使用SMB86SMB94对端口对端口0进行设置,进行设置,SMB186SMB194对端口对端口1进行设置。当超进行设置。当超限或有校验错误时,接收信息功能会自动终限或有校验错误时,接收信息功能会自动终止,必须为接收信息功能定
25、义一个起始条件止,必须为接收信息功能定义一个起始条件和一个结束条件(最大字符数)。和一个结束条件(最大字符数)。u 接收指令用接收信息控制字节(接收指令用接收信息控制字节(SMB87或或SMB187)中的位来定义信息起始和结束)中的位来定义信息起始和结束条件。当接收指令执行时,在接收口上有来条件。当接收指令执行时,在接收口上有来自其他器件的信号,接收信息功能有可能从自其他器件的信号,接收信息功能有可能从一个字符的中间开始接收字符,从而导致校一个字符的中间开始接收字符,从而导致校验错误和接收信息功能的中止。如果校验没验错误和接收信息功能的中止。如果校验没有被使能,接收到的信息有可能包含错误字有被
26、使能,接收到的信息有可能包含错误字符。当起始条件被指定为一个特定的起始字符。当起始条件被指定为一个特定的起始字符或者任意字符时,这种情况有可能发生。符或者任意字符时,这种情况有可能发生。如果指定包含一个停顿或者一个空闲线检测如果指定包含一个停顿或者一个空闲线检测的起始条件,在将字符放到信息缓冲区之前,的起始条件,在将字符放到信息缓冲区之前,用一个字符的起始来强制接收信息功能和信用一个字符的起始来强制接收信息功能和信息的起始相同步,可以避免以上问题。息的起始相同步,可以避免以上问题。发送和接收指令2022-8-16电气控制与电气控制与PLC14u 接收指令支持接收指令支持的的几种起始条件:空闲线
27、检测几种起始条件:空闲线检测l 空闲线条件是指在传输线上一段安静或者空闲的时间。在空闲线条件是指在传输线上一段安静或者空闲的时间。在SMW90或者或者SMW190中指定中指定其毫秒数。其毫秒数。l 当接收指令在程序中执行时,接收信息功能对空闲线条件进行检测,如果在空闲线时当接收指令在程序中执行时,接收信息功能对空闲线条件进行检测,如果在空闲线时间到之前接收到任何字符,接收信息功能会忽略那些字符并且按照间到之前接收到任何字符,接收信息功能会忽略那些字符并且按照SMW90或或SMW190中中给定的时间值重新启动空闲线定时器,如图所示。给定的时间值重新启动空闲线定时器,如图所示。l 在空闲线时间到之
28、后,接收信息功能将所有接收到的字符存入信息缓冲区。在空闲线时间到之后,接收信息功能将所有接收到的字符存入信息缓冲区。l 空闲线时间应该总是大于在指定波特率下传输一个字符(包括起始位、数据位、校验空闲线时间应该总是大于在指定波特率下传输一个字符(包括起始位、数据位、校验位和停止位的时间),空闲线时间的典型值为在指定波特率下传输位和停止位的时间),空闲线时间的典型值为在指定波特率下传输3个字符的时间。个字符的时间。l 对于二进制协议、没有特定起始字符的协议或者指定了信息之间最小时间间隔的协议,对于二进制协议、没有特定起始字符的协议或者指定了信息之间最小时间间隔的协议,可以使用空闲线检测作为起始条件
29、。可以使用空闲线检测作为起始条件。l 设置:设置:il=1,sc=0,bk=0,SMW90/SMW190=空闲线超时时间(单位为空闲线超时时间(单位为ms)。)。发送和接收指令2022-8-16电气控制与电气控制与PLC15u 接收指令支持接收指令支持的的几种起始条件:起始字符检测几种起始条件:起始字符检测l 起始字符可以是用于作为一条信息首字符的任意一个字符。起始字符可以是用于作为一条信息首字符的任意一个字符。l 当接收到当接收到SMB88或或SMB188中指定的起始字符后,一条信息开始。中指定的起始字符后,一条信息开始。l 接收信息功能将起始字符作为信息的第一个字符存入接收缓冲区。接收信息
30、功能将起始字符作为信息的第一个字符存入接收缓冲区。l 接收信息功能忽略所有在起始字符之前接收到的字符。起始字符和起始字符之后接收到的所有字接收信息功能忽略所有在起始字符之前接收到的字符。起始字符和起始字符之后接收到的所有字符一起存入信息缓冲区。符一起存入信息缓冲区。l 通常,对于所有信息都使用同一个字符作为起始的通常,对于所有信息都使用同一个字符作为起始的ASCII码协议,可以使用起始字符检测。码协议,可以使用起始字符检测。l 设置:设置:il=0,sc=1,bk=0,SMW90/SMW190被忽略,被忽略,SMB88/SMB188=起始字符。起始字符。u 接收指令支持接收指令支持的的几种起始
31、条件:空闲线和起始字符几种起始条件:空闲线和起始字符l 接收指令可以利用空闲线和起始字符的组合来启动一条信息。接收指令可以利用空闲线和起始字符的组合来启动一条信息。l 当接收指令执行时,接收信息功能检测空闲线条件,在空闲线条件满足后,接收信息功能搜寻指当接收指令执行时,接收信息功能检测空闲线条件,在空闲线条件满足后,接收信息功能搜寻指定的起始字符,如果接收到的字符不是起始字符,接收信息功能重新检测空闲线条件。定的起始字符,如果接收到的字符不是起始字符,接收信息功能重新检测空闲线条件。l 所有在空闲线条件满足和接收到起始字符之前接收到的字符被忽略掉,起始字符与字符串一起存所有在空闲线条件满足和接
32、收到起始字符之前接收到的字符被忽略掉,起始字符与字符串一起存入信息缓冲区。入信息缓冲区。l 空闲线时间应该总是大于在指定波特率下传输一个字符(包括起始位、数据位、校验位和停止位空闲线时间应该总是大于在指定波特率下传输一个字符(包括起始位、数据位、校验位和停止位的时间),空闲线时间的典型值为在指定波特率下传输的时间),空闲线时间的典型值为在指定波特率下传输3个字符的时间。个字符的时间。l 通常,对于指定信息之间最小时间间隔并且信息的首字符是特定设备的站号或其他信息的协议,通常,对于指定信息之间最小时间间隔并且信息的首字符是特定设备的站号或其他信息的协议,可以使用这种类型的起始条件,这种方式尤其适
33、用于在通信连接上有多个设备的情况,在这种情况可以使用这种类型的起始条件,这种方式尤其适用于在通信连接上有多个设备的情况,在这种情况下,只有当接收到的信息的起始字符为特定的站号或者设备时,接收指令才会触发一个中断。下,只有当接收到的信息的起始字符为特定的站号或者设备时,接收指令才会触发一个中断。l 设置:设置:il=1,sc=1,bk=0,SMW90/SMW1900,SMB88/SMB188=起始字符。起始字符。发送和接收指令2022-8-16电气控制与电气控制与PLC16u 接收指令支持接收指令支持的的几种起始条件:断点检测几种起始条件:断点检测l 断点是指在大于一个完整字符传输时间的一段时间
34、内,接收数据一直为断点是指在大于一个完整字符传输时间的一段时间内,接收数据一直为0。l 一个完整字符传输时间定义为传输起始位、数据位、校验位和停止位的时间总和。一个完整字符传输时间定义为传输起始位、数据位、校验位和停止位的时间总和。l 如果接收指令被配置为用接收一个断点作为信息的起始,则任何在断点之后接收到的字符都会存入信息缓冲区,如果接收指令被配置为用接收一个断点作为信息的起始,则任何在断点之后接收到的字符都会存入信息缓冲区,任何在断点之前接收到的字符被忽略。任何在断点之前接收到的字符被忽略。l 通常,只有当通信协议需要时,才使用断点检测作为起始条件。通常,只有当通信协议需要时,才使用断点检
35、测作为起始条件。l 设置:设置:il=0,sc=0,bk=1,SMW90/SMW190被忽略,被忽略,SMB88/SMB188被忽略。被忽略。u 接收指令支持接收指令支持的的几种起始条件:断点和起始字符几种起始条件:断点和起始字符l 接收指令可以被配置为接收到断点条件和一个指定的起始字符之后,启动接收。接收指令可以被配置为接收到断点条件和一个指定的起始字符之后,启动接收。l 在断点条件满足后,接收信息功能寻找特定的起始字符,如果受到了除起始字符以外的任意字符,接收信息功能在断点条件满足后,接收信息功能寻找特定的起始字符,如果受到了除起始字符以外的任意字符,接收信息功能重新启动寻找新的断点。重新
36、启动寻找新的断点。l 所有断点条件满足和和接收到起始字符之前接收到的字符都会被忽略,起始字符与字符串一起存入信息缓冲区。所有断点条件满足和和接收到起始字符之前接收到的字符都会被忽略,起始字符与字符串一起存入信息缓冲区。l 设置:设置:il=0,sc=1,bk=1,SMW90/SMW190被忽略,被忽略,SMB88/SMB188=起始字符。起始字符。u 接收指令支持接收指令支持的的几种起始条件:任意字符几种起始条件:任意字符l 接收指令可以被配置为立即接收任意字符并把全部接收到的字符存入信息缓冲区。这是空闲线检测的一种特殊情接收指令可以被配置为立即接收任意字符并把全部接收到的字符存入信息缓冲区。
37、这是空闲线检测的一种特殊情况。在这种情况下,空闲线时间被设置为况。在这种情况下,空闲线时间被设置为0,使得接收指令一经执行就立即开始接收字符。,使得接收指令一经执行就立即开始接收字符。l 设置:设置:il=1,sc=0,bk=0,SMW90/SMW190=0,SMB88/SMB188被忽略。被忽略。l 用任意字符开始一条信息允许使用信息定时器来监控信息接收是否超时。这对于自由口协议的主站是非常有用的,用任意字符开始一条信息允许使用信息定时器来监控信息接收是否超时。这对于自由口协议的主站是非常有用的,并且当在指定时间内内,没有来自从站的任何响应的情况,也需要采取超时处理。并且当在指定时间内内,没
38、有来自从站的任何响应的情况,也需要采取超时处理。l 由于空闲线时间被设置为由于空闲线时间被设置为0,当接收指令执行时,信息定时器启动,如果没有其它终止条件满足,信息定时器超,当接收指令执行时,信息定时器启动,如果没有其它终止条件满足,信息定时器超时会结束接收信息功能。时会结束接收信息功能。l 设置:设置:c/m=1,tmr=1,SMW92/SMW192=信息超时时间(单位为信息超时时间(单位为ms)。)。发送和接收指令2022-8-16电气控制与电气控制与PLC17u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:结束字符检测结束信息方式,可以是一种或几种的组合:结束字符检
39、测l 结束字符是用于表示信息结束的任意字符。结束字符是用于表示信息结束的任意字符。l 在找到起始条件后,接收指令检查每一个接收到的字符,并且判断它是否与结束字符匹配,如果在找到起始条件后,接收指令检查每一个接收到的字符,并且判断它是否与结束字符匹配,如果接收到了结束字符,将其存入信息缓冲区,接收结束。接收到了结束字符,将其存入信息缓冲区,接收结束。l 通常,对于所有信息都使用同一个字符作为结束的通常,对于所有信息都使用同一个字符作为结束的ASCII码协议,可以使用结束字符检测。码协议,可以使用结束字符检测。l 可以使用结束字符检测与字符间隔定时器、信息定时器或者最大字符计数相结合来结束一条信息
40、。可以使用结束字符检测与字符间隔定时器、信息定时器或者最大字符计数相结合来结束一条信息。l 设置:设置:ec=1,SMB89/SMB189=结束字符。结束字符。u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:字符间隔定时器结束信息方式,可以是一种或几种的组合:字符间隔定时器l 字符间隔定时器是指从一个字符的结尾(停止位)到下一个字符的结尾(停止位)之间的时间。字符间隔定时器是指从一个字符的结尾(停止位)到下一个字符的结尾(停止位)之间的时间。l 如果两个字符之间的时间间隔(包括第二个字符)超过了如果两个字符之间的时间间隔(包括第二个字符)超过了SMW92或者或者SMW19
41、2中指定的毫秒数,中指定的毫秒数,接收信息功能结束。接收到字符后,字符间隔定时器重新启动,如图所示。接收信息功能结束。接收到字符后,字符间隔定时器重新启动,如图所示。l 当协议没有特定的信息结束字符时,可以用字符间隔定时器来结束一条信息。当协议没有特定的信息结束字符时,可以用字符间隔定时器来结束一条信息。l 由于定时器总是包含接收一个完整字符(包括起始位、数据位、校验位和停止位)的时间,因而由于定时器总是包含接收一个完整字符(包括起始位、数据位、校验位和停止位)的时间,因而该时间应设置为大于在指定波特率下传输一个字符的时间。该时间应设置为大于在指定波特率下传输一个字符的时间。l 可以使用字符间
42、隔定时器与结束字符检测或者最大字符计数相组合来结束一条信息。可以使用字符间隔定时器与结束字符检测或者最大字符计数相组合来结束一条信息。l 设置:设置:c/m=0,tmr=1,SMW92/SMW192=信息超时时间(单位为信息超时时间(单位为ms)。)。发送和接收指令2022-8-16电气控制与电气控制与PLC18u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:信息定时器结束信息方式,可以是一种或几种的组合:信息定时器l 从信息的开始算起,在经过一段指定的时间之后,信息定时器结束一条信息。从信息的开始算起,在经过一段指定的时间之后,信息定时器结束一条信息。l 接收信息功能的
43、启动条件一满足,信息定时器就启动,当经过的时间超过接收信息功能的启动条件一满足,信息定时器就启动,当经过的时间超过SMW92或者或者SMW192中中指定的毫秒数时,信息定时器时间到,如图指定的毫秒数时,信息定时器时间到,如图7所示。所示。l 通常,当通讯设备不能保障字符中间没有时间间隔或者使用通常,当通讯设备不能保障字符中间没有时间间隔或者使用Modem通信时,可以使用信息定时器。通信时,可以使用信息定时器。对于对于Modem方式,可以用信息定时器指定一个从信息开始算起,接收信息允许的最大时间。方式,可以用信息定时器指定一个从信息开始算起,接收信息允许的最大时间。l 信息定时器的典型值是在当前
44、波特率下接收到最长信息所需时间值的大约信息定时器的典型值是在当前波特率下接收到最长信息所需时间值的大约1.5倍。倍。l 可以使用信息定时器与结束字符检测或者最大字符计数相组合来结束一条信息。可以使用信息定时器与结束字符检测或者最大字符计数相组合来结束一条信息。l 设置:设置:c/m=1,tmr=1,SMW92/SMW192=信息超时时间(单位为信息超时时间(单位为ms)。)。u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:最大字符计数结束信息方式,可以是一种或几种的组合:最大字符计数l 必须告诉接收指令接收字符的最大个数(必须告诉接收指令接收字符的最大个数(SMB94或者
45、或者SMB194),当达到或者超出这个值,接收信),当达到或者超出这个值,接收信息功能结束。息功能结束。l 即使不会被用作结束条件,接收指令要求用户指定一个最大字符个数,这是因为接收指令需要知即使不会被用作结束条件,接收指令要求用户指定一个最大字符个数,这是因为接收指令需要知道接收信息的最大长度,这样才能保证信息缓冲区之后的用户数据不会被覆盖。道接收信息的最大长度,这样才能保证信息缓冲区之后的用户数据不会被覆盖。l 对于信息的长度已知并且恒定的协议,可以使用最大字符计数来结束信息。对于信息的长度已知并且恒定的协议,可以使用最大字符计数来结束信息。l 最大字符计数总是与检测字符结束、字符间隔定时
46、器或者信息定时器结合在一起使用。最大字符计数总是与检测字符结束、字符间隔定时器或者信息定时器结合在一起使用。发送和接收指令2022-8-16电气控制与电气控制与PLC19u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:校验错误结束信息方式,可以是一种或几种的组合:校验错误l 当接收字符的同时出现硬件信号校验错误时,接收指令会自动结束。当接收字符的同时出现硬件信号校验错误时,接收指令会自动结束。l 只有在只有在SMB30或者或者SMB130中使能了校验位,才有可能出现校验错误,没有办法禁止此功能。中使能了校验位,才有可能出现校验错误,没有办法禁止此功能。u 为了完全适应对各
47、种协议的支持,也可以使用字符中断控制的方式接收数据。为了完全适应对各种协议的支持,也可以使用字符中断控制的方式接收数据。l 接收每个字符时都会产生中断。在执行与接收字符事件相连的中断服务程序之前,接收到的字符接收每个字符时都会产生中断。在执行与接收字符事件相连的中断服务程序之前,接收到的字符存入存入SMB2中,校验状态(入锅使能)存入中,校验状态(入锅使能)存入SM3.0。l SMB2是自由口接收字符缓冲区,在自由口模式下,每一个接收到的字符都会存放到这一位置,便是自由口接收字符缓冲区,在自由口模式下,每一个接收到的字符都会存放到这一位置,便于用户程序访问。于用户程序访问。l SMB3用于自由
48、口模式,它包含一个校验错误标志位,当接收字符的同时检测到校验错误时,该位用于自由口模式,它包含一个校验错误标志位,当接收字符的同时检测到校验错误时,该位被置位,该字节的其他位被保留,利用校验位去丢弃信息或向该信息发送否定应答。被置位,该字节的其他位被保留,利用校验位去丢弃信息或向该信息发送否定应答。u 在较高的波特率下(在较高的波特率下(38.4KB115.2KB)使用字符中断时,中断之间的时间间隔()使用字符中断时,中断之间的时间间隔(38.4KB时为时为260s;57.6KB时为时为173s;115.2KB时为时为86s)会非常短。因此,要确保中断服务程序足够短,才不)会非常短。因此,要确
49、保中断服务程序足够短,才不会丢失字符或者使用接收指令。会丢失字符或者使用接收指令。u SMB2和和SMB3是端口是端口0和端口和端口1共用的。当字符的接收来自端口共用的。当字符的接收来自端口0时,执行与事件(中断事件时,执行与事件(中断事件8)相)相连的中断服务程序,连的中断服务程序,SMB2中存储从端口中存储从端口0接收到的字符,接收到的字符,SMB3中存储该字符的校验状态。当字符的中存储该字符的校验状态。当字符的接收来自端口接收来自端口1,执行与事件(中断事件,执行与事件(中断事件25)相连的中断服务程序,)相连的中断服务程序,SMB2中存储从端口中存储从端口1接收到的字接收到的字符,符,
50、SMB3中存储该字符的校验状态。中存储该字符的校验状态。u 接收指令支持接收指令支持的的结束信息方式,可以是一种或几种的组合:用户结束结束信息方式,可以是一种或几种的组合:用户结束l 用户可以通过程序来结束接收信息功能,先将用户可以通过程序来结束接收信息功能,先将SMB87或者或者SMB187中的使能位置为中的使能位置为0,再次执行接,再次执行接收指令即可,这样可以立即终止接收信息功能。收指令即可,这样可以立即终止接收信息功能。获取和设定口地址指令2022-8-16电气控制与电气控制与PLC20u获取口地址指令(获取口地址指令(GPA):读取读取PORT指定的指定的CPU口的站地址,并将数值放