高速计数器的初始化顺序示例
	                        
	                            
	                            发布于2023-02-09 10:00
	                            
	                                
	                                46
	                            
	                            
	                                
	                                2
	                            
	                            
	                            标签:高速计数器初始化
	                        
	                     
	                    
	                        
	  在下列初始化和操作顺序中,HSCI1用做模型计数器。初始化假定S7-200刚进入RUN(运行)模式,因此,第一次扫描内存位为真。否则,在进入RUN(运行)模式后,对于每个高速计数器HDEF指令只能执行一次。对高速计数器第二次执行HDEF产生运行时错误,不会以第一次执行HDEF时为此计数器设置的方式改变计数器设置。
	  1.初始化模式0、模式1或模式2
	  为具有内部方向(模式0、模式1或模式2)的单相向上/向下计数器初始化HSC1按下列步骤进行:
	  (1)使用第一次扫描内存位调用在其中执行初始化操作的子程序。因为使用子程序,随后的扫描不再调用子程序,这可以减少扫描执行时间。
	  (2)在初始化子程序中,将需要的控制操作输入SMB47。例如,SMB47 = 16#F8产生下列结果:
	  启用计数器:
	  ●写新当前值:
	  ●写新预设值:
	  ●方向为向上计数:
	  ●设置启动和重设输入到现用高速计数器。
	  (3)执行HDEF指令,HSC输入设置为1,“模式”输入设置为下列之一:对于无外部重设或启动为0;对于外部重设和无启动为1:对于外部重设和启动为2。
	  (4)用期望的当前值(用0载入以清除它)载入SMD48(双字大小数值)。
	  (5)用期望的预设值载入SMD52(双字大小数值)。
	  (6)为了捕获当前值等于预置事件,通过将CV=PV中断事件(事件13,见表5-34)连接到中断程序。
	  (7)为了捕获外部重设事件,通过将外部重设中断事件(事件15,见表5-34)连接到中断程序。
	  (8)执行全局中断启用指令(ENI)来启用中断。
	  (9)执行HSC指令
	  (10)退出子程序。
	  2.初始化模式3、模式4或模式5
	  为具有外部方向(模式3、模式4或模式5)的单相向上/向下计数器初始化HSC1按下列步骤进行:
	  (1)使用第一次扫描内存位调用在其中执行初始化操作的子程序。因为使用子程序调用,随后的扫描不再调用子程序,这减少扫描执行时间和提供更多的结构程序。
	  (2)在初始化子程序中,根据期望的控制操作载入SMB47。例如,SMB47=16#F8产生下列结果:
	  ●启用计数器:
	  ●写新当前值:
	  ●写新预设值:
	  ●设置HSC的初始方向为向上计数;
	  ●设置开始和重设输入为现用高速计数器。
	  (3)执行HDEF指令,HSC输入设置为1,“模式”输入设置为下列之一:对于无外部重设或启动为3:对于外部重设和无启动为4:对于外部重设和启动为5。
	  (4)用期望的当前值(用0载入以清除它)载入SMD48(双字大小数值)。
	  (5)用期望的预设值载入SMD52(双字大小数值)。
	  (6)为了捕获当前值等于预置事件,通过将CV =PV中断事件(事件13,见表5-34)连接到中断程序。
	  (7)为了捕获外部方向改变,通过将方向改变中断事件(事件14,见表5-34)连接到中断程序。
	  (8)为了捕获外部重设事件,通过将外部重设中断事件(事件15,见表5-34)连接到中断程序。
	  (9)执行全局中断启用指令(END)来启用中断。
	  (10)执行高速计数器指令。
	  (11)退出子程序
	  3.初始化模式6、模式7或模式8
	  为具有向上/向下时钟(模式6、模式7或模式8)的双相向上/向下计数器初始化HSC1按下列步骤进行:
	  (1)使用第一次扫描内存位调用在其中执行初始化操作的子程序。因为使用子程序调用,随后的扫描不再调用子程序,这减少扫描执行时间和提供更多的结构程序。
	  (2)在初始化子程序中,根据期望的控制操作载入SMB47.例如,SMB47=16#F8产生下列结果:
	  ●启用计数器:
	  ●写新当前值:
	  ●写新预设值:
	  ●设置高速计数器的初始方向为向上计数:
	  ●设置开始和重设输入为现用高速计数器。
	  (3)执行HDEF指令,高速计数器输入设置为1,“模式”设置为下列之一:对于无外部重设或启动为6;对于外部重设和无启动为7;对于外部重设和启动为8。
	  (4)用期望的当前值(用0载入以清除它)载入SMD48(双字大小数值)。
	  (5)用期望的预设值载入SMD52(双字大小数值)。
	  (6)为了捕获当前值等于预置事件,通过将CV=PV中断事件(事件13)连接到中断程序。可参考关于中断的部分
	  (7)为了捕获外部方向改变,通过将方向改变中断事件(事件14)连接到中断程序。
	  (8)为了捕获外部重设事件,通过将外部重设中断事件(事件15)连接到中断程序。
	  (9)执行全局中断启用指令(ENI)来启用中断。
	  (10)执行高速计数器指令。
	  (11)退出子程序。
	  4.初始化模式9、模式10或模式11
	  为A/B相正交计数器(模式9、模式10或模式11)初始化HSC1按下列步骤进行:
	  (1)使用第一次扫描内存位调用在其中执行初始化操作的子程序。因为使用子程序调用,随后的扫描不再调用子程序,这减少扫描执行时间并提供更多的结构化程序。
	  (2)在初始化子程序中,根据期望的控制操作载入SMB47。
	  示例(1x计数模式):SMB47=16#FC产生下列结果:
	  ●启用计数器:
	  ●写新当前值
	  ●写新预设值
	  ●设置高速计数器的初始方向为向上计数:
	  ●设置开始和重设输入为现用高速计数器。
	  示例(4X计数模式):SMB47=16#F8产生下列结果:
	  ●启用计数器
	  ●写新当前值:
	  写新预设值:
	  ●设置高速计数器的初始方向为向上计数;
	  ●设置开始和重设输入为现用高速计数器。
	  (3)执行HDEF指令,高速计数器输入设置为1,“模式”输入设置为下列之一:对于无外部重设或启动为9:对于外部重设和无启动为10:对于外部重设和启动为11。
	  (4)用期望的当前值(用0载入以清除它)载入SMD48(双字大小数值)。
	  (5)用期望的预设值载入SMD52(双字大小数值)。
	  (6)为了捕获当前值等于预置事件,通过将CV=PV中断事件(事件13,见表5-34)连接到中断程序。关于中断处理的细节可参考启用中断(ENI)部分。
	  (7)为了捕获方向改变,通过将方向改变中断事件(事件14,见表5-34)连接到中断程序。
	  (8)为了捕获外部重设事件,通过将外部重设中断事件(事件15,见表5-34)连接到中断程序。
	  (9)执行全局中断启用指令(ENI)来启用中断。
	  (10)执行高速计数器指令。
	  (11)退出子程序。
	  5.在模式0、模式1或模式2中改变方向
	  在模式0、模式1或模式2中改变方向按下列步骤进行:
	  (1)载入SMB47以写期望的方向:SMB47=16#90,启用计数器,设置高速计数器的方向为向下计数
	  SMB47=16#98启用计数器,设置高速计数器的方向为向上计数。
	  (2)执行高速计数器指令以引发S7-200对HSC1编程
	  6.载入新当前值(任何模式)
	  更换当前值强制当改变进行时计数器禁用。当计数器禁用时,它不计数或产生中断,
	  改变HSCI的计数器当前值(任何模式)按下列步骤进行:
	  (1)载入SMB47以写期望的当前值:SMB47=16#C0,启用计数器,写新当前值。
	  (2)用期望的当前值(用0载入以清除它)载入SMD48(双字大小数值)。
	  (3)执行HSC指令
	  7.载入新预设值(任何模式)
	  改变HSC1的预设值(任何模式)按下列步骤进行:
	  (Il)载入SMB47以写期望的预设值:SMB47=16#A0,启用计数器,写新预设值
	  (2)用期望的预设值SMD52(双字大小数值)。
	  (3)执行HSC指令。
	  8.禁用高速计数器(任何模式)
	  禁用HSCI高速计数器(任何模式)按下列步骤进行:
	  (1)将SMB47载入到禁用计数器:SMB47=16#00,禁用计数器。
	  (2)执行高速计数器指令以禁用计数器。
	  高速计数器指令示例如图5-72所示。
	