首页 上一页 1 2 3 下一页 尾页

这个程序编程最少多少步? 点击:1852 | 回复:51



大器晚成_77

    
  • 精华:0帖
  • 求助:5帖
  • 帖子:80帖 | 435回
  • 年度积分:5
  • 历史总积分:1636
  • 注册:2002年9月19日
发表于:2014-02-25 17:03:22
楼主

一上电,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y20,Y21,Y22依次每隔一秒动作,再从Y22,Y21,......Y10每隔一秒依次复位,再循环往复,最少的编程步是多少?




大器晚成_77

  • 精华:0帖
  • 求助:5帖
  • 帖子:80帖 | 435回
  • 年度积分:5
  • 历史总积分:1636
  • 注册:2002年9月19日
发表于:2014-02-25 17:07:42
1楼

我编了46步的程序满足要求

大器晚成_77

  • 精华:0帖
  • 求助:5帖
  • 帖子:80帖 | 435回
  • 年度积分:5
  • 历史总积分:1636
  • 注册:2002年9月19日
发表于:2014-02-25 17:20:35
2楼

 

各位能否编出更好的程序啊

mlqwain

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 85回
  • 年度积分:0
  • 历史总积分:301
  • 注册:2010年4月10日
发表于:2014-02-25 18:25:07
3楼

就楼上的这思路111111111111

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2014-02-25 20:02:20
4楼

最好先不要晒程序,光写长度可以了。看谁的程序最短然后才开迷。

江湖混混-余辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3351帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2014-02-25 20:22:15
5楼

引用 芳季 的回复内容: 最好先不要晒程序,光写长度可以了。看谁的程序最短然后才开迷。



研讨会宣传员_3259

  • [版主]
  • 精华:3帖
  • 求助:110帖
  • 帖子:1927帖 | 14403回
  • 年度积分:102
  • 历史总积分:64749
  • 注册:2020年3月27日
发表于:2014-02-25 20:33:40
6楼

这个有点儿意思                           

大器晚成_77

  • 精华:0帖
  • 求助:5帖
  • 帖子:80帖 | 435回
  • 年度积分:5
  • 历史总积分:1636
  • 注册:2002年9月19日
发表于:2014-02-26 15:04:46
7楼

好的同志们今后注意了!

纵横军团-光脚

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 129回
  • 年度积分:0
  • 历史总积分:758
  • 注册:2012年3月26日
发表于:2014-08-08 10:06:00
8楼

你好无聊呀。哈哈。。。。。。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-09 14:00:45
9楼

  

 引用楼主的题目:一上电,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y20,Y21,Y22依次每隔一秒动作,再从Y22,Y21,......Y10每隔一秒依次复位,再循环往复,最少的编程步是多少? 


 

  从输出位依次点亮的过程,对象是“Y11~Y22”这10个“位”,返回时,依次熄灯从Y22到Y10共计11个“位”,不对称。可能是楼主的笔误吧?

 

  从题目自身看,每隔1秒依次动作的起点是Y11,终点是Y22(并不经过Y10)。没有经过“动作”的Y10,又何谈对它的“复位”?

 

  以楼主的程序关于输出位的操作内容:“LD M8000    MOV  K3M150  K3Y11” 来看,根本没有对Y10施行操作的作用。

 

  因为“传送指令MOV ” 的目标操作数“K3Y11 所指的全部操作对象为:Y11、Y12、Y13、Y14、Y15、Y16、Y17、Y20、Y21、Y22、Y23、Y24 这12个bit 。其中没有Y10 !所以,Y10不可能被操作!

 

  由此可知:题目中的“一上电,Y11,Y12,Y13,Y14,Y15,Y16,Y17,Y20,Y21,Y22依次每隔一秒动作,再从Y22,Y21,......Y10每隔一秒依次复位”是个错误的“描述”!

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-09 14:15:41
10楼

 

  是否可以改成“一上电,Y11~Y22每隔1秒依次点亮,抵达终点再隔1秒返回,返回时从Y22到Y11每隔1秒依次熄灯。循环往复。

 

  再或者,改成“一上电,Y10~Y22每隔1秒依次点亮,抵达终点再隔1秒返回,返回时从Y22到Y10每隔1秒依次熄灯。循环往复。”

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-09 14:19:29
11楼

 

  实现10楼所描述的功能,最少的编程步是13步。

    

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2014-08-09 19:36:52
12楼

类似的较量在很早之前就见识过了。挺有趣的。

foshan港

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 356回
  • 年度积分:0
  • 历史总积分:230
  • 注册:2014年1月16日
