蓝色港湾 发表于 2023-4-20 13:24:51

【Codesys】字节数组转长字节,长字节转字节数组,同点位坐标系位置偏移计算

1、字节数组转双字节
///返回两个byte合成的长字节
FUNCTION_BLOCK FB_ByteToHex
VAR_INPUT
   hByte:BYTE;
   lByte:BYTE;
END_VAR
VAR_OUTPUT
   HexData:DWORD;
END_VAR
VAR
   HexStr,strByte1,strByte2:STRING;
END_VAR
//运动代码:
strByte1:=BASIC.BYTE_TO_STRH(hByte);
strByte2:=BASIC.BYTE_TO_STRH(lByte);
HexStr:=Standard.CONCAT(STR1:=strByte1,STR2:=strByte2);
HexData:=BASIC.HEX_TO_DWORD(Hex:=HexStr);
2、双字节转字符串
///返回长字节拆分的两个byte
FUNCTION_BLOCK FB_HexToByte
VAR_INPUT
   HexData:WORD;
END_VAR
VAR_OUTPUT
   hByte:BYTE;
   lByte:BYTE;
END_VAR
VAR
   HexStr,strByte1,strByte2:STRING;
END_VAR

运行代码:
HexStr:=DWORD_TO_STRH(IN:=HexData);
strByte1:=mid(STR:=HexStr,LEN:=2,POS:=5);
strByte2:=mid(STR:=HexStr,LEN:=2,POS:=7);
hByte:=HEX_TO_BYTE(strByte1);
lByte:=HEX_TO_BYTE(strByte2);   
3、同坐标系坐标点位偏移计算
//已知第二工具距离丝杆中心位置距离,计算当前位置下第二位置运动到中心的坐标适用于3轴机器人
FUNCTION_BLOCK FB_CalcToolXY
VAR_INPUT
   lrX:LREAL;//当前位置X
   lrY:LREAL;//当前位置Y
   lrC:LREAL;//当前位置C
END_VAR
VAR_OUTPUT
   ResultX:LREAL;//输出位置X
   ResultY:LREAL;//输出位置Y

END_VAR
VAR
   lrOffsetX:LREAL:=-1.7;//-2.218; //已知位置的X偏差
   lrOffsetY:LREAL:=54.95;//55.495;//已知位置的Y偏差
   COSC,SINC,test3,test4:LREAL;
   pi:LREAL:=3.1415926;
END_VAR

运动代码:
COSC:=COS((lrC*pi)/180);
SINC:=SIN((lrC*pi)/180);
ResultX:=lrX+COSC*lrOffsetX-SINC*lrOffsetY;
ResultY:=lrY+SINC*lrOffsetX+COSC*lrOffsetY;
页: [1]
查看完整版本: 【Codesys】字节数组转长字节,长字节转字节数组,同点位坐标系位置偏移计算