S7-200系列 PLC 本体 PTO 提供了应用库 MAP SERV Q0.0 和 MAP SERV Q0.1,分别用于 Q0.0 和 Q0.1 的脉冲串输出。
使用前,需要在 STEP7 Micro/Win 软件中添加 MAP 指令库。如下图所示:
库文件
关于如何添加指令库
参见:添加指令库
为了很好的应用该库,需要在运动轨迹上添加三个限位开关:
应用这两个库时,一些输入输出点的功能被预先定义,使用时需要按照定义接线,如下表所示:
为了可以使用该库,必须为该库分配 68 BYTE(每个库)的全局变量,如下所示:
下表是使用该库时所用到的最重要的一些变量(以相对地址表示):
MAP 库指令用于 S7-200 CPU 集成点 Q0.0 和 Q0.1 的脉冲输出,MAP 库指令具有以下主要功能:
1. 初始化
2. 脉冲量与工程量转换
3. 按照指定方向和频率运行
4. 相对位置控制
5. 绝对位置控制
6. 回零点
7. 停止当前脉冲输出
8. 改变当前位置为指定的新位置
Q0_x_CTRL
该块用于传递全局参数,每个扫描周期都需要被调用。
Velocity_SS 是最小脉冲频率,设置最小为 1,不能为 0,是加速过程的起点和减速过程的终点。
Velocity_Max 是最大小脉冲频率,受限于电机最大频率和PLC的最大输出频率。
accel_dec_time 是加减速时间,范围被规定为 0.02 ~ 32.0 秒,但最好不要小于0.5秒。
警告:超出 accel_dec_time 范围的值还是可以被写入块中,但是会导致定位过程出错!
Scale_EU_Pulse
该块用于将一个位置量转化为一个脉冲量,因此它可用于将一段位移转化为脉冲数,或将一个速度转化为脉冲频率。
下面是该功能块的计算公式:
Scale_ Pulse_EU
该块用于将一个脉冲量转化为一个位置量,因此它可用于将一段脉冲数转化为位移,或将一个脉冲频率转化为速度。
下面是该功能块的计算公式:
Q0_x_MoveVelocity
该功能块用于让轴按照指定的方向和频率运动,在运动过程中可对频率进行更改。
注意:Q0_x_MoveVelocity 功能块只能通过 Q0_x_Stop block 功能块来停止轴的运动。
Q0_x_MoveRelative
该功能块用于让轴按照指定的方向,以指定的速度,运动指定的距离。
Q0_x_MoveAbsolute
该功能块用于让轴以指定的速度,运动到指定的位置。
Q0_x_Home
该功能块用于寻找参考点,在寻找过程的起始,电机首先以 Start_Dir 的方向,Homing_Fast_Spd 的速度开始寻找;在碰到limit switch (“Fwd_Limit” or “Rev_Limit”)后,减速至停止,然后开始相反方向的寻找;当碰到参考点开关(input I0.0; with Q0_1_Home: I0.1)的上升沿时,开始减速到 “Homing_Slow_Spd”。如果此时的方向与 “Final_Dir” 相同,则在碰到参考点开关下降沿时停止运动,并且将计数器HC0的计数值设为 “Position” 中所定义的值。
如果当前方向与 “Final_Dir” 不同,则必然要改变运动方向,这样就可以保证参考点始终在参考点开关的同一侧(具体是那一侧取决于 “Final_Dir”)。
寻找参考点的状态可以通过全局变量 “Homing_State” 来监测:
Q0_x_Stop
该功能块用于使轴减速直至停止。
Q0_x_LoadPos
该功能块用于将当前位置的绝对位置设置为预置值。
注意:使用该块将使得原参考点失效,为了清晰地定义绝对位置,必须重新寻找参考点。
注意:以下例程仅为示例程序,请勿直接用于测试!
测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!
此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
在寻找参考点的过程中由于起始位置、起始方向和终止方向的不同会出现很多种情况。
一个总的原则就是:从起始位置以起始方向 Start_Dir 开始寻找,碰到参考点之前若碰到限位开关,则立即调头开始反向寻找,找到参考点开关的上升沿(即刚遇到参考点开关)即减速到寻找低速 Homing_Slow_Spd,若在检测到参考点开关的下降沿(即刚离开遇到参考点开关)之前已经减速到 Homing_Slow_Spd,则比较当前方向与终止方向 Final_Dir 是否一致,若一致,则完成参考点寻找过程;若否,则调头找寻另一端的下降沿。若在检测到参考点开关的下降沿(即刚离开遇到参考点开关)之前尚未减速到 Homing_Slow_Spd,则在减速到 Homing_Slow_Spd 后调头加速,直至遇到参考点开关上升沿,重新减速到 Homing_Slow_Spd,最后判断当前方向与终止方向 Final_Dir 是否一致,若一致,则完成参考点寻找过程;若否,则调头找寻另一端的下降沿。(Final_Dir 决定寻找参考点过程结束后,轴停在参考点开关的哪一侧)
下面的图形会反应不同情形下寻找参考点的过程。
Start_Dir=0,Final_Dir=0
Start_Dir=0, Final_Dir=1
Start_Dir=1, Final_Dir=0
Start_Dir=1, Final_Dir=1
介绍:
该文档提供了S7-200 PLC 脉冲输出指令库 MAP 的使用说明。该库基于 S7-200 PLC 本体脉冲输出指令,用于帮助用户实现较复杂的定位功能,控制伺服驱动或步进电机。
下载网址:https://support.automation.siemens.com/CN/view/zh/79604545
使用 MAP 库指令后还需要创建 PTO 向导吗?
不需要。MAP 指令库与 PTO 向导不能对同一个轴控制同时使用。
以 MAP 库指令 Q0_0_CTRL 指令为例, 最大频率和启动停止频率设置为多少合适?
Q0_0_CTRL 指令输入参数最大频率受限于电机最大频率和 S7-200 CPU Q0.0 最大输出频率;
Q0_0_CTRL 指令输入参数启动/停止频率设置最小为 1,不能为 0。
如下图 1 所示:
图 1. Q0_0_CTRL 指令
注意:如果错误地将启动停止频率设置为 0, 则触发 MAP 库指令的脉冲输出指令也无法使 S7-200 CPU 输出高速脉冲。
当再触发 Q0_0_Stop 指令, CPU 报错停机, SF/DIAG 指示灯红色报警,在 PLC 信息可查看到内部软件错误。
如下图 2,3 所示:
图 2. Q0_0_Stop 指令
图 3. 内部软件错误
使 S7-200 CPU 输出高速脉冲需要使用哪些 MAP 库指令?
以 Q0.0 脉冲输出为例,必须使用 SM0.0 调用 Q0_0_CTRL 指令,而 Q0_0_MoveVelocity,Q0_0_MoveRelative,Q0_0_MoveAbsolute 指令都可以用于使 S7-200 CPU 输出高速脉冲。
以上三条指令分别用于按照指定速度和方向运行,相对位置, 绝对位置的控制, 具体使用哪一条则根据用户的实际需求调用。
如何判断 S7-200 CPU 已经发送出脉冲?
可通过以下硬件输出点和软件中指令监视两种方法判断 S7-200 CPU 正在输出脉冲:
方法 1. 观察 S7-200 CPU 脉冲输出点 Q0.0 或 Q0.1 指示灯的状态:
当低频率脉冲输出时,Q0.0 或 Q0.1 的指示灯为闪烁状态。
方法 2. 在 STEP 7 Micro/Win 编程软件中在线监视 Q0_0_CTRL 或 Q0_1_CTRL 指令输出参数 C_Pos 数值:
S7-200 CPU Q0.0 脉冲输出, Q0.2 方向控制点状态为 0 时,C_Pos 数值不断减小;S7-200 CPU Q0.0 脉冲输出, Q0.2 方向控制点状态为 1 时,C_Pos 数值不断增加。
S7-200 CPU Q0.1 脉冲输出, Q0.3 方向控制点状态为 0 时,C_Pos 数值不断减小;S7-200 CPU Q0.1 脉冲输出, Q0.3 方向控制点状态为 1 时,C_Pos 数值不断增加。
以 Q0_0_CTRL 为例,如下图 4 所示:
图 4. 监视 C_Pos 数值变化
在 MAP 库指令中如何知道 S7-200 CPU 输出脉冲的频率?
可以通过以下两种方法监视到 S7-200 CPU 输出脉冲的频率:
1. MAP 库预先定义了 SMD172 和 SMD 182 分别为Q0.0 和 Q0.1 的脉冲频率值 ,在该特殊存储器地址中可以监视到 S7-200 CPU 输出脉冲的频率。
2. MAP 库预先定义了高速计数器 HC0 和 HC3,可以利用测量高速频率串的频率和速度库指令来计算 S7-200 CPU 输出脉冲的频率。
下载网址:
https://support.automation.siemens.com/CN/view/zh/27864874
以 Q0_0_Stop 指令为例, 使用该指令能否实现S7-200 CPU 立即停止脉冲输出?
不能。触发 Q0_0_Stop 指令只能实现减速停止脉冲输出。
使用 MAP 库指令如何实现急停开关按下时,立即停止?
以 Q0_0_CTRL 为例,当该指令的正向极限或反向极限信号为 1 时,S7-200 CPU立即停止脉冲输出。
因此可将急停开关信号接入正向极限或反向极限信号来实现立即停止脉冲输出。编程方法可参考如下图 5 所示:
图 5. 急停编程
使用 MAP 库指令是否可以在 S7-200 CPU 脉冲输出时修改频率?
以轴 0 为例, Q0_0_MoveRelative,Q0_0_MoveAbsolute 不能在 S7-200 CPU 脉冲输出时修改频率;
使用 Q0_0_MoveVelocity 指令,需要先赋予新的频率值,重新使用上升沿信号触发 Q0_0_MoveVelocity 指令执行位, S7-200 CPU 即可按照修改后的新频率值运行。
如下图 6 所示:
图 6. Q0_0_MoveVelocity 指令修改脉冲输出频率
使用 MAP 库指令回零点,回零点的速度是否可以修改?
可以。以轴 0 为例,回零点高速 Homing_Fast_Spd 默认为 Q0_0_CTRL 指令中输入参数最大频率Velocity_Max/2 ;回零点低速 Homing_Slow_Spd 默认为 Q0_0_CTRL 指令中输入参数启动停止频率 Velocity_SS。
可按照如下步骤修改回零点的速度:
第一步. 如库存储区建议地址为VB0至VB67, 如下图 7 所示:
图 7. 库存储区建议地址
第二步. 在符号表 MAP SERV Q0.0(V1.8)找到回零点高速 Homing_Fast_Spd 和回零点低速 Homing_Slow_Spd 对应的地址。Homing_Fast_Spd 存放地址为VD23,Homing_Slow_Spd 存放地址为VD19,如下图 8 所示:
图 8. 查找回零点速度地址
第三步. 在执行回零点运动前,将修改的回零点高速 Homing_Fast_Spd 和回零点低速 Homing_Slow_Spd 新值通过 MOVE 传送指令传送到 VD23 和 VD19。 如下图 9 所示:
图 9. 修改回零点速度
注意:一旦 Q0_X_CTRL 指令中输入参数最大频率 Velocity_Max 或启动停止频率 Velocity_SS 速度改变,回零点高速 Homing_Fast_Spd 和回零点低速 Homing_Slow_Spd 又自动按照默认值计算出。