由一个200smart高速计数器的功能思考
写了一篇关于西门子300cpu315-2dp的集成通讯口名称及其功能后,意犹未尽地想再写一篇,思考了一下,有一个问题值得深思。问题大意是:"西门子200的高速计数器功能支持高速模式12,即高速计数器号HSC0(支持Q0.0的集成高速“输入”)和HSC3(支持Q0.1的集成高速“输入”),而200smart为什么“舍弃”了该功能?这里的“输入”含义是指不需要实际的硬件接线就可以得到自高速脉冲输出Q0.0或Q0.1的高速脉冲数据"。
前一段时间在兑换区兑换过一本【深入浅出 西门子S7-200SMART PLC】的书,晚上空闲时间偶尔阅读一下,好像看到过类似的解释。为进一步加深印象,打开该书目录第8章“工艺功能”,从P256页开始查询答案。
该书中描述:“200smart cpu提供了自HSC0~HSC3集成的高速计数器功能,最高计数器频率达到200KHZ(仅对于ST、SR系列cpu单相计数模式时)。其中高速计数器号HSC0和HSC2支持8种计数器模式(0、1、3、4、6、7、9、10);HSC1和HSC3仅只支持一种高速计数器模式(模式0)”。
在该书的常问问题中找到了一些解释:“S7-200SMART取消了在S7-200上的模式12功能,模式12是S7-200高速计数器中的一种模式,可允许用户在不用外部接线的情况下,使用高速计数器测量CPU集成点Q0.0或Q0,1的高速脉冲输出。由于S7-200SMART的高速脉冲输出使用运动控制指令,其当前的脉冲数可以通过指令引脚C_POS得到,但这种方式受限于更新机制,大约有50mS的延迟,如果客户需要更快速地得到当前值,则可以通过AXIS*_RDPOS指令实现”。答案终于在此找到,不是舍弃了高速计数器模式12,而是让用户更加方便快捷地应用了原S7-200的高速计数器模式12了,使用原S7-200的模式12功能仅仅只需要调用指令即可。
那运动控制指令C_POS引脚和AXIS*_RDPOS(读取当前轴位置)指令又是什么?答案在第303页中找到。在“启用和初始化运动轴指令AXIS_CTRL”功能有此输出引脚“C_POS”,表示运动轴的当前值,该值可以输出脉冲数(DINT双整形数)或工程单位数(REAL浮点数),用该引脚数据可以得到原S7-200的高速计数器模式12(脉冲数),只是这个值是受控于plc的扫描机制的影响。原因很显然,其中一个原因是调用该功能的使能端子EN端是SM0.0标志位,一般该特殊标志位需受控于程序刷新的扫描机制。在本书第308页中对功能指令AXIS*_RDPOS的解释,“相对于C_POS,I_POS可以更快获取当前值,C_POS数值是周期性更新(plc扫描机制),时间是几十毫秒,而使用AXIS*_RDPOS则可以微秒级返回当前位置,对于需要及时获取当前位置的应用,则需要此指令”。至此,疑问像窗户一样,被豁然推开,明白了其中被“误解”的原因所在。
书是知识的“海洋”,想要获取海洋中的“宝藏”,需要大家去认真学习和实践。只有深入地去学习、实践过,才能掌握其中的“奥秘”。抬头看了一下时钟,已指向23点,休息了吧,祝自己明天能够有新的知识收获。
2016年9月19日星期一 晚