当前位置:首页 >> 信息与通信 >>

西门子200PLC高速计数问题


西门子 200PLC 高速计数问题
1.我用 HSC0 的 10 模式,来计数 AB 相脉冲,我用状态表监控 HSC0 的数值不断变化,可是 SMD38 当前计数值怎么没变化?

2.当前的计数值在哪个寄存器里?怎么取出来?

3.设定值是 6000,计数值到 6000 后产生中断,这个没问题,但是编码器转动时,HSC0 还会计数

。怎么写程序就可以实现计数到 6000 后,在中断里 HSC0 里面的当前值马上清零,旋转编码器旋转时,还不会计数。等再启动时才开始计数

// 主程序: // 在主程序中,首先将输出 Q0.0 置,0,因为这是脉冲输出功能的需要。再初始化高速计 // 数器 HSC0,然后调用子程序 0 和 1。 // HSC0 起动后具有下列特性:可更新 CV 和 PV 值,正向计数。 // 当脉冲输出数达到 SMD72 中规定的个数后,程序就终止。 // 主程序 LD R MOVB // // SM0.1 Q0.0,1 // 首次扫描标志(SM0.1=1)。 // 脉冲输出 Q0.0 复位(Q0.0=0)。 // 装载 HSC0 的控制位:

16#F8,SMB37

激活 HSC0,可更新 CV,可更新 PV, 可改变方向,正向计数。

// HSC 指令用这些控制位来组态 HSC。 MOVD 0,SMD38// HSC0 当前值(CV)为 0。 MOVD 1000,SMD42 HDEF CALL CALL MEND // 子程序 0: // 子程序 0 初始化,并激活脉冲输出(PLS)。 // 在特殊存储字节 SMB67 中定义脉冲输出特性:脉冲串(PT0),时基,可更新数值,激活 PLS。 // SMW68 定义脉冲周期,其值为时基的倍数。 // 最后,在 SMD72 中指定需要产生的脉冲数。(SMD72)为内存双字,即 4 个字节)。 // 子程序 0 SBR 0 // 子程序 0 // 装载脉冲输出(PLS0)的控制位:PT0,时基 1ms,可更新,激活。 // 脉冲周期 1ms。 // 产生 30000 个脉冲。 0,0 0 1 // HSC0 的第一次设定值(PV)为 1000。

// HSC0 定为模式 0。 // 调用子程序 0。 // 调用子程序 1。 // 主程序结束。

MOVB 16#8D,SMB67 MOVW 1,SMW68 MOVD 30000,SMD72 PLS RET // 子程序 1: 0

// 起动脉冲输出(PLS 0),从输出端 Q0.0 输出脉冲。 // 子程序 0 结束。

// 子程序 1 起动 HSC0,并把中断程序 0 分配给中断事件 12(HSC 0 的当前值 CV 等于设定值 PV)。 // 只要脉冲计数值(当前值 CV)达到设定值(PV),该事件就会发生。 // 最后,允许中断。 // 子程序 1 SBR 0 // 子程序 1。 // 把中断程序 0 分配给中断事件 12(HSC 0 的 CV=PV)。

ATCH 0,12

ENI HSC RET 0

// 允许中断。 // 按主程序中对 HSC 0 的初始组态特性,起动 HSC0。 // 子程序 1 结束。

// * * * * * * * * * * * * * * * * * * * * // 中断程序 0: // 当 HSC 0 的计数脉冲达到第一,设定值 1000 时,调用中断程序 0。 // 输出端 Q0.1 置位(Q0.1=1)。 // 为 HSC 0 设置新的设定值 1500(第二设定值) // 用中断程序 1 取代中断程序 0,分配给中断事件 12(HSC 0 的 CV=PV)。 // 中断程序 0 INT S 0 // 中断程序 0。

Q0. 1,1 // 输出端 Q0.1 置位(Q0.1=1)。 // 重置 HSC 0 的控制位,仅更新设定值(PV)。 // HSC 0 的下一个设定值为 1500(第二设定值)。

MOVB 16#A0,SMB37 MOVD 1500,SMD42 ATCH 1,12 HSC RETI // 中断程序 1: 0

// 用中断程序 1 取代中断程序 0,分配给中断事件 12。 // 起动 HSC 0,,为其装载新的设定值。 // 中断程序 0 结束。

// 当 HSC 0 的计数脉冲达到第二设定值 1500 时,调用中断程序 1。 // 输出端 Q0.2 置位(Q0.2=1)。 // HSC 0 改成减计数,并置新的设定值 1000(第三设定值)。 // 用中断程序 2 取代中断程序 1,分配给中断事件 12(HSC 0 的 CV=PV)。 // 中断程序 1: INT S 1 // 中断程序 1。

