高速计数器‘.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高速计数器‘

案例例图 程序框图 程序和注释 本例描述了S7-200 DC/DC/DC的高速计数器(HSC)的功能。HSC计数速度比PLC扫描时间快得多,采用集成在CPU 224中的20K硬件计数器进行计数。总的来说,每个高速计数器需要10个字节内存用来存控制位、当前值、设定值、状态位。 本程序长度为91个字。 // 主程序: // 在主程序中,首先将输出Q0.0置,0,因为这是脉冲输出功能的需要。再初始化高速计 // 数器HSC0,然后调用子程序0和1。 // HSC0起动后具有下列特性:可更新CV和PV值,正向计数。 // 当脉冲输出数达到SMD72中规定的个数后,程序就终止。 // 主程序 LD SM0.1 // 首次扫描标志(SM0.1=1)。 R Q0.0,1 // 脉冲输出Q0.0复位(Q0.0=0)。 MOVB 16#F8,SMB37 // 装载HSC0的控制位: // 激活HSC0,可更新CV,可更新PV, // 可改变方向,正向计数。 // HSC指令用这些控制位来组态HSC。 MOVD 0,SMD38 // HSC0当前值(CV)为0。 MOVD 1000,SMD42 // HSC0的第一次设定值(PV)为1000。 HDEF 0,0 // HSC0定为模式0。 CALL 0 // 调用子程序0。 CALL 1 // 调用子程序1。 MEND // 主程序结束。 // * * * * * * * * * * * * * * * * * * * * // 子程序0: // 子程序0初始化,并激活脉冲输出(PLS)。 // 在特殊存储字节SMB67中定义脉冲输出特性:脉冲串(PT0),时基,可更新数值,激活PLS。 // SMW68定义脉冲周期,其值为时基的倍数。 // 最后,在SMD72中指定需要产生的脉冲数。(SMD72)为内存双字,即4个字节)。 // 子程序0 SBR 0 // 子程序0 MOVB 16#8D,SMB67 // 装载脉冲输出(PLS0)的控制位:PT0,时基1ms,可更新,激活。 MOVW 1,SMW68 // 脉冲周期1ms。 MOVD 30000,SMD72 // 产生30000个脉冲。 PLS 0 // 起动脉冲输出(PLS 0),从输出端Q0.0输出脉冲。 RET // 子程序0结束。 // * * * * * * * * * * * * * * * * * * * * // 子程序1: // 子程序1起动HSC0,并把中断程序0分配给中断事件12(HSC 0的当前值CV等于设定值PV)。 // 只要脉冲计数值(当前值CV)达到设定值(PV),该事件就会发生。 // 最后,允许中断。 // 子程序1 SBR 0 // 子程序1。 ATCH 0,12 // 把中断程序0分配给中断事件12(HSC 0的CV=PV)。 ENI // 允许中断。 HSC 0 // 按主程序中对HSC 0的初始组态特性,起动HSC0。 RET // 子程序1结束。 // * * * * * * * * * * * * * * * * * * * * // 中断程序0: // 当HSC 0的计数脉冲达到第一,设定值1000时,调用中断程序0。 // 输出端Q0.1置位(Q0.1=1)。 // 为HSC 0设置新的设定值1500(第二设定值) // 用中断程序1取代中断程序0,分配给中断事件12(HSC 0的CV=PV)。 // 中断程序0 INT 0 // 中断程序0。 S Q0. 1,1 // 输出端Q0.1置位(Q0.1=1)。 MOVB 16#A0,SMB37 // 重置HSC 0的控制位,仅更新设定值(PV)。 MOVD 1500,SMD42 // HSC 0的下一个设定值为1500(第二设定值)。 ATCH 1,12 // 用中断程序1取代中断程序0,分配给中断事件12。 HSC 0 // 起动HSC 0,,为其装载新的设定值。 RETI // 中断程序0结束。 // * * * * * * * * * * * * * * * * * * * * // 中断程序1: // 当HSC 0的计数脉冲达到第二设定值1500时,调用中断程序1。 // 输出端Q0.2置位(Q0.2=1)。 // HSC 0改成减计数,并置新的设定值1000(第三设定值)。 // 用中断程序2取代中断程序1,分配给中断事件12(HSC 0的CV=PV)。 // 中断程序1: INT 1 // 中断程序1。 S Q0. 2,

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档