S7-200高速计数器计算长度和速度?

利用S7-200高速计数器计算缆绳的拉出长度和速度,编码器100个脉冲为一圈,一圈100mm,程序如下:
网络1(调用HSC0)
LD     SM0.1
CALL   高速初始:SBR3
网络2(启用定时中断,设200ms中断一次,主要用于计算速度。连接中断时间10。)
LD     SM0.1
MOVB   200, SMB34
ATCH   INT_1:INT2, 10
网络3(准许中断)
LD     SM0.0
MOVD   HC0, VD4004
ENI
网络4(计数数据的转换可根据实际情况转换成高度长度数据等。VD4012:长度值。)
LD     SM0.0
MOVD   HC0, AC0
AENO
DTR    AC0, AC0
AENO
/R     100.0, AC0
AENO
*R     0.1, AC0
AENO
ROUND  AC0, VD4012
网络5(手动清零)
LD     M0.0
HSC    0
MOVD   +0, SMD38
//—————————————//
高速初始(SBR3)
LD     SM0.1
MOVB   16#F8, SMB37
HDEF   0, 9
MOVD   +0, SMD38
MOVD   +1000000, SMD42
HSC    0
//—————————————//
中断程序int_1(利用中断计算速度)
网络1
LD     SM0.0
MOVD   HC0, VD4024
AENO
-D     VD4020, VD4024
AENO
DTR    VD4024, AC0
AENO
MOVR   AC0, VD4028
AENO
/R     100.0, VD4028
AENO
MOVR   VD4028, AC0
AENO
*R     0.1, AC0
AENO
*R     5.0, AC0
AENO
MOVR   AC0, VD4032
网络2
LD     SM0.0
MOVD   HC0, VD4020
————————————————————-
问题如下:
1:主程序网络3中断是什么意思?
2:该HSC0中断后HSC0是否不受主程序网络2中断影响,一直计数?
3:计算速度的INT_1中断程序是否有问题?
4:如果把INT_1中断程序里的HSC0换成AIW0模拟输入值(转化成VD),计算出来的VD4032会是0还是什么?

问题补充:
(4)问题的做法就是每过200MS就取一次压力值,本次取得压力值减去上次的压力值,得出200MS时间内的增量,再除以200MS,换算成S,就能算出每秒的平均增加力,跟计算速度一样的到底。不知道这样想法有没有问题。

最佳答案

1:主程序网络3中断是什么意思?
答:准许全局中断,你前面网络2不是有中断条件吗?这个和网络2相匹配的,也就是说有中断条件就要使用到ENI指令。

2:该HSC0中断后HSC0是否不受主程序网络2中断影响,一直计数?
答:对,一直计数。网络2也就是说每200MS扫描一次,刷新一次计数功能。

3:计算速度的INT_1中断程序是否有问题?
答:没问题。等于设定值中断。

4:如果把INT_1中断程序里的HSC0换成AIW0模拟输入值(转化成VD),计算出来的VD4032会是0还是什么? 
答:脉冲数如何变模拟量?错误的想法!

提问者对于答案的评价:
xile

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc321016.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2020年11月5日

相关推荐