博图SCL编程——常规模拟量输入/输出的处理

本文只对SCL中模拟量处理程序的编写进行说明,详细的应用原理请参考博图中热电阻/热电偶(RTD/TC)模拟量信号的处理博图电压/电流(U/I)模拟量信号的处理

1. 热电阻/热电偶(RTD/TC)

热电阻/热电偶直接连接到专用的RTD/TC模块,不使用变送器的,熟悉使用西门子PLC的人应该都知道,除以10就行了。
常规组态,修改测量类型,以K型热电偶为例:
在这里插入图片描述
在这里插入图片描述
程序如下:

"TIC1" := "AI_TIC1" / 10;
"TIC2" := "AI_TIC2" / 10;
"TIC3" := "AI_TIC3" / 10;
"TIC4" := "AI_TIC4" / 10;

如果精度要求不高,那直接除以10,如果需要保留小数点后一位的数值,就要注意,输出值要选real浮点型,同时要先将int型的IO变量转换为real,防止精度丢失。

"TIC1" := INT_TO_REAL("AI_TIC1") / 10;
"TIC2" := INT_TO_REAL("AI_TIC2") / 10;
"TIC3" := INT_TO_REAL("AI_TIC3") / 10;
"TIC4" := INT_TO_REAL("AI_TIC4") / 10;

仿真结果如下(%IW4输入值设为121):
数据类型不转换的话
在这里插入图片描述
数据类型先转换的话在这里插入图片描述

2.电流/电压(U/I)

因为使用的指令不同,先说S7-1200/1500,至于300/400后面有空再添加。
这里涉及到两个指令——NORM_X和SCALE_X。指令说明还是看博图电压/电流(U/I)模拟量信号的处理
SCALE_X 和NORM_X 都是有返回值的,所以不能单独使用作为一行程序,需要赋值给一个变量。

//T101  Int %MW28   温度数值        量程 -35℃~35℃
#T101_temp := NORM_X(MIN := 0, VALUE := "AI_T101", MAX := 27648);
"T101" := SCALE_X(MIN := -35, VALUE := #T101_temp, MAX := 35);
//P101  Int %MW30   湿度数值        量程 0~100%RH
#RH101_temp := NORM_X(MIN := 0, VALUE := "AI_RH101", MAX := 27648);
"RH101" := SCALE_X(MIN := 0, VALUE := #RH101_temp, MAX := 100);

有一定编程基础的会发现, NORM_X 计算出的输出值可以直接用作SCSLE_X 的输入值,从而省略一个中间变量。
在这里插入图片描述

"T101" := SCALE_X(MIN := -35, VALUE := NORM_X(MIN := 0, VALUE := "AI_T101", MAX := 27648), MAX := 35);
"RH101" := SCALE_X(MIN := 0, VALUE := NORM_X(MIN := 0, VALUE := "AI_RH101", MAX := 27648), MAX := 100);

3.模拟量输出

会模拟量输入处理的原理,那输出同理,先缩放再标准化。
例如用4~20mA输出控制变频器频率。
在这里插入图片描述
在这里插入图片描述

//Motor_INV		REAL 	%MD32 	电机频率 0.0~50.0Hz
//AQ_INV		INT		%QW2	电机频率 4~20mA输出
"AQ_INV" := SCALE_X(MIN := 0, VALUE := NORM_X(MIN := 0.0, VALUE := "Motor_INV", MAX := 50.0), MAX := 27648);
  • 13
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值