S7-200 CPU PTO 向导功能

使用 PTO 向导控制 S7-200 CPU 集成点 Q0.0 和 Q0.1 的脉冲输出更加容易。PTO 向导具有以下主要功能:

1. 手动运行

2. 包络运动。S7-200 CPU 最多允许 25 个包络,一个包络表可以包含 1-29 个步。包络运动可选以下两种操作模式:

(1)单速连续运转

(2)相对位置

3. 停止当前的连续运动包络,并增加向导包络定义中指定的脉冲数

4. 改变当前位置为指定的新位置

PTO 向导位置控制功能使用步骤

1. S7-200 CPU 脉冲输出和方向输出点接线

2. PTO 向导配置

3. PTO 向导子程序编程

S7-200 CPU 脉冲输出和方向输出点接线

使用 PTO 向导用于 S7-200 CPU 脉冲输出和方向控制,用户应按照如下表 1 所示的定义接线:

  PTO0 PTO1
脉冲输出点 Q0.0 Q0.1
方向点 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点 自定义 S7-200 CPU 其它输出点或数字量扩展模块输出点为方向点

表 1. S7-200 CPU 脉冲和方向输出点

PTO 向导配置

用户必须先配置 PTO 向导,才能使用 PTO 向导生成的子程序 。

用户可在STEP 7 Micro/Win 编程软件中选择菜单命令工具> 位控向导按照以下步骤执行:

注意:如下是使用西门子 SINAMICS V80 为例,而用户必须根据实际使用的电机参数设置 PTO 向导!

第一步. 为 S7-200 PLC 选择 “配置 S7-200 PLC 内置 PTO/PWM” 操作。如下图 1 所示:

图 1. 配置 S7-200 PLC 内置 PTO/PWM 操作

第二步. 选择 Q0.0 或 Q0.1,组态作为 PTO 的输出。如下图 2 所示:

图 2. 指定脉冲发生器

第三步. 从下拉对话框中选择 “线性脉冲串输出(PTO)” 。若想监视 PTO 产生的脉冲数目,点击复选框选择使用高速计数器。如下图 3 所示:

图 3. 选择 PTO

第四步. 设置最高电机速度 MAX_SPEED 和电机启动/停止速度 SS_SPEED。

为您的应用指定最高速度(MAX_SPEED)和开始/停止速度(SS_SPEED)。

注释:MIN_SPEED值由计算得出。您不能在此域中输入其他数值。

电机数据单有指定电机和给定负载开始/停止(或拉入/拉出)速度的不同方法。通常,有用的SS_SPEED数值是MAX_SPEED数值的5%至15%。SS_SPEED数值必须大于由您MAX_SPEED的规定所显示的最低速度。

为了帮助您就您的应用选择正确的速度,请参阅电机的数据单。下面的数字显示一条典型的电机扭矩/速度曲线。


计算公式:最高电机速度(Pulses/s)=电机额定转速(r/s)*电机每转一圈所需脉冲数(Pulses/r)

注意:此处设置的是直接与 S7-200 CPU 连接的电机速度,而非负载速度。)

实际应用中,或需考虑负载转速,脉冲与丝杠移动距离的最小长度单位,机械减速比,节距等参数,由此换算成电机速度。

最小长度单位:控制器发出一个脉冲时,丝杠移动的直线距离或旋转轴转动的度数配;
节距:负载每转移动距离或角度;
机械减速比:电机转速/负载转速;

以西门子的 SINAMICS V80 为例,电机的额定转速为 3000 r/min,即 50 r/s,设置 SINAMICS V80 指令脉冲分辨率为 1000(即控制器向 V80 发送 1000 个脉冲会使伺服电机转动一圈);

因此,设置最高电机速度为电机额定转速即50( r/s)*1000(Pulses/r)=50000(Pulses/s),启动/停止速度取其10%,即 5000 (Pulses/s)。

如下图 4 所示:

图 4. 设置电机速度

第五步. 设置加速时间 ACCEL_TIME 和减速时间 DECEL_TIME。如下图 5 所示:

以毫秒(ms)为单位指定下列时间:

加速时间和减速时间的默认设置均为1秒。通常,电机所需时间不到1秒。

电机加速和减速时间由反复试验决定。您应当在开始时用位置控制向导输入一个较大的数值。当测试您的应用时,请根据要求调整有关数值。请通过逐渐减少时间直至电机开始停顿的方法,优化该应用的设置。

图 5. 设置加减速时间

第六步. 运动包络定义

不配置包络

根据具体需求,用户可以在PTO 向导中不配置包络运动,只手动运行 。直接点击 “确认” 按钮,如下图 6 所示:

图 6. 不配置包络

 

配置包络

用户如需配置包络,则点击 “新包络” 按钮,出现 “运动包络定义” 界面,点击 “Yes” 增加一个新包络运动。如下图 7 所示:

图 7. 配置新包络

