s7-200如何与编码器编程

我刚接触西门子200PLC,公司要求用编码器在触摸屏上显示位置

最佳答案

给你一个网上的例子看看——

用编码器输入,显示转速的程序,采用的编码器是增量型,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

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

专家置评

已阅,最佳答案正确。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月10日 下午8:02
下一篇 2019年6月10日 下午8:03

相关推荐