|
前一段时间,在“找答案”栏目中看到一个贴子,提问是解释一段程序。这让我想起多年前一段很有“深意的”模拟量处理程序,至今不忘,这不仅仅是它的控制方式和编程语言,还是一块我慢慢能够进入的西门子数控领域的入门“砖”,故“触景生情”拿来说说。
这段程序是西门子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
通过这一点修改,能够“骗过”这段压力检测程序段,临时达到处理问题的目的,等待备件到来更换。另外一次是传感器压力输出值偏移引起,我也是通过加加减减的简单运算,把偏移量修正到一个标定的范围。
看别人编写的程序,我始终感觉是一件非常“痛苦”的工作。一来每一个的编写程序员的习惯不同,二来,对整体控制程序理解不深时,无法完整理解程序的点点滴滴,来来回回的跳转会把自己本已经纠结的心搞“糊涂”的。同样,我可能这样写帖,也可能会给大家参考带来一些困惑,毕竟每个人理解程序的侧重面可能会有差异。但是,作为一名维保人员只能耐着自己的性子,反反复复的看程序,把不理解的程序段看懂看明白为止,建议在线看程序是快速理解程序的一种方法。当然,看程序仅仅是维保工作的部分,外围的硬件特性也需要非常了解,只有了解了设备的实际现状,做一些应急处理还是相对比较容易的事情。
来源:西门子工业技术论坛 |
|