原系统使用的是西门子的设备,包括HMI,PLC,变频器。既然都是西家的设备,那么改造任务,也会轻松很多,为什么?老熟人啊,熟人之间好说话啊。
项目改造增加了软件保护,电流平均值差值保护。
用每台电机的电流与所在桩腿的18台电机,和全船54台电机的平均电流分别做比较,电流差分别做Warning, Alarm, Fault输出状态。,从而做相应的控制(其中Warning只做文本提示;Alarm做声光报警提示;Fault时停机)。
当前程序做单腿(18个电机)和全船(54个电机)的平均值保护。
打开原来的程序,有一个程序块是作为单舷管6个电机的电流做比较,求最大值、最小值及平均值的。
打开FC103功能块,黑压压一片LAD,一眼望不到尽头。这才是六个数据呀,如果是18个电机比较呢?54个电机比较呢?又要是何等的壮观场面啊。
但是,别急。
还有其它办法可以解决问题吧。总不能在一棵树上吊死啊。
试试STL,SCL怎么样?
还是STL吧,相比之下,更能得心应手一点点。
简单明了,一个短短的NETWORK就搞定了。
瞬间感觉到,在多数据比较、计算的场合,STL甩LAD好几条街。
再来一段STL程序做报警输出的判断:
OPN "STBD_CT_ProtectDB"
//判断开始
L P#0.0
LAR1
L P#352.0
LAR2
L 18
//循环开始,使用MB356
//报警判断
Jam1: T MB 356
L DBD [AR1,P#2.0]
L "STBD_CT_ProtectDB".STBD_C110_VALUE
-R
L 0.000000e+000
>R
JCN Jam2
= DBX [AR2,P#0.0]
//Jam故障判断。
Jam2: L DBD [AR1,P#2.0]
L "STBD_CT_ProtectDB".STBD_C160_VALUE
-R
L 0.000000e+000
>R
JCN Jam3
= DBX [AR2,P#0.2]
Jam3: +AR1 P#6.0
+AR2 P#1.0
L MB 356
LOOP Jam1
这段程序主要就是用于单电机的电流判断,当电机实时电流超过额定电流的110%时,输出控制为warning报警;当电机的实时电流超过额定电流的160%时,输出控制位fault,作为停机控制。
当然了,我说STL的优势,只是在某一方面应用的相对优势,并不是简单的认定就是哪种编程语言好,哪种不好。
STL语言接近机器语言,不利于程序的传承(其它人不好阅读,且对编程人员要求高一点点),但是,对于学了汇编的我们,就是亲切啊。可惜,博图软件对STL已经开始准备放弃(虽然还没有)。
在条件允许的情况下,能多学习尽量多学习,多一项技能,多一种出路。其实,我都觉得,这种技能出路比到后来都不行线性变化,有点指数的意思。
技多不压身,古人不是说“书到用时方恨少”吗?所以,有条件就多了解了解,总在不经意间会能得到惊喜。
至于网上经常讨论的哪种语言好?该学什么语言?有时还会吵得天昏地暗日月无光,甚至恶语相向。我觉得完全没有必要,各凭喜好呗。
如果非要说个结论的话,套用网络流行语:小学生才做选择题;成年人,当然是都要啊。哈哈。