『7x24小时有问必答』
文末有SCL核心编程实战案例资料
导读:在自动化设备中通常会使用多个伺服或者使用工业机器人实现物料码垛、搬运,或者立体库中取料等工作。在这些应用场景中,它有其特殊性,比如物料有规则(几层、几列等),那么针对这种应用场景,我们通常需要使用算法来实现计算每个物料的位置,从而让我们的设备正常去取料。
那么对于算法来说,使用梯形图来编程就没有太大的优势了,要使用文本语言,在西门子PLC中是SCL语言,而各大厂商的PLC几乎是普及了这种结构化文本语言,也是现在工程师必备技能之一,那么如何来编写这种立体库的程序呢?我们以一个例子来抛砖引玉!
1.场景:
以下是8层,8列物料,每个物料的长款高都是200mm,物料序号从左下角数起是第“1"个,第“1"个右侧是第“2”个,依次顺序!
控制要求:
(1)当输入要取的物料时,计算出物料的X,Y,Z的位置值,并且计算出在第几层第几列。
比如:第1个物料,它的位置是X等于100,Y等于100,Z等于100,所在的位置是第1层第1列;
第2个物料,它的位置是X等于300,Y等于100,Z等于100,所在的位置是第1层第1列;
(2)由于加工场景不同,物料的基准点可以在程序中设置偏移,如图中所示基准点的位置是在第1个物料的中心点,当设置偏移后可以偏移至物料的顶部!
2.程序编写

(1)主程序调用FB块

输入物料数“1”,计算出的层数是在第1层、第1列,XYZ的位置都是100。

(2)FB程序编写

定义接口变量

程序行1至7是判断输入的物料序号,从第1个开始,如果小于0则输出错误标志及错误代码,并且错误信息提示“Invalid box index
程序9至17是计算位置信息。
程序行10,假如设的是第1个物料,则“BoxIndex”的值则是等于1,那么“Index_0”等于0
程序行11,每列个数是1,乘以每层是有8列,所以得出的每层物料个数是8,也就是“total_items_per_layer”是等于8.

程序行14是计算总序列号:“Index_0”等于0除以1,得到的总序列号的值等于0,也就是“total_column_index”等于0

程序行15是计算层号:0除以8,得到的商是等于0
程序行16是计算列号:0除以8,得到的余数是等于0
程序行17是计算物料在列中的位置:0处于8,得到的余数是等于0
程序行19至25判断计算的层数是否大于8层,如果计算大于8层,则返回不执行,并且报错处理
程序行27至30,是输出信息,根据程序行15至17的结果,然后计算出这3个数据的结果都是1,也就是物料处于第1层,第1列,在列中的位置是第1个!!
程序行33是计算物料X轴所在位置,根据程序行16计算出“column_0”等于0,而物料的长是200,200除以2,得到结果是100,然后加上X轴的原点偏移值(如果没设置偏移则为0),那么最终的结果就是等于100.0。
程序行35至50是计算出Y轴和Z轴的值,计算方法和X轴的计算方法是一样的
最近有很多小伙伴说要案例书籍,说是手机上看文章不是很方便,我抽时间把SCL核心编程实战案例全部整理出来,案例都是比较典型的,其中包括SCL的语法结构、气缸控制程序、报警程序、运动控制程序、模拟量控制变频器、V90伺服通信等实战案例。需要的可以加我微信,如果加不上可以私信我!
往期推荐

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

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

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码