如何在SCL语言中实现多重背景数据块的调用 点击:3245 | 回复:2



夏平

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 36回
  • 年度积分:2
  • 历史总积分:54
  • 注册:2004年5月24日
发表于:2007-12-30 16:00:00
楼主
在做SCL时遇到了一些麻烦,请大家指教.
想完成这样一个功能:OB33调用一个FB块(如FB1),在FB1里调用了一个SFB块,但是这个SFB块的背景数据块的值作为一个输入参数在FB1里定义,然后在OB33里多次调用FB1时,分配背景数据块给FB1时,同时在FB1输入参数端输入一个背景块名,这样就指定了SFB的背景数据块,STL和LAD语言都能实现,但是SCL语言无法完成,请各位讨论指教。
例如STL的大概语言是:
[color=#0000FF]FUNCTION_BLOCK FB1[/color]
VAR_INPUT
   ……
   [color=#FF0000]DB_num:BLOCK_DB;[/color]
   ……
END_VAR
VAR_OUTPUT
   ……
END_VAR
BEGIN
NETWORK
   ……
   CALL "CONT_C[color=#FF0000]",#DB_num[/color](
    COM_RST:= L14.O,
    MAN_ON:= L14.1,
    ……
   );
[color=#0000FF]END_FUNCTION_BLOCK[/color]

[color=#0000FF]ORGANIZATION_BLOCK "CYC_INT3"[/color]
   ……
   NETWORK
   ……
   CALL FB1,DB100(
……
[color=#FF0000]DB_num:=DB11,[/color] ……);  
   ……
[color=#0000FF]END_ORGANIZATION_BLOCK[/color]
编译之后一切正常,没有错误,功能也实现了。


但我在SCL里做同FB1的功能却遇到了麻烦,编译始终无法通过。
例如:
[color=#0000FF]FUNCTION_BLOCK FB1[/color]
VAR_INPUT
   ……
[color=#FF0000]   DB_num:BLOCK_DB;[/color]
   ……
END_VAR
VAR_OUTPUT
   ……
END_VAR
[color=#0000FF]BEGIN[/color]
   ……
   CONT_C.[color=#FF0000]DB_num[/color](
COM_RST:=……,
        MAN_ON:=……,
……);
   ……:=[color=#FF0000]DB_num.LMN;[/color]
   ……;
[color=#0000FF]END_FUNCTION_BLOCK [/color]以上的SCL编译始终出错,提示name conflict with a local variable,我想问题就在DB_num这个变量SFB41背景数据块的定义上,如何修改才能实现STL那样的功能呢?







PLC_WINCC

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 151回
  • 年度积分:0
  • 历史总积分:686
  • 注册:2007年11月25日
发表于:2007-12-30 19:49:00
1楼
太高!我只使用梯形图

夏平

  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 36回
  • 年度积分:2
  • 历史总积分:54
  • 注册:2004年5月24日
发表于:2008-01-03 16:02:00
2楼
西门子技术支持说不可以,说编译通过不了,我也知道通过不了编译啊.
可是STL和LAD都能实现的功能,为什么SCL实现不了呢?按理说SCL是更高级的语言.

热门招聘
相关主题

官方公众号

智造工程师