简单的编程,谁能试试? 点击:0 | 回复:120



gongkongedit

    
  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2004-02-10 16:13:00
楼主
河内塔游戏的编程算法, 手机上的河内塔游戏,一般人都很熟悉,现在把它用PLC语言,实现出来,不知有人会否, 就是,假设有N个圆片在A柱上,从小到大,分别为,1,2,。。。N,三个塔柱分别为A,B ,C,现要从A移动到C,以为B过度,也是从小到大排列,移动的过程,只能小圆片放在大圆片上,不能反。计算结果放在连续地址列,指针数就是移动的次数,三个塔之间的移动的方式一共六种,A—B,A—C,B—C,B—A,C—A,C—B,在地址中只要以代码的形式例如 1,2,3,4,5,6,就行, 计算的结果在连续地址中,地址存的六种移动方式的次序,最终能完全实现由A到B的移动。 地址的长度为:2的N次方-1,也就是需要移动的次数, 哪位高人能试试,不一定要用代码,把算法详细讲解也可以。 .........



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-26 18:04:00
41楼
这么一个编程纯属游戏, 没有必要上升到那么高的理论高度 另外,TO rickyxu FIFO,CRC 同样都不能让磁悬浮悬起来, 怎么中国太多的工程师都让你说的, “碰到任何问题都搞不定,令我困惑” 是不是你只喜欢往下看啊,不喜欢往上看啊, 还是你比较的幸运一些,这样的工程师都让你碰到了,

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-26 18:11:00
42楼
以后不再在论坛争论,没有必要,也无聊;

回家

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 28回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2003年7月05日
发表于:2003-12-26 23:12:00
43楼
可能我要让楼老师失望了。 就我所学,目前还无法能按你的要求完成。 我只学了点三菱的梯形图和语句表。 不过还是希望以我所学试试。 不知道哪里有相关的编程资料邮购? mail:yxw139@sohu.com 上次下载过一个组态软件,当时想虚拟plc。谁知道解不了,没法用

rickyxu

  • 精华:1帖
  • 求助:0帖
  • 帖子:2帖 | 50回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2003年12月01日
发表于:2003-12-27 07:19:00
44楼
我确实幸运,老是遇见楼老师这样的工程师。

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-27 08:28:00
45楼
对于这个问题,算法不是都给出来了吗?还有什么难的. 不成高手都有个毛病,爱指手划脚,却不肯花个喝杯茶的时间写段程序? 即然这样,我就只好代劳了,程序代码在下面,用S7-200编程,没加注释. 因为我想各位高手看程序是不需要注释的吧.

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-27 08:31:00
46楼
ORGANIZATION_BLOCK MAIN:OB1 TITLE=河内塔程序 BEGIN Network 1 LD SM0.1 MOVD &VB100, AC1 MOVD &VB100, AC3 MOVD AC1, AC2 MOVB 6, *AC2 INCD AC2 MOVB 1, *AC2 INCD AC2 MOVB 2, *AC2 INCD AC2 MOVB 3, *AC2 INCD AC2 +D +4, AC1 MOVD +0, MD20 Network 2 LDD> AC1, AC3 MOVD AC1, AC2 MOVD *AC1, MD0 -D +4, AC1 Network 3 LDB> MB0, 0 AB< MB0, 255 DECB MB0 MOVD AC1, AC2 MOVB MB0, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 MOVB MB3, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 +D +4, AC1 MOVD AC1, AC2 MOVB 255, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 MOVB 0, *AC2 INCD AC2 +D +4, AC1 MOVD AC1, AC2 MOVB MB0, *AC2 INCD AC2 MOVB MB3, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 +D +4, AC1 INCB MB0 Network 4 LDB= MB0, 255 CALL SBR0, MB1, MB2 说明;SBR0,MB1,MB2 是将MB1指定的柱子上的一个盘子移到MB2上去的子程序,也就是最终控制动作的部分.大家自己去作吧,FROM A TO B 这么个动作不会有人作不出吧

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-27 08:36:00
47楼
上一贴子有点地方忘了说明,再发一遍 ORGANIZATION_BLOCK MAIN:OB1 TITLE=河内塔程序 BEGIN Network 1 LD SM0.1 MOVD &VB100, AC1 MOVD &VB100, AC3 MOVD AC1, AC2 MOVB 6, *AC2 //盘子总数 INCD AC2 MOVB 1, *AC2 //启始柱号 INCD AC2 MOVB 2, *AC2 //目标柱号 INCD AC2 MOVB 3, *AC2 //中间柱号 INCD AC2 +D +4, AC1 Network 2 LDD> AC1, AC3 MOVD AC1, AC2 MOVD *AC1, MD0 -D +4, AC1 Network 3 LDB> MB0, 0 AB< MB0, 255 DECB MB0 MOVD AC1, AC2 MOVB MB0, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 MOVB MB3, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 +D +4, AC1 MOVD AC1, AC2 MOVB 255, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 MOVB 0, *AC2 INCD AC2 +D +4, AC1 MOVD AC1, AC2 MOVB MB0, *AC2 INCD AC2 MOVB MB3, *AC2 INCD AC2 MOVB MB2, *AC2 INCD AC2 MOVB MB1, *AC2 INCD AC2 +D +4, AC1 INCB MB0 Network 4 LDB= MB0, 255 CALL SBR0, MB1, MB2 说明;SBR0,MB1,MB2 是将MB1指定的柱子上的一个盘子移到MB2上去的子程序,也就是最终控制动作的部分.大家自己去作吧,FROM A TO B 这么个动作不会有人作不出吧

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-27 11:04:00
48楼
不好意思,有些疏忽了,动作顺序有错,改正后如下: ORGANIZATION_BLOCK MAIN:OB1   TITLE=河内塔程序   BEGIN   Network 1      LD SM0.1   MOVD &VB100, AC1   MOVD &VB100, AC3   MOVD AC1, AC2   MOVB 6, *AC2 //盘子总数   INCD AC2   MOVB 1, *AC2 //启始柱号   INCD AC2   MOVB 2, *AC2 //目标柱号   INCD AC2   MOVB 3, *AC2 //中间柱号   INCD AC2   +D +4, AC1      Network 2   LDD> AC1, AC3   MOVD AC1, AC2   MOVD *AC1, MD0   -D +4, AC1      Network 3   LDB> MB0, 0   AB< MB0, 255   DECB MB0   MOVD AC1, AC2   MOVB MB0, *AC2   INCD AC2   MOVB MB3, *AC2   INCD AC2   MOVB MB2, *AC2   INCD AC2   MOVB MB1, *AC2   INCD AC2   +D +4, AC1      MOVD AC1, AC2   MOVB 255, *AC2   INCD AC2   MOVB MB1, *AC2   INCD AC2   MOVB MB2, *AC2   INCD AC2   MOVB 0, *AC2   INCD AC2   +D +4, AC1      MOVD AC1, AC2   MOVB MB0, *AC2   INCD AC2   MOVB MB1, *AC2   INCD AC2   MOVB MB3, *AC2   INCD AC2   MOVB MB2, *AC2   INCD AC2   +D +4, AC1      INCB MB0      Network 4   LDB= MB0, 255   CALL SBR0, MB1, MB2      说明;SBR0,MB1,MB2 是将MB1指定的柱子上的一个盘子移到MB2上去的子程序,也就是最终控制动作的部分.

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-27 11:05:00
49楼
为什么不能修改自己的发言呢,还要重新发贴

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-27 14:46:00
50楼
楼兄:用c可以吗?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-28 11:20:00
51楼
难道在工控网上就没有人能用C语言来编写这个河内塔游戏的编程算法吗?我看我这个贴子有没有回?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-28 11:21:00
52楼
难道在工控网上就没有人能用C语言来编写这个河内塔游戏的编程算法吗?我看我这个贴子有没有回?

