发表于:2008/4/14 10:57:00
#0楼
S7-200经验点滴
1、SBR0子程序:SBR0一般设置为初始化子程序,主要完成系统初始化,可以对各内部变量、中间变量进行置位或复位。该程序需要用户自己编辑,软件并不提供预置程序。
2、计数器指令在每个扫描周期里执行,而高速计数器独立于CPU的扫描周期。当外部输入的频率大于CPU的扫描频率时,必须使用高速计数器,否则会丢失输入的脉冲信号,造成控制错误。对于编码器的输入信号,一般情况下都必须采用高速计数器来计数;如果设备运转非常慢(每两个脉冲的间隔时间已经大于PLC的扫描周期,例如200ms或以上),那也可以采用普通计数器来进行计数。
3、PLC的扫描时间一般都在10~100ms之间,S7-200默认不允许扫描周期大于500ms。每条指令的执行时间都是微秒级的,PLC的扫描周期可以根据实际指令和PLC相关操作时间来估算,也可以通过查看特殊寄存器SMW22的值(实际最短扫描时间)和SMW26的值(实际最长扫描时间)来得到。
4、HSC高速计数器指令:以HSC0为例,当HSC0的使能端从低电平跳变到高电平时,HSC0指令就会读取控制字节SMB37、初始值寄存器SMD38、预置值寄存器SMD42的数据以及工作模式值,并把这些值作为高速计数器HSC0的当前值。
也就是说,如果程序中只有1个HSC0指令,每次当这个HSC0的使能端从低电平跳变到高电平时,HSC0的当前值都等于初始值存储器SMD38的值。
如果程序中有N个HSC0指令,那么当执行到某个HSC0指令时,如果该HSC0的使能端从低电平跳变到高电平时,HSC0的当前值都会被置为初始值存储器SMD38的值!这在对编码器脉冲计数时用得到,将计数器当前值设置为零,以便下个周期采样。
本文转自:赛尔社区
1、SBR0子程序:SBR0一般设置为初始化子程序,主要完成系统初始化,可以对各内部变量、中间变量进行置位或复位。该程序需要用户自己编辑,软件并不提供预置程序。
2、计数器指令在每个扫描周期里执行,而高速计数器独立于CPU的扫描周期。当外部输入的频率大于CPU的扫描频率时,必须使用高速计数器,否则会丢失输入的脉冲信号,造成控制错误。对于编码器的输入信号,一般情况下都必须采用高速计数器来计数;如果设备运转非常慢(每两个脉冲的间隔时间已经大于PLC的扫描周期,例如200ms或以上),那也可以采用普通计数器来进行计数。
3、PLC的扫描时间一般都在10~100ms之间,S7-200默认不允许扫描周期大于500ms。每条指令的执行时间都是微秒级的,PLC的扫描周期可以根据实际指令和PLC相关操作时间来估算,也可以通过查看特殊寄存器SMW22的值(实际最短扫描时间)和SMW26的值(实际最长扫描时间)来得到。
4、HSC高速计数器指令:以HSC0为例,当HSC0的使能端从低电平跳变到高电平时,HSC0指令就会读取控制字节SMB37、初始值寄存器SMD38、预置值寄存器SMD42的数据以及工作模式值,并把这些值作为高速计数器HSC0的当前值。
也就是说,如果程序中只有1个HSC0指令,每次当这个HSC0的使能端从低电平跳变到高电平时,HSC0的当前值都等于初始值存储器SMD38的值。
如果程序中有N个HSC0指令,那么当执行到某个HSC0指令时,如果该HSC0的使能端从低电平跳变到高电平时,HSC0的当前值都会被置为初始值存储器SMD38的值!这在对编码器脉冲计数时用得到,将计数器当前值设置为零,以便下个周期采样。
本文转自:赛尔社区
[此贴子已经被jint于2008-4-14 14:06:27编辑过]