欧姆龙高手来帮我,急急急 点击:7934 | 回复:105



小龙女爱PLC

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 31回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2006年3月11日
发表于:2006-07-20 14:49:00
楼主
我现在用欧姆龙PLC 来编程写一台弹簧分选设备,模拟量采样后,如何求的最大值,用那种语句,我现在很迷茫,喜望高手能指点一下。
QQ:158642335



wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:22:00
81楼

  对于这么简单的问题,细心的网友只通过比较也能看得出来:“Legoo”的“最大值寄存器”在CP1H上是正确的,那么,“Wanggq”的“最大值寄存器”(指我在7月21日连续贴出的3个梯形图程序)在CPM1A上也是正确的!
  前者在CP1H上的“AND>S 200 D1000 MOV 200 D1000”与后者在CPM1A上的“CMPL 250 DM0200 AND 25505  XFER  #0002  250  DM0200”所起的作用都是“先做(数据)大小比较,然后传送大的(数据)”(我这里不是把CP1H和CPM1A等同起来,而是说,两者各自的“最大值寄存器”在各自的前提条件下都是正确的)。他们之间的不同只是:前者是在相对为“高端产品”上做的“最大值寄存器”,而后者是在“低端产品”上做的“最大值寄存器”;前者用的器材齐全,而后者用的是“因陋就简的替代品”;前者的程序速度高,而后者的程序速度低;前者“比较”、“传送”的是16bit的数据,而后者“比较”、“传送”的是32bit的数据。
  (在CPM1A上,当执行“比较”的结果是“大于”时,25505=ON)后者的程序要比前者多用一条“AND 25505”命令,是因为“低端产品”的CPM1A不支持“LD>”或“LD>S”或“AND>”或“AND>S”等等先进的命令。但是,没有先进的命令也不等于就不能做出“最大值寄存器”来!
  程序的响应速度低,可能会漏掉弹簧应力在某些高速反应时的“最大值”,但是,“小龙女”并没有提出响应速率的“指标”来,事实上也并不是在所有的前提条件下,弹簧应力都是非常高速地变化着。弹簧应力是跟随弹簧所受外力而变化的,如果弹簧连接的机械系统的“惯性”或“阻尼”很大,则弹簧就不可能非常高速地反复被“压缩”或“拉伸”。我举个大家都常见的例子:沙发床垫内也装有弹簧,人睡在上面翻个身,这时弹簧会有多高速的振动?所以,不能一提到“弹簧”就认为它是非常高速地改变着“状态”的物体!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:25:00
82楼
在这网上讨论和交流,往往别人的一个“思路”或“创意”就会给你很有用的“帮助”,而具体的细节则得由你自己根据实际的情况来把握。不要指望着别人把什么细微末节的东西都给你弄全了。不要自己在实践中一遇到点小的“挫折”就指责别人“老拿一些错误的东西来误导”你,或者指责别人“用一知半解的东西来教授于人”。相互交流嘛,谨供你参考。当然,你愿不愿意“参考”还得随你自己的便,别人也不会勉强你一定得“参考”。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:27:00
83楼
反省我在7月21日贴出的几个实验程序,我也认识到自己在选用“被测数据的替代品”时选择不当,使“实验者”在实验操作时的“调节”不太方便:对一个“完整的数据”要分别调整数据的“高4位”和“低4位”。这就使得“实验者”稍有“粗心大意”就容易产生“误解”。
  现在我另新选择“可逆计数器”这种“字元件”来作为“被测数据的替代品”只需用两个按钮来调节数据,其中一个作“加”键,另一个作“减”键。这样,即使仍做“双字的数据”也不会产生“误解”了。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:29:00
84楼
我先提供一个“单字”的“最大值寄存器”(以CPM1A为实验器材)谨供网友参考:

步    指令    操作数1    操作数2      注释 
0     LD     25401            0.02秒时钟脉冲
1     AND    00001              “加”键
2     LD     25401            0.02秒时钟脉冲
3     AND    00002              “减”键
4     LD     00003             “清零”键
5     CNTR   CNT001    #9999      可逆计数器
6     LD     25313             “常ON”标志
7     CMP    CNT001    DM0200       比较
8     AND    25505             “大于”标志
9     MOV    CNT001    DM0200      传送“大数”
10     LD     00003            “清零”键
11     MOV    #0000    DM0200       清零
12     END  

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:38:00
85楼

   有了上面一个程序为基础,接下来我们再看一个“双字”的“最大值寄存器”(以CPM1A为实验器材)谨供网友参考:

步 指令     操作数1   操作数2   操作数3     注释
0  LD      25401                  0.02秒时钟脉冲
1  AND     00001                   “加”键
2  LD      25401                  0.02秒时钟脉冲
3  AND     00002                   “减”键
4  LD      00003                   “清零”键
5  CNTR    CNT001   #9999           可逆计数器(低位)
6  LD           CNT001                                    作“进位”联系
7  AND     00001                    “加”键
8  LD           CNT001                                    作“退位”联系
9  AND     00002                    “减”键
10  LD      00003                   “清零”键
11  CNTR    CNT002   #9999           可逆计数器(高位)
12  LD      25313                  “常ON”标志
13  CMPL    CNT001   DM0200            双字比较
14  AND     25505                  “大于”标志
15  XFER    #0002    CNT001   DM0200  多字传送(此例为双字)
16  LD      00003                   “清零”键
17  BSET    #0000    DM0200   DM0201    块设定(作清零)
18   END

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-18 20:51:00
86楼

