s7-200怎么对编码器编程
绝世美人儿
815次浏览
2020年07月29日 07:28
最佳经验
本文由作者推荐
画家英语-威风的近义词
悬赏分:5 - 解决时间:2008-12-8 08:33
有两台用变频器控制的电机,要求他们同步,但是其中用到编码器,请问s7-200怎么对编码器中脉冲处理,用什么指令,请大家回答,谢谢谢谢
问题补充:我的意思是做位置控制用的,是同步。我可以再加分,谢谢大家
问题ID: 29207 提问者:仰望明天 - 新生 第1级
最佳答案
给你一个网上的例子看看——
用编码器输入,显示转速的程序,采用的编码器是增量型,1024线。
编程思路:
1,用PLS输出脉冲串来仿真编码器的输入。
2,定义高速计数器,
3,采用定时中断100MS采集一下高速计数器的当前值。
4,计算速度((当前值)-(前一值)) *600 /1024
5,清除计数器当前值(防止计数值溢出)
ORGANIZATION_BLOCK MAIN:OB1
TITLE=PROGRAM COMMENTS
BEGIN
Network 1 // Network Title
/ 定义脉冲串输出(仿真编码器输出)
LD SM0.1
R Q0.0, 1
MOVB 16#8F, SMB67
MOVW +5, SMW68
MOVD +30000000, SMD72
PLS 0
MOVR 0.0, VD204
CALL SBR_0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=SUBROUTINE COMMENTS
BEGIN
Network 1
/ 定义高速计数器HSC0
LD SM0.0
MOVB 16#F8, SMB37
HDEF 0, 0
MOVD +0, SMD38
MOVD +5000, SMD42
ATCH INT_1, 12
HSC 0
ENI
Network 2
/ 定时中断,100MS采集一下HC0的值
LD SM0.0
MOVB 100, SMB34
ATCH INT_0, 10
ENI
Network 3 // Network Title
/ Network Comment
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=INTERRUPT ROUTINE COMMENTS
BEGIN
Network 1 // Network Title
/ 计算速度,VD208显示每分钟转速。
LD SM0.0
MOVD HC0, VD100
DTR VD100, VD200
MOVR VD200, VD300
-R VD204, VD300
MOVR 600.0, VD304
*R VD300, VD304
MOVR VD304, VD208
R 1024.0, VD208
MOVR VD200, VD204
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK INT_1:INT1
TITLE=INTERRUPT ROUTINE COMMENTS
BEGIN
Network 1 // Network Title
/ 清除编码器当前植
LD SM0.0
MOVD +0, SMD38
HSC 0
MOVR 0.0, VD204
-R VD300, VD204
END_INTERRUPT_BLOCK