function

·9 min read

函数库和功能块的说明

功能和功能块是预定义的元素,可用于以IEC 61131-3标准的文本和图形语言编写“功能块”和“程序”类型的程序模块的算法和逻辑。

这些元素在输入和输出处具有参数。 通常,每个参数都有一个名称及其用途。

标准功能块

双稳态SR触发器

该功能块是具有主要输入S(设置)的双稳态SR触发器。 当输入S1变为“ 1”时,输出Q1变为“ 1”。 即使S1返回“ 0”,也保持该状态。 输入R变为“ 1”时,输出Q1返回“ 0”。 如果输入S1和R同时处于“ 1”,则主导输入S1将把输出Q1设置为“ 1”。 首次调用功能块时,Q1的初始状态为“ 0”。

双稳态RS触发器

该功能块是具有主要输入R(复位)的双稳态RS触发器。 当输入S变为“ 1”时,输出Q1变为“ 1”。 即使S返回“ 0”,也保持该状态。 当输入R1变为“ 1”时,输出Q1返回“ 0”。 如果输入S和R1同时处于“ 1”,则主导输入R1将把输出Q1设置为“ 0”。 首次调用功能块时,Q1的初始状态为“ 0”。

SEMA-信号量

该功能块是一个信号灯,它定义了一种机制,该机制允许程序元素互斥访问某些资源。

R_TRIG-边缘上升指示器

该功能块是一个上升沿指示器,当信号的上升沿时在输出端生成单个脉冲。 如果输入CLK从“ 0”到“ 1”的跳变,则输出Q变为“ 1”。 从一个块执行到下一个(一个周期)输出保持为状态“ 1”。 然后输出返回到“ 0”。

F_TRIG-边缘下降指标

该功能块是一个边沿下降指示器,当信号的边沿下降时,在输出端生成单个脉冲。

如果输入CLK从“ 1”到“ 0”的转换,则输出Q变为“ 1”。 从一个块执行到下一个块,输出将保持状态“ 1”。 然后输出返回到“ 0”。

CTU-增量计数器

该功能块是一个增量计数器。 输入R处的信号“ 1”导致将值“ 0”分配给输出CV。 在输入CU从“ 0”到“ 1”的每个跃迁中,CV的值增加1。当CV> = PV时,输出Q设置为“ 1”。

注意:计数器仅在达到使用的数据类型的最大值之前起作用。 不会发生溢出。

BOOL类型的CU,RESET输入和Q输出,WORD类型的PV输入和CV输出。

对于输入CU的每个边沿(从FALSE到TRUE的转换),CV输出增加1。当计数器达到设置的PV值时,输出Q设置为TRUE。 在输入RESET = TRUE时,CV计数器复位为0。

CTD-减量计数器

该功能块是一个减量计数器。 输入LD处的信号“ 1”导致将输入PV处的值分配给输出CV。 在CD输入上从“ 0”到“ 1”的每次转换,CV值都会减少1。

当CV <= 0时,输出Q取值为“ 1”。

注意:计数器仅在达到最小值之前起作用。

使用的数据类型。 不会发生溢出。

CTUD-反向计数器

该功能块是可逆计数器。 输入R处的信号“ 1”导致将值“ 0”分配给输出CV。 输入LD处的信号“ 1”导致将输入PV处的值分配给输出CV。 在输入CU上从“ 0”到“ 1”的每次转换时,CV值都增加1。在输入CD上从“ 0”到“ 1”的每次转换时,CV值都减少1。

如果信号“ 1”同时到达输入R和LD,则首先处理输入R。

当CV> = PV时,QU输出设置为“ 1”。

当CV <= 0时,QD输出设置为“ 1”。

注意:减法计数器仅在达到使用的数据类型的最小值之前起作用,累加计数器仅在达到使用的数据类型的最大值之前起作用。 不会发生溢出。

TP-脉冲中继器

该功能块是脉冲转发器,用于生成给定持续时间的脉冲。 如果IN变为“ 1”,则Q变为“ 1”,内部时间(ET)开始。 如果内部时间达到PT值,则Q变为“ 0”(与IN无关)。 如果IN变为“ 0”,内部时间计数将停止/复位。 如果内部时间尚未达到PT值,则IN脉冲不会影响内部时间。 如果内部时间已达到PT值且IN为“ 0”,则内部时间将停止/复位,并且Q将变为“ 0”。

