SIEMENS西门子湖南省邵阳市(授权)伺服电机一级代理商——西门子华中总代理

供应商
广东湘恒智能科技有限公司
认证
西门子总代理
PLC
西门子一级代
驱动
西门子代理商
伺服电机
联系电话
15903418770
手机号
15915421161
联系人
张经理
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房
更新时间
2024-06-05 07:00

详细介绍

1.如下的程序实现了sfc20的部分功能,可以作为any使用的参考。

function fc 1 : void
title =
version : 0.1
var_input
srcblk : any ;
end_var
var_output
retval : int ;
dstblk : any ;
end_var
var_temp
loop : int ;
block_no_db : word ;
block_no_di : word ;
src_add : dword ;
dst_add : dword ;
end_var
begin
network
title =
l p##srcblk;//读取输入any的首地址
lar1 ; //装载到ar1
l p##dstblk;//读取输出any的首地址
lar2 ; //装载到ar2
l w [ar1,p#4.0];//打开db块
t #block_no_db;
l w [ar2,p#4.0];//打开di块
t #block_no_di;
opn db [#block_no_db];//打开db块
opn di [#block_no_di];//打开di块
l d [ar1,p#6.0];
t #src_add; //读取地址
l d [ar2,p#6.0];
t #dst_add; //读取地址

l w [ar1,p#2.0]; //读取循环次数
_001: t #loop;
l dbb [#src_add];
t dib [#dst_add]; //赋值
//地址偏移1个字节
l p#1.0;
l #src_add;
+d ;
t #src_add;
l p#1.0;
l #dst_add;
+d ;
t #dst_add;
l #loop; //循环
loop _001;
end_function 

2.当fc 或fb的输入参数类型为:block_db,timer或者 counter,如何确定其编号?
例1 :fb 块

fb1 变量声明中定义了“timer” 类型的变量“time_1” ,在 fb2 中调用 fb1,将定时器“t5”传递给变量“time_1”。如图 01 所示程序代码中数值 5 表示“t5”。


图 01 fb中确定定时器编号

在使用多重实例时,需要在图 01 所示程序中增加以下代码:
tar2 //多重实例偏移地址
lar1 p##time_1
+ar1 //多重实例偏移地址与当前地址相加
l w[ar1,p#0.0]
t mw0
例 2 fc
fc1 变量声明中定义了“timer” 类型的变量“time_1” ,在 fc2 中调用 fc1,将定时器“t8”传递给变量“time_1”。如图 02 所示程序代码中数值 8 表示“t8”。


图 02 fc中确定定时器编号

“block_db”类型参数在调用 fc 时不可以直接传送给 fc 。如果在调用功能时试图使用此参数类型,将产生如下的错误消息: “非法的参数传输<参数名>” 。“block_db”类型参数仅在 fb 被调用(从一个 fb 或 fc 中)时可被传送。 “block_db”类型参数不可以在 fc 被调用(从一个 fb 或 fc 中)时可被传送。
相关详细信息可参考 step7 在线帮助中“合法的传输参数类型”。
然而,如果希望将 block_db 参数类型传送给 fc, db 块的编号可以通过基本数据类型(例如 word)传送。在下面的例子中,fb100 拥有一个“block_db” 的输入参数类型。为了在调用 fc101 时将参数传送给它,“block_db”中的 db 块编号被传送给 word 临时变量(db_no)。当 fc 被调用,数据块序号以一个 word 参数类型替代 block_db 参数类型。


图 03fb中确定block_db编号

如果 fb 的接口参数能被定义成 word 参数类型来传送 db 块编号,当 fc 被调用时,此参数可以被直接传送给 fc。


图 04fc中确定db编号 


PLC,变频器,代理商,一级代理,伺服电机

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话