wanggq

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

iton

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 52回
  • 年度积分:0
  • 历史总积分:55
  • 注册:2001年10月01日
发表于:2006-08-20 16:23:00
88楼
你还是没有抓住重点,重点在于响应速率及模拟量输入抗干扰滤波;你自认在实验环境下可以成功,在现场一定行不通(况且你在实验环境下捕捉的一定不是最大值);

若是只靠歪理勃论及断章取义而想在网络上炒作自己,于现实上无法提高自己身价,难躲再次下岗命运!

靠想当然,在现场只有制造工安事故!害的是你的亲人及事故受害者!

doesting

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:0
  • 历史总积分:5
  • 注册:2006年8月22日
发表于:2006-08-22 10:43:00
89楼
长见识,学习了不少!!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-22 19:53:00
90楼
现假设有这样一台连接有“32bit的A/D转换器”的“弹簧秤”,用它逐个地称量很多个“测试样品”,并要求它记录下全部称量过程中“被测样品重量”的“最大值”。对于这个假设的例子,完全可以运用我那个“双字的最大值寄存器”的原理来记录这个“最大值”。并不因此会发生“iton”所危言耸听的“工安事故”!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-22 19:55:00
91楼
 “鸡蛋”易损(破裂),但是,我们可不可以用“弹簧秤”来称量“鸡蛋”的重量呢?完全是可以的!只要我们在称量的过程中注意做到“轻拿轻放”,弹簧也不会有“急剧”的“振动”而使“鸡蛋”破损!更不可能酿成什么“工安事故”!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-24 13:56:00
92楼
下面引用由iton在 2006-8-20 16:23:00 发表的内容:
  你还是没有抓住重点,重点在于响应速率及模拟量输入抗干扰滤波;…
--------------------------------------------------------------------------------------------

 到底是谁没有抓住重点呢?大家来看这里有个前提条件,从“小龙女”在2006-7-20 14:49:00发表的内容:“我现在用欧姆龙PLC……,模拟量采样后,如何求得最大值,用哪种语句……”来看,“小龙女”要求的是,用哪种语句或者说程序如何写能够记录已经得到的一系列“数据”中的“最大值”!在回答“小龙女”的这个问题时当然可以给她一个“基本思路”:“先做数据的‘大小’的比较,然后传送数据中的‘大数’给最大值寄存器”。这种回答法在逻辑上有什么不合理的呢?
 在这里我们是以“小龙女”已经采样得到的“数据”为前提标准来讨论“用什么方法来记录其中的‘最大值’”。我认为在回答这个问题时给出“先做‘数据’的‘大小’的比较,然后传送‘数据’中的‘大数’”这样的“基本思路”,这才是抓住了“小龙女”的问题的“重点”!如果你要撇开这一“重点”去追究“采样得到的数据”是不是漏掉了“弹簧应力”在实际过程中所出现过的“某一瞬时值”,这岂不是跑了“题”?岂不成了“喧宾夺主”!

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-25 12:56:00
93楼
  还记得上世纪50年代我国大庆的石油大汇战时期,石油工人们有一句名言:“有条件要上,没有条件创造条件也要上!”我们工人虽然条件差,不好找得到相对为“高端产品”的CP1H,也不便找得来“模拟量输入模块”。但是,我们也要想方设法的练习一下“最大值寄存器”。练习的重点就是“怎样记录已经采样得到的数据中的‘最大值’”而不是“如何对模拟量进行采样”。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-25 13:01:00
94楼
  “iton”的一些“胡话”,让人理解起来实在费力!比如:“iton” 在2006-8-20 16:23:00 发表的“你自认在实验环境下可以成功,在现场一定行不通(况且你在实验环境下捕捉的一定不是最大值)”, 这到底是在表达哪一种意思呢?是表达:“你自认在实验环境下可以成功,在现场就一定能成功?”还是表达:“你虽然在实验环境下可以成功,但在现场一定行不通!”?
  “iton”之所以把他本人的意思表达不清,是因为“iton”的思维逻辑有问题!我们姑且把 “iton” 在上面的一句话理解成后一种意思(因为在他那句话的末尾有括号注明:“况且你在实验环境下捕捉的一定不是最大值”),这就更加显露出“iton”思维逻辑上的混乱:
  第一,实验程序的核心内容是“比较数据的 ‘大小’ 和传送数据中的‘大数’给‘最大值寄存器’”即:记录“最大值”的方法。并没有关于“怎样做数据的‘采样捕捉’”这样的内容。而实验程序中的ch250、ch251或者CNT001、CNT002等字元件中的内容只是“采样数据”的“替代品”,我仅仅是用它们来代替“小龙女”用PLC自带的AD输入模块采集到的“数据内容”而已,并不是替代“采集过程”。
  第二,“模拟量的数字化采样”是以有限频度的间隔地去量化由无限多个“瞬时值”无间隙地接连而成的“模拟量”。用“有限”去对应“无限”,当然就无可避免地要“漏掉”“模拟量”上的许许多多的“瞬时值”! 但是,只要这些间隔相对“模拟量”的变化速率来说不是很稀疏,我们就可以认为“采样”基本上反映出“模拟量”的“面目”而不去追究由“间隔”造成的“丢失”。因为这些“丢失”与相邻的“采样点”在幅值上是很相近的。
  “模拟量”上的每一个“瞬时值”与“数字化采样”的“采样瞬间”的相对关系是“随机”的,而不是固定的。既然是“随机”的关系,这里就存在有一个“概率”的问题。我认为:经过输入滤波后的“模拟量”上的任何一个“瞬时值”被“采样瞬间捕捉到”的“概率”是相等的!因为我们知道“模拟量”上的“最大值”也毫不例外的是其上的一个“瞬时值”而已,“iton”凭什么依据可以说“捕捉到的一定不是最大值”呢,难道“iton”认为“最大值”在与其它各个“瞬时值”相比,它被“采样瞬间”所捕获的“概率”为“零”?

  从逻辑上讲,“捕捉到的一定不是最大值”这句话根本是“错误的”!正确的说法应该是:“捕捉到的不一定是最大值”。但是,即使“最大值”与“采样点”没有重合,但在“最大值”相邻的“采样点”上的“瞬时值”也与之相差无几!
  同理可以说明“iton”的那句“在现场一定行不通”也是非常荒谬的!要想正确,就只能改成有前提条件地说“如果采样频度较低,则在某些以高标准要求的场合就行不通”!

microtomato

  • 精华:1帖
  • 求助:0帖
  • 帖子:85帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于:2006-08-25 17:35:00
95楼
楼主的CPU够档次,可以用MAX指令直接找出最大值,最简单。

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2006-08-25 18:33:00
96楼
几乎各类电器产品都有从低端到高端一系列的款式。高端产品有高端的适用范围、低端产品有低端的适用范围。这里打个比方:低端一点的带摄像头的手机其摄像头的“像素”只有几十万,高端一点的带摄像头的手机其摄像头的“像素”达几佰万。倘若拿专业级的数码相机来说,其“像素”甚至多达“千万”!到底要达到多少“像素”才算合格呢?这就要看我们的实际应用的要求了!我们不可以因低端的手机的“像素”少而指责该款手机的设计者“对图像的细节要求一窍不通!”也不可以不分实际应用要求的精度而说“该款手机的照相功能完全不可用”。

  对于“模拟量”的“最大值”的采集,如果实际应用对精度要求严格时,我们可以用较高bit数的“数据长度”(譬如32bit)去采样量化模拟量,如果在实际应用对精度要求不严格的情况下,我们可用较低bit数的“数据长度”(譬如16bit)去量化它。
  如果“模拟量”的变化速率快,我们可以用较高的频度去采样量化模拟量,如果在“模拟量”的变化速率慢的情况下,我们可以较低的频度去量化它。比如我在前面假设的用“装有A/D转换器的弹簧秤”逐个去称量所有的“被测样品的重量”的例子就是一个低速的过程,每一个“被测样品的重量”都会在秤上持续一个时间。在这种情况下,即使是以低到只有几十赫兹的频度去“采样”也不会漏掉“被测样品重量”的最大值!

  总之,一切“判断”都得要有“前提”,没有“前提”的“判断”就等于“胡说”!

pp311

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 256回
  • 年度积分:0
  • 历史总积分:390
  • 注册:2006年3月08日
发表于:2006-09-27 16:04:00
97楼
开二个地址,起先为0,如新来的大,就留下。

aa2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 130回
  • 年度积分:0
  • 历史总积分:228
  • 注册:2004年9月25日
发表于:2007-02-22 18:10:00
98楼
支持PP311说法。这应该是个最简单的方法!

利昌機電

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 288回
  • 年度积分:0
  • 历史总积分:301
  • 注册:2003年10月12日
发表于:2007-02-22 19:35:00
99楼
呵呵呵~
既然用了CP1H CPU,為何不用FUNCTION BLOCK?這範例給你參考,您試試。
DifferentialUp := P_0_02s AND NOT Status;
Status := P_0_02s;
IF DifferentialUp AND Input_Word >= Cmp_1 THEN
Result := Input_Word;
END_IF;
它是用Structured Text Instruction編輯模式給出!語句接近Pascal,程式中不對低於目前比對值處理;它應該是您規劃時該給出的Reset信號來歸零。
Structured Text Instruction 沒有中斷問題。

aa2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 130回
  • 年度积分:0
  • 历史总积分:228
  • 注册:2004年9月25日
发表于:2007-02-23 17:58:00
100楼
利昌大哥说的不明白,能传上梯形图吗?

热门招聘
相关主题

官方公众号

智造工程师