TON-延迟开启计时器

该功能块是带延时的计时器。 当输入端的信号状态从0变为1并在指定时间后设置为输出1时,它开始。

如果IN变为“ 1”,则开始内部时间(ET)倒计时。 如果内部时间达到PT值,则Q变为“ 1”。 如果IN变为“ 0”,则Q变为“ 0”,并且内部计时停止/复位。 如果在内部时间达到PT值之前IN变为“ 0”,则内部计时将停止/复位,并且输出Q不会设置为“ 0”。

TOF-延迟关机定时器

该功能块是具有延迟关闭功能的计时器。 当输入端的信号状态从1变为0并在指定时间后设置为输出0时,它开始。

如果IN变为“ 1”,则Q变为“ 1”。

如果IN变为“ 0”,则开始内部时间(ET)倒计时。

如果内部时间达到PT值,则Q变为“ 0”。

如果IN变为“ 1”,则Q变为“ 1”,并且内部计时停止/复位。

如果IN在内部时间达到PT值之前变为“ 1”,则内部计时将停止/复位,并且输出Q不会设置为“ 0”。

附加功能块

RTC-实时时钟

该功能块是一个实时时钟,具有许多使用选项,包括添加时间戳以在生成的报告,警报消息等中设置日期和时间。

PDT(预设DT)输入用于设置时间。 时钟开始从PDT值开始递减计数。 输出Q(BOOL)将重复EN的值。 CDT(当前DT)输出给出当前日期和时间。

积分-积分

积分功能块对输入的XIN值随时间进行积分。

导数-导数

微分功能块产生与输入参数XIN的变化率成比例的XOUT值。

PID-比例积分微分调节器

该功能块是在自动控制系统中使用的反馈设备,用于生成控制信号。 PID控制器生成一个控制信号,该信号是三项之和,其中第一项与输入信号成比例,第二项是输入信号的积分,第三项是输入信号的导数。

滞后-滞后

迟滞功能块提供输出迟滞布尔值,该值由输入参数XIN1和XIN2(带浮点的REAL类型)之间的差值确定。

数值运算

ABS-号码模块

此功能将输入数字IN的IN模块返回到OUT。

SQRT-平方根

此函数将输入数字IN的平方根返回到OUT。

LN是自然对数

此函数将IN的自然对数的值返回OUT。

对数-以10为底的对数

此函数从OUT返回IN的以10为底的对数值。

EXP-求幂

此函数将提高到IN幂的指数值返回OUT。

SIN-正弦

此函数将IN的正弦值返回到OUT。

余弦-余弦

此函数返回OUT余弦值IN。

TAN-切线

此函数将IN的切线的值返回到OUT。

ASIN-反正弦

该功能块将反正弦IN的值返回OUT。

ACOS-反余弦

此函数返回反余弦IN的OUT值。

ATAN-切线

此函数将IN的OUT切线返回到OUT。

算术运算

添加-加法

此函数返回将IN1和IN2与OUT相加的结果。

MUL-乘法

该函数将IN1和IN2相乘的结果返回到OUT。

减-减

此函数将IN1减去IN2的结果返回到OUT。

DIV-部门

该函数将IN1除以IN2的结果返回到OUT。

MOD-除法运算的余数

该功能将IN1除以IN2的余数返回到OUT。

EXPT-求幂

此函数将IN1的值增加到OUT2的幂,然后返回OUT。

移动-分配

此函数将IN值返回到OUT。

临时操作

ADD_TIME-添加TIME类型的变量

此函数将TIME类型的输入值IN(k)相加,并在TIME类型的OUT中返回结果。 输入IN(n)的数量是可变的-从2到20。默认值为2。

ADD_TOD_TIME-将TOD一天中的时间添加到TIME

此函数将类型TOD(TIME_OF_DAY)的输入变量IN1与类型TIME的变量IN2相加。 返回值OUT的类型为TIME_OF_DAY。

ADD_DT_TIME-将时间添加到DT

