用纯PLC程序做直线圆弧插补思路

[复制链接]
查看7705 | 回复17 | 2012-2-7 00:04:49 | 显示全部楼层 |阅读模式
由于用纯PLC程序做插补,在速度方面有缺陷,所以我们选择最简单的逐点比较法在做这个程序。
我们尽量用最简单的指令来实现这个数学算法,这样可以方便移植到各种PLC中去。
     这里我们用alt指令的一次开和关,表示一次脉冲输出,插补扫描用我们就用PLC的扫描周期。这样的话脉冲输出更慢,到了扫描周期的一半,所以这种方法作出的脉冲输出,最大也就1KHZ,实际过程中估计用处不大,但是比较粗糙,且要求不高的地方是可以用的。
     程序结构如下:

PLC的程序我们主要实现以下4条常用的G代码!
G00—快速定位
  格式:G00 X(U)__Z(W)__
  说明:(1)该指令使刀具按照点位控制方式快速移动到指定位置。移动过程中不得对工件
  进行加工。
  (2)所有编程轴同时以参数所定义的速度移动,当某轴走完编程值便停止,而其他
  轴继续运动,
  (3)不运动的坐标无须编程。
  (4)G00可以写成G0
  例:G00 X75 Z200
             G0 U-25 W-100
  先是X和Z同时走25快速到A点,接着Z向再走75快速到B点。
G01—直线插补
  格式:G01 X(U)__Z(W)__F__(mm/min)
  说明:(1)该指令使刀具按照直线插补方式移动到指定位置。移动速度是由F指令
  进给速度。所有的坐标都可以联动运行。
  (2)G01也可以写成G1
  例:G01 X40 Z20 F150
  两轴联动从A点到B点
G02—逆圆插补
  格式1:G02 X(u)____Z(w)____I____K____F_____
  说明:(1)X、Z在G90时,圆弧终点坐标是相对编程零点的绝对坐标值。在G91时,
  圆弧终点是相对圆弧起点的增量值。无论G90,G91时,I和K均是圆弧终点的坐标值。
  I是X方向值、K是Z方向值。圆心坐标在圆弧插补时不得省略,除非用其他格式编程。
  (2)G02指令编程时,可以直接编过象限圆,整圆等。
  注:过象限时,会自动进行间隙补偿,如果参数区末输入间隙补偿与机床实际反向间隙
  悬殊,都会在工件上产生明显的切痕。
  (3)G02也可以写成G2。
  例:G02 X60 Z50 I40 K0 F120
  格式2:G02 X(u)____Z(w)____R(+\-)__F__
  说明:(1)不能用于整圆的编程
  (2)R为工件单边R弧的半径。R为带符号,“+”表示圆弧角小于180度;
  “-”表示圆弧角大于180度。其中“+”可以省略。
  (3)它以终点点坐标为准,当终点与起点的长度值大于2R时,则以直线代替圆弧。
  例:G02 X60 Z50 R20 F120
  格式3:G02 X(u)____Z(w)____CR=__(半径)F__
  格式4:G02 X(u)____Z(w)__D__(直径)F___
  这两种编程格式基本上与格式2相同
G03—顺圆插补
  说明:除了圆弧旋转方向相反外,格式与G02指令相同。
下位机解析 这四条代码的方法:
我们分析发现每一条代码最大有四个参数
这样我们定义下面的寄存器
D0(指令序号,正在执行的x条代码)
(第1条)D1 (指令代码)  D2 (第1个参数)  D3(第2个参数)  D4 (第3个参数)              D5(第4个参数)
(第2条)D6  (指令代码)  D7 (第1个参数)   D8(第2个参数)  D9 (第3个参数)                D10(第4个参数)
(第3条)D11(指令代码)   D12 (第1个参数)D13(第2个参数)D14 (第3个参数)                 D15(第4个参数)
(第4条)D16  (指令代码)  D17 (第1个参数)   D18(第2个参数)  D19 (第3个参数)         D20(第4个参数)
.................
如果我们要发送下面的四条代码,那么我只需发送相应的参数到PLC中就可以了。
1  G00  X75 Y200
2  G01  X40 y20 F150
3  G02  X60 Y50 I40 K0 F120
4  G03  X10 Y50 R20 F120
..................

有了上面的理解,我们就不不难写上位机程序了,其实上位机程序不难,用触摸屏,VB,组态修改上面的寄存器即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
AK-47/:P | 2012-2-7 04:50:35 | 显示全部楼层
看到了
我理解:PLC开机,认为是在原点,给出目的点坐标,然后,让PLC根据逐点比较法,推算出下步的动作,是X轴动,还是Y轴动,方向及步长,如此循环,直到达到目的点为止。
是吗?
永恒的爱 | 2012-2-7 08:15:27 | 显示全部楼层
希望加入到这次开发中,看了好几遍了
永恒的爱 | 2012-2-7 08:17:32 | 显示全部楼层
思路不错,实质就是借助PLC本身的扫描周期,来产生插补周期,是个好点子
wenwen | 2012-2-8 21:34:26 | 显示全部楼层
绝好的思路
yt5408 | 2012-2-9 01:32:18 | 显示全部楼层
一起加油
yt5408 | 2012-2-10 06:44:40 | 显示全部楼层
嗯,归纳的很好,就照此来做吧
kakliuy333 | 2012-2-10 08:18:59 | 显示全部楼层
也算我一个吧!我是菜鸟,真的很想加入
流畅de步伐 | 2012-2-10 10:40:41 | 显示全部楼层
加入,期待,看了两遍。。
xinfeiyang | 2012-3-22 15:58:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
xinfeiyang | 2012-3-22 16:01:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
loveplc | 2012-3-23 07:23:52 | 显示全部楼层
xinfeiyang 发表于 2012-3-22 16:01
还有就是用纯PLC程序怎样实行步进电机,或者伺服电机的加减速,我觉得这是一个较难解决的问题。 ...

我们做个简单的S曲线图即可,比如,事先设置好参考点!,再来比较,从而达到实际值
zhoubaojian8 | 2012-7-10 16:49:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
zhoubaojian8 | 2012-7-10 17:21:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
LYX583 | 2012-7-19 10:35:06 | 显示全部楼层
各位可看一下宋伯生的《PLC编程实用指南》一书中的相关章节。详细的很。
loveplc | 2012-7-19 16:20:24 | 显示全部楼层
LYX583 发表于 2012-7-19 10:35
各位可看一下宋伯生的《PLC编程实用指南》一书中的相关章节。详细的很。

下载中,看下有啥可取的!
loveplc | 2012-12-25 21:51:53 | 显示全部楼层
琢磨了许久,发现用纯PLC编写圆弧插补和直线插补,异常复杂,最多也就是第一象限,估计三菱8000行的程序也难以完成,中间有很多的数学运算
loveplc | 2012-12-25 22:12:10 | 显示全部楼层
目前的做法是PLC内部已经做好直线插补和圆弧插补,在用PLC解析G代码,这样就可以了。这个在我新开发的JSCNC运动控制器上面实现了。









上面是所有的解析过程,其实思路很清楚的。
完整的程序如下!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则