三菱plc指令请教 点击:16580 | 回复:165



tiger-auto

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:27帖 | 39回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2003年11月05日
发表于:2005-07-16 19:34:00
楼主
我现用FX1N的三菱PLC做一个案子,其中有连续的8个输入点X10-X17为故障信号,我想得到一个故障发生的总数量,三菱的指令有一个数据ON位数求和,FNC43(SUM),可该指令仅适合FX2N和FX2NC,请问有其他方法可以实现吗?谢谢!


楼主最近还看过



fengky

  • 精华:0帖
  • 求助:0帖
  • 帖子:23帖 | 141回
  • 年度积分:0
  • 历史总积分:247
  • 注册:2008年9月26日
发表于:2009-03-29 05:22:48
61楼

用这个梯形图可以实现,我已经模拟过了,最后还有一步没办法一起显示,其实就是将D0-D7的数值相加。D20中值就是所有报警总数

真郁闷办公室电脑不可以传图片。等那天有空了再传上来分享吧!

用的是ENCO指令和ADD指令,程序很简简单

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-03-29 12:56:15
62楼
我刚又想了一下。用移位的溢出位(系统位M8???)代替M0。是否可以节省一个位M8呢?

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-29 19:04:25
63楼

 

  №62楼的帖子表述不清楚,我无法对这个表述不清的跟帖做出很有针对性的回复! 待“fengky ”把他的“这个梯形图”的实质(或梯形图图片、

 

或指令表程序)贴出来后,我再做具体的回复。今天只能粗略地说:用“编码(ENCO)指令”来处理楼主提出的问题是不恰当的!因为楼主只需要统计

 

“报警点的个数”而并不是要用指令去求解出“报警发生点在‘K2X10字节’中的具体位置(最高是哪一个‘位’)”所以没必要对“报警点”进行编码。

   

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-29 19:57:31
64楼

 

  回复“芳季”网友在№63楼提出的:“用移位的溢出位(系统位M8***)代替M0。是否可以节省一个位M8呢?”

 

  答案很简单:“不可以”!

 

  理由是:“位右移”或“位左移”指令的“目标操作数”的指定,只能是同一类的、连续的“位元件”,而不能花搭着指定。

 

  譬如: 

 

                           SFTR        M8011         M0             K8                K1

 

      这条指令的第二个“操作数”叫做“目标操作数”。在这个例子中是用“M0”来表达的。它与第3个“操作数”合起来表达意思的是: 指定由M7、M6、M5、M4、M3、M2、M1、M0 这8个连续的“位元件”来构成一个“移位寄存器”。既不允许指定“虽为同一类(Y、M、S 选其一)位元件, 但不连续(譬如:M10、M8、M5、M4、M3、M2、M1、M0)”;

 

  更不允许指定“不同类的位元件(譬如:特殊辅助继电器与通用辅助继电器花搭着,或者Y与M花搭着,或S与M花搭着)”。

 

  “位右移”指令中的第一个“操作数”叫“源操作数”。举例的这条指令中指定的“源”是“M8011”,它与“目标”指定的“位元件”可以不是同一类的,也可以不是与其连续的。可以根据我们不同的目的,任意指定一个“位元件”(“源”的指定范围:X、Y、M、S )。

 

  但是,请注意:“位右移”或“位左移”指令的第4个“操作数n2”如果不是“K1”(规则是:1  ≤  n2  ≤  n1)时,“源”所指定的“位元件”(对“源”自身来讲)也须是:同一类的、连续的“位元件”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-29 22:21:48
