lxs_0217 发表于 2022-3-10 16:36:14


看看 是什么,学习一下

焕游仁阿生 发表于 2024-3-21 19:23:06

声明
FFUNCTION_BLOCK HS_ENGIN_HEX                  (*工程量  转换成 16进制数据*)
VAR_INPUT
        EN: BOOL;
        IN: REAL;           (*工程量数据*)               
        HIGH: REAL;       (*工程量量程上限*)       
        LOW: REAL;          (*工程量量程下限*)                                                                                                
        MODE: BYTE;       (*模式输入端        0:4~20mA1:0~20mA        2:0~5V/0~10V3:-10~10V*)
END_VAR

VAR_OUTPUT
        ENO: BOOL;
        OUT: UINT;                 (*输出16进制数据 *)
        ERROR: BOOL;
END_VAR
VAR
END_VAR
程序


IF MODE=1 THEN              (*最大量程范围是0—21mA,精度范围内量程是0—20mA*)
    IF IN>HIGH THEN
        OUT:=16#F3CE;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=0;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F3CE);
        ERROR:=FALSE;
    END_IF
END_IF

IF MODE=2 THEN     (*最大量程范围是0—10.4V / 0—5.2V,精度范围内量程是0—10V / 0—5V*)
    IF IN>HIGH THEN
        OUT:=16#F626;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=0;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F626);
        ERROR:=FALSE;
    END_IF
END_IF

IF MODE=3 THEN          (*最大量程范围是-10.4—10.4V,精度范围内量程是-10—10V*)
    IF IN>HIGH THEN
        OUT:=16#FB13;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=16#04EC;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F627+16#04EC);
        ERROR:=FALSE;
    END_IF
END_IF声明
FFUNCTION_BLOCK HS_ENGIN_HEX                  (*工程量  转换成 16进制数据*)
VAR_INPUT
        EN: BOOL;
        IN: REAL;           (*工程量数据*)               
        HIGH: REAL;       (*工程量量程上限*)       
        LOW: REAL;          (*工程量量程下限*)                                                                                                
        MODE: BYTE;       (*模式输入端        0:4~20mA1:0~20mA        2:0~5V/0~10V3:-10~10V*)
END_VAR

VAR_OUTPUT
        ENO: BOOL;
        OUT: UINT;                 (*输出16进制数据 *)
        ERROR: BOOL;
END_VAR
VAR
END_VAR
程序


IF MODE=1 THEN              (*最大量程范围是0—21mA,精度范围内量程是0—20mA*)
    IF IN>HIGH THEN
        OUT:=16#F3CE;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=0;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F3CE);
        ERROR:=FALSE;
    END_IF
END_IF

IF MODE=2 THEN     (*最大量程范围是0—10.4V / 0—5.2V,精度范围内量程是0—10V / 0—5V*)
    IF IN>HIGH THEN
        OUT:=16#F626;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=0;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F626);
        ERROR:=FALSE;
    END_IF
END_IF

IF MODE=3 THEN          (*最大量程范围是-10.4—10.4V,精度范围内量程是-10—10V*)
    IF IN>HIGH THEN
        OUT:=16#FB13;
        ERROR:=TRUE;
    ELSIF IN<LOW THEN
        OUT:=16#04EC;
        ERROR:=TRUE;
    ELSE
        OUT:=REAL_TO_UINT((IN-LOW)/(HIGH-LOW)*16#F627+16#04EC);
        ERROR:=FALSE;
    END_IF
END_IF

XXH6360 发表于 2024-6-17 08:53:24

看看,学习一下,谢谢

AJingshengMAO 发表于 2024-7-12 13:18:10

了解下,6666666

唐大伟 发表于 2024-7-25 22:39:53

xxxxxxxxxxxxxxxxxx

zhym6339 发表于 2024-8-31 18:48:01

学习一下,楼主好人

q5610860 发表于 2024-11-9 11:49:10

11111111111111111

liangjingli 发表于 2024-12-22 10:00:40

let me see see.
页: 1 2 3 4 5 6 7 8 [9]
查看完整版本: 除尘器PLC控制