我们正在接收(通过UDP数据报)由4字节十六进制数组编码的浮点值.
我们需要将4个十六进制字节转换为浮点数.
udp_data[0] = 'BE';
udp_data[1] = '7A';
udp_data[2] = 'E0';
udp_data[3] = 'F4';
Run Code Online (Sandbox Code Playgroud)
在给定的示例中,正确的等价,转换后,udp_data等效于-0.24499:
Twincat 3 PLC的最佳转换是什么?也许有些图书馆?我们需要同时执行52次转换.
我附上了一个例子,其中有一个来自在线计算器的例子:

谢谢!!
我想专注于进入Beckhoff/TwinCAT PLC编程.
因为我相对习惯于C/C++,所以这将是一个很好的起点.学习结构化文本相比有什么缺点吗?
我已经制作了一些"标准"功能块,我想添加到新库中,我可以在制作新项目时包含这些功能块,但是为了我,我无法弄清楚如何去做.
在Beckhoffs网站上,它说要从库模板创建一个新的库项目.我没有那个模板,我只是重新安装了包含所有内容的TC3.
所以我的问题是:在TC3中创建新库的过程是什么,以及如何向其中添加函数?
整个 PLC 的初学者,所以欢迎更正。
我正在尝试整理我的项目,当前情况是这样的:我从 modbus 收到 16 字节数组。这些充当按钮、灯、传送带,这些是您在 Factory IO 中所拥有的。
GAB_FactoryIO_Inputs AT %I* : ARRAY [0..15] OF BYTE;
GAB_FactoryIO_Outputs AT %Q* : ARRAY [0..15] OF BYTE;
Run Code Online (Sandbox Code Playgroud)
因此,我没有用它的位“IO.GAB_FactoryIO_Inputs[0].0”来指代“开始按钮”,而是做了一个笨拙的转换 POU 和 GVL 来遍历每一位并给它们一个新名称。所以它目前看起来像这样的 200 行:
IO.iSensor10_Capa := IO.GAB_FactoryIO_Inputs[7].3;
IO.iSensor9_Capa := IO.GAB_FactoryIO_Inputs[7].4;
IO.iPositioner_Limit := IO.GAB_FactoryIO_Inputs[7].5;
IO.iPositioner_Clamped := IO.GAB_FactoryIO_Inputs[7].6;
IO.iPick2_Detected := IO.GAB_FactoryIO_Inputs[7].7;
IO.iPick2_MovX := IO.GAB_FactoryIO_Inputs[8].0;
IO.iPick2_MovZ := IO.GAB_FactoryIO_Inputs[8].1;
IO.iPick2_Rot := IO.GAB_FactoryIO_Inputs[8].2;
IO.iPick2_GripRot := IO.GAB_FactoryIO_Inputs[8].3;
Run Code Online (Sandbox Code Playgroud)
和这个
iPositioner_Limit : BOOL;
iPositioner_Clamped : BOOL;
iPick2_Detected : BOOL;
iPick2_MovX : BOOL;
iPick2_MovZ : BOOL;
iPick2_Rot : BOOL; …Run Code Online (Sandbox Code Playgroud) 安装新的 TwinCAT 版本后,可以选择一个名为“激活 TC 设置”的选项。InfoSys 提到
如果您还想(重新)激活 TwinCAT XAE 设置,请激活相关的激活 TC 设置选择框。
但这究竟是什么意思?这是哪些 TwinCAT XAE 设置?“重新激活”是什么意思?
我需要通过以太网从Twincat 3向Twincat 2发送一个变量.这可能吗?我怎么能这样做?
TwinCAT 中是否有任何功能块允许将字符串转换为 ASCII 代码,反之亦然?
我找到了这个函数f_ToCHR,但它一次只转换一个字符,为了转换整个字符串,我需要把它放在一个 for 循环中,这不是最佳的。
是否有任何函数可以进行整个字符串转换,而不是逐个字符转换?