您现在所在的是:

三菱Mitsubishi

回帖:7个,阅读:1822 [上一页] [1] [下一页]
20507
qlin 版主
文章数:6709
年度积分:50
历史总积分:20507
注册时间:2006/2/20
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2011/3/24 7:54:27
#0楼

   说实话,好几年没用过PLC了;今看到一个以前的试验程序,看起来蛮“拗口”的,参见附图1。程序原用GX Developer编制,FX2N;现移植为用台达WPLSoft 2.12编制,ES2。
   该段程序的要求是:实现Y1~Y5的顺序移位,并可任意取消某位或某几位;也就是,若取消Y2,则Y1接通之后,满足条件后Y1断开、Y3接通,而不是Y2接通。
   这可能是,当时为编制某程序而作的准备,应当是程序中要求有类似的功能(原程序未保留)。比如,五个加工工位,每次仅允许一个加工,若某工位未准备好,则跳过该工位。
   该程序的方法,似不太顺畅——要实现该功能,还可以如何编制程序呢?
附件

   重新阅读该段程序后,得出其编程思路是:若取消某位,则移位到该位为1时,再使之移一位。
   为便于描述,用梯形图左母线旁的步序号为“行号”(行块号)。
   附,对附图1程序的解读:

   0行:接通一次X0,T0延时1秒接通,即使X0信号抖动,也不会多次给出信号;这是防外部触点抖动的另一种思路。T0接通一次,M31~M36左移一位。
   8行:给出移位的初始信号M10。
   10行:当M31接通后,复位复位M10。
   14行:移位指令,实现M31~M36的每次一位移位;此处M1无作用。
   25行:下一个循环时,使M31置位,即M31与M36同时接通。
   27行:复位M31,此时M32已接通,仍是实现M31与M36同时接通。
   33~53行:产生D10的移位信号。
   58行:D10赋初值。
   64行:实现D10的移位。
   75~114行:若取消某位,则该位被移除。
   比如,取消Y2(使Y1接通直接转到Y3接通),则这时使X2接通;
   设先有Y1接通(M31等接通),此时来一个移位信号后,有M32接通,执行38行、产生M62信号(M62脉冲接通),于64行D10移一位;这时D10的各位为 0000 0000 0000 0100;
   由于M62接通、又X2接通,故执行到88行时,D10再移一位,结果为 0000 0000 0000 1000;执行后续程序,使M93接通,Y3接通。
   127行:若为取消第5位,则将D10赋初值。
   138行:当D10移位至b6位以上接通时,则D10赋初值。
   148行:将D10的值,送至K2M90(M90~M105),以达控制目的。
   154~166行:实现Y1~Y5的控制目的。
   169行:程序结束。

   该程序仅是给出一种思路,不是实用程序;程序移植后(并将138行与127行指令位置作了交换),也未进行试验。
   比如,粗看起来,当取消某位,D10进行“额外”的移位后,则M31~M36并没有进行相应的移位;可能的方法,是将D10的内容,再返回到M31~M36。
   
   有兴趣者,可给出另外的方法。
   (莫其麟,于20110323)

此贴来自中华工控网工控博客。
原文件地址:http://blog.gkong.com/more.asp?id=134888&Name=mqlin

















[此贴子已经被作者于2011/3/27 10:15:47编辑过]
20507
qlin 版主
文章数:6709
年度积分:50
历史总积分:20507
注册时间:2006/2/20
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2011/3/25 0:23:47
#1楼

   另外,对于X0,程序中好像假设了它的接通时间小于1秒;若大于1秒,移位指令可用脉冲执行型(SFTLP)。
683
935858748
文章数:1
年度积分:50
历史总积分:683
注册时间:2011/3/25
发站内信
发表于:2011/3/25 14:18:06
#2楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
38057
知道一点
文章数:22550
年度积分:2476
历史总积分:38057
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2011/3/27 21:34:21
#3楼
看别人的程序比较累
现在这种要求就用移位指令,要跳过某点,到那点时多移一次就可以了。
后来见到一个程序,满程序都是ld和mov 2种指令,在加一个end,蛮简单的
快乐 幸福 自由 比什么都重要
4030
sankyo_feng
文章数:730
年度积分:56
历史总积分:4030
注册时间:2006/11/8
发站内信
发表于:2011/3/27 23:20:26
#4楼

我看这个至少不下5遍了,总是希望有人能做出比这个更好的,我自己也试了很可惜,我写的要比这个长,且也没有写完。是个算法的问题,乘2的方法应该是最好的了!要不然因为有5位变化,最多变化是2的四次方,16种变化!每次可能的变化都写进去程序的书写量是很大的!他写的这个程序分析起来有些地方很吃力!
[此贴子已经被作者于2011/3/27 23:27:46编辑过]
943
yangeg
文章数:4
年度积分:50
历史总积分:943
注册时间:2007/9/9
发站内信
发表于:2011/4/6 10:00:44
#5楼
楼主这程序搞得也太复杂了!用DECO指令,50步可完成以上功能,只是Y0必须有输出,不能跳过.
20507
qlin 版主
文章数:6709
年度积分:50
历史总积分:20507
注册时间:2006/2/20
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2011论坛贡献奖
2010年论坛优秀版主
发表于:2011/4/6 17:53:29
#6楼
以下是引用yangeg在2011/4/6 10:00:44的发言:
楼主这程序搞得也太复杂了!用DECO指令,50步可完成以上功能,只是Y0必须有输出,不能跳过.

我虽然泡论坛多年了,但不知怎么的,还是未能习惯这种语气;虽然,这种语气常可见到。
704
shihuawei1
文章数:1
年度积分:50
历史总积分:704
注册时间:2011/4/7
发站内信
发表于:2011/4/7 18:27:20
#7楼
这程序有问题,假如刚开机时X5没有选中那么就不能给D10赋值2那就出错了表情表情

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006