发表于:2008/12/20 19:39:00
#0楼
Q.HHSC和SHSC的差别?
1. PLC的高速计数器一般有两种,一为使用专用硬件电路作成的硬件高速计数器(Hardware High-Speed Counter 简称HHSC), 另一种是利用计数脉冲正/负缘变化时发生中断, 而由CPU 来判断加减,来做计数的软件高速计数器(Software High-Speed Counter简称SHSC)。FBs-PLC 各有4个HHSC(在SoC 芯片内)及4个SHSC;它们都为32位高速计数器。
2. FBs-PLC 的4 个HHSC 都具有8 种计数模式可供选择,而SHSC 只提供3 种计数模式。
3. HHSC 与SHSC 的所有控制信号均内定为Active High( 也就是在状态为1时发生动作,0无影响)。但HHSC 的计数输入(U,D,P,R,A,B)及控制输入(M,C)均可作极性反相选择,用来匹配Sensor 极性。
4. FBs-PLC的4组HHSC都在SoC芯片中, 它们的CV缓存器和PV缓存器使用者是没有办法直接存取的,使用者能直接存取的是CPU 内部存储器中对应的CV 缓存器( DR4096~ DR4110)。在理想情况下,芯片上的CV与PV缓存器内容值与CPU内部存储器中的CV与PV缓存器的内容值应是同步更新,随时都是相同的,但由于两者属于不同的硬件电路,他们对应必须靠CPU来加载或读取。CPU可利用FUN93将当前值或设定值写入到芯片内的CV缓存器(使HHSC由初始值开始计数)或PV缓存器,而利用FUN92将芯片内HHSC的CV缓存器的当前计数值读入并存放在CPU 内部的CV 缓存器中。但由于读取动作只有在FUN92被执行到时才进行(也就是〝取样〞读取),因此芯片中HHSC的CV值和CPU内部的CV值可能会有差别,尤其在计数频率高时误差更大。
5.当定位精度要求极高时,在计数前须先将要设定的中断值用FUN93写入SoC 芯片内HHSC
的PV 缓存器中,等HHSC的CV计数值达到该默认值时,HHSC 内的硬件比较器将会在CV=PV 瞬间,向CPU发出中断命令,然后立即跳到中断子程序中作及时控制或处理。SHSC则是利用中断方式在计数输入的上升缘时向CPU发出中断,再由CPU判断是加1还是减1,而直接在其内部CV缓存器上更新(也就是CPU内部的CV缓存器本身为SHSC的CV缓存器,因而不用FUN92、FUN93指令)。在每次CV更新时,CPU都会比较是否与它的PV 缓存器值相等,若是,立即跳到它对应的SHSC的中断服务程序作及时的处理。因SHSC的每一计数输入及控制输入的变化都会造成CPU中断,当计数频率很高时,将严重占用CPU 时间,大幅降低CPU的反应速度,甚至造成Watchdog Time-out,使PLC停机。因此应尽量优先使用HHSC,如需使用SHSC,所有SHSC 的输入频率总和请不要超过8KHz。
6. 所有HSC 都附加有Enable(FUN145)及Disable(FUN146)功能,HSC在Enable下能计数并且计数到时可产生中断信号;在Disable时,则HHSC虽然可以继续计数,但计数到时,不会产生中断信号,而SHSC则保持在停滞状态。在Configure HSC时HSC是内定为Enable, 程序中可根据控制需要随时Disable或Enable。
1. PLC的高速计数器一般有两种,一为使用专用硬件电路作成的硬件高速计数器(Hardware High-Speed Counter 简称HHSC), 另一种是利用计数脉冲正/负缘变化时发生中断, 而由CPU 来判断加减,来做计数的软件高速计数器(Software High-Speed Counter简称SHSC)。FBs-PLC 各有4个HHSC(在SoC 芯片内)及4个SHSC;它们都为32位高速计数器。
2. FBs-PLC 的4 个HHSC 都具有8 种计数模式可供选择,而SHSC 只提供3 种计数模式。
3. HHSC 与SHSC 的所有控制信号均内定为Active High( 也就是在状态为1时发生动作,0无影响)。但HHSC 的计数输入(U,D,P,R,A,B)及控制输入(M,C)均可作极性反相选择,用来匹配Sensor 极性。
4. FBs-PLC的4组HHSC都在SoC芯片中, 它们的CV缓存器和PV缓存器使用者是没有办法直接存取的,使用者能直接存取的是CPU 内部存储器中对应的CV 缓存器( DR4096~ DR4110)。在理想情况下,芯片上的CV与PV缓存器内容值与CPU内部存储器中的CV与PV缓存器的内容值应是同步更新,随时都是相同的,但由于两者属于不同的硬件电路,他们对应必须靠CPU来加载或读取。CPU可利用FUN93将当前值或设定值写入到芯片内的CV缓存器(使HHSC由初始值开始计数)或PV缓存器,而利用FUN92将芯片内HHSC的CV缓存器的当前计数值读入并存放在CPU 内部的CV 缓存器中。但由于读取动作只有在FUN92被执行到时才进行(也就是〝取样〞读取),因此芯片中HHSC的CV值和CPU内部的CV值可能会有差别,尤其在计数频率高时误差更大。
5.当定位精度要求极高时,在计数前须先将要设定的中断值用FUN93写入SoC 芯片内HHSC
的PV 缓存器中,等HHSC的CV计数值达到该默认值时,HHSC 内的硬件比较器将会在CV=PV 瞬间,向CPU发出中断命令,然后立即跳到中断子程序中作及时控制或处理。SHSC则是利用中断方式在计数输入的上升缘时向CPU发出中断,再由CPU判断是加1还是减1,而直接在其内部CV缓存器上更新(也就是CPU内部的CV缓存器本身为SHSC的CV缓存器,因而不用FUN92、FUN93指令)。在每次CV更新时,CPU都会比较是否与它的PV 缓存器值相等,若是,立即跳到它对应的SHSC的中断服务程序作及时的处理。因SHSC的每一计数输入及控制输入的变化都会造成CPU中断,当计数频率很高时,将严重占用CPU 时间,大幅降低CPU的反应速度,甚至造成Watchdog Time-out,使PLC停机。因此应尽量优先使用HHSC,如需使用SHSC,所有SHSC 的输入频率总和请不要超过8KHz。
6. 所有HSC 都附加有Enable(FUN145)及Disable(FUN146)功能,HSC在Enable下能计数并且计数到时可产生中断信号;在Disable时,则HHSC虽然可以继续计数,但计数到时,不会产生中断信号,而SHSC则保持在停滞状态。在Configure HSC时HSC是内定为Enable, 程序中可根据控制需要随时Disable或Enable。