编程思想的图解(深入浅出) 点击:4823 | 回复:111



wanggq

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

 

  在《求个最简洁的》题目下,我有一个写给<winter938 >网友参考的程序片断(如图1所示)。其程序的构思虽比较简单,但是也有些人在阅读时不动脑筋而对程序的功能理解出了偏差。现在我用图解的方式来讲解,尽量用初学者都能懂的形式把程序的功能讲清楚。

 

  下面这个图1 就是用于实现(在PLC进入RUN状态已达3秒之后)“在任意不足3秒的时间段内,若X1输入的脉冲前沿达到3个,则输出Y1,从X1的任意一个输入脉冲前沿起,3秒以内达不到有3个输入脉冲前沿出现,则停止Y1。”这一目标功能的程序片断:

                      (图1)

 

  这个片断虽不够是“最简洁的”,但是,它却是能正确实现上述目标功能的程序片断。在程序构思上比较符合一般人的思维顺序,比较容易使人理解。

 




刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:346帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2010-11-28 18:56:11
81楼
顶!!!                                                                                  

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2010-11-28 19:56:02
82楼

本人遇到一奇怪问题,用的是深圳公元科技有限公司的32点板型PLC,该PLC用的是三菱的编辑软件。

程序中用了M8014分钟时钟继电器,按理说,该继电器应该是30秒ON,30秒OFF。可运行中发现,M8014震荡的特别快,经现场监控(与标准时钟比较),发现M8014在一分钟内有两次上升沿,由此导致在0.5小时内,M8014就产生了60脉冲。

无奈,只好将错就错,把程序中60秒改成120秒,运行时间才算正常。

后咨询了深圳厂家,厂家也说不可能,说是应该与日本三菱的一样,即30秒ON,30秒OFF。但实际情况就这样。

以下是修改后的计时程序:

wanggq

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

 

  我把<winter938 >在№62楼的测试S7 200的0.1秒分辨率定时器的图片整理成左右对比的形式:

  右边的监视情况是:T37与T38同是一个I0.0驱动的,在同一时刻监测到T37的当前值是42,而T38的当前值是21。其差距怎会这么大呢?!是T37不准确?还是T38不准确?!!经销西门子产品的商人总是吹虚西门子PLC如何的好!总是踏削三菱PLC是垃圾!他们把西门子PLC的价格喊的老高。在我看来,他们使劲吹虚西门子PLC、踏削三菱PLC的动机完全是为了自己的商业利益!我以为两种PLC都差不多,能用就行,哪种便宜就用哪种,何必花太多的冤枉钱!!

wanggq

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

 

  对楼上T38跟T37当前值有如此大的差距感到困惑!!!!!!!!!!!

 

  原来<winter938 >你是用一个“双线圈”错误所造成的“混乱”来佐证你在№46楼说的100mS分辨率计时器“并不是说有个占空比为50%的周期为100ms的时钟脉冲在那儿‘滴哒’运行”啊!

 

wanggq

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

 

  对№51帖内容的补充:

 

  俩相同分辨率的计时器的线圈在一个程序中一前一后的位置上驱动,必然对同一个时钟脉冲有相位上的差异,如果一个在时钟脉冲“ON半周”,另一个在“OFF半周”,则必定是该周期里,一个对脉冲计了数而另一个却没有计到同一个脉冲。下面用实验的事实来证明这一点:

 

  X5是启动俩计时器的按钮,X0是停止计时器的按钮。摁下X0,俩计时器停止计时,俩计时器最后的当前值分别保留在D0、D1中便于我们观察。再次实验前请摁动X10把前次实验的数据清零。

 

aliang

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:105
  • 注册:2003年12月25日
发表于:2010-11-29 16:38:15
86楼

学新手习中。。。。。。。。。。。。。

jack_tianyutao

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2010年11月16日
发表于:2010-11-29 17:30:23
87楼
这里都是高手,我以后经常进来学习学习!

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2010-11-29 17:36:43
88楼
学习了。。。。。。。

刘志斌

  • 精华:5帖
  • 求助:0帖
  • 帖子:346帖 | 35827回
  • 年度积分:0
  • 历史总积分:75384
  • 注册:2006年7月30日
发表于:2010-11-29 18:18:00
89楼

什么是真才实学?请来这里领教领教!

winter938

  • 精华:1帖
  • 求助:0帖
  • 帖子:55帖 | 945回
  • 年度积分:0
  • 历史总积分:3418
  • 注册:2005年6月12日
