[西门子] TIA博途SCL案例-32位浮点数大小端存储-高低字节转换的具体...

[复制链接]
查看21412 | 回复0 | 2024-8-13 11:40:25 | 显示全部楼层 |阅读模式






//将输入的浮点数先转换成Dword格式#Dword_Convert := REAL_TO_DWORD(#Float_in);
#word1 := DWORD_TO_WORD(#Dword_Convert / 16#10000);#word2 := DWORD_TO_WORD(SHL(IN:= #Dword_Convert,N:=16) / 16#10000);
#Byte_A := WORD_TO_BYTE(SHR(IN := #word1, N := 8) AND 16#00ff);#Byte_B := WORD_TO_BYTE(#word1 AND 16#00FF);#Byte_C := WORD_TO_BYTE(SHR(IN := #word2, N := 8) AND 16#00ff);#Byte_D := WORD_TO_BYTE(#word2 AND 16#00FF);
CASE #Mode OF0:// 浮点数格式为 D C B A         #Dword_out := BYTE_TO_DWORD(#Byte_D) * 16#1000000 + BYTE_TO_DWORD(#Byte_C) * 16#10000 +        BYTE_TO_DWORD(#Byte_B) * 16#100 + #Byte_A;1://浮点数格式为 B A D C         #Dword_out := BYTE_TO_DWORD(#Byte_B) * 16#1000000 + BYTE_TO_DWORD(#Byte_A) * 16#10000 +        BYTE_TO_DWORD(#Byte_D) * 16#100 + #Byte_C;2://浮点数格式为 C D A B         #Dword_out := BYTE_TO_DWORD(#Byte_C) * 16#1000000 + BYTE_TO_DWORD(#Byte_D) * 16#10000 +        BYTE_TO_DWORD(#Byte_A) * 16#100 + #Byte_B;
END_CASE;
//将字节重新排序后的双字再转换成浮点数,输出#Float_out := DWORD_TO_REAL(#Dword_out);

浮点数格式为 D C B A



浮点数格式为 B A D C



浮点数格式为 C D A B





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则