FUNCTION_BLOCK FB13
TITLE = 'Block Title'
//
// 将两个byte和并成一个word
//
VERSION: '1.0'
AUTHOR: Author
NAME: Name
FAMILY: Family
// Block Parameters
VAR_INPUT
// Input Parameters
ByteL:BYTE;
ByteH:BYTE;
END_VAR
VAR_IN_OUT
// I/O Parameters
END_VAR
VAR_OUTPUT
// Output Parameters
OutWord:WORD;
OutInt:INT;
OutDint:DINT;
OutReal:REAL;
END_VAR
VAR_TEMP
// Temporary Variables
END_VAR
VAR
// Static Variables
wordCombine:WORD;
ptr AT wordCombine :ARRAY[0..1] OF BYTE;
tmpInt:INT;
tmpDint:DINT;
tmpDword:DWORD;
tmpreal:REAL;
END_VAR
ptr[0]:=ByteH;
ptr[1]:=ByteL;
OutWord:=wordCombine;
OutInt:=WORD_TO_INT(wordCombine);
OutDint:=INT_TO_DINT(WORD_TO_INT(wordCombine));
OutReal:=DINT_TO_REAL(INT_TO_DINT(WORD_TO_INT(wordCombine)));
tmpDword:=WORD_TO_DWORD(wordCombine);
tmpDint:=DWORD_TO_DINT(WORD_TO_DWORD(wordCombine));
tmpreal:=DWORD_TO_REAL(WORD_TO_DWORD(wordCombine));//此处dword直接转换成real,得到错误结果
// Statement Section
;
END_FUNCTION_BLOCK
运行结果如下
1.在OB1中调用FB13,背景数据块是DB13。

2.运行结果

这篇博客详细介绍了如何在PLC编程中将两个字节合并成一个字,并进行不同类型的数据转换。通过FUNCTION_BLOCKFB13,作者展示了如何将输入的两个BYTE变量ByteL和ByteH组合成一个WORD变量OutWord,然后进一步转换为INT、DINT和REAL类型。在转换过程中,注意到了DWORD直接转换为REAL可能导致错误的结果。
3万+

被折叠的 条评论
为什么被折叠?