发表于:2010-11-30 12:55:50
90楼
回复内容:
对:wanggq 关于

 

  我把<winter938 >在№62楼的测试S7 200的0.1秒分辨率定时器的图片整理成左右对比的形式:

  右边的监视情况是:T37与T38同是一个I0.0驱动的,在同一时刻监测到T37的当前值是42,而T38的当前值是21。其差距怎会这么大呢?!是T37不准确?还是T38不准确?!!经销西门子产品的商人总是吹虚西门子PLC如何的好!总是踏削三菱PLC是垃圾!他们把西门子PLC的价格喊的老高。所以,我以为两种PLC都差不多,能用就行,哪种便宜就用哪种,何必花太多的冤枉钱!!
内容的回复:


所以我说PLC的定时器运行机制不尽相同,T37执行了两次它计数是T38的两倍,T38计的时是准确的.CPM1A定时指令执行两次却不会以两倍计数.就我了解的小型产品FX1,2和S7 200各有所长,在中断和通讯方面S7 200的更开放些.

—笑九天

  • 精华:0帖
  • 求助:0帖
  • 帖子:43帖 | 472回
  • 年度积分:0
  • 历史总积分:1016
  • 注册:2007年7月13日
发表于:2010-11-30 18:27:16
91楼

大哥帮写个三凌(F×1s)pLC带步进电机的程序,只要求有信号就转,没信号就停驱动是syntron sh-20403的电机是2.4a 1.8度的···谢娜 999csw@163.com

wanggq

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

 

  我对这个西门子S7-200上的实验有几点看法:

 

  1、用这个实验的现象还构不成否定三菱FX系列的《100mS计时器框图》所表达的对应计时器原理的理由。

 

  2、在一个非SFC程序或非跳转的程序里重复的对同一个计时器进行驱动是没有实用意义的,犯了“双线圈”错误。即便是用来说明不同PLC有不同的内核编译程序,不同的PLC在计时器运行机制上有差异。也不能因此说西门子计时器的当前值就不是对“时基信号”进行计数来实现的计时。

                       

  3、如果把这个 S7-200 监视图片上的内容移植到三菱 FX1S 上,我们就能看到在三菱 FX1S 上,T37  同样还是在一个程序里有两处驱动,但是,它的当前值仍然和程序中只有一处驱动的T38 一样正确的对 100mS 时基信号计数(见下图所示):

 

 

  在这一点上,FX1S 是不是要比S7-200 优良一些呢?!我看FX1S在这一点上确实是要优良一点!

           

 

扁舟一叶

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 145回
  • 年度积分:0
  • 历史总积分:1139
  • 注册:2010年11月15日
发表于:2010-11-30 21:50:41
93楼
王工,俺是彻底对你佩服的不行了!

wanggq

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

 

  <winter938 >网友在№67楼引用《FX1s,FX1n,FX2n,FX2nc编程手册》第46页<定时器动作的细节与定时器的精度>的内容来表达什么观点呢?  

 

  <winter938 >网友在№67楼的帖子内容如下图所示:

   

   <winter938 >网友用红色下划线凸出这句“中断执行的1mS定时器在执行线圈指令后,以中断方式对1mS时钟脉冲计数。”是要说明一个什么观点呢?

 

  我们并没有说过1mS定时器的计时原理不是以中断方式对1mS时钟脉冲计数!它以中断方式对1mS时钟脉冲计数并不代表1mS时钟的“占空比”不是50%嘛,它仍然还是跟100mS时钟一样为“占空比等于50%”!只是1mS定时器在线圈驱动之后开始的计时动作不受程序扫描周期的影响而已。请网友们注意:<winter938 >用红线勾划出来的这句解释中所提到的“中断执行”及“中断方式”都不是指“中断程序”的意义!《编程手册》所指的原本的意义是:1mS定时器的当前值计数动作是独立于用户程序之外的,由专用的硬件电路来完成的。

 

  这个《编程手册》第46页的内容并不与《100mS计时器框图》发生矛盾。这个1mS定时器的计时原理完全不能够用来否定《100mS计时器框图》!

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-12-02 15:35:20
95楼

 

  科学技术上的林林总总的“说明”形式是分层面的。有时需要从宏观的层面上概括的说明,有时又需要从微观的层面上深入的说明。而这“宏观”与“微观”的概念又是相对的,没有绝对的“宏观”与“微观”的划分。

 

  《编程手册》第44页中关于定时器<功能>的“说明”相对于第46页中关于<定时器动作的细节与定时器的精度>的“说明”来讲,前者是“宏观”的,而后者是“微观”的。

 

  前者是这样描述定时器的:

 

  “定时器累计可编程控制器内的1mS,10mS,100mS等的时钟脉冲,当达到所定的设定值时输出触点动作。”

                                                       

  而后者是这样描述定时器的:

 

  “除了中断执行型的定时器外,在线圈驱动后,定时器开始计时,在计时完了后的最初的线圈指令执行时,输出触点动作。”

 

                                                       

  这两者的“说明”文字虽然不同,但我们也不能因此把前后两个“说明”看成是矛盾的,以一个“说明”去否定另一个“说明”!它们的“不同”只是“描述”所依从的“层面”不同而已。

 

  更何况,《编程手册》第46页关于“中断形式执行”的1mS定时器计数动作并不是对10mS、100mS的定时器讲的,怎么能用“中断形式执行”来否定《100mS计时器框图》所表达的普通定时器的计时原理?!

     