65楼

 

   在FX0s的操作手册中,明确规定:[M]是用户不能驱动的特殊辅助继电器,只能利用其接点;在FX1s/FX0n/FX1n/FX2n系列的PLC操作手册中明确规定:如[M]、[D]这些有[]括起的软元件,或未定义的软元件,请不要对它们进行程序驱动或写入数据。

 

  所以,一般不要把有[]括起的特殊辅助继电器作为功能指令的“目标操作数”而对它们进行驱动。不过,我们也可以不必格守这样的成规。在FX1s或FX1n上,也可以破例对某些有[]括起的特殊辅助继电器进行驱动,并不影响程序的正常运行。

 

  譬如,下面这个例子中的“位右移”指令就是将M8008、M8007、M8006、M8005 这4个有[]括起特殊辅助继电器作为指令的“目标操作数”来驱动的:

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-29 22:43:33
66楼

 

  但是,如果把“位右移”指令写成下面这个样子,就必然犯错:

 

SFTR          M0         M8001                  K8                 K1

 

  这条指令的“目标操作数”除包含了M8008至M8005这4个可以破例驱动的特殊辅助继电器外,还包含了M8004至M8001这4个已经由系统定义了的特殊辅助继电器。如再对M8004至M8001进行驱动就完全是非法的

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-30 13:04:09
67楼

 

  对于连续“位”的指定,系统是默认的,我们只需指定其最低“位”以及相关的“操作数( n1、n2)”系统就会自动给我们安排出连续的“位元

 

件”作为指令的“源操作数”或“目标操作数”。且,我们不可能随意为功能指令安排出一种“由不同类或不连续的‘位元件’搭配而成的组合”来作为

 

“源操作数”或“目标操作数”。

  譬如:“ SFTR X10 M0 K16 K4 ” 这条指令,它的“源操作数”的指定是由第1个和第4个“操作数”共同来决定的。系统根据“X10”和“K4” 这

 

两个“操作数”默认我们指定了(X13、X12、X11、X10)这4个连续的“位”作为该指令的“源”;它的“目标操作数”的指定是由第2个和第3个“操

 

作数”共同来决定的。系统根据 “M0”和“K16” 这两个“操作数”默认我们指定了(M15、M14、M13、M12、M11、M10、M9、M8、M7、M6、M5、

 

M4、M3、M2、M1、M0)这16个连续的“位”作为该指令的“目标”。


wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-30 13:24:34
68楼

 

  “位右移”或“位左移”指令的“源”指定范围是“位元件”:X、Y、M、S ;其“目标”的指定范围是“位元件”:Y、M、S 。

  为什么其“目标”的指定范围比其“源”的指定范围要窄一点呢?这是因为“源操作数”的内容(状态)只是被指令利用,它不随指令的执行而改

 

变。它不是被指令的执行所驱动。而“目标操作数”就不同,它是要被指令执行所驱动的元件。所以,不能指定那些只能被利用而不能被驱动的元件作

 

“目标”。

  譬如“输入继电器X”,以及还有那些“被系统定义了功能的,有〔 〕括起来的特殊辅助继电器”等等都不能指定为功能指令的“目标”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-30 22:40:16
69楼

引用芳季 的回复内容:我刚又想了一下。用移位的溢出位(系统位M8???)代替M0。是否可以节省一个位M8呢?




  “芳季”网友用了一个新概念“移位的溢出位”,到底是指“移位寄存器”的哪一个“位”呢?没有明确的表述出来。我不知道“芳季”创建的“溢出位”这一个新概念是怎么定义的,所以,我只能靠“猜”!我猜想“芳季”网友是指下图中的“M0”(如果我猜的不对,就请“芳季”明示您所指的“溢出位”是哪一个“位”)。

 

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-30 23:20:29
70楼

 

  如果“芳季”所指的“溢出位”是上图中的“M0”,那么“芳季”所讲的用“M8??? ”(譬如是“M8008”)代替“M0”就可能如下图所示:

 

   如果是这样,则这种“目标元件”的组合就是一种不可能实现的组合!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 13:10:38
71楼

 

  现在来看用程序来虚拟的“环形移位寄存器”为什么要比用硬件实体构成的“环形移位寄存器”多用一个“位元件”?也就是“芳季”在前面提出的疑问:(目的只是构成“8位的环形移位寄存器”)干吗要占个K9呢?

 

  如下图所示:

 

 