发表于:2014-08-10 23:57:30
13楼

坐等各大神的妙招!!!!!!!!!!!!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-11 17:04:18
14楼

 

  №2楼出示的程序,从0到10这11步是没有必要的!

 

  其“LD  M8002   [ ZRST  M149    M160 ] ” 要实现的目的是:为两个‘移位寄存器’准备12个‘干净’的 bit ,保证‘移位寄存器’正确的从指定的‘位’开始移位。

 

  其实,这是没有必要的!我们都知道,FX系列中,M384 之前的‘继电器’(FX1s、FX1n:M0~M383  ;FX2n:M0~M499  )都在非保持区域内。

 

  但凡非保持区域的‘继电器’,即便程序中不写对‘继电器’复位的命令,在PLC的上电开机之初,全都是清一色的‘OFF ’状态!还用得着我们再以‘开机脉冲M8002 ’对非保持型‘继电器’复位吗?!

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-11 21:46:08
15楼

 

  再看其6到10步的程序:

 

  LD                M100   

  OR               M8002

  OUT             M100

  ANI               M8000

  OUT             M110

 

  这一片断所要实现的目的是:

 

  为‘左移位寄存器’做一个始终都为ON的‘源': M100  ;

 

  为‘ 右移位寄存器'做一个 始终都为OFF的‘源': M110 。

 

  其实这也是没有必要的!

 

  PLC的系统内核有现成的常ON的‘bit ’ M8000 ,直接引用M8000作左移位寄存器的‘源’不就成啦!还用得着我们自己再写程序另建立一个常ON的 ‘bit ’ 吗 !

 

  同理,直接引用PLC系统内核现成的常OFF ‘bit ’M8001作‘右移位寄存器’的‘源’不就成啦!还用得着我们自己再写程序另建立一个常OFF的 ‘bit ’ 吗 !

 

  对于常OFF ‘bit ’,在一定条件下,任意一个非保持区域内的‘继电器’都可以直接充当!  例如M110 ,只要程序中没有对M110施行由OFF变ON的操作,那么我们就完全可以不写对M110做“OFF运算”的指令,而直接采用M110作本题目中‘右移位寄存器’的常OFF的‘源’!

 

大器晚成_77

  • 精华:0帖
  • 求助:5帖
  • 帖子:80帖 | 435回
  • 年度积分:5
  • 历史总积分:1636
  • 注册:2002年9月19日
发表于:2014-08-12 10:27:29
16楼

好久没来论坛了,老夫能得到楼上的指点非常荣光,多谢指点!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-12 16:28:31
17楼

 

  接下来再看:

 

  LDP             M160  

  SET             M102

  RST             M160

 

  这里运用的“上升沿”也是不必要的!

 

  在这里,我们若改用“常开触点”,如:

 

  LD               M160  

  SET             M102

  RST             M160

 

  得到的逻辑结果也完全是一样的!并且在程序步数上可以减少1步。更重要的是:其指令运算时间(以FX2n为例)从“上升沿”的44μs 缩短至“常开触点”的0.08μs  !

 

 

wuweike138

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 8回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2014年8月12日
发表于:2014-08-12 23:29:09
18楼

太深奥了有点理解不了!!!!!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-13 16:01:36
19楼

 

  一点也不深奥,都是些基础的内容。

 

  老王再给你讲解得细致一些!

  我们为什么可以说如下片断a :  

  LDP             M160  

  SET             M102

  RST             M160

 

  改成如下片断b  : 

  LD               M160  

  SET             M102

  RST             M160 

  在实现本题目功能的程序中得到的逻辑结果是完全一样的呢?

 

  在PLC编程中,“上升沿检出运算”(或称‘前沿接点运算’)是指‘接点信号由OFF切换为ON的第一个运算周期内有效’的运算!

 

   №2楼的程序中使用这个“LDP   M160  上升沿检出运算”的目的是只让M160的上升沿起作用,实时的将“移位寄存器”的向左移位切换为向右移位。

  

  其实,在№2楼的程序里,这个M160的每一个ON状态自身就已经是符合PLC对“上升沿脉冲”定义的。

 

  对实质上本身就是“短暂脉冲”的M160再施行“上升沿检出运算”完全是多余的!

 

  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2014-08-13 16:53:19
20楼

 

  所以,在№2楼的程序里使用M160的“a接点”置位M102,跟使用M160的“上升沿接点”置位M102的运算结果完全一样!

 

  而且,使用M160的“a接点”让片断b 中M160的状态从置为ON到复位为OFF,其期间经历的时间更为短暂!

 

 


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 下一页 尾页