[西门子] TIA博途SCL编程学习40_斐波那契数列

[复制链接]
查看432 | 回复0 | 2024-5-16 14:17:20 | 显示全部楼层 |阅读模式
1 | 题目



斐波那契数列,又称黄金分割数列,或兔子数列,是指这样一个数列:1,1,2,3,5,8,13,21...这个数列从第3项开始,每一项都等于前两项之和。设计一个程序求出斐波那契数列的前10项。



2 | 设计分析



采用递归算法。



3 | 创建功能或功能块



创建功能FC,命名为“Fibonacci”。




4 | 定义接口变量



具体接口变量定义见下图:
FC的函数名即为返回值变量名,在接口中不能被修改,只能通过修改FC名称进行修改。



5 | 程序代码



编写程序代码。如下图:


注意递归调用的使用方法,即FC自己调用自己。



6 | 代码测试



在循环OB中调用FC- “Fibonacci”。如下图:


循环调用FC-Fibonacci,循环变量作为实参传递,Fibonacci的返回值存入一维数组数据块中。
转至在线并监控程序。如下图:
求得斐波那契数列的前10项分别是1、1、2、3、5、8、13、21、34、55。



7 | 总结



学习使用FOR循环语句;
学习子程序的调用;
学习使用IF...ELSE语句;
学习使用一维数组;
学习递归调用;
学习在OB中调用FC和实参的传递方式。
转发朋友圈可获得S7-1500学习视频,百度云一份
博途V18下载地址
链接: https://pan.baidu.com/s/1okjXKeRmkG4sYCpDH-vdyA 提取码: 9wjb 复制这段内容后打开百度网盘手机App,操作更方便哦


S7-1x00 如何通过编程判断程序是否发生过改动

自动化so酷
当 S7-1x00 中的程序修改后,软件校验和会发生改变。使用 GetChecksum 指令可以读取 PLC 程序中的软件较验和,将其与之前的校验和进行比较可以得知 PLC 的程序是否被改动。


本文档介绍了如何使用 GetChecksum 指令判断 PLC 中的程序是否被修改并纪录修改时间。
01   使用的硬件与软件
硬件:CPU 1215FC V4.4
软件:TIA Portal V17
02   编写 PLC 程序,调用读取校验和功能块
2.1
建立用于存储校验和及纪录修改时间的 DB 块


建立的 DB 块内容如图 1 所示。
注意:此处的校验和变量 、上一周期校验和变量、最终纪录的修改时间一定要设置为保持性变量,否则会在 CPU 停机时,不能正确保存。
图 1. 建立存储用 DB


2.2 调用功能块

GetChecksum 指令位于“扩展指令>诊断”文件夹,如图 2 所示。

图 2. 指令集中的位置


指令调用参见图 3,指令参数参考表 3。
图 3. 调用指令块


表 3. 指令管脚说明


2.3 判断校验和改变时输出当前时间
当前读取的校验和与上一周期保存的校验和比较,当较验和发生改变时,纪录较验和改变时的时间,这个时间是程序改变后下载的生效时间。如图 4 所示。
图 4. 输出程序修改后下载的时间


2.4 纪录上一周期的校验和


将本周期计算的校验和保存到上周期校验和变量,用于下一周期的比较,如图 5 所示。
图 5. 纪录上一周期的校验和


2.5 保存错误代码


错误代码仅当发生错误时出现一个周期,需要使用错误位为 true 时抓取错误代码,如图 6 所示。
图 6. 保存错误代码
03    检查程序
可以在程序下载后,对比离线的校验和及在线读取的校验和,检查程序是否正确下载,如图 7 所示。
图 7. 检查程序中读取的校验和


注意:此程序仅检查标准程序的修改;可以通过修改Scope为2,检查安全程序的修改;通过修改Scope为3,检查文本列表的修改。


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

本帖子中包含更多资源

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

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

本版积分规则