wanggq

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

 

  这个不在“K2M1 ”字节中的“M0 ”是不是没有用处的呢?不是!我把它叫做“缓冲位”,用来保证“环形移位寄存器(K2M1字节)”内不发生“错误移位”!

 

 为了让网友们便于理解,我采用对比的手法来阐明这个原理:

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 15:10:33
73楼

 

  在“K2M1”字节之外,加入一节“缓冲位(M0)”来构成“移位寄存器”,“K2M1 ”字节内的移位情况就与理想的“环形移位寄存器”一致了!请看下面的监视图象:

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 15:25:13
74楼

 

  我在№58楼提请大家再动动脑筋,看看还能不能把№52楼的那个程序再改得更好一点?我已经把该程序的设计思路讲解得很透彻了。我们在这个基础上,是还可以做得更好一点的!

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 16:18:05
75楼

 

  №52楼的程序虽然可以做到:在没有“报警”存在,或虽有“报警”存在,但“报警点状态信息”没有发生改变的情形下,程序不进行重复的“报警点个数”的统计。当“报警点状态信息”一出现改变,程序立即就进入“报警点个数”的统计工作状态。经过1个扫描周期统计出结果就退出这一“统计工作”状态。绝大多数的时间里不影响PLC的“实时性”。但是,在1个扫描周期里循环重复8次执行“移位”指令,和“增1“指令等步骤,就会把这个周期拖得很长,如果这个周期恰逢PLC正要处理一些要紧的任务,那也有可能会耽误和影响了PLC的“实时性”。

 

  统计“报警点个数”是一个很次要的任务,所以,“统计”工作可以慢慢做。我们现在提出更高的要求:把原来集中在1个周期里完成的任务,分散到8个周期中逐步完成,这样执行“统计”任务时就不至于将某一个周期拖得很长,从而将“统计工作”对PLC的“实时性”的影响减小到最低程度。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 16:41:26
76楼

 

  在一个扫描周期内只统计“K2X10”字节的1个“位”的状态,从而达到节省扫描周期时间的目的。经过8个扫描周期才全部统计出“K2X10”字节内“ON”的位数。

 

      

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2009-03-31 16:55:06
77楼

 

  指针“P0”与“END”命令之间写设备的主要功能的程序。我们为了在练习时便于观察程序的运行状况,可以在指针“P0”与“END”命令之间写“K2X10”和“K2M1”这两个字节的各个“位元件”接点串联的片断:

 

上面的监视图象是有3个点发生“报警”的情形。

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2009-03-31 21:35:16
78楼
想请教LZ一个问题:三菱FX系列的CJ指令可否向前跳转从而实现FOR-NEXT命令的效果呢?

失去

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:38
  • 注册:2005年11月02日
发表于:2009-03-31 21:58:19
79楼

本人手里有些闲置的操作手册,有需要的可以去我的淘宝店里看一下

http://store.taobao.com/shop/view_shop.htm?asker=wangwang&shop_nick=mmhw27
西门子MICROMASTER430变频器 使用大全
台达 ASDA B系列 伺服驱动器应用技术手册
安川伺服电机用户手册
力控组态软件操作手册
MCGS组态软件用户手册+软件光盘
世纪星组态软件用户手册
三菱GOT900操作手册
三菱可编程控制器FX通讯用户手册(RS232C,RS485)
三菱FX系列特殊功能模块(用户手册)
台达VFD-B使用手册
施耐德ATS48软启动-软停止单元(用户手册)
施耐德ALtivar 38异步电机变频器用户手册
欧姆龙NT5Z-ST121B-EC操作手册

wanggq

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

 

  这个主题帖的楼主“tiger-auto”最后一次打理这个帖子的时间是:2005年7月19日。楼主有近4年时间没来这个帖子了!第80楼的“Winter938”向楼

 

主请教“跳转问题”恐怕是得不到他的回复了。

 


热门招聘
相关主题

官方公众号

智造工程师