同一行 绝对定位_PLC运动控制基础之绝对定位和相对定位

原文地址::https://blog.csdn.net/weixin_29170089/article/details/112594724

相关文章

1、PLC的绝对位置和相对位置定位----http://bbs.gkong.com/archive.aspx?id=356112&page=1

2、以三菱PLC来举例说明相对定位与绝对定位指令----http://www.pinlue.com/article/2020/07/0409/3710968359132.html

3、关于三菱PLC 相对位置绝对位置控制问题----https://zhidao.baidu.com/question/1948667583964909108.html

4、三菱Fx的相对定位和绝对定位指令----http://bbs.gkong.com/archive.aspx?id=453393

5、三菱相对定位指令与绝对定位指令区别----http://www.ymmfa.com/read-gktid-126897.html

6、绝对定位与相对定位的方向到底如何确定?有点蒙圈了----http://www.ad.siemens.com.cn/service/answer/solved_235939_1072.html

7、三菱PLC的相对定位和绝对定位指令,不用担心双线圈问题----https://haokan.baidu.com/v?pd=wisenatural&vid=4285771410139203564

大家好,我是工控老冯。通过前面的学习,我们知道PLC可以配合伺服做精确的定位控制。在学习定位控制之前,我们需要学习一些定位控制的基础知识。今天我们就来学习相对定位和绝对定位的区别。

那什么是相对定位,什么是绝对定位呢?所谓的相对定位和绝对定位是针对起始计算位置的设置而言的。利用绝对坐标值来进行定位称为绝对定位。利用相对的位移来定位就是相对定位。我们用下面这张图片来讲解。


图中O为原点,假定现在工件在C点,我们现在要把工件移动到A点去。如果是绝对定位的话就是移动到+200。如果是相对定位就是移动-400。所以可以看出,绝对定位是相对于原点而言的,相对定位是相对于当前位置而言的。这就是区别,那我们在运动控制的程序编写中用哪种方式呢?肯定是绝对定位,因为当原点确定后,如果用相对定位,同一位置会因为当前位置的不同而有不同的相对位移。这是很麻烦的。如果是绝对定位就方便多了,任何位置相对于原点来说都是唯一的。

绝对定位的指令如何使用呢?

D100为目标位置,D1000为运行速度。这里为什么要用D1000呢?因为像速度这种参数是需要掉电保持的,不然每次开机都要先设置速度,设备才能正常运转。

既然我们定位都是选择绝对定位。那相对定位是不是就没用了呢?肯定有用的。相对定位我们可以做手动模式。

同理,手动速度寄存器我们也要用掉电保持的。然后记得加上互锁和左右限位就可以了。为了安全,我们的限位传感器需要接常闭点,所以程序里面需要用常开。原理是和急停按钮一样的。当传感器坏了或者线松了,我们的设备才能安全的停下来。

以上便是运动控制中绝对定位和相对定位的讲解。下期我们学习如何回原点。想学习PLC的朋友记得点个关注。老冯会经常给你们带来PLC的干货分享。
————————————————
版权声明:本文为CSDN博主「宇宙探索未解之迷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_29170089/article/details/112594724

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用 Siemens S7-300 PLC 的 STL(Structured Text Language)编写的多点位绝对定位控制功能块的示例程序: ```pascal FUNCTION_BLOCK FB_AbsPositionControl VAR_INPUT Start : BOOL; // 输入变量:开始信号 TargetPosition : INT; // 输入变量:目标位置 END_VAR VAR_OUTPUT Done : BOOL; // 输出变量:完成信号 END_VAR VAR CurrentPosition : INT := 0; // 内部变量:当前位置 Moving : BOOL := FALSE; // 内部变量:移动标志 END_VAR METHODS MoveToPosition : BOOL; // 内部方法:移动到指定位置 ResetPosition : BOOL; // 内部方法:重置位置 END_METHODS METHOD MoveToPosition : BOOL VAR Distance : INT := TargetPosition - CurrentPosition; // 计算与目标位置的距离 BEGIN IF Distance > 0 THEN // 如果距离大于 0,向正方向移动 Moving := TRUE; CurrentPosition := CurrentPosition + 1; IF CurrentPosition >= TargetPosition THEN // 达到目标位置时停止移动 Moving := FALSE; END_IF; ELSIF Distance < 0 THEN // 如果距离小于 0,向负方向移动 Moving := TRUE; CurrentPosition := CurrentPosition - 1; IF CurrentPosition <= TargetPosition THEN // 达到目标位置时停止移动 Moving := FALSE; END_IF; ELSE // 距离等于 0,已经在目标位置上 Moving := FALSE; END_IF; RETURN Moving; END_METHOD METHOD ResetPosition : BOOL BEGIN CurrentPosition := 0; RETURN TRUE; END_METHOD METHOD Execute : BOOL VAR Result : BOOL; BEGIN IF Start THEN // 开始信号为 TRUE Result := MoveToPosition(); // 调用移动方法 ELSE // 开始信号为 FALSE,重置位置 Result := ResetPosition(); END_IF; Done := NOT Result; // 如果移动方法返回 FALSE,表示移动完成 RETURN Result; END_METHOD END_FUNCTION_BLOCK ``` 在这个示例,我们定义了一个名为 FB_AbsPositionControl 的功能块,其包含一个输入变量 Start 和一个输入变量 TargetPosition,以及一个输出变量 Done。我们还定义了两个内部变量:CurrentPosition(当前位置)和 Moving(移动标志)。 功能块定义了两个内部方法:MoveToPosition 和 ResetPosition。MoveToPosition 方法用于根据目标位置进移动,ResetPosition 方法用于重置位置。 在功能块的 Execute 方法,根据开始信号 Start 的状态决定是调用 MoveToPosition 方法进移动,还是调用 ResetPosition 方法重置位置。最后,根据 MoveToPosition 方法的返回值确定是否移动完成,并将结果赋给 Done 变量。 请注意,此示例代码仅供参考,具体的 PLC 厂家和编程语言可能会有不同的语法和功能块实现方式。根据您所使用的 PLC 和编程软件,您可能需要进一些适应和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值