SCL 转换函数以及数学函数(包括缩放) 您所在的位置:网站首页 西门子smart浮点数转整数 SCL 转换函数以及数学函数(包括缩放)

SCL 转换函数以及数学函数(包括缩放)

2024-07-15 12:11| 来源: 网络整理| 查看: 265

一、数据类型转换

Portal的转换函数位于Portal的“基本指令/转换操作”目录下。由于SCL为强类型转换,不同类型的变量无法直接进行运算(个人觉得下几代软件会更改转换的相应操作),所以在实行不同类型的数据运算时,需要进行数据类型转换,将数据类型转换为一致之后,再进行数据运算。

SCL中大部分类型转换都是隐式转换,对于无法进行隐式转换的类型,软件在编译过程中会提示。在强制转换中,转换统一格式如下:

原数据类型_To_目标数据类型

image

也可以使用“CONVERT:转换值”对话框进行数据类型的转换,直接双击CONVERT

image

基本函数

函数名

功能

例子

ROUND

“取整”指令用于将输入 IN 的值取整为最接近的整数。

该指令将输入 IN 的值解释为浮点数,并将其转换为一个整数或浮点数。

如果输入值恰好是在一个偶数和一个奇数之间,则选择偶数。

"Tag_Result" := ROUND("Tag_Value");

CEIL

使用“浮点数向上取整”指令将值取整为最近接的整数。该指令将输入值解释为浮点数,

并将其转换为紧邻的较大整数。

函数值可以大于或等于输入值。

"Tag_Result1" := CEIL("Tag_Value");

"Tag_Result2" := CEIL_REAL("Tag_Value");

FLOOR

使用“浮点数向下取整”指令将一个浮点数的值取整为紧邻的较小整数。

该指令将输入值解释为浮点数,并将其转换为紧邻的较小整数。

函数值可等于或小于输入值。

"Tag_Result1" := FLOOR("Tag_Value");

"Tag_Result2" := FLOOR_REAL("Tag_Value");

TRUNC

截尾取整”指令用于直接从输入值中截取整数。该指令仅选择输入值的整数部分,

并将这一部分(不含小数位)作为函数值返回。

"Tag_Result1" := TRUNC("Tag_Value1");

"Tag_Result2" := TRUNC("Tag_Value2"+"Tag_Value3");

"Tag_Result3" := TRUNC_SINT("Tag_Value4");

基本缩放与传统缩放

缩放函数:SCALE_X与SCALE

标准化:NORM_X

取消缩放:UNSCALE

注:SCALE与UNSCALE只支持1500

SCALE_X:缩放

数模转换中常用到缩放,缩放函数实际上就是一个线性映射的过程

官方的解释如下:

image

使用“缩放”指令将浮点数映射到指定的取值范围来进行缩放。可使用 MIN 和 MAX 参数指定取值范围。缩放的结果为整数。

具体计算公式如下:OUT = [VALUE ∗ (MAX – MIN)] + MIN

image

这个过程实际上非常简单,拿个最简单的例子,生产一把1M的尺子,标刻度的过程就是先取1米的长度,然后10等分,得到dm,然后每段10等分得到cm,再10等分就有mm。

对于线性变换的量来说就是一个等分加映射的过程。

如果需要在SCALE_X中更改结果的数据类型,在其后加“_数据类型”即可。

具体示例如下:

"Tag_Result1" := SCALE_X(MIN := "Tag_Value1",

VALUE := "Tag_Real",

MAX := "Tag_Value2");

"Tag_Result2" := SCALE_X_REAL(MIN := "Tag_Value1",

VALUE := "Tag_Real",

MAX := "Tag_Value2");

其结果如下:

变量

计算结果

Tag_Real                               

0.5                                                         

Tag_Value1                                                                

10                                                               

Tag_Value2

30

Tag_Result1

20

Tag_Result2

20.0

NORM_X

标准化过程