此函数ADD_DT_TIME将时间段(TIME格式)添加到时间点(DT格式),并因此提供新的时间点(DT格式)。 时间点(参数T)必须在DT#1990-01-01-00:00:00.000到DT#2089-12-31-23:59:59.999的范围内。

该功能不执行输入检查。 如果加法结果不在允许范围内,则将结果限制为相应的值,并且将状态字的二进制结果(BR)的位设置为“ 0”。

对于输入参数T和输出参数,只能将符号定义的变量关联。

MULTIME-TIME时间乘以数字

此函数将TIME类型的输入值IN1乘以ANY_NUM类型的数字IN2并将结果返回到TIME类型的OUT。

SUB_TIME-TIME类型的两个值的差

此函数从TIME类型的输入值IN1减去TIME类型的输入IN2的值,并将结果返回到TIME类型的OUT。

SUB_DATE_DATE-DATE类型的两个值的差

此函数从DATE类型的输入值IN1中减去DATE类型的输入值IN2,并将其TIME类型的差返回到OUT。

SUB_TOD_TIME-从一天中的时间TOD时间间隔TIME减去

此函数从TOD类型的输入值IN1(TIME_OF_DAY)中减去TIME类型的输入值IN2,并将结果返回到TIME_OF_DAY类型的OUT。

SUB_DT_TIME-从时间间隔TIME的时间点DT减去

此功能从时刻(DT格式)中减去时间间隔(TIME格式),并提供新的时刻(DT格式)作为结果。 时间(参数T)必须在DT#1990-01-01-00:00:00.000到DT#2089-12- 31-23:59:59.999的范围内。 该功能不执行输入检查。 如果减法的结果不在允许范围内,则将结果限制为相应的值,并且将状态字的二进制结果(BR)的位设置为“ 0”。

对于输入参数T和输出参数,只能将符号定义的变量关联。

DIVTIME-用数字除以TIME

此函数将TIME类型的输入值IN1除以ANY_NUM类型的数字IN2,并在TIME类型的OUT中返回结果。

位偏移量运算

SHL-算术左移

此函数将自变量IN的算术移位返回OUT到左边N位,并用零填充右边的位。

SHR-向右算术移位

该函数将自变量IN的算术移位返回OUT到右边N位,并用零填充左边的位。

ROR-循环右移

此函数将参数IN的循环移位向左返回N位,以返回OUT。

ROL-循环左移

此函数将参数IN的循环右移N位返回OUT。

按位运算

与-按位与

该功能块表示所有输入参数IN 1 ... IN n的“逻辑与”组织。

或-按位或

该函数表示所有输入参数IN 1 ... IN n的“逻辑或”组织。

XOR-按位异或

该函数表示所有输入参数IN 1 ... IN n的“逻辑异或”的组织。

不-按位反转

此函数表示输入自变量IN的“逻辑反转”的组织。

选择操作

SEL-两个值的选择

此函数根据参数G的值将两个参数IN1或IN2之一返回给OUT。如果G = 0,则OUT为X1,否则OUT为X2。

MAX-最大

此函数将输入参数IN1和IN2的最大值返回OUT。

MIN-最小值

此函数将输入参数IN1和IN2的最小值返回到OUT。

LIMIT-值限制器

此函数将输入参数IN的值返回到OUT;如果它超过MX值,则MX返回到OUT;如果IN小于MN,则MN返回到OUT。

MUX-多路复用器(从N中选择1个)

此函数根据输入K将输入IN(K)的值返回到OUT。输入IN:sub: (n)的数量是可变的-从2到20。默认值为2。

比较运算

GT-超过

此函数比较所有输入参数,如果满足以下条件,则返回True:(IN1> IN2)&(IN2> IN3)&...(IN n-1 > IN n ),否则返回OUT假的。 输入IN (n)的数量是可变的-从2到20。默认值为2。

GE-大于或等于

此函数比较所有输入参数,如果满足以下条件,则返回True:(IN1> = IN2)&(IN2> = IN3)&...(IN n-1 > = IN n ),否则在OUT中返回False。 输入IN (n)的数量是可变的-从2到20。默认值为2。

