有些辅助继电器具有特殊功能或存储系统的状态变量、有关的控制参数和信息,我们称为特殊标志继电器。用户可以通过特殊标志来沟通PLC与被控对象之间的信息,如可以读取程序运行过
程中的设备状态和运算结果信息,利用这些信息用程序实现一定的控制动作。用户也可通过直接设置某些特殊标志继电器位来使设备实现某种功能。
特殊标志继电器用“SM”表示,特殊标志继电器区根据功能和性质不同具有位、字节、字和双字操作方式。其中SMB0、SMB1为系统状态字,只能读取其中的状态数据,不能改写,可以位寻址。系统状态字中部分常用的标志位说明如下:
SM0.0:始终接通;
SM0.1:首次扫描为1,以后为0,常用来对程序进行初始化;
SM0.2:当机器执行数学运算的结果为负时,该位被置1;
SM0.3:开机后进入RUN方式,该位被置1一个扫描周期;
SM0.4:该位提供一个周期为1分钟的时钟脉冲,30秒为1,30秒为0;
SM0.5:该位提供一个周期为1秒钟的时钟脉冲,0.5秒为1,0.5秒为0;
SM0.6:该位为扫描时钟脉冲,本次扫描为1,下次扫描为0;
SM1.0:当执行某些指令,其结果为0时,将改位置1;
SM1.1:当执行某些指令,其结果溢出或为非法数值时,将改位置1;
SM1.2:当执行数学运算指令,其结果为负数时,将改位置1;
SM1.3:试图除以0时,将改位置1;
S7-200中SM0.0的用法:
1、SM0.0在程序运行时始终为ON。
2、SM0.0是一个无条件的常闭触点,用来启动无条件运行的指令。
只要上电,SM0.0必然是“1”。因此程序中那些不受任何条件限制,必须要执行的指令就用它作为触发触点。
基本指令
关于状态字(SM)
01、SMB0包括8个状态位(SM0.0/SM0.1/SM0.2/SM0.3/SM0.4/SM0.5/SM0.6/SM0.7)
02、SMB1 包含了各种潜在的错误提示,可在执行某些指令或执行出错时由系统自动对相应进行置位或复位.
03、SMB2 在自由接口通信时,自由接口接收字符的缓冲区.
04、SMB3 在自由接口通信时,发现接收到的字符中有奇偶效验错误时,可将SM3.0置位.
05、SMB4 标志中断队列是否溢出或通信接口使用状态.
06、SMB5 标志I/O系统错误.
07、SMB6 CPU模块识别(ID)寄存器.
08、SMB7 系统保留
09、SMB8-SMB21 I/O模块识别和错误寄存器,按字节对形式(相邻两个字节)存储扩展模块0-6的模块类型、I/O类型、I/O点数和测得的各模块I/O错误.
10、SMB22-SMB26 记录系统扫描时间.
11、SMB28-SMB29 存储CPU模块自带的模拟电位器所对应的数字量.
12、SMB30-SMB130 SMB30为自由接口通信时,自由接口0的通信方式控制字节;SMB130为自由接口通信时,自由接口1的通信方式控制字节;两字节可读可写。
13、SMB31-SMB32 永久存储器(EEPROM)写控制.
14、SMB34-SMB35 用于存储定时中断的时间间隔.
15、SMB36-SMB65 高速计数器HSC0、HSC1、HSC2的监视及控制寄存器.
16、SMB66-SMB85 高速脉冲输出(PTO/PWM)的监视及控制寄存器.
17、SMB86-SMB94 自由接口通信时,接口0或接口1接收信息状态寄存器.
18、SMB186-SMB194 自由接口通信时,接口0或接口1接收信息状态寄存器.
19、SMB98-SMB99 标志扩展模块总线错误号.
20、SMB131-SMB165 高速计数器HSC3、HSC4、HSC5的监视及控制寄存器.
21、SMB166-SMB194 高速脉冲输出(PTO)包络定义表.
22 SMB200-SMB299 预留给智能扩展模块,保存其状态信息.
S7-200中SM0.0的用法
1、SM0.0在程序运行时始终为ON。
2、SM0.0是一个无条件的常闭触点,用来启动无条件运行的指令。只要上电,SM0.0必然是“1”。因此程序中那些不受任何条件限制,必须要执行的指令就用它作为触发触点。
3、问:程序有时要在指令前加SM0.0,为什么不直接连在母线上,不是一样吗?
最佳答案:
因为,S7-200的指令是不能直接连在“母线”上的,这不符合语法要求。
SM0.0是不可控的触点,适用于无条件触发的场合,并非每个指令都需要SM0.0。在其它场合,要用可控制的触点来触发指令,如I0.0、M0.0或各种比较指令等等。如果没有可控触点可用,就只能用SM0.0。
其他答案:
a、 S7200编程中有规定,在输出类指令前必须有触点指令,有的时候输出指令不需要条件直接输出为1,但为了满足这样的编程约定就串连常为1的sm0.0在前面。
b、不同PLC厂家都有自己语法规定 ,SIEMENS S7-200梯形图就这样要求的,不能母线直接连输出指令(或子程序调用)。
c、一个程序用不用SM0.0在于多方面的需要,如果你不需要也能完成控制要求那不用当然好了。不过对于一些指令你还是非用它不可呢!另外在调试程序时它还是你的好帮手呢!
评论