[西门子] 使用SCL编写多物料搬运控制案例

[复制链接]
查看138 | 回复0 | 2024-11-2 08:48:17 | 显示全部楼层 |阅读模式
>

文末有55个实战案例资料

导读:在我们使用SCL语言编写程序的时候,其中用的最多的两个语句就是IF语句和FOR循环语句。特别是做数据运算的时候,FOR循环特别实用。而对于初学者来说,FOR语句却不是那么好理解,那么本文将以案例的形式带领大家理解这个语句。

1. FOR语句说明

FOR语句用于重复执行的程序,当条件为TRUE时,重复执行循环体内的语句;如果条件为FALSE,则终止循环,具体的格式如下。

FOR := TO [BY ] DO

< 语句>;

END_FOR;

FOR语句的执行过程如下。

判断的值是否在与之间,如果值在二者之间,执行;否则,跳出循环,不再执行。

在每次执行时,总是按照指定的步长增加其值。步长可以是任意的整数值。[BY]表示可以省略,也就是不指定步长,则其默认值是1

当的值大于时,退出循环。

示例1:将0+1+2…+100的结果计算出来

这段代码的含义是,变量sum的值从0递增到100,每次循环递增1,变量 i总共取了101个值(0~100),赋值语句“#sum:= #i + #sum;”执行了 101次,实现了从0加到100的运算。这就是循环语句的意义,根据条件让同一段语句反复执行。执行完成后,i的值为101,变量sum的值为5050

上面的那个例子是实用一个FOR循环来实现数据的累加,那么以下是双重FOR循环实现的案例

示例2:如图所示,有一个二维数组的数据,总共包含36个数据,我们需要将0.035.0的数据依次存储到二维数组中。

程序编写

1)新建FB9程序块,并且定义接口变量

2)这个程序就是利用两个FOR循环来实现数据的赋值,大循环是第一维数组,第二个FOR循环是第二维数组,这样的话,每一个FOR大循环一次,里边的循环6次,这样就实现了二维数组的快速赋值。

注意:我们循环的时候一点要知道其规律,也就是外部循环一次,里边的循环是6次。

接下来就是3FOR循环的嵌套了。

示例3如图所示,有一堆的物料(总共三层,一层有12个物料,加起来就是36个)需要我们用机械手搬运,然后我们计算出每个物料的坐坐标值。物料的基准点是在第一个物料的正上面的中心点,依据其位置计算出其他物料的位置。

1)新建UDT的数据类型,其中包含3X,Y,Z轴的数据

2)新建FB块并且定义接口变量

3)程序分析

首先是将Num变量清0,然后是3FOR循环计算出数据。当外部循环一次的时候,里边的两个FOR循环加起来循环12次。

第一次的时候,Num等于0k,j,i的值等于0,然后基准点等于0的话,那计算出来的数据就是[0,0,0];

第二次的时候,Num等于1i的值等于1,计算出来的数据是[100,0,0];

第三次的时候,Num等于2i的值等于2,计算出来的数据是[200,0,0];

第四次的时候,Num等于3j的值等于1i的值等于0,计算出来的数据是[0,100,0];

第五次的时候,Num等于4j的值等于1i的值等于1,计算出来的数据是[100,100,0];

第六次的时候,Num等于5j的值等于1i的值等于2,计算出来的数据是[200,100,0];

依次计算

最近有很多小伙伴说要案例书籍,说是手机上看文章不是很方便,我抽时间把55个实战案例全部整理出来,案例都是比较典型的,其中包括气缸控制程序、报警程序、程序框架、运动控制程序封装、模拟量控制变频器、通信等实战案例。需要的可以加我微信:biao467524527,如果加不上可以私信我。


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

本帖子中包含更多资源

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

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

本版积分规则