2017-05-27 33 views
0

我想要做的是創建一個FB,以便在給定TAG NAME時讀取輸入點的信號。 例如,如果標籤名稱是「I_motor_sensor」,所以「I_motor_sensor」發送到Read_I_Point FB,然後FB將返回當前狀態。那麼有沒有辦法做到這一點?在TwinCAT 2中實現Read_I_Point FB BeckHoff PLC

回答

0

是的,您可以使用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點的當前狀態。 –