查看原文
其他

工控工程师,你是如何写定位程序的?

965528555 工控论坛 2023-07-10

工程师们,谁要是这样写定位程序,我跟谁急!


看到论坛看到一个帖子,如下图:

我一看就知道其受到一些定位案例资料,甚至是按官方的案例来写的。比如下面这样:

这样写法的人非常多,可是这样很不直观,而且很容易由于程序错误导致程序不同位置都触发定位功能。也没有更好的节省PLC资源,即同一个功能最好是只在一处调用,这更符合编码理念。


比如高级语言中把一些常用的功能封装成类或者说做成一个方法。在程序中需要用到的时候只需要调用这个方法即可。用到PLC编程中也是一样,我们可以把一个伺服定位程序中常用到的如回原点,绝对定位,相对定位等做成一个方法,然后在程序中其它地方都只需要调用这个方法(如绝对定位)即可。


如下图采用信捷PLC的简单示例,三菱等其它品牌也是如此:

下面把伺服定位常用的做成一个方法:

和大家之前常规写法相比哪种好些?大家当然可以展开讨论。我个人是非常反对每次定位都去直接使用定位指令的!


把定位功能放在一个专门的子程序或者块里,在其前面实现各种步动作,最终都只是调用这一个指令所在行。就完全可以在前面不需要每次写定位程序,而只关心逻辑动作,比如第一步走到绝对位置A,第二步走到绝对位置B,第三步走到绝对位置C,第四步又回到绝对位置A。这样的定位程序可以先把步骤写好,每一步对后面需要调用的定位指令的相关位置值进行赋值即可。执行到哪一步就触发一次定位指令的触发条件。作为每一次定位所需要的定位指令则直接放在动作程序后面(为什么)只写一次即可。


不同的写法也展示了不同的思维。


假如做这么一个事:
甲要打A一顿,要打50下。然后他打完了,乙也要打A一顿100下,完了后丙也要打A150下(囧,A好惨)。
前面人的思维就是甲把A拉出来打完50下,然后乙又把A拉出来打,完了后又是丙。
这样一来他们仨发现这不划算啊,我们三个人打这个A还轮流累的要死三个人都要费力。而且A此时也凑过来凄惨的说对啊你们按顺序来都算了,你们还有时候甲在打我的时候乙也过来打了。太没人性了,甚至有时丙也一起上,叫我怎么活。
然后大家一致商量算了,大家一起请个打手,甲说打的时候打手打A 50下,然后完了后打手再按乙的吩咐打100下,大家都把指令告诉打手按先后执行。这样大家都觉得轻松,甲乙丙都觉得省事了。A也觉得至少不用多重挨揍了。


看看大家怎么说

莫头脑 said:

DRVA我一般只用一次…

51477工控迷 said:

就是说最好就调用一次是吧。

sinemonk said:

 感谢指正。

微鑫科技 said:

这个其实与C编程的思想是一致的。

蛇会大学 said:

新手必经之路,看看我第一次写定位用了多少个POSST?另一张图是上两个月写的另一台机。

sxjice545 said:

对于单个类型脉冲控制的写法,一般只会写一条针对变数的脉冲输出指令。关于变数是提前处理的,最后执行脉冲输出程序。

MIC小赖 said:

从来都是把驱动部分区分开,这部分对我来说写个API驱动就好了,放在自动程序里面就是灾难。。

余生少年 said:

确实把轴控制部分单独拿出来写会更直观一些。

机栝 said:

赞同楼主的观点。

20150101 said:

我写过类似的程序, 也按楼主的方法做过,但是又改回去了,不记得具体是什么原因。我用的是步进顺控, 程序里有用到绝对定位也用到相对定位,手动、自动模式。

陈嘉伟 said:

楼主,三菱有不得不说的理由,为什么我们平常的做法,三菱不用西门子的FB、FC模块去写?
因为用了那种方式,就必须使用结构化编程。然后本来可以写20K步的CPU,写了一个FC调用后,就会立马造成程序占用步,调用越多占用的资源也越多;
我刚开始写三菱写一台7轴的非标自动化设备也用了FC调用这种方式,贪方便,下程序的时候发现居然超过120%多。
用回简单的编程方法,再一编译,同样的程序,只用30%容量不到。有一说一,调用FC的步数要比重复调用相同程序的步数要多了。
楼主你可以拿GXWORK2,结构化编程随便试试,在三菱L系列里面,调用FC占用的步数比调用相同的程序步数要多,我也很奇怪这点。

277914955 said:

你这种写法要做好时序,我信捷的PLC也是用了一条ddrva指令,不停的传送数据,启动定位标志,取完成标志位复位定位启动标志。调试的时候就出现了时序的问题,调整了一下就没问题了,但是程序结构看着就没那么整齐有序了。

zhengchang said:

请个中间打手,以前调试ARM的游戏程序就学会了,现在想来ARM可以把程序变成数据装载到内存区再跳转去执行,真是经典。


评论区集合,你认同作者的看法吗?


来源/中华工控网,转载请注明出处


往期阅读▼

如何能在短时间内学会PLC?来看看吧!
【分享】施耐德LMC 058运动控制之电子凸轮
老电工由浅入深带你入门学PLC的工作原理和梯形图的编程规则
21张现场照有138处不规范操作,你能看出几个?
做变频器15年了,为大家解读变频器的输出短路保护功能
伺服系统增益协调的作用及举例说明,文末有伺服产品调试学习PPT!
PLC梯形图编程很low?那你一定要看看PLC梯形图的由来了
CODESYS线上直播,解读控制器开发平台软件的那些事儿
17个变频器+电动机使用中必须要弄清楚的问题,电工高级工必备!
电工找工作好难,你怎么看?
【干货分享】WINCC7.3和1200如何建立OPC通讯?
又涨见识了!全自动口罩机,每台1分钟能产100只!
PLC编程变量太多,如何规划地址便于记忆?
看过来!见过完美的机电安装工程是什么样吗?
变频器启停该如何接线,要几个开关?看动画就明白了!起动机是如何带动汽车发动机的?
为什么单相电机要用电容,三相电机不需要电容?
当工业机器人遇上虚拟现实,是什么场景?

点“阅读原文”查看更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存