如何将一个8位计数器转化到一个32位的整数中? 点击:1148 | 回复:6



资深土鳖

    
  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-26 10:55:00
楼主
1.问题的由来 其实这是一个简单数学问题,但是问的人却很多,因此在这里解答,下面是一个例子: 2.解决方法 if(old_ciPulse <> ciPulse)then inc_ciPulse = ciPulse - old_ciPulse;计算增量 old_ciPulse = ciPulse ;转化为32位整数 aiPulse = aiPulse + inc_ciPulse + ref_aiPulse; endif ;复位计数器 if(reset = 1) then ref_aiPulse = 0 - aiPulse reset = 0 endif 3. 变量声明: 3.1 ciPulse,USINT,global,硬件计数器变量 3.2 old_ciPulse,USINT,global,变化以前的值 3.3 inc_ciPulse,USINT,global,本次变化后对变化前的增量 3.4 aiPulse,DINT,global,转化到32位后的值. 3.5 old_ciPulse,inc_ciPulse必须和ciPulse同类型,且为无符号; 3.6 ref_aiPulse,aiPulse必须同类型,且为有符号; 4.注意事项 4.1 初始部分中, old_ciPulse = ciPulse ref_aiPulse = 0 - aiPulse 4.2 有符号的计数器处理不同,请想想怎么做?



zoe

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 32回
  • 年度积分:0
  • 历史总积分:172
  • 注册:2003年7月05日
发表于:2004-02-16 10:43:00
1楼
NC161是否是有符号的计数器,或者可以设置,能否给出对计数器进行设置的C语言的例子?多谢!

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-16 11:10:00
2楼
NC161是编码器,无须设置,用TPU调用可以取得当前编码器位置,可以寻找参考点.注意位置是DINT.

zoe

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 32回
  • 年度积分:0
  • 历史总积分:172
  • 注册:2003年7月05日
发表于:2004-02-17 15:40:00
3楼
多谢!您的意思是否我只要在NC161定义一个计数的变量,就像您上面说的old_ciPus的方法就可以了? 关于参考点,是否只能是硬件,如限位开关?如果开关接触有信号,计数器就会自动清零?

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-17 15:55:00
4楼
可以直接定义一个NC161变量.参考点和具体的硬件无关,只要是24V开关量信号就行.

zoe

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 32回
  • 年度积分:0
  • 历史总积分:172
  • 注册:2003年7月05日
发表于:2004-02-25 22:04:00
5楼
从产品使用手册上看,NC161有增量式和绝对式编码两种,接线端口也有不同,那么在编程时需要设置吗?如果需要,能否详细说一下设置方法?多谢!

资深土鳖

  • 精华:2帖
  • 求助:2帖
  • 帖子:32帖 | 344回
  • 年度积分:0
  • 历史总积分:661
  • 注册:2002年5月15日
发表于:2004-02-26 10:55:00
6楼
需要设置第14设置字,具体设置方法请参考2003使用手册NC161部分.

热门招聘
相关主题

官方公众号

智造工程师