zjun3001
级别: 探索解密
精华主题: 0
发帖数量: 19 个
工控威望: 166 点
下载积分: 737 分
在线时间: 29(小时)
注册时间: 2012-11-08
最后登录: 2017-07-25
查看zjun3001的 主题 / 回贴
楼主  发表于: 2014-01-07 18:23
计数时超出高速计数器范围时,我是在高速计数器达到规定值时用脉冲指令触发普通计数器计数,再两数相乘。现担心计算结果有误差,请问有什么好方法,请帮忙
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5196 个
工控威望: 7419 点
下载积分: 158720 分
在线时间: 3159(小时)
注册时间: 2007-11-21
最后登录: 2024-11-17
查看sjm213的 主题 / 回贴
1楼  发表于: 2014-01-07 23:04
1,何种控制,会超出计数范围?
2,为何担心会有误差呢?
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5196 个
工控威望: 7419 点
下载积分: 158720 分
在线时间: 3159(小时)
注册时间: 2007-11-21
最后登录: 2024-11-17
查看sjm213的 主题 / 回贴
2楼  发表于: 2014-01-08 22:04
1,“计数在20000000次左右”,这个范围C251没有问题,-2,147,483,648~+2,147,483,647都OK;
2,“担心在c251复位时的计数误差”,它的复位也是在程序中进行的,不知道为何会有此担心?
3,这段程序,X0已经被C251占用了,不应该再次使用;而且M1被置位后不用复位,直接用M8000替代掉就好了;
4,C251计数到9999时,就会将C100计数增1,而不是10000;
5,C251是高速计数的,不受PLC扫描周期影响,而RST指令是每扫描周期执行一次,所以C251被复位前,它实际的计数值不可控,有可能已经远远超出K10000了,但超出的数值都因复位程序而被丢掉,肯定会造成计数不准确;
6,如果非要用这种方法控制,那么也要用高速计数器中断,在中断中累计C100的数值并复位C251。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5196 个
工控威望: 7419 点
下载积分: 158720 分
在线时间: 3159(小时)
注册时间: 2007-11-21
最后登录: 2024-11-17
查看sjm213的 主题 / 回贴
3楼  发表于: 2014-01-09 20:55
1,直接使用C251,设置值可以随便设,反正它实际值会一直增大的;
2,超出-2,147,483,648~+2,147,483,647范围的话,用高速计数器中断,
ld m1;
dmov c251 d100;
ld c251
out c100 k9999;
rst c251;
这段程序写在中断程序中。