S7-200 PLC 特殊标志继电器(SM)功能简介
特殊标志继电器(SM)
有些辅助继电器具有特殊功能或存储系统的状态变量、有关的控制参数和信息,我们称为特殊标志继电器。用户可以通过特殊标志来沟通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”。因此程序中那些不受任何条件限制,必须要执行的指令就用它作为触发触点。
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在于多方面的需要,如果你不需要也能完成控制要求那不用当然好了。不过对于一些指令你还是非用它不可呢!另外在调试程序时它还是你的好帮手呢!
基本指令
一 关于状态字(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 预留给智能扩展模块,保存其状态信息.
[ 此帖被sjm213在2011-06-22 17:36重新编辑 ]