利用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