tt99166 发表于 2024-9-10 08:23:27

Codesys-三角函数等应用实例

1.正弦函数SIN、反正弦函数ASIN

语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
1.1程序



1.2结果



2.余弦函数COS、反余弦函数ACOS

语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
2.1程序



2.2结果



3.正切函数TAN、反正切函数ATAN

语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
3.1程序



3.2结果



4.atan2函数

Codesys没有atan2函数可供直接调用(本人未发现,欢迎评论区打脸),故提供一种思路利用ATAN函数来自己写atan2函数,两者对应关系如下图所示:


1.添加函数


2.根据ATAN与atan2关系,编写atan2函数:



FUNCTION atan2 : LREAL
VAR_INPUT
        x:LREAL;
        y:LREAL;
       
END_VAR
VAR
        lrSinus:LREAL;
        lrCosinus:LREAL;
END_VAR

lrSinus:=x;
lrCosinus:=y;
IF lrSinus>0 THEN
        atan2:=ATAN(lrSinus/lrCosinus);ELSIF(lrCosinus>=0 AND lrSinus<0) THEN
        atan2:=ATAN(lrSinus/lrCosinus)+3.1415926;ELSIF(lrCosinus<0 AND lrSinus<0) THEN
        atan2:=ATAN(lrSinus/lrCosinus)-3.1415926;ELSIF(lrCosinus>0 AND lrSinus=0) THEN
        atan2:=3.1415926/2;ELSIF(lrCosinus<0 AND lrSinus=0) THEN
        atan2:=-3.1415926/2;
ELSE
        atan2:=0;
END_IF3.程序中调用


4.结果



5.指数函数EXP

功能: 返回 e(自然对数的底)的幂次方, e 是一个常数为 2.71828 的数。
语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
基本语法:
OUT:=EXP(IN);程序示例:


程序运行结果为:7.389056
6.自然对数LN

功能: 返回一个数的自然对数。自然对数以常数项 e (2.71828182845904) 为底。
语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
基本语法:
OUT:=LN(IN);程序示例:


程序运行结果为:3.80666
7.以 10 为底的对数 LOG

功能: 返回底为 10 数的对数。
语法: 输入变量 IN 可以是 BYTE、 WORD、 DWORD、 SINT、 USINT、 INT、 UINT、 DINT、UDINT、 REAL、 LREAL 和常数,但输出必须是 REAL 或 LREAL 类型。
基本语法:
OUT:=LOG(IN);程序示例:


程序运行结果为:2.49762
会持续更新,有需要示例的函数欢迎评论区留言。

zerox 发表于 2024-9-13 12:31:54

学习学习
页: [1]
查看完整版本: Codesys-三角函数等应用实例