西门子SCL语言编程 之 <多重背景 > 点击:2904 | 回复:9



smallbox

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2010年6月18日
发表于:2012-04-09 11:07:15
楼主
最近把西门子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
地点:大连

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


楼主最近还看过



miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-04-09 11:27:45
1楼

这样就通过SCL实现了多重背景的方法///         我没看得出 ?

 

你能详细 的讲一下  多重背景 块么?   你调用了 2次 FB602 , 应该会生成 2个 背景数据块吧?

 

 

 

 

彩云之滇东北

  • 精华:37帖
  • 求助:5帖
  • 帖子:148帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2012-04-09 11:33:27
2楼

顶一个,对于熟悉继电逻辑电路的人来说,梯形图要容易点,对熟悉数字电路的人,功能块图要方便点,各有优缺点。

smallbox

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 6回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2010年6月18日
发表于:2012-04-09 11:35:54
3楼

回复内容:
对:miy_gongkong关于这样就通过SCL实现了多重背景的方法///         我没看得出 ? 你能详细 的讲一下  多重背景 块么?   你调用了 2次 FB602 , 应该会生成 2个 背景数据块吧?    内容的回复:


SMALLBOX_1      :   FB602;            //这个是定义
SMALLBOX_1(DIGITAL_IN := A1);   //该句已经实现多重背景。

调用了2次FB602 使用过程中会在FB800的背景数据块生成FB602的背景块。 故:只需要一个生成一个DB块即可。第一解决DB的使用。第二,如果多重使用。还可以做到加密的一点点小效果。

 


 

smallbox

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 6回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2010年6月18日
发表于:2012-04-09 11:38:47
4楼

回复内容:
对:彩云之滇东北关于顶一个,对于熟悉继电逻辑电路的人来说,梯形图要容易点,对熟悉数字电路的人,功能块图要方便点,各有优缺点。内容的回复:



呵呵…… 我还是喜欢混合方式。

涉及算法用SCL,简单的逻辑用梯型图。初始化用STL。

zhangfei24

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 24回
  • 年度积分:0
  • 历史总积分:62
  • 注册:2007年4月23日
发表于:2012-04-09 15:37:44
5楼

楼主,虽然我没有细看你的内容,但是,还是帮你定下!

 

我有点小小建议:

1:在使用SCL编程的时候别带上“复杂的算法”之类的字样,SCL是门语言。它可以做到LAD里面的任何事情,并且,你所说的调用DB的问题,在本质上不存在节省内存,顶多帮你节省了DBX中的X的号码。

2:你程序上一些输入输出,以及变量,都没有在取名上给予辨别,换言之,我就是看你的取名很累,才没有看下去。真正从事模块化编程人员,都会在一些变量取名上就辨认出什么类型等。

这两点就是建议,没有指正或者批评。我从事SCL语言程序5年,得出的仅仅是个人总结而已。

 

对于SCL难易:
SCL本事来说,对于没有受过高等教育而直接从事电气人员来说的确有点难。但是有过Windows计算机编程语言基础的人来说,的的确确简单了许多。(我相信大多数从事控制类的人员都会有编程基础)
如果一个程序员不光从事PLC工作,还要从事其他工控作业的人员用SCL反而轻松和自在,因为习惯了IF Then这个模式。

有过SCL编程多年的老手,欢迎批评和交流

ylx518

  • 精华:0帖
  • 求助:17帖
  • 帖子:22帖 | 173回
  • 年度积分:0
  • 历史总积分:2885
  • 注册:2017年4月11日
发表于:2012-04-19 20:22:54
6楼
不知道有没有SCL胡学习资料,可否给我一份928764681@qq.com

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-04-20 09:11:28
7楼
5楼 说的 很对啊, 一看就是经验比较丰富, 说的对呀, 学过 Windows 程序设计的人来说, SCL  真是小儿科啊,呵呵!

莫无忌

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:1015
  • 注册:2018年6月04日
发表于:2018-06-23 09:37:19
8楼

请问有SCL语言的教学资料么?我现在急需学习这种语言,谢谢啦!

走去吃肉

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 16回
  • 年度积分:0
  • 历史总积分:63
  • 注册:2018年4月24日
发表于:2018-07-19 09:33:44
9楼

不错,不错,收着啦。


热门招聘
相关主题

官方公众号

智造工程师