一般象你这种情况最好使用高速计数器来采集,因为你最高可能每秒会有100个脉冲,用常规计数器会丢脉冲。
定义高速计数器无外乎下面几个步骤:
1。建一个初始化程序,用SM0.1控制;
2。在初始化程序中,初始化高速计数器
2.1 设置控制寄存器(HSC0为SMB37),不同的计数器对应不同的DI点,HSC0为I0.0,HSC3为I0.1,HSC4为I0.2,HSC5为I0.3(222不支持HSC1和HSC2)
2.2 执行HDEF指令,你可以用模式0
2.3 置计数器初始值(HSC0为SMD38),如果从零启动就置零
2.4 置预置值(HSC0为SMD42),计数器计到这个值可以产生一个中断,一般利用这个中断调用相应的中断程序把当前值(SMD38)复零,否则计数器到头就不再计数了,当然你也可以置一个大点的值,在其他程序中清除当前值(SMD38),确保永远到不了头就可以了。
2.5 指定中断程序(ATCH),中断事件是12,程序号看你程序了
2.6 打开中断(ENI),这条指令没有的话,2.5是不起作用的
2.7 启动高速计数器(HSC),按前面的初始化,你就要启动HSC0,即N为0
3。程序中读取高速计数器的值,对于HSC0,HC0单元中的内容就是当前的计数值,这个单元只读不能写,你可以通过修改SMD38的内容改变当前的计数值。
不知道这样你是否能理解,不清楚可以给我邮件lijianjc@163.com
编码器的脉冲输出是否匹配。S7-200内置的高速输入可以接收PNP型或者HTL型脉冲
1,编码器的脉冲输出是否匹配。S7-200内置的高速输入可以接收PNP型或者HTL型脉冲;
2,接线方面。包括电源线,A B等线要正确;
3,内部编程。要和外部接线配合定义HSC,定义好了才可以读到HSC。
4,注意超出范围。这个Encoder的PPR挺高,要注意最大速度旋转时是否超出了input的分辨率。
s7-200有高速计数输入口一般I0-I7都可以分配得到
可以看说明书
编码器有五根线
两根电源、A/B/Z三相
对应接上线,旋转编码器,监控当前值就可以看到脉冲数
注意,极性问题