我最近才接触Delphi语言, 而且从目前所有就业招聘的情况来看,Delphi的前景看起来有点不如某些开发工具光鲜,尤其在Borland公司被甲骨文Oracle收购后,好像Delphi注定要被世人遗忘一样, 同时在各大论坛、BBS上人们对Delphi的看法就有太多的成见,一般人都看不起Delphi和VB这样简单的语言,或者说对程序员来说缺少学习难度的语言或者开发工具。
不过好像这些都是——真正的程序员——们的看法,而不是所有人的看法,大多数的程序员其实不知道其实对于Delphi的母语——Pascal——还有一个非常特别的应用:那就是作为国际上通用的PLC编程语言存在。
在自动化控制领域, 有几种用的比较多的语言,最常用的就是LAD、STL和FBD。除了这些常用的语言之外还有一个比较常用的语言:那就是SCL。SCL语言是什么语言呢? 就是结构化文本编程。
SCL语言对于一些复杂的运算,尤其是数学运算其编程的复杂程度较LAD、STL和FBD都要简单。下面我们来看看自动化界使用的Pascal语言应用,我们以西门子PLC为例子来做一个简单的比较,做一个简单的电机正反转的控制语言的实现。
首先看看一个定义的函数块:FC
STL语言:
第一步定义数据接口
IN数据接口:
Estop BOOL // 急停 I0.0
Power BOOL // 控制电源 I0.1
StartDir BOOL // 正向启动 I0.2
StartRev BOOL // 反向启动 I0.2
Stop BOOL //停止 I0.3
Test BOOL //试灯 I0.4
OUT接口区:
RunDIr BOOL //正向启动 Q0.0
RunRev BOOL // 反向启动 Q0.1
RunningLamp BOOL // 运行指示灯 Q0.2
第二步程序的实现:
Net1: 正转控制
A Estop
A Power
AN StartRev
A
A(
O StartDir
O RunDir
)
= RunDoir
Net2: 反转控制
A Estop
A Power
AN StartDir
A Stop
A(
O StartRev
O RunRev
)
= RunRev
Net3: 指示灯
O RunDir
O RunRev
O Test
= RunningLamp
上面程序段是自动化人员可能会用到的一种较常用的实现;下面我们看看Pascal是怎么实现的。
FUNCTION "MotorStart"
title
version
VAR_INPUT
Estop:BOOL;
Power:BOOL;
StartDir:BOOL;
StartRev:BOOLl;
Stop:BOOL;
Test:BOOL;
END_VAR
VAR_OUTPUT
RunDir:BOOL;
RunRev:BOOL;
RunLamp:BOOL;
END_VAR
VAR_TEMP
DirTemp:BOOL;
RevTemp:BOOL;
END_TEMP
Begin:
// 正转
IF Estop=TRUE AND Power= TRUE AND Stop=TRUE AND StartDir=TRUE THEN
DirTemp:=TRUE;
ElSE
DirTemp:=FALSE;
END_IF
IF DirTemp=TRUE AND StartRev=FALSE THEN
RunDir:=TRUE;
END_IF;
//反转
IF Estop=TRUE AND Power=TRUE AND Stop=TRUE AND StartRev=TRUE THENRevTemp:=TRUE;
ElSE
RevTemp:=TRUE;
END_IF
IF RevTemp AND StartDir=FALSE THEN
RunRev:=TRUE;
END_IF;
//指示灯
IF RunDir=TRUE OR RunRev=TRUE OR Test=TRUE THEN
RunningLamp:=TRUE ;
END_IF
END_FUNCTION
上面的SCL程序段好像并没有比STL语言简洁或者容易多少,反而看起来很复杂, 当然如果做逻辑运算SCL实际上并不比其他语言简单。但是如果循环和所数学运算,用SCL就会简单多了。
这里不多说了,以后有机会再讨论其他的应用。
只想表达一个观点,其实Delphi的应用如果编写Windows的应用程序,应该不比Microsoft出品的Visual Studio中的C/C++组件差多少,如果说有一定的差距,那就是目前没有人用Pascal写过操作系统, 而目前主流的操作系统都是用C语言实现的,可能在这一点上人们会认为Pascal语言不如C语言,学C的人就是牛人,而学Pascal的人就不怎么样, 怎么说呢, 程序员写代码,我指写代码,用什么都没有两样,关键是看应用, 不同的应用选择一个合适的开发工具才是最重要的。
一孔之见,欢迎弯腰低头找板砖........................