上海盟烈自动化科技有限公司 西门子S7-300代理商 上海盟烈自动化科技有限公司 西门子S7-300代理商
西门子合作伙伴上海盟烈自动化 联系人:方鹏
运动控制指令使用准则
必须确保在同一时间仅有一条运动指令激活。
可在中断例程中执行 AXISx_RUN 和 AXISx_GOTO。 但是,如果运动轴正在处理另一命令时,不要尝试在中断例程中启动指令。 如果在中断程序中启动指令,则可使用 AXISx_CTRL 指令的输出来监视运动轴是否完成移动。
运动向导根据所选的度量系统自动组态速度参数(Speed 和 C_Speed)和位置参数(Pos 或 C_Pos)的值。 对于脉冲,这些参数为 DINT 值。 对于工程单位,这些参数是所选单位类型对应的 REAL 值。例如: 如果选择厘米 (cm),则以厘米为单位将位置参数存储为 REAL 值并以厘米/秒 (cm/sec) 为单位将速度参数存储为 REAL 值。
有些特定位置控制任务需要以下运动指令:
要在每次扫描时执行指令,请在程序中插入 AXISx_CTRL 指令并使用 SM0.0 触点。
要*运动到**位置,必须首先使用 AXISx_RSEEK 或 AXISx_LDPOS 指令建立零位置。
要根据程序输入移动到特定位置,请使用 AXISx_GOTO 指令。
要运行通过位置控制向导组态的运动包络,请使用 AXISx_RUN 指令。
其它位置指令为可选项。
常用运动控制指令介绍
AXISx_CTRL
功能:启用和初始化运动轴,方法是自动命令运动轴每次 CPU 更改为 RUN 模式时加载组态/包络表。
图 1. AXISx_CTRL指令
注意:
在您的项目中只对每条运动轴使用此子例程一次,并确保程序会在每次扫描时调用此子例程。使用 SM0.0(始终开启)作为 EN 参数的输入。
MOD_EN 参数必须开启,才能启用其它运动控制子例程向运动轴发送命令。 如果 MOD_EN 参数关闭,运动轴会中止所有正在进行的命令;
Done 参数会在运动轴完成任何一个子例程时开启;
Error 参数存储该子程序运行时的错误代码;
C_Pos 参数表示运动轴的当前位置。 根据测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL);
C_Speed 参数提供运动轴的当前速度。 如果您针对脉冲组态运动轴的测量系统,C_Speed 是一个 DINT 数值,其中包含脉冲数/每秒。如果您针对工程单位组态测量系统,C_Speed 是一个 REAL 数值,其中包含选择的工程单位数/每秒 (REAL)。
C_Dir 参数表示电机的当前方向:信号状态 0 = 正向;信号状态 1 = 反向;
AXISx_DIS
功能:运动轴的 DIS 输出打开或关闭。这允许您将 DIS 输出用于禁用或启用电机控制器。
图 2. AXISx_DIS指令
EN 位打开以启用子例程时,DIS_ON 参数控制运动轴的 DIS 输出。
注意:
如果您在运动轴中使用 DIS 输出,可以在每次扫描时调用该子例程,或者仅在您需要更改 DIS 输出值时进行调用。若实际DIS连接了电机驱动器的DIS输入,如果不使能则可能导致电机不运转。
AXISx_MAN
功能:将运动轴置为手动模式。 这允许电机按不同的速度运行,或沿正向或负向慢进。
图 3. AXISx_MAN指令
RUN 参数会命令运动轴加速至*的速度(Speed 参数)和方向(Dir 参数)。 您可以在电机运行时更改 Speed 参数,但 Dir 参数必须保持为常数。 禁用 RUN 参数会命令运动轴减速,直至电机停止;
JOG_P(点动正向旋转)或 JOG_N(点动反向旋转)参数会命令运动轴正向或反向点动。 如果 JOG_P 或 JOG_N 参数保持启用的时间短于 0.5秒,则运动轴将通过脉冲指示移动 JOG_INCREMENT 中*的距离。 如果 JOG_P 或 JOG_N 参数保持启用的时间为 0.5秒或更长,则运动轴将开始加速至*的 JOG_SPEED;
Speed 参数决定启用 RUN 时的速度。 如果您针对脉冲组态运动轴的测量系统,则速度为 DINT 值(脉冲数/每秒)。 如果您针对工程单位组态运动轴的测量系统,则速度为 REAL 值(单位数/每秒)。
注意:同一时间仅能启用 RUN、JOG_P 或 JOG_N 输入之一。
AXISx_RSEEK
功能:使用组态/包络表中的搜索方法启动参考点搜索操作。当运动轴找到参考点且移动停止时,运动轴将 RP_OFFSET 参数值载入当前位置。
图 4. AXISx_RSEEK指令
RP_OFFSET 的默认值为 0。 可使用运动控制向导、运动控制面板或 AXISx_LDOFF(加载偏移量)子例程来更改 RP_OFFSET 值;
EN 位开启会启用此子例程。确保 EN 位保持开启,直至 Done 位指示子例程执行已经完成;
START 参数开启将向运动轴发出 RSEEK 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 RSEEK 命令。为了确保仅发送了一个命令,请使用边沿检测元素用脉冲方式开启 START 参数。
AXISx_GOTO
功能:命令运动轴转到所需位置。
图 5. AXISx_GOTO指令
START 参数开启会向运动轴发出 GOTO 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 GOTO 命令。为了确保仅发送了一个 GOTO 命令,请使用边沿检测元素用脉冲方式开启 START 参数;
Pos 参数包含一个数值,指示要移动的位置(**移动)或要移动的距离(相对移动)。 根据所选的测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL);
Speed 参数确定该移动的较高速度。 根据所选的测量单位,该值是脉冲数/每秒 (DINT) 或工程单位数/每秒 (REAL);
Mode 参数选择移动的类型:
0:**位置
1:相对位置
2:单速连续正向旋转
3:单速连续反向旋转
Abort 参数启动会命令运动轴停止当前包络并减速,直至电机停止。
注意:若 Mode 参数设置为 0,则必须首先使用 AXISx_RSEEK 或 AXISx_LDPOS 指令建立零位置。
AXISx_RUN
功能:命令运动轴按照存储在组态/包络表的特定包络执行运动操作。
图 6. AXISx_RUN指令
START 参数开启将向运动轴发出 RUN 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 RUN 命令。为了确保仅发送了一个命令,请使用边沿检测元素用脉冲方式开启 START 参数;
Profile 参数包含运动包络的编号或符号名称。 “Profile”输入必须介于 0 - 31。否则子例程将返回错误;
Abort 参数会命令运动轴停止当前包络并减速,直至电机停止;
C_Profile 参数包含运动轴当前执行的包络;
C_Step 参数包含目前正在执行的包络步。
AXISx_LDOFF
功能:建立一个与参考点处于不同位置的新的零位置。
图 7. AXISx_LDOFF指令
开启 START 参数将向运动轴发出 LDOFF 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 LDOFF 命令。为了确保仅发送了一个命令,请使用边沿检测元素用脉冲方式开启 START 参数。
注意:
在执行该子例程之前,您必须首先确定参考点的位置。您还必须将机器移至起始位置。 当子例程发送 LDOFF 命令时,运动轴计算起始位置(当前位置)与参考点位置之间的偏移量。 运动轴然后将算出的偏移量存储到 RP_OFFSET 参数并将当前位置设为 0。这将起始位置建立为零位置。
如果电机失去对位置的追踪(例如断电或手动更换电机的位置),您可以使用 AXISx_RSEEK 子例程自动重新建立零位置。
AXISx_LDPOS
功能:将运动轴中的当前位置值更改为新值。您还可以使用本子例程为任何**移动命令建立一个新的零位置。
图 8. AXISx_LDPOS指令
START 参数开启将向运动轴发出 LDPOS 命令。 对于在 START 参数开启且运动轴当前不繁忙时执行的每次扫描,该子例程向运动轴发送一个 LDPOS 命令。为了确保仅发送了一个命令,请使用边沿检测元素用脉冲方式开启 START 参数;
New_Pos 参数提供新值,用于取代运动轴报告和用于**移动的当前位置值。 根据测量单位,该值是脉冲数 (DINT) 或工程单位数 (REAL)
西门子SIEMENS 上海盟烈自动化科技有限公司
西门子S7-300全系产品,欢迎咨询 联系:方鹏
PLC程序较好的评价标准是实践。看程序能否达到预期的目的。但这还不够。因为能达到目的的程序还有好与不好之分。到底什么样的程序才算好的程序呢?大体有如下几个方面:
1、正确性
PLC的程序一定要正确,并要经过实际工作验证,证明其能够正确工作。这是对PLC程序的较根本的要求,若这一点做不到,其它的再好也没有用。
要使程序正确,一定要准确的使用指令,正确的使用内部器件。准确的使用指令与准确理解指令相联系,为此对指令含义和使用条件一定要弄清楚。必要时,可编些小程序对一些不清楚的指令作些测试。
同一指令,由于PLC的出厂批次不同或是PLC的系列型号的不同,一些指令细节有可能不一样,应仔细查阅编程手册。
内部器件正确使用也是重要的。如有的PLC有掉电保护,有的PLC没有。一定要做到该掉电保护的一定要用掉电保护的器件,反之则不能用。
总之,要准确的使用指令,正确使用内部器件,使所编的程序能正确要作,这是对PLC程序较根本的要求。
2、可靠性
程序不仅要正确,还要可靠。可靠反映着PLC程序的稳定性,这也是对PLC程序的基本要求。
有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。
好的PLC程序对非正常工作条件出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况。好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作。
联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC也可继承这个方法。
3、简短性
使PLC程序尽可能简短,也是应追求的目标。
简短的程序可以节省用户存储区;多数情况下也可节省执行时间,提高对输入的响应速度,还可提高程序的可读性。
程序是否简短,一般可用程序所用的指令条数衡量,用的条数少,程序自然就简短。
要想程序简短,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。
4、省时性
程序简短可以节省程序运行时间,但简短与省时并不完全是一回事。因为运行程序时间虽与程序所拥有指令条数有关,而且还与所使用的是什么指令有关。PLC指令不同,执行的时间也不同。而且,有的指令,在逻辑条件ON时执行与在OFF时执行其时间也不同。另外,由于使用了流程控制指令,在程序中,不是所有指令都要执行等。所以,运行程序的时间计算是较复杂的。(版权所有)但要求其平均时间少,较大时间也不太长是必要的。这样可提高PLC的响应速度。
省时的关键是用好流程控制指令。按情况确定一些必须执行的指令,作*部分,其余的可依程序进行,有选择地执行,或作些分时工作的设计,避免较大时间太长等。
5、可读性
要求所设计的程序可读性要好。这不仅便于程序设计者加深对程序的理解,便地调试,而且,还要便于别人读懂你的程序,便于使用者维护。必要时,也可使程序推广。
要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化,以至于用面向对象的方法进行设计。要多用一些标准的设计。
再就是I/O分配要有规律性,便于记忆与理解。必要时,还要做一些注释工作。内部器件的使用也要讲规律性,不要随便地拿来就用。
可读性在程序设计开始时就要注意。这不易完全做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变的有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。
6、易改性
要使程序易改,也就是要便于修改。
PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。
重新设计程序用于改变PLC工艺的用途要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,作一些修改就可以了。这就要求程序具有易性,便于修改。
易改也就是弹性,要求只要作很少的改动,即可达到改变参数或理改动作的目的。
在设计PLC程序的过程中,能够满足以上6方面的要求的就能称的上是一个好程序了。
西门子SIEMENS 上海盟烈自动化科技有限公司
西门子S7-300全系产品,欢迎咨询 联系:方鹏