西门子 S7-SCL 语言

西门子 S7-SCL 语言
西门子 S7-SCL 语言

西门子 S7-SCL 语言

S7-SCL(Structured Control Language)-结构性控制语言,它属于可程控的控制卡上使用的PASCAL高级语言。

S7-SCL符合定义于DIN EN/IEC 61131-3的高水平结构性文字(ST:Structured Text)的本文语言,它特别适合编写程序复杂的算法和数学函数,或是数据处理任务。

下面就是我用S7-SCL写的一段程序

FUNCTION_BLOCK FB110

VAR_TEMP

// Temporary Variables

SuitCanNum : INT ; //套筒可以拧紧的数量

CanSave : BOOL ; //判断可以存储

END_VAR

VAR

// Static Variables

CurrentOK_Num : INT;

INDEX : INT ;

END_VAR

VAR_INPUT

TotalsNum : INT ; //此扳手可拧的最多的螺栓数

SuitNo : INT ; //套筒号(程序号)

Current_Torque : REAL ; //当前的扭矩

Current_Corner : REAL ; //当前的转角

Current_OK : BOOL ; //当前拧合格后进行记录

ResetCondition : BOOL ; //当移动到下一个工位,或下个发动机过来,清空记数

END_VAR

BEGIN

//SuitCanNum :=DB1.SuitCanUseNum[SuitNo] ;

IF Current_OK THEN

CanSave := True;

END_IF;

IF ResetCondition = True THEN

CurrentOK_Num :=0 ;

FOR INDEX:= 1 TO TotalsNum BY 1 DO //当移动到下一个工位,或下个发动机过来,把存储区的内容全部清空// Statement Section

DB2.Bolt[CurrentOK_Num].Suit := 0;

DB2.Bolt[CurrentOK_Num].NO :=0;

DB2.Bolt[CurrentOK_Num].Torque :=0.0;

DB2.Bolt[CurrentOK_Num].Corner :=0.0;

DB2.Bolt[CurrentOK_Num].State :='';

END_FOR;

ELSIF CanSave THEN //当拧紧合格

CanSave := False;

IF CurrentOK_Num = TotalsNum THEN //若当前数量等于最大数量,则退出,避免CPU停止

RETURN;

END_IF;

CurrentOK_Num := CurrentOK_Num +1; //移动到下一个存储区域

DB2.Bolt[CurrentOK_Num].Suit := SuitNo;

DB2.Bolt[CurrentOK_Num].NO :=CurrentOK_Num;

DB2.Bolt[CurrentOK_Num].Torque :=Current_Torque;

DB2.Bolt[CurrentOK_Num].Corner :=Current_Corner;

//DB2.Bolt[CurrentOK_Num].State :='OK';

END_IF ;

// Instruction Section

END_FUNCTION_BLOCK

怎么样,假如这个扳手可以拧几种螺栓,每种螺栓数量不定,用梯形图写起来就相对麻烦,而且不容易读,对熟悉PASCAL 语言的人是不是一个福音,退一步说,你了解其他的高级语言,不了解PASCAL也没有关系的,基础的原理都是一样的,希望和大家一起探讨。

相关主题
相关文档
最新文档