三菱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,请问有其他方法可以实现吗?谢谢!


楼主最近还看过



wanggq

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

 

  我在第77楼表达过这样一个观点:

 

  统计“报警点个数”是一个很次要的任务,所以,“统计”工作可以慢慢做。我们现在提出更高的要求:把原来集中在1个周期里完成的任务,分散

到 8个周期中逐步完成,这样执行“统计”任务时就不至于将某一个周期拖得很长,从而将“统计工作”对PLC的“实时性”的影响减小到最低程度。


wanggq

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

 

  下面是这个既不用“循环语句”也不用“跳转语句”的最简练、最巧妙、占用程序扫描周期最短的“用非‘SUM ’指令替代‘SUM ’指令完成‘K2X10’字节ON位总数的统计任务”程序的运行监视图片:

 

  在实际的程序中,从№35步到“END”之间是用来写设备的主要控制任务程序的。但做为我们的练习题目,为了方便我们观察程序的“统计工作”的进行情况,我们可以在这个区间内写入“K2X10”和“K2M1”这两个字节中各个“位元件”的状态串联片断。

 

  通过程序运行监视,我们可以看到程序的运行是没有问题的!这个图片是“X10、X12、X15、X16 ”这4个点有“报警”的情形。

 

 

FDD1997

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 935回
  • 年度积分:0
  • 历史总积分:1082
  • 注册:2008年12月20日
发表于:2009-04-03 14:45:14
103楼

真是八仙过海,各显神通

 

 

wanggq

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

                                                                                                                                

wanggq

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

<紧接上一楼的内容>                  

 

wanggq

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

 

  楼主想在FX1n上统计“K2X10”字节中出现的“报警”位的“位总数”,但FX1n上没有“ON位总数”指令[ FNC43(SUM), ] 因此问:有其他方法可以实现吗?

 

  当然,实现“用非SUM指令替代SUM指令完成ON 位总数的统计功能”的方案可以是多种多样的。到底哪一个方案好呢?

 

  说“‘swading ’的方案是迄今为止最好的方案”是对时间为09年3月22日之前来讲的。“swading”的方案好虽是好,但是,它在程序的每一个周期里都要逐一去统计“K2X10”字节的8个“位元件”的状态信息,当对应“位元件”的状态为“ON”时,D0的内容就加1。这就造成了不必要的在程序每一个周期里拖延扫描时间。如果我们在不考虑PLC要执行的主要控制任务的“实时性”时,可以认为“swading”方案是最好的。

 

  但是,人们不可能是用一个FX1n就只为了统计出8个点上当前的“报警”总数量!我们完全有理由认为:楼主的这个PLC主要是用来控制设备运行的,在主要控制任务的程序基础上附带着做一个“报警点数”的统计。所以这个统计工作是一个可有可无的、非常次要的任务!

 

  我们做事情应该分清主次,设备运行的主要控制任务才可能需要讲究“实时性”。而可有可无的、非常次要的“统计报警点数”任务则完全不需要去讲究“实时性”!在程序的一个周期里就把“报警点数”的统计工作做完,对于“统计报警点数”任务来讲,“实时性”是好了。但是,在程序的每一个周期里都要逐一去统计“K2X10”字节中8个“位元件”的状态的后果是:使PLC的主要控制任务的“实时性”变坏。这岂不“本末倒置”了吗?!!

 

YSC1

  • 精华:3帖
  • 求助:2帖
  • 帖子:129帖 | 2487回
  • 年度积分:88
  • 历史总积分:8018
  • 注册:2002年6月07日
发表于:2009-04-05 18:29:32
107楼
引用wanggq 107楼的内容:

<紧接上一楼的内容>                  

 


 


 


试问一下,以上程序可否这样?没有PLC可以验证?

     


YSC1

  • 精华:3帖
  • 求助:2帖
  • 帖子:129帖 | 2487回
  • 年度积分:88
  • 历史总积分:8018
  • 注册:2002年6月07日
发表于:2009-04-05 18:31:20
108楼

图片位置颠倒了。                      

wanggq

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

 

  在第109楼的帖子中,上面的一个图片所示的程序不能够正确统计出“K2X10”字节中的“oN”位总数。

 

  理由是:YSC1网友的图示程序中“增 1 ”指令的执行条件是一个“或”逻辑函数。不论这个函数的变量中有几个“1”,其函数的结果只能是一个结果(逻辑“1”)。所以,即使“K2X10”字节的 8个“位元件”状态都是“1”,D0中的内容也只能是“1”,而不可能是“8”!

wanggq

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

                              

  

向往阳光

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 1321回
  • 年度积分:0
  • 历史总积分:1463
  • 注册:2006年11月12日
发表于:2009-04-07 07:01:21
111楼

使每个输入X产生一个脉冲输出,然后由每个脉冲输出来驱动计数器C,再把每个计数器里的当强值相加,得到你所要的故障数!

不知实际能用吗

zhouduoliang

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 156回
  • 年度积分:0
  • 历史总积分:1219
  • 注册:2007年2月14日
发表于:2009-04-07 10:58:34
112楼

请大家看看我的程序,请指正。

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2009-04-07 12:22:40
113楼

你的程序使用了间接寻址代替我的位移指令,相比之下无疑缩短了很多扫描时间。而且仅使用到4个M。24步的长度,开眼界了。

我又突然想起。

LD M8000

MOV  K1X0V0  K1M0

LD M0

INC D0

不知道三菱是否可以

LD X0V0

INC D0

呢?

 

芳季

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

我手头上暂时没有书和软件。

印象中好象什么PLC可以这样的?忘了。

zhouduoliang

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 156回
  • 年度积分:0
  • 历史总积分:1219
  • 注册:2007年2月14日
发表于:2009-04-07 12:43:17
115楼

三菱基本指令不可以用使用类似X0V0的间接寻址方式,西门子是可以的。

ouyangpdeng

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 52回
  • 年度积分:0
  • 历史总积分:191
  • 注册:2008年11月06日
发表于:2009-04-07 13:45:37
116楼
2楼的,说的很好,7转为2进制就是x10.x11.x12通

wanggq

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

                                                                                                                

 

 

wanggq

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

 

    №113楼的“向往阳光”所提之问,是最早出现在2005年7月18日(№3楼的“saitc701”网友贴出的)一个错误方案。这个错误的方案经过了将近4年的时间还没有得到纠正!这是因为这个方案是泛泛而谈的方案,很不具体。所以我们只能粗略的说:“它是不能达到楼主的目的要求的错误方案”!

 

zhouduoliang

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 156回
  • 年度积分:0
  • 历史总积分:1219
  • 注册:2007年2月14日
发表于:2009-04-07 19:12:42
119楼

多谢Wangqq网友的建议, 我是假设在FX2N下写的,不同PLC类型V变量会有所不一样,输入点我是考虑一般情况从X0开始的.大家经常交流是很有益的.

我提一个问题大家来探讨探讨:

 假设有64台电机(或可以是N台),通过FX系列PLC 的输出Y0,Y1,Y2,....分别控制第1台,2台,3台,..,   其中X0,X1分别为第一台的启动按钮,停止按钮; X2,X3分别为第二台的启动按钮;  X4,X5分别为第三台的启动按钮,停止按钮, 其余依此类推. 请能否用最短的程序来实现?

wanggq

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

 

  我们相互交流学习心得,应当尽量把问题落到实处,避免泛泛而谈!这样,别人才好有针对性的对您的问题做出具体的解答。您才能够从交流中受益。

 

   我们把“saitc701”网友的方案具体的落到实处,把它做成梯形图程序:

 

  


热门招聘
相关主题

官方公众号

智造工程师