用户登陆
免费注册
找回密码
站内短信
论坛搜索
工控下载
用户名
密码
输入验证码:
发财
综合讨论
资料互助
程序样例
三菱工控
西门子区
欧姆龙区
触摸屏区
工控人家园
西门子工控论坛
scl写模拟量采集,写FC还是FB?
上一主题
下一主题
by海绵
级别: 工控侠客
发送短信
加为好友
精华主题:
0
发帖数量:
92 个
工控威望:
2563 点
下载积分:
2705 分
在线时间: 144(小时)
注册时间:
2021-12-03
最后登录:
2024-12-02
查看by海绵的
主题
/
回贴
楼主
发表于: 2023-09-02 11:37
全看
|
小
中
大
下面是SCL写的模拟量采集,用来调用。放在了FC块,跑起来也没什么不一样,放在FB块 就是多一个DB块,里面也就是 当前的传感器数据 也没什么重要的东西,所以有了疑问,是放在那个块比较好呢???
下面SCL使用方法,保存为txt文件,修改文件后缀为scl ,博图导入外部源文件 就可以生成fc块了
复制代码
FUNCTION "模拟量数据处理" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
模拟量输入 : Int;
传感器量程上限 : Real;
传感器量程下限 : Real;
模拟量量程上限 : Int;
模拟量量程下限 : Int;
传感器修正值 : Real;
END_VAR
VAR_OUTPUT
传感器实际值 : Real;
传感器修正后结果 : Real;
传感器故障 : Bool;
END_VAR
VAR_TEMP
i : Int;
j : Real;
k : Int;
END_VAR
BEGIN
//数据处理
IF #模拟量输入 <= #模拟量量程下限 THEN //判断输入值是否低于模拟量设定下限值
#传感器实际值 := #传感器量程下限; //输出直接为浮点数设定值下限
END_IF;
IF #模拟量输入 >= #模拟量量程上限 THEN //判断输入值是否高于模拟量设定上限值
#传感器实际值 := #传感器量程上限; //输出直接为浮点数设定值上限
END_IF;
IF #模拟量输入 > #模拟量量程下限 AND #模拟量输入 < #模拟量量程上限 THEN
//判断输入值是否在设定值限值内
#i := #模拟量输入 - #模拟量量程下限; //实时值与模拟量下限值的差
#k := #模拟量量程上限 - #模拟量量程下限; //模拟量设定值的区间
#j := #传感器量程上限 - #传感器量程下限; //浮点数设定值的区间
#传感器实际值 := #j * #i / #k + #传感器量程下限;
END_IF;
//传感器数值修正
#传感器修正后结果 := #传感器实际值 + #传感器修正值; //对实际的的传感器数值进行结果修正
//传感器故障检测
IF #模拟量输入 < #模拟量量程下限 THEN //判断输入值是否低于模拟量设定下限值
#传感器故障 := true; //输出传感器故障
END_IF;
IF #模拟量输入 > #模拟量量程上限 THEN //判断输入值是否高于模拟量设定上限值
#传感器故障 := true; //输出传感器故障
END_IF;
IF #传感器实际值 < #传感器量程下限 THEN //判断结果是否低于传感器量程设定下限值
#传感器故障 := true; //输出传感器故障
END_IF;
IF #传感器实际值 > #传感器量程上限 THEN //判断结果是否高于传感器量程设定上限值
#传感器故障 := true; //输出传感器故障
END_IF;
END_FUNCTION
分享
sunzengli
级别: 论坛先锋
发送短信
加为好友
精华主题:
0
发帖数量:
685 个
工控威望:
1066 点
下载积分:
1553 分
在线时间: 220(小时)
注册时间:
2021-07-09
最后登录:
2024-12-02
查看sunzengli的
主题
/
回贴
1楼
发表于: 2023-09-02 12:56
全看
|
小
中
大
没有问题,实际上FB能做的FC都能做,反之一样。
FB就是自带背景的FC,在某些情况下很好用,但是如果你是先把数据处理的很合理,道理是一样的。
像你这种简单的输入输出处理,反而是FC更好,简洁清楚。因为你有清晰的外部数据和输出要求,不需要背景数据块,就没有必要一定要用FB了。
分享
上一主题
下一主题
工控人家园
西门子工控论坛
scl写模拟量采集,写FC还是FB?
http://www.ymmfa.com
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问