在TwinCAT 2中实现Read_I_Point FB BeckHoff PLC

在TwinCAT 2中实现Read_I_Point FB BeckHoff PLC

问题描述:

我想要做的是创建一个FB,以便在给定TAG NAME时读取输入点的信号。 例如,如果标签名称是“I_motor_sensor”,所以“I_motor_sensor”发送到Read_I_Point FB,然后FB将返回当前状态。那么有没有办法做到这一点?在TwinCAT 2中实现Read_I_Point FB BeckHoff PLC

是的,您可以使用DataExchange库中的FB_ReadAdsSymByName块读取符号。 Info here.。它将需要不止一次的扫描,所以应该被认为是“沉重的”。

如果您想快速阅读它们,请在初始化例程中创建一个引用您感兴趣的变量的引用,并通过它们的键(您将使用一个字符串)访问它们。

在我的免费库中有一个TwinCAT3 dictonary类,Intecre Utilities, available here。你可以尝试适应TC2。

+0

谢谢,MaTazz,这就是答案。正如你所提到的,它需要多次扫描,我不会使用它。我还没有安装TC 3,稍后我会检查你的lib。是否可以使用指向第一个输入点的点,然后添加索引以获取精确的输入值? –

+0

嗨,孙浩。你的意思是你可能有10个数字输入,然后使用指针索引来获得它们的值?这种事情是可能的,有几种方法可以解决这个问题。一种更安全的方法是创建一个布尔结构,并将其定义为AT%I *,然后将它们连接到您的输入。或者如果你不关心名字,你可以创建一个布尔数组并暴露它们。即BOOL的myInputs AT%I:ARRAY [0..5];这在TwinCAT的版本中也更加便于携带。 –

+0

谢谢马克。使用数组是执行此操作的安全方法。所以这使得BeckHoff PLC像欧姆龙PLC一样。阵列保存IO状态,标签保存IO地址,使用IO地址查找阵列中IO点的当前状态。 –