Q0. 2,1 // 输出端 Q0.2 置位(Q0.2=1)。 // 重置 HSC 0 的控制位,更新设定值,并改成减计数(反向计数)。 // HSC 0 的下一个设定值为 1000(第三设定值)。

MOVB 16#B0,SMB37 MOVD 1000,SMD42 ATCH 2,12 HSC RETI 0

// 用中断程序 2 取代中断程序 1,分配给中断事件 12。 // 起动 HSC 0,,为其装载新的设定值和方向。 // 中断程序 1 结束。

// * * * * * * * * * * * * * * * * * * * * // 中断程序 2: // 当 HSC 0 的计数脉冲达到第三设定值 1000 时,调用中断程序 2。 // 输出端 Q0.1 和 Q0.2 复位(Q0.1=0,Q0.2=0)。 // HSC 0 的计数方向重新改为正向(增计数),并将当前计数值置为 0,而设定值 PV 保持不变(1000)。 // 重新把中断程序 0 分配给中断事件 12,程序再次起动 HSC 0 运行。 // 当脉冲数达到 SMD72 中规定的个数后,程序就终止。 // 中断程序 2: INT R 2 // 中断程序 2。

Q0. 1,2 // 输出端 Q0.1 和 Q0.2 复位(Q0.1=0,Q0.2=0)。 // 重置 HSC 0 的控制位,更新 CV,改为正向计数(增计数)。 // HSC 0 的当前值复位(CV=0)。

MOVB 16#D8,SMB37 MOVD 0,SMD38 ATCH 0,12

// 把中断程序 0 分配给中断事件 12。

HSC RETI

0

// 重新起动 HSC 0。 // 中断程序 2 结束。

既然利用脉冲输出,必须选用 CPU 224DC/DC/DC


相关文章:
S7-200系列PLC编程器的高速计数器使用示例
西门子 S7-200 系列 PLC 具有高速计数的功能;举一例子来谈谈高速计数的用途,我们采用普通电机来带动丝 杆转动,我们想控制转动距离,怎么来解决这个问题?那么我们可...
西门子S7-200PLC的160个常见问题
西门子S7-200PLC的160个常见问题_计算机硬件及网络_IT/计算机_专业资料。西门子 ...使用 CPU 内置的高速计数器和高速脉冲发生器处理序列脉冲信号 使用部分 CPU 数字...
s7-200高速脉冲计数器及PTO和PWM
s7-200高速脉冲计数器及PTO和PWM_信息与通信_工程科技_专业资料。西门子S7-200PLC关于高速脉冲计数和高速脉冲输出的相关技术总结高速脉冲计数器高速计数器专用输入 高...
西门子S7-200 PLC高速脉冲输出向导使用方法_图文
西门子S7-200 PLC高速脉冲输出向导使用方法_信息与通信_工程科技_专业资料。1、...如果 PTO 向导的 HSC 计数器功能已启用,C_Pos 参数包含用脉冲数 目表示的...
西门子S7-200系列PLC计数器的类型
西门子 S7-200PLC 的计数器共有 255 个计数器(不包括高速计数器)可以 使用,计数的形式可以分为“加计数”、“减计数”与“加减计数”3 类。 (1)加计数(CTU...
西门子S7-200PLC试题及答案
西门子 S7-200PLC 试题(1) 一、填空题(20 分) 1.S7-200 系列 PLC 的数据存储区分两大部分,是与。 2.高速计数器 HC 的寻址格式是 。 3.S7-200 型 ...
西门子PLC高速计数器的控制字和状态字介绍
西门子PLC高速计数器的控制字和状态字介绍_电子/电路_工程科技_专业资料。1. ...第二章 西门子S7-200系列... 48页 免费 喜欢此文档的还喜欢 S7...
PLC双相高速计数
PLC双相高速计数_教学案例/设计_教学研究_教育专区。PLC 双相高速计数,连接编码器 可以看看对应的手册的,上面有现成的例子和详细的讲解说明。 看下 图 : 1、连...
西门子S7-200PLC试题及答案
西门子 S7-200PLC 基础填空 1.Plc 的全称是( ) ,最早研制 plc 的国家是( ...A 2个 B 1个 C 3个 D 4个 7.S7-200 系列 PLC 有 6 个高速计数器,...
S7-200系列PLC试题及答案
29. S7-200 系列 CPU 的 I∕O 中断包括输入端的上升沿下降沿中断、高速计数...42. 西门子 S7-200 系列 PLC 之间或者 PLC 与 PC 之间有自由口、点对点接口...
更多相关标签:
西门子200plc计数器 | 西门子plc高速计数器 | 西门子200高速计数器 | 西门子200高速计数 | 200plc高速计数器 | 西门子plc计数器 | 西门子plc计数器使用 | 西门子plc脉冲计数器 |