[西门子] 好玩的西门子S7-1200编程案例

[复制链接]
查看21619 | 回复0 | 2024-1-5 14:18:48 | 显示全部楼层 |阅读模式


今天分享两个很有趣的案例,使用西门子博途软件来进行编程的,里面有用到梯形图编程和SCL语言编程,感兴趣的学起来。

  猴子吃桃

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃了前一天剩下的一半零一个。到第10天再想吃时,只剩下一个桃子了。
求第一天共摘了多少个桃子?分析:求第一天共摘了多少个桃子,即未知数是桃子总量(整数类型);已经数:第10天时,只剩1个桃子(整数类型),天数:10天(整数类型);实现步骤:1、使用博途软件,创建项目,选择一个S7-1200/S7-1500的PLC,设备组态完毕后2、添加FB块并建立局部变量,如图所示临时变量(Static):天数(预设为10),a(剩余桃子数预设为1),b(当前桃子数)输出变量(Output)有:总桃数数据类型均选择为int(整数类型)


3、FB块内编程计算总桃数的过程,使用的是SCL语言进行,在此使用的是程序控制指令WHILE END WHILE(满足条件时执行),计数过程运用到plc的循环扫描工作原理,天数<=1时即不用再执行。



4、主程序里调用FB块,编译调试,使用仿真器即可得到结果,如图所示。



天数预设为10,得到结果是1534个桃子。天数改变,剩余桃子数改变,或者吃的方式改变,结果也会随之变化,是不是很好玩,试着实验下吧!

分数序列求和

有一个分数序列:2/1、3/2、5/3、8/5、13/8、21/13......求出这个数列的前 20 项之和。
分析:这个分数序列有一个规律,可以看到,设第一个分数的分子为a,分母为b,那么第一个分数是a/b,第二个分数是(a+b)/a,第三个分数是(a+(a+b))/(a+b)。。。依次排列下去的。实现步骤:1、使用博途软件,创建项目,选择一个S7-1200/S7-1500的PLC,设备组态完毕后;2、添加FB块并建立局部变量,如图所示临时变量(Static):n(分数序列起始数,int整数类型),临时(a/b的临时存储地址,结果是Real浮点数类型),分子(Real浮点数类型)分母(Real浮点数类型)输出变量(Output):和(计数的分数序列之和,结果是Real浮点数类型)Constant设置变量:序列数(int整数类型)


3、FB块内编程计算分数序列之和的过程,使用的是SCL语言进行,在此使用的是程序控制指令FOR(在计数循环中执行),即从1循环执行到序列数(在此设置为50了),循环执行过程中不断求和,循环执行结果即求得和。



4、主程序里调用FB块,编译调试,使用仿真器即可得到结果,如图所示。



序列数预设为50,得到结果是81.20129。序列数改变,分数序列之和结果也会随之变化,是不是很好玩,试着实验下吧!
有同学就问了,我对SCL语言不懂,用梯形图能不能编写,当然也是可以的,只是麻烦了点。主程序相同,FB块设定里需变动下,如图所示,预设了分子和分母的初始值,程序里就可以少写点了。


主程序是一样的,FB块里梯形图程序及执行结果如下图所示,使用的是JMP(跳转指令)。MW100为设定的循环比较数,MW10为设定循环数,如设为50时,MW100由0变为50时即循环执行了50次求和,从而实现分数序列50个求和结果。


两种不同的编程语言您都可以尝试下,喜欢用哪种就用哪种。您也可以尝试用梯形图编写猴子吃桃的工艺哦,比序列数求和要简单,练习起来吧!

END


本帖子中包含更多资源

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

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

本版积分规则