[西门子] TIA博途SCL编程学习45_过桥问题

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


在一个黑夜里,有四个人需要过桥,每次只能通过两人,其中一人必须拿着手电筒,但只有一个手电筒,所以过桥后必须有一个人拿手电筒回来,其他人才能继续过桥。四人过桥的速度分别为:1、2、5、10(分钟),要最慢的那个人过了桥才算真正过桥。编写程序求这四个人过桥所花的最短时间。



2 | 设计分析


采用贪心算法,该题目只有两种贪心策略。先对n个人过桥的时间从小到大排序。
第一种:让第1个人分别带第n-1个人和第n个人过桥,用时a[n-1]+a[n]+2*a[1]。
第二种:让第1个人和第2个人先过桥,第1个人回来送手电筒,让第n、n-1个人过桥,然后第2个人回来送手电筒,用时a[n]+a[1]+2*a[2]。


3 | 创建功能或功能块


创建功能块FB,命名为“CrossTheBridge”。




4 | 定义接口变量


具体接口变量定义见下图:
定义数据类型为整型数的一维数组变量#statTimes,分别存储四个人过桥的速度,初始值分别为1、2、5、10,单位分钟。



5 | 程序代码


编写程序代码。如下图:


注意程序中的贪心算法,策略1和策略2。



6 | 代码测试


在循环OB中调用FB-“CrossTheBridge”,调用时会自动创建背景数据块,命名为“InstCrossTheBridge”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:


得到结果:四个人过桥所花最短时间为17分钟。



7 | 总结


学习使用WHILE循环语句;
学习使用IF..ELSE条件语句;
学习组合赋值的使用;
学习EXIT语句在循环中的作用。
- END -
参见下图:



旧款


  • 6ES7513-1RL00-0AB0
  • 6ES7515-2RM00-0AB0
最高FW2.9
新款


  • 6ES7513-1RM03-0AB0
  • 6ES7515-2RN03-0AB0
最高FW3.0


新的显示面板

  • 和标准CPU统一显示面板,更耐用
  • 显示面板响应速度更快
  • 面板固件集成于CPU,无需单独更新固件
统一的CPU显示面板,更可靠,操作更便捷!

采用新芯片的1500冗余CPU,性能大幅度提升,性价比进一步凸显,可以更好满足各种应用的需求!后面我们还将介绍FW3.0给1500H系列CPU带来的功能提升,也敬请关注。









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

本帖子中包含更多资源

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

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

本版积分规则