1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 博图SCL编程——常规模拟量输入/输出的处理

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

时间:2021-10-12 19:55:00

相关推荐

博图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_INVREAL %MD32 电机频率 0.0~50.0Hz//AQ_INVINT%QW2电机频率 4~20mA输出"AQ_INV" := SCALE_X(MIN := 0, VALUE := NORM_X(MIN := 0.0, VALUE := "Motor_INV", MAX := 50.0), MAX := 27648);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。