设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子博途模拟量输入自定义SCL程序测试 ...
返回列表
发新帖
[西门子]
西门子博途模拟量输入自定义SCL程序测试
[复制链接]
98102
|
0
|
2024-4-10 09:12:07
|
显示全部楼层
|
阅读模式
最近收到一个朋友的留言,希望能够出一下SCL的模拟量处理程序功能块,便于移植,也起到抛砖引玉的功效,大家学习博途编程的时候,可做参考:
首先,我们定义管脚:
其次我们编写功能块程序:
//模拟量输入标准化
//信号异常判断
IF (#Current_Value > 27648) AND (#Current_Value < 0) THEN //通道值正常
#Bad_Quality := 1;
ELSE
#Bad_Quality := 0;
END_IF;
IF (#Current_Value < 0) THEN //当通道值小于0时,默认为通道输入为0
#stat3 := 0;
END_IF;
IF (#Current_Value > 27648) THEN //当通道值大于27648时,默认为通道输入为27648
#stat3 := 27648;
END_IF;
IF (#Current_Value <= 27648) AND (#Current_Value >= 0) THEN //通道值正常
#stat3 := #Current_Value;
END_IF;
//数据转换
#stat4:=INT_TO_DINT(#stat3);
#stat5 := DINT_TO_REAL(#stat4);
#stat6 := #Limit_High - #Limit_Low;
#stat7 := #stat5 / 27648.0;
#stat8 := #stat7 * #stat6;
#stat0 := #stat8 + #Limit_Low;
//数据输出
#Engineering_Value := #stat0;
//高报警判断
IF #Alarm_second_P = 1 AND #stat0>#Setpoint_H AND #Alarm_H=0 THEN
#Alarm_H_T := #Alarm_H_T + 1;
IF #Alarm_H_T > 5 THEN //如果大于高报警设定值5秒,则发出报警信号
#Alarm_H := 1;
#Alarm_H_T := 0;
END_IF;
END_IF;
IF #stat0 < #Setpoint_H THEN
#Alarm_H := 0;
#Alarm_H_T := 0;
END_IF;
//低报警判断
IF #Alarm_second_P = 1 AND #stat0 < #Setpoint_L AND #Alarm_L <> 1 THEN
#Alarm_L_T := #Alarm_L_T + 1;
IF #Alarm_L_T > 5 THEN //如果大于高报警设定值5秒,则发出报警信号
#Alarm_L := 1;
#Alarm_L_T := 0;
END_IF;
END_IF;
IF #stat0 > #Setpoint_L THEN
#Alarm_L := 0;
#Alarm_L_T := 0;
END_IF;
最后我们来测试一下功能:
以上仅供参考,如有问题,大家自行修改,提高能力。
更多关注:
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
自动化工程技术
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』