可以使用“标准化”指令,通过将输入 VALUE 中变量的值映射到线性标尺对其进行标准化。可以使用参数 MIN 和 MAX 定义(应用于该标尺的)值范围的限值。输出 OUT 中的结果经过计算并存储为浮点数,这取决于要标准化的值在该值范围中的位置。如果要标准化的值等于输入 MIN 中的值,则该指令将返回结果“0.0”。如果要标准化的值等于输入 MAX 中的值,则该指令将返回结果“1.0”。

由缩放函数,相对应就会有标准化函数,缩放相当于量的初转换,要想得到能够使用的量,一般要使用标准换转换

image

“标准化”指令通过以下公式进行计算:

OUT = (VALUE – MIN) / (MAX – MIN)

image

示例如下:

"Tag_Result1" := NORM_X(MIN := "Tag_Value1",

VALUE := "Tag_InputValue",

MAX := "Tag_Value2");

"Tag_Result2" := NORM_X_LREAL(MIN := "Tag_Value1",

VALUE := "Tag_InputValue",

MAX := "Tag_Value2");

运算结果如下:

变量结果

Tag_InputValue

20                                                                                  

Tag_Value1                                                                

10

Tag_Value2                                                                

30

Tag_Result1

0.5

Tag_Result2

0.5

SCALE:缩放

数模转换在后期的文章会单出一篇,所以在此只列出SCALE函数

可以使用“缩放”指令将参数 IN 上的整数转换为浮点数,该浮点数在介于上下限值之间的物理单位内进行缩放。通过参数 LO_LIM 和 HI_LIM 来指定缩放输入值取值范围的下限和上限。指令的结果在参数 OUT 中输出。

“缩放”指令将按以下公式进行计算:

OUT = [((FLOAT (IN) – K1)/(K2–K1)) ∗ (HI_LIM–LO_LIM)] + LO_LIM

常数“K1”和“K2”的值取决于参数 BIPOLAR 的信号状态。参数 BIPOLAR 可能的信号状态为:

信号状态“1”:假设参数 IN 的值为双极性且取值范围是 -27648 到 27648。此时,常数“K1”的值为 -27648.0,而常数“K2”的值为 +27648.0。

信号状态“0”:假设参数 IN 的值为单极性且取值范围是 0 到 27648。此时,常数“K1”的值为 0.0,而常数“K2”的值为 +27648.0。

如果参数 IN 的值大于常数“K2”的值,则将指令的结果设置为上限值 (HI_LIM) 并输出一个错误。

如果参数 IN 的值小于常数“K1”的值,则将指令的结果设置为下限值 (LO_LIM) 并输出一个错误。

如果指定的下限值大于上限值 (LO_LIM > HI_LIM),则结果将对输入值进行反向缩放。

image

image

二、数学函数

函数名功能示例ABS使用“计算绝对值”指令可计算输入值的绝对值,并将结果保存到指定的操作数中。

"Tag_Result1" := ABS("Tag_Value");

"Tag_Result2" := ABS("Tag_Value1"*"Tag_Value2");

MIN

使用“获取最小值”指令比较可用输入的值,并将最小的值作为结果返回。

在该指令处,最少需要指定 2 个输入,最多可以指定 32 个输入。

如果满足以下任何条件,则结果值无效:

在执行该指令的过程中,后台转换数据类型失败。

浮点数的值无效。

"Tag_Result" := MIN(IN1 := "Tag_Value1",

IN2 := "Tag_Value2",

IN3 := "Tag_Value3");

MAX

使用“获取最大值”指令,比较输入值,并将最大的值作为结果返回。

在该指令处,最少需要指定 2 个输入,最多可以指定 32 个输入。

如果满足以下任何条件,则结果值无效:

在执行该指令的过程中,后台转换数据类型失败。

浮点数的值无效。

"Tag_Result" := MAX(IN1 := "Tag_Value1",

IN2 := "Tag_Value2",

IN3 := "Tag_Value3");

LIMIT

可使用“设置限值”指令,将参数 IN 的值限制在参数 MN 和 MX 值之间。参数 MN 的值不能大于参数 MX 的值。

如果参数 IN 的值满足条件 MN



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有