针对每个包络,您必须选取下列参数:

您只需点击"步骤绘图"按钮,即可检视根据位置控制向导的计算做出的此步骤之图形表示。这令您可轻易且互动地查看和编辑每个步骤。

位置控制向导也令您可通过在定义包络时输入一个符号名,为每个包络定义符号名。

在完成包络的配置后,您可以将它保存至配置。您的所有配置和包络信息都存储于数据块V内存赋值的PTOx_data页内。

以下针对两种操作模式举例介绍配置步骤:

(1)单速连续旋转

(2) 相对位置

单速连续旋转

对于单速连续旋转,需要输入目标速度。若想终止单速连续旋转,点击复选框 “编一个子程序(PTOX_ADV)用于此包络启动STOP(停止)操作”,并输入停止事件后的移动脉冲数。

以西门子的 SINAMICS V80 控制为例,如果设置目标速度 8000 脉冲/s,停止移动 0 脉冲,如下图 8 所示:

图 8. 单速连续旋转

相对位置

对于相对位置运动,需要输入目标速度和脉冲数。然后,用户可以单击 “绘制步” 按钮,观察运动的图示。根据移动的需要,您可以定义多个包络和多个步。

以西门子的 SINAMICS V80 控制为例,设置目标速度 8000 脉冲/s,结束位置 20000 脉冲,如下图 9 所示:

图 9. 相对位置

第七步. 分配 PTO 向导建议地址。如下图 10 所示:

注意: 建议地址不能在当前项目程序中再被使用。

图 10. PTO 向导建议地址

第八步. 选择完成 PTO 向导配置。如下图 11 所示:

图 11. 完成 PTO 向导配置

在脉冲输出向导当前界面按 F1 键可获取 PTO 向导配置帮助信息,或参考《S7-200 系统手册》第 9 章 S7-200 开环运动控制

PTO 向导子程序编程

PTO配置中可能存在下列项目组件。在下面的组件名中,‘x’将用为脉冲发生而选择得输出位取代:‘0’代表Q0.0,‘1’代表Q0.1。此外,向导将通过附加字符‘_Z’,确保这些组件名在用户的项目中是唯一的;在此Z是一个基于零的指标。Z将不断递增,直至生成唯一的名称。请点击组件名,取得详细说明。

PTO配置的项目组件:

PWM配置的项目组件:

PTO_CTRL子程序(控制)启用和初始化与步进电机或伺服电机合用的PTO输出,请在您的程序中只使用一次,并且请确定在每次扫描时得到执行。请始终使用SM0.0作为EN的输入。

I_STOP(立即停止)输入是一布尔输入。当此输入为低时,PTO功能会正常工作。当此输入变为高时,PTO立即终止脉冲的发出。

D_STOP(减速停止)输入是一布尔输入。当此输入为低时,PTO功能会正常工作。当此输入变为高时,PTO会产生将电机减速至停止的脉冲串。

Done输出是一布尔输出。当Done位被设置为高时,它表明上一个指令也已执行。

Error当Done位为高时,错误字节Error会报告无错误或有错误代码的正常完成。

C_Pos输出记录当前位置,如果PTO向导的HSC计数器功能已启用,C_Pos参数包含用脉冲数目表示的位置;否则此数值始终为零。

 

PTOx_CTRL指令的参数数据类型

错误代码表:

PTOx_RUN子程序(运行包络)命令PLC执行存储于配置/包络表的特定包络中的运动操作。

EN位被开启会启用此子程序。在Done位发出子程序执行已经完成的信号前,请确定EN位保持开启。

START参数用于发起包络的执行。对于在START参数已开启且PTO当前不活动时的每次扫描,此子程序会激活PTO。为了确保仅发送一个命令,请使用边缘探测元素以脉冲方式开启START参数。

Profile(包络)参数包含您为此运动包络指定的编号或符号名。

Abort(终止)参数被开启时将命令位控模块停止当前包络并减速至电机停止。

Done(完成)参数的开启意味着本次包络已经完成。

Error(错误)参数包含本子程序的结果。

C_Profile参数包含位控模块当前执行的包络。

C_Step参数包含目前正在执行的包络步骤。

C_Pos输出记录当前位置,如果PTO向导的HSC计数器功能已启用,C_Pos 参数包含用脉冲数目表示的位置;否则此数值始终为零。

PTOx_RUN指令的参数数据类型:

错误代码表:

PTOx_MAN子程序(手动模式)将PTO输出置于手动模式。这允许电机启动、停止和按不同的速度运行。当PTOx_MAN子程序已启用时,任何其他PTO子程序都无法执行。

RUN(运行/停止)参数被启用时,PTO将加速至指定速度(Speed)。您可以在电机运行中更改Speed参数的数值。停用RUN参数命令PTO减速至电机停止。

Speed参数确定着速度。速度是一个用每秒脉冲数计算的DINT(双整数)值。您可以在电机运行中更改此参数。

