存储PLCNext社区LinkedIn上的PLCNEXT.Instagram上的PLCNEXT.   youtube上的plcnext. github plcnext社区存储PLCNext社区

  1. arne smets.
  2. PLCNEXT技术和PLCNEXT控件
  3. 星期五,2021年3月19日
Hello,
我在C#中制作了一个结构。如果我在C#FunctionBlock中使用它,则必须调用String.ctor()来给它80 StringLength。在可以在字符串中写入之后。
我现在有一个情况,我想直接在IEC代码中使用结构。但是我无法调用CTOR函数,因为C#代码只是一个普通的C#struct,system.ie61131lib和称为(和[结构]属性,使其在PLCnext中可见)。)和结构没有因为它不是一个班级而有类似的建设者。

我如何调用字符串的CTOR?初始化在C#中也不工作,因为长度仍然为零。

Arne
Oliver PLCnext Team 接受答案 等待审核
1
Votes
撤消
Hello beecksche,
如果我纠正所有你所要做的就是这样:


[Structure]
public struct MyMessage
{
public IecString80 Device;
public bool Result;

public void ctor(){
Device.ctor();
}
}

它应该在工程师中工作已经像IEC STRUCT一样。
CTOR()将在IEC61131运行时在变量的初始化时自动调用每个变量实例。
Phoenix联系电子总部 - PLCNext运行时产品管理和支持
Oliver PLCnext Team 接受答案 等待审核
0
Votes
撤消
Hello Arne,
我建议在结构中实施CTOR()方法,该方法运行字符串元素的所有CTOR。
结构只能具有默认构造函数。
然后,您将在FB的Init方法中调用struct.ctor(),您应该好好走。
@我必须检查是否可以在没有FB的情况下直接在IEC中使用C#结构。

Try it like this:

[Structure]

public struct CWithString_andCtor
{
public short Code;
public float Setpoint;
public IecString80 strID;
public void ctor()
{
strID.ctor();

}
}



kind regards,
Oliver
Phoenix联系电子总部 - PLCNext运行时产品管理和支持
Arne Smets 接受答案 等待审核
0
Votes
撤消
我不确定这是否解决了这个问题。

@我必须检查是否可以在没有FB的情况下直接在IEC中使用C#结构。

这就是我正在做的事情。我犯了一个指针(类型是struct)作为我的fb in.
然后我在PLCNext Enginemer中从类型结构中创建一个全局变量。然后可以通过PLCNext程序读取所有数据。
每个FB都有一个字符串instanceName作为输入,它将存储在结构中。我检查该一个决定是否必须调用CTOR的长度。
在执行中,我发了一个新的:OwnInit()。该功能始于:if(inout->instanceName.s.maximumLength.<1)。如果是这样,我正在调用CTOR并用.s.init(以及指针的其他inst,可以设置为ASWell)。
指针在__init()之后连接到数据...这就是为什么我在执行开始时自己制作。

相当一个解决方法。也许不是最好的,但它有效  :)
beecksche 接受答案 等待审核
0
Votes
撤消
我有相同的情况:

- 使用IECString80成员在C#中定义的结构

[Structure]
public struct MyMessage
{
public IecString80 Device;
public bool Result;
}


在PLC工程师中,可以使用MyMessage类型,但无法写入成员设备(因为CTOR()未调用)。
对我来说,两个解决方案(CTOR()和长度检查)有点不适当。

是否有计划解决这个问题"issue"?
beecksche 接受答案 等待审核
0
Votes
撤消
Hi Oliver,
这听起来很棒,谢谢。下周我会检查一下。

[EDIT]:
Works perfectly!

当我开始编码时,大部分时间我都遵循您的C#示例 github存储库 。我没有为该结构中的这种CTOS()实现任何提示。更新此示例也可以帮助他人。
Oliver PLCnext Team 接受答案 等待审核
0
Votes
撤消
Hello Beeksche,
thats good to hear.
你绝对是对的。
我们将在Commig月份扩展C#文档。
kind regards,
Oliver
Phoenix联系电子总部 - PLCNext运行时产品管理和支持
  • 页 :
  • 1


这篇文章没有答复。
但是,您不允许回复此帖。