设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
好玩的西门子S7-1200编程案例
返回列表
发新帖
[西门子]
好玩的西门子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
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
xiao617402152
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』