爱MM

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 2回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2003年7月22日
发表于:2003-12-28 17:26:00
53楼
都是高人哪~~~~~~那位大虾收我个小弟啊!(小学水平)

无知者无畏

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2003年10月11日
发表于:2003-12-28 18:56:00
54楼
在pc机上运行的C程序和PLC程序有很大区别.

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14399帖 | 54471回
  • 年度积分:0
  • 历史总积分:579
  • 注册:2008年9月08日
发表于:2003-12-28 23:34:00
55楼
求救各位老师: 1 两个重量传感器称同一物,他们是如何接到三菱FS2N——4AD上的。 2 在三菱PLC,FS2N-16MR是如何编程的。

rickyxu

  • 精华:1帖
  • 求助:0帖
  • 帖子:2帖 | 50回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2003年12月01日
发表于:2003-12-29 10:16:00
56楼
利用的WINAC的系统功能可以调用C程序.而C程序来源非常广泛,各种PLC的编程也可以找到很多的程序员来解决.一般而言,只要有算法,变成程序只不过小事一桩,唯一的区别是程序的精简的问题. To 云之凤@无名:我从未使用过S7200的PLC,大概知道你在写什么,但离发现问题还需要时间.

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-29 10:45:00
57楼
引用rickyxu的话: 采用Pascal语言编程简略如下:     Procedure Tower(n: nonneight; start, finish, other: towernames);     IF n>0 then begin     Tower (n-1, start, other, finish);     Writeln (“ move top ring from”, start, “to”, finish);     Tower (n-1, other, finish, start)     end; 其实这个就是用高级语言来实现的程序,难道只有C才算数,其它的都不行吗? 就是要把这个程序转成C,对于编程的人来说也是举手之劳吧. 地下婴儿兄,用C来实现这个河内塔游戏的编程算法是学编程最基本的一个例子,我在多少年前就作过了,现在实在是懒得动手了. 如果你作不出来,就没有资格在这儿讨论算法的问题了.

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-29 10:53:00
58楼
其实高级语言中的许多算法,在PLC中一样是可以实现的,就象递归调用就可以通过堆栈操作来实现.不能说哪种好哪种不好,只能说是使用者的水平问题.

过客8088

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 346回
  • 年度积分:0
  • 历史总积分:1122
  • 注册:2003年1月07日
发表于:2003-12-29 10:56:00
59楼
TO rickyxu,我本来想用S7 300作程序,只不过平常很少用指针操作,对300中的指针操作不熟悉,只好将就着用S7 200作了一段,让高手见笑了.

hotboy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2003年12月08日
发表于:2003-12-29 16:54:00
60楼
TO:风之云@无名 请问高手汇编语言怎样能实现数字PID算法 能否写一个简单的例子让我看看。 谢谢 QQ:37614412 E-MAIL:panqihe@sohu.com

相关主题

官方公众号

智造工程师