1. 变量类型转换技巧

1.26. HEX_TO_DINT函数 将16进制的字符串内容转成相应的10进制数值

HEX_TO_DINT这个指令在4024版本的TC3软件中没有,所以需要转换HEXstr的数值必须自己遍历字符串的每个字符,然后按位乘以16的0次方、1次方、2次方等后累加。

例程

PROGRAM MAIN 

VAR

hexStr : STRING := '320'; // 输入的16进制字符串 

decValue : DINT := 0; // 累计运算十进制数据

decValueout: DINT; // 存储转换后的十进制数值

 i : INT; len : INT; digit : INT; 

END_VAR

// 获取字符串长度 

len := LEN(hexStr);

// 遍历字符串的每个字符 

FOR i := 1 TO len1 DO

char:= MID(hexStr1, 1, len1+1-i) ;
IF char='0' OR char='1'OR char='2'OR char='3'OR char='4'OR char='5'OR char='6'OR char='7'OR char='8'OR char='9'
THEN
digit:=STRING_TO_INT(char);
ELSIF
char='a'OR char='A' THEN digit:=10;
ELSIF
char='b'OR char='B' THEN digit:=11;    
ELSIF
char='c'OR char='C' THEN digit:=12;
ELSIF
char='d'OR char='D' THEN digit:=13;
ELSIF
char='e'OR char='E' THEN digit:=14;
ELSIF
char='f'OR char='F' THEN digit:=15;
ELSE digit:=0;
END_IF;

 decValue := digit* LREAL_TO_DINT(EXPT(16,i-1))+decValue; // 计算十进制值

IF i>=len1 THEN                                                                      // 输出结果
        decValueout:=decValue;
        decValue :=0 ;        
    END_IF                                                                                 //  decValueout为800,即 '320' 的十进制表示

2025.1.13 罗晓晨 编辑