Error(错误)参数包含本子程序的结果。

C_Pos输出记录当前位置,如果PTO向导的HSC计数器功能已启用,C_Pos参数包含用脉冲数目表示的位置;否则此数值始终为零。


PTOx_MAN指令的参数数据类型

错误代码表:

PTOx_LDPOS子程序(载入位置)将PTO脉冲计数器的当前位置值更改为一个新数值。您也可以使用本子程序为任何移动命令建立新的零位置。

EN位被开启会启用此子程序。在Done位发出子程序执行已经完成的信号前,请确定EN位保持开启。

START参数的开启会在PTO脉冲计数器中载入一个新位置。对于在START参数已开启且PTO当前不忙时的每次扫描,此子程序会在PTO脉冲计数器中载入一个新位置。为了确保仅发送一个命令,请使用边缘探测元素以脉冲方式开启START参数。

New_Pos参数提供取代现在报告的当前位置值的新值。位置值用脉冲数表示。

Done(完成)参数的开启意味着模块已完成本子程序。

Error(错误)参数包含本子程序的结果。

C_Pos输出记录当前位置,如果PTO向导的HSC计数器功能已启用,C_Pos参数包含用脉冲数目表示的位置;否则此数值始终为零。

PTOx_LDPOS指令的参数数据类型

错误代码表:

PTOx_ADV子程序会停止当前的连续运动包络并按照在向导包络定义中规定的脉冲数前进。如果您已在位置控制向导中指定了至少一个启用PTOx_ADV选项的单速连续旋转,此子程序就会得到创建。

 

不配置包络(手动运行)

以 PTO0 为例,如果没有配置包络,则 PTO 向导只生成 PTO0_CTRL 和 PTO0_MAN 两个子程序。因此,只需要在程序中调用这两个子程序并输入相关参数即可。如下图 12 所示:

图 12. 不配置包络子程序

 

注意:以下例程仅为示例程序,请勿直接用于测试!

测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

例程 1:以西门子 SINAMICS V80 为例,电机最高速度 50000 脉冲/s,启动/停止速度 5000 脉冲/s, 加减速时间1000ms,PTO 0 以 6000 脉冲/s 的速度手动运行。

PTO 0 以 6000 脉冲/s 的速度手动运行例程

 

配置包络(包络运行)

以 PTO0 为例,如果配置了包络,则 PTO 向导生成PTO0_ADV, PTO0_CTRL,PTO0_MAN,PTO_RUN 子程序。 用户根据具体控制需求在程序中调用以上子程序并输入相关参数。如下图 13 所示:

图 13. PTO 包络运行子程序

 

注意:以下例程仅为示例程序,请勿直接用于测试!

测试前,用户务必使用晶体管输出的 S7-200 CPU,并根据实际使用的电机参数和机械行程修改程序中的相关数值!

此程序的作者和拥有者对于该程序的功能性和兼容性不负任何责任。使用该程序的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。

例程 2:以西门子 SINAMICS V80 为例,电机最高速度 50000 脉冲/s,启动/停止速度 5000 脉冲/s, 加减速时间 1000ms,PTO 0 以 8000 脉冲/s 的目标速度单速连续运行,或者执行相对位置运动以 8000 脉冲/s 目标速度运行 20000 脉冲的距离。

PTO 包络运动

 

PTO 向导子程序输入输出参数具体定义请参考《S7-200 系统手册》第 9 章 S7-200 开环运动控制

常问问题

PTO 向导配置生成的数据块数值是否能在程序中或通过上位机修改?

以 PTO0 为例,PTO 向导配置完成后会生成名称为 PTO0_DATA 的数据块,如下图 14 所示:

该数据块数值不能在程序中或通过上位机赋值修改。如果用户有多个不同目标速度或目标位置的控制需求,必须通过建立并执行多个不同运动包络的方法来实现。

图 14. PTO 数据块

如何知道 S7-200 CPU 发送的当前脉冲数以及如何改变当前脉冲数值?

用户必须在 PTO 向导中先启动 “使用高速计数器HSC0(模式12)自动计数线性 PTO 生成的脉冲”, 如下图 15 所示:

图 15. 启动高速计数器模式12

以 PTO0 为例, 当启动了以上选项, 会自动生成子程序 PTO0_LDPOS, 如下图 16 所示:

图 16. PTO0_LDPOS 子程序

在 PTO 向导中启用了高速计数器模式 12,则在 PTO0_CTRL , PTO0_RUN,PTO0_MAN,PTO0_LDPOS 的输出管脚 C_Pos 地址中都存放了 S7-200 CPU 发送的当前脉冲数。

使用 PTO0_LDPOS 子程序不仅可以在线监视到 S7-200 CPU 发送的当前脉冲数,而且在执行该指令时可将 C_Pos 装载为新的脉冲值,如下图 17 所示:

图 17. PTO0_LDPOS 子程序