作者 | 主题 |
---|---|
WWCWWC 至圣 经验值: 71992 发帖数: 8037 精华帖: 145 |
楼主 2019-05-01 09:50:29
主题:模拟量输入程序的应用一例 模拟量输入程序的应用一例 前一段时间,在“找答案”栏目中看到一个贴子,提问是解释一段程序。这让我想起多年前一段很有“深意的”模拟量处理程序,至今不忘,这不仅仅是它的控制方式和编程语言,还是一块我慢慢能够进入的西门子数控领域的入门“砖”,故“触景生情”拿来说说。 这段程序是西门子840D系统中,控制一个顶料器压力控制范围的程序,具体程序如下所示: L "Analog Ausst.Spi.oben" //Druck vom Analogeingang顶料器向上检测输入输入 L DB20.DBW 0 //Plc MD 14510[0] User_Data_Int参数值 /D T #Ist_Druck_auf //Istdruck通过参数计算到一个压力值Bar A( L #Ist_Druck_auf //Istdruck L 280 <D //如果检测到压力大于280Bar ) JC M005 L 0 T #Ist_Druck_auf //Bei 躡erlauf 0 setzen //作出相应的超压力保护处理 M005: NOP 0 //上述程序段的含义是判断所检测的压力是否超出判断范围,如果压力在正常范围,那么,继续执行下面的程序段// //将模拟量输入数据读入并转换// L #Ist_Druck_auf DTB //将输入的数据转换 T #Anzeige_in_Bar_Dr_auf //Baranzeige //计算压力值的百分数,除4相当于25%// L #Sollwert_Ausstosser_auf L 4 /D T #Rechen_Druck //25% vom Solldruck //检测压力值百分数的上限// L #Sollwert_Ausstosser_auf L #Rechen_Druck +D T #Rechen1_Druck //Solldruck plus 上限125% //检测压力值百分数的下限// L #Sollwert_Ausstosser_auf L #Rechen_Druck -D T #Rechen2_Druck //Solldruck minus 下限75% //如果判断压力值在75%~125%,那么,启动延时定时器T47// A( L #Ist_Druck_auf //nc设置顶料器向上 L #Rechen1_Druck <=D ) A( L #Ist_Druck_auf L #Rechen2_Druck >=D ) L S5T#500MS SD "verz.Ausstosser oben" //verz鰃ert Ausstosser oben定时器T47 //如果判断压力值OK,则输出一个控制标志位// A "verz.Ausstosser oben" = #Druck_auf_ok //Meldung Ausstosser ist oben 上述程序段是设备系统中,一个顶料器动作时的压力判断,当“#Druck_auf_ok”为1,执行顶料器向上顶料的动作,反之,不执行动作并报警,对应的程序段图示:内部变量对应关系。 如果“#Druck_auf_ok”不等于1,那么,下面的报警程序段被触发报警,图示: A "Chan1".MDyn[20] //向上NCK指令 S "ALMSG_DB".C1.RID_5102xx[19] //BM 510219 einlesesperre A "DB Ausstoss Spi".Druck_auf_ok //DB103.DBX38.0对应于#Druck_auf_ok内部变量 O "ZM Taste Reset" //MCP板上的复位按钮 R "ALMSG_DB".C1.RID_5102xx[19] 如果“#Druck_auf_ok”不等于1,那么,无法复位被NCK指令(M20)执行时的置位,故510219#报警被触发。 这里感觉比较有“深意”的是程序,并不采用我们常用的方式,先把模拟量转换为实际工程量,而是只进行一个简单的“换算”,得到一个压力数值,然后利用这个数值,进行上、下限的计算,达到压力数据的上限和下限这2个数据。由于这个数据可能会在实际应用中出现的小幅震荡,适当的延时在这里加入且到好处。 这个程序在实际应用中,曾经有一段时间由于该系统的液压泵泵头柱塞磨损,引起的系统压力下降,致使“#Druck_auf_ok”不等于1,我在检查外围没有不利于安全的前提下,曾经把这个压力判断的计算程序由25%扩大到50%,图示: //计算压力值的百分数,除2相当于50%// L #Sollwert_Ausstosser_auf L 2 //由除4改为除2 /D T #Rechen_Druck //50% vom Solldruck 通过这一点修改,能够“骗过”这段压力检测程序段,临时达到处理问题的目的,等待备件到来更换。另外一次是传感器压力输出值偏移引起,我也是通过加加减减的简单运算,把偏移量修正到一个标定的范围。 看别人编写的程序,我始终感觉是一件非常“痛苦”的工作。一来每一个的编写程序员的习惯不同,二来,对整体控制程序理解不深时,无法完整理解程序的点点滴滴,来来回回的跳转会把自己本已经纠结的心搞“糊涂”的。同样,我可能这样写帖,也可能会给大家参考带来一些困惑,毕竟每个人理解程序的侧重面可能会有差异。但是,作为一名维保人员只能耐着自己的性子,反反复复的看程序,把不理解的程序段看懂看明白为止,建议在线看程序是快速理解程序的一种方法。当然,看程序仅仅是维保工作的部分,外围的硬件特性也需要非常了解,只有了解了设备的实际现状,做一些应急处理还是相对比较容易的事情。 |
WWCWWC 至圣 经验值: 71992 发帖数: 8037 精华帖: 145 |
1楼 2019-05-01 09:54:24
主题:回复:模拟量输入程序的应用一例 哦,对了,今天五一劳动节,在此向还工作在一线的劳动者致以崇高的敬意! |
隐身人 至圣 经验值: 38669 发帖数: 10349 精华帖: 72 |
2楼 2019-05-01 10:01:07
主题:回复:模拟量输入程序的应用一例 可惜我本人对预料器没有半点了解,也就不明白其中的工作原理了,但程序我看了,不但详细而且有文字说明,不失为一篇有价值的分享贴,借此五一来临之际,祝各位坛友节日快乐!
西门子的多年使用者http://yinshenren.ys168.com/、
|