情商-平等

此函数比较所有输入参数,如果满足以下条件,则在OUT输出上返回True:(IN1 = IN2)&(IN2 = IN3)&...(IN n-1 = IN n );否则,OUT返回假的。 输入IN (n)的数量是可变的-从2到20。默认值为2。

LT-小于

此函数比较所有输入参数,如果满足以下条件,则在OUT输出上返回True:(IN1 <IN2)&(IN2 <IN3)&...(IN n-1 <IN n ),否则,OUT返回假的。 输入IN (n)的数量是可变的-从2到20。默认值为2。

LE-小于或等于

如果满足以下条件,则此函数比较所有输入自变量并输出True:(IN1 <= IN2)&(IN2 <= IN3)&...(IN n-1 <= IN n ),否则在OUT中返回False。 输入IN (n)的数量是可变的-从2到20。默认值为2。

NE-不相等

如果满足以下条件,则此函数比较所有输入参数并输出True:(IN1 <> IN2)&(IN2 <> IN3)&...(IN n-1 <> IN n ),否则在OUT中返回False。 输入IN (n)的数量是可变的-从2到20。默认值为2。

字符串类型为STRING的字符串操作

LEN-线长

此函数将字符串IN的长度返回到OUT。 输入参数只能与符号定义的变量关联。

左-线的左侧

此函数将IN字符串中的前L个字符返回到OUT。 如果L大于STRING变量的当前长度,则返回输入值。 当L = 0且有一个空字符串时,将返回一个空字符串作为输入值。 如果数字L为负,则输出一个空字符串。 只有符号定义的变量可以映射到IN参数和返回值。

RIGHT-行的右侧

此函数将IN字符串中的最后L个字符返回到OUT。 如果L大于当前的STRING长度,则返回输入值。 当L = 0且有一个空字符串时,将返回一个空字符串作为输入值。 如果数字L为负,则输出一个空字符串。 只有符号定义的变量可以映射到IN参数和返回值。

MID-行中间

此函数从IN字符串的L个字符(从位置P开始)返回到OUT。如果L和(P-1)的总和超过STRING变量的当前长度,则返回一个字符串,从输入字符串的第P个字符开始直至其结尾。 在所有其他情况下(P在当前长度之外,P和/或L为零或负),将输出一个空字符串。 只有符号定义的变量可以映射到IN参数和返回值。

CONCAT-两个变量STRING的并集

此函数返回OUT中的IN1和IN2行的并集(串联)。

CONCAT_DAT_TOD-时间的并集(串联)

此函数将DATE和TOD类型的输入值分别为IN1和IN2的串联返回到DT OUT OUT。

INSERT-插入STRING变量

此函数从位置P开始返回到已插入字符串IN2的字符串IN1到OUT。如果P为零,则将第二个字符串插入第一个字符串之前。 如果P大于第一个字符串的当前长度,则将第二个字符串附加到第一个字符串之后。 如果P为负,则输出一个空字符串。 输入参数IN1和IN2以及输出参数只能与符号定义的变量关联。

删除-在STRING变量中删除

此函数将字符串IN1返回OUT,从位置P开始删除其中的L个字符。如果L和/或P等于零,或者P大于输入字符串的当前长度,则返回输入字符串。 如果L和P的总和大于输入的字符串,则将该字符串删除到最后。 如果L和/或P为负值,则输出为空。 仅将符号定义的变量映射到IN输入参数和输出参数。

替换-替换为STRING变量

此函数将字符串IN1返回到OUT,其中从位置P开始的字符由L替换为字符串IN2的第一个字符。 如果L为零,则返回第一行字符。 如果P等于零或一,则替换从第一个字符(包括第一个字符)开始。 如果P位于第一行字符之外,则第二行将附加到第一行。 如果L和/或P为负,则返回一个空字符串。 输入参数IN1和IN2以及输出参数只能与符号定义的变量关联。

查找-在STRING变量中搜索

此功能将OUT IN1中的IN2所在的位置编号返回到OUT。 搜索从左侧开始,报告字符串的首次出现。 如果第一行未包含第二行字符,则返回零。 输入参数IN1和IN2只能与符号定义的变量关联。