西门子PLC 采用高速计数器来接收轴运动输出的脉冲
前言
最近在学习西门子PLC的高速计数器指令和运动控制部分,是用运动控制轴输出 频率为10kHz,AB相正交信号的一万个脉冲信号 来让高速计数器接收,想记录一下自己的学习过程。
一、高速计数器
关于高速计数器的介绍和原理可以去看西门子的开发手册和官方介绍,这里提供链接:高速计数器
在西门子的上位机中可以直接使用高速计数器向导来配置程序。
1.在高速计数器向导里可以选择采用那个计数器。
2.选择工作模式,由于我才用的是AB相正交,所以选择模式9
3. 配置高数计数器的子程序,配置当前值/预设值,计数方向和计数速率等参数
4.配置中断程序
5.当中断事件启动后,写中断程序。
6. 这里就是高速计数器接收的I/O口
还有一个要注意的是,在系统块里,要设置一下输入I/O口的频率
当程序都配置完成后,在西门子上位机里就会自动生成相应的代码。
可以在中断程序(Count_EQ0)中写自己想要添加的控制程序。
二、运动控制
关于运动控制,西门子PLC上位机中也有运动控制向导,可以直接是用运动控制向导来生成配置程序。 西门子官方运动控制
1.运动控制向导
1.选择要使用的轴
2.选择测量系统,有相对脉冲和工程单位(由于我只要发送一万个脉冲,所以选择相对脉冲)
3. 配置输出脉冲的信号类型和极性
4.后面的配置按照自己的需求去选择,我这里只需要发送脉冲,所以直接跳到运动控制生成的子程序。
生成的代码如下: 这里有生成很多子程序,主要用到的有AXIS0_CTRL和AXIS0_GOTO 这些子程序中CTRL要和其他子程序搭配起来用,CTRL必须要使用,重点来介绍一下AXIS0_CTRL和AXIS0_GOTO。
AXIS0_CTRL
启用和初始化运动轴,方法是自动命令运动轴每次 CPU 更改为 RUN 模式时加载组态/包络表。
MOD_EN 参数必须开启,才能启用其它运动控制子例程向运动轴发送命令。 如果 MOD_EN 参数关闭,运动轴会中止所有正在进行的命令; Done 参数会在运动轴完成任何一个子例程时开启; Error 参数存储该子程序运行时的错误代码; C_Pos 参数表示运动轴的当前位置。 根据测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL); C_Speed 参数提供运动轴的当前速度。 如果您针对脉冲组态运动轴的测量系统,C_Speed 是一个 DINT 数值,其中包含脉冲数/每秒。如果您针对工程单位组态测量系统,C_Speed 是一个 REAL 数值,其中包含选择的工程单位数/每秒 (REAL)。 C_Dir 参数表示电机的当前方向:信号状态 0 = 正向;信号状态 1 = 反向;
AXIS0_GOTO
命令运动轴转到所需位置 START 参数开启会向运动轴发出 GOTO 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 GOTO 命令。为了确保仅发送了一个 GOTO 命令,请使用边沿检测元素用脉冲方式开启 START 参数; Pos 参数包含一个数值,指示要移动的位置(绝对移动)或要移动的距离(相对移动)。 根据所选的测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL); Speed 参数确定该移动的最高速度。 根据所选的测量单位,该值是脉冲数/每秒 (DINT) 或工程单位数/每秒 (REAL); Mode 参数选择移动的类型: 0:绝对位置 1:相对位置 2:单速连续正向旋转 3:单速连续反向旋转 Abort 参数启动会命令运动轴停止当前包络并减速,直至电机停止。
然后给输出模块供电,将Q0.0,Q0.2,连接到I0.0,I0.1 即可。
|