签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
上 C 语言课的时候,都实现过汉诺塔的例子,就在想是不是用PLC也可以实现,因为不确定PLC能否实现递归,所以有了前面的帖子;既然能实现22层,那对汉诺塔来说已经够多了。此处只定义了10层,这样的话应该需要2的10方减1,也就是1023个数组条目,用来存储步骤过程;写这个的目的主要是锻炼逻辑思维,可以把递归当成是有限的多项式展开;
0.题目: 有10个大小不一的托盘位于左侧柱子A, 限制要借助中间柱子B, 把A 边的10个托盘,移动到柱子C.
1.解题思路
观察移动托盘的过程,总结规律。
10个托盘步骤太多,可以先假设1,2,3,4
1个托盘:A->C(1),
2个托盘:A->B(1),A->C(2),B->(1)
3个托盘:把前面2个托盘当成一个整体A->B,使得最大托盘露出来后,A->C(3),把中间2 个托盘移动到C.
4个托盘:、、、、、、、、、
总结规律:一共分三个步骤,二种情况;
第一种情况:托盘不止一个
分三步:有n个托盘,先把n-1 个挪到中间位置,把露出来的第n个挪到目标位置,再把中间位置(n-1)个挪到目标位置; 之后再把n-1当作n,继续完成这种情况,直到n为1 了,调用第二种;
第二种情况:托盘只剩下一个
就一步:把托盘挪到目标位置;
2.程序
2.1 先定义变量
2.2 TIA 程序
2.3 运行结果(括号里是第几个托盘)
2个托盘的时候;
3个托盘的时候
5个托盘的时候
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1826670&b_id=66&s_id=0&num=6
嗯,感谢分享
SCL赋予PLC更多可能
学会了SCL 就没必要编写这些程序
9999,6翻了
感谢分享。
厉害,感谢分享
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录