wanggq

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

 

  我在№27楼贴出《100mS计时器框图》来说明三菱FX系列PLC的100mS计时器的工作原理,相对于《编程手册》第44、第46页上对100mS定时器工作原理的说明又细致了一些。而且是与《编程手册》有别的,从不同的“角度”的“描述”。

 

  当然,《框图》仍是一个粗略的描述方法。有些更加细微的细节仍然没有给细致的描述出来。譬如:当最初扫描运算计时器线圈指令时的一个周期里,即使驱动条件M0跟100mS时钟脉冲的“ON半周”的“逻辑与”结果为“1”,计时器的“当前值计数器”也不会立即计数,要等第2个周期里运算定时器线圈时若这个“逻辑与”结果仍为“1”时才开始计第1个“1”。不过,当程序很简短时,一个扫描周期的时值是微不足道的,我们为什么就不可以忽略它的这个微不足道的差别呢!

                 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-12-03 16:42:23
97楼

 

  我们把《编程手册》第44页的关于“一般用”的定时器的描述提出来:

  这个“说明”的定时器时序图,因为它是粗略的表达,所以给很多人造成误解:以为在设定值范围内定时器当前值的改变是完全“线性”的(意思是指:当计时开始后,时间在横坐标上经过1个时钟单位,则当前值在纵坐标上就上升1个数字单位;那么,按照“线性函数”的性质,时间经过0.1个时钟单位,则当前值在纵坐标上就上升0.1个数字单位)。误认为当前值的斜线是一条没有“阶梯坎坎”的直线段。

 

  其实,从“微观”的层面上观察PLC定时器的当前值曲线是一条“阶梯状折线”。从“宏观”的层面上看时它给我们的印象才是一条“直线段”。

 

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-12-05 16:01:25
98楼

 

  “宏观”能够了解全局,“微观”能够洞察秋毫。这两者是互为补充的,并不是互为矛盾的。所以,我们不应该以其中一种“说明”去否定另一种“说明”!

 

  上图中定时器T200的设定值为“K123”,如果要在如上图那样大小的幅面内把123级“阶梯折线”表现出来恐怕是您的眼力所不能直接分辨出来的。就如您乘高空飞行器向下鸟瞰黄山的那个大坡,您所观察到的那个大坡就不是有“阶梯坎坎”的斜坡。

 

  由于您没有细致入微的研究过定时器的当前值对时间的“函数曲线”,您就不要妄下结论说“并不是有个占空比为50%的时钟脉冲在那儿‘滴哒’运行”!

       

wanggq

  • 精华:2帖
  • 求助:0帖
  • 帖子:24帖 | 5342回
  • 年度积分:0
  • 历史总积分:10407
  • 注册:2004年8月21日
发表于:2010-12-05 16:56:34
99楼

 

  在比较小的幅面内用一段斜线来表达计时器当前值对时间的“函数关系”,是完全合符情理的。即便是用“阶梯折线”来表达这个“函数关系”,由于“阶梯”的级数太多,表现在一个较小的幅面内,给您的印象也是一条“斜着画的直线段”。

 

  譬如在电脑屏幕上表现一条倾斜45°的“斜线”。您用眼睛在适当的距离之外观察时它是一条45°的“斜线”。但是,您把它放大之后观察,这条“斜线”的外轮廓就明显出“阶梯”边沿来了:

wanggq

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

 

  下面把№86楼的实验程序所对应的两个计时器(T0及T1)当前值对时间的函数图像做出来供网友们参考:

  T1比T0滞后51ms,前者在M8012的“ON半周”前沿时刻开始驱动,第2个扫描周期时其当前值就上升为1(从驱动到当前值计1 还不足1个毫秒!),而后者比前者仅滞后51mS驱动,其当前值却要比前者晚100mS 才开始上升为1 !


热门招聘
相关主题

官方公众号

智造工程师