2016-12-24 82 views
0

我正在學習結構化文本,用Cx-programmer編寫一個Omron軟件。Cx程序員 - 結構化文本,數組分配

我已經看了看周圍,但我不能找到一種方法,多元素分配到一個數組, 我已經試過這soluion,但它不工作,

這是數組聲明(內部變量):

Name    Data type Initial value 
SenCheck_Array  BOOL[8]  FALSE  
SEN     INT[2]  0   

INT的陣列:

 SEN[1...2]:=[1,2]; 

BOOL的陣列:

 SenCheck_Array[0...7] := [ S_LF,S_LS,S_LH2O,S_LO,S_Col ,S_BAR,S_TAP,S_ET ] ; 

誤差是相同的:

​​

i的單獨分配元件succeded,但我需要給它們分配在一個單一的線路。

任何幫助apreciated :)

P.S:我使用CX程序員教育版。

Screen shot link:

+1

如何'SEN [1]:= 1; SEN [2]:= 2;'?這是一條線。 – melpomene

+0

它的工作原理,但我不想讓我的代碼變得清晰和簡短 – Muccagelato

+1

在Cx-Programmer中,您不能將數組初始化爲一行。在Sysmac Studio(歐姆龍,適用於更新的PLC),TIA Portal(西門子)或TwinCat3(Beckhoff)中,您可以在同一行中初始化陣列 – iulian3000

回答

0

編輯:該實施例(示出SCL塊代碼的聲明部分)僅適用於西門子的PLC。

初始化一個數組中的值必須用逗號方括號來分離:

CONST 
    // Constants 
    S_LF := TRUE; 
    S_LS := FALSE; 
    S_LH2O := FALSE; 
    S_LO := FALSE; 
    S_Col := TRUE; 
    S_BAR := TRUE; 
    S_TAP := TRUE; 
    S_ET := TRUE; 
END_CONST 

VAR 
    // Static Variables 
    SEN: ARRAY[1..2] OF INT := 1, 2; 
    SenCheck_Array: ARRAY[0..7] OF BOOL := S_LF, S_LS, S_LH2O, S_LO, S_Col , S_BAR, S_TAP, S_ET; 
END_VAR 
+0

嗯,我試過了您的解決方案,但在我看來,cx-programmer結構化文本是與你的草圖有點不同。例如,我不能給S_LS,S_LF等賦值,因爲它們是功能塊中的輸入變量;我必須在程序之前聲明數組和任何其他變量作爲標記... – Muccagelato

+0

VAR和ARRAY是不受支持的關鍵字,所以我無法在草圖中聲明任何變量... – Muccagelato

+0

您必須參考Omron的特定文檔,因爲結構化文本可能因製造商而異。 基本上,編譯器應該如何使用輸入變量來初始化數組,因爲在編譯時輸入變量的內容是未知的。 – dergroncki