【原创】西门子SCL语言编程 之

最近把西门子SCL编程语言从头到尾学了一遍,发现SCL作为PLC中的高级语言,比T型图和语句表使用起来方便多了,特别适合复杂的算法。使用SCL语言编程,小盒子已经完成有关工艺文件的加载和执行、模拟量采集(含滤波及各种报警输出)、以及模拟量输出(多重背景)、以及一些复杂度不是很高的算法(包括:使用平衡法等),对我来说,使用SCL比使用T型图编程效率要高。呵呵……原因有可能是因为本人有C语言的功底+VB编程的功底+VHDL语言功底,所以可能感觉SCL比较好用吧。
先说一下多重背景的优点:
1.多个实例(实例是指FB)只需要一个DB;
2.在为每个实例创建private数据区时,无需任何额外的管理工作;
3.最大嵌套深度为8级;
4.有效的实现"加密"功能,防止恶意窃取你的劳动成果;
需要注意的问题:
1.实例(FB)内不允许直接访问过程信号(如 I Q);
2.FB只能使用静态变量,不能使用全局的DB或者是位存储器;
PS:目前只知道这些,知道别的再往里加吧;
下面给出来一个SCL的例程:
例如:FB602 实现模拟量输出
源码如下:

FUNCTION_BLOCK FB602

// Block Parameters
VAR_INPUT
    // Input Parameters
    DIGITAL_IN  {S7_m_c :=  'true'} :   DWORD;              //预设模拟量输出数值
    HI_LIM_IN   {S7_m_c :=  'true'} :   REAL    := 100.0;   //模拟量输出范围上限 默认值:100
    LO_LIM_IN   {S7_m_c :=  'true'} :   REAL    := 0.0;     //模拟量输出范围下限 默认值:0
    BIPOLAR_IN  {S7_m_c :=  'true'} :   BOOL    := FALSE;   //模拟量极性选择 FALSE:单极性\ TRUE:双极性  
END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
    // Output Parameters
    ANALOG_OUT  {S7_m_c :=  'true'} :   WORD;               //实际模拟量输出
    ERR         {S7_m_c :=  'true'} :   BOOL;               //FALSE 转换正确 TRUE转换错误
END_VAR

VAR_TEMP
    // Temporary Variables

END_VAR
VAR
    // Static Variables

END_VAR

    // Statement Section
    // 模拟量输出代码
    // 略…………
    ;
END_FUNCTION_BLOCK

FB800实现调用FB602实例两次

FUNCTION_BLOCK FB800
// Block Parameters
VAR_INPUT
    // Input Parameters
    A1  :   WORD;
    A2  :   WORD;
END_VAR
VAR_IN_OUT
    // I/O Parameters
END_VAR
VAR_OUTPUT
    // Output Parameters
END_VAR
VAR_TEMP
    // Temporary Variables
END_VAR
VAR
    // Static Variables
    SMALLBOX_1      :   FB602;
    SMALLBOX_2      :   FB602;
END_VAR
    // Statement Section
    SMALLBOX_1(DIGITAL_IN := A1);
    SMALLBOX_2(DIGITAL_IN := A2);
    ;
END_FUNCTION_BLOCK

这样就通过SCL实现了多重背景的方法,有效的节省了DB的使用。目前例程只适用两次FB602,一旦要是有N次,那样就会大大的节省DB使用。

作者:小盒子
时间:2012.03.05
地点:大连

注:本文属小盒子原创,转载请注明出处,谢谢合作!

你可能感兴趣的:(【原创】西门子SCL语言编程 之)