Как обратиться к элементу массива по переменному индексу

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
Kreadlling
Posts: 26
Joined: Sun Mar 27, 2011 8:07 am

Как обратиться к элементу массива по переменному индексу

Post by Kreadlling » Wed Jun 22, 2016 11:38 am

Здравствуйте. Не подскажете как в FBD обратиться к любому элементу
массива по индексу, хранимому в переменной i? Искал по разным темам,
но не очень понял как это сделать.

Schtiel
Site Admin
Posts: 1121
Joined: Wed Sep 06, 2006 12:03 pm
Location: CIS

Post by Schtiel » Thu Jun 23, 2016 10:51 am

На FBD вряд ли возможно, а про индексацию массивов на STL было тут и тут

Kreadlling
Posts: 26
Joined: Sun Mar 27, 2011 8:07 am

Re:

Post by Kreadlling » Fri Jun 24, 2016 6:31 am

Schtiel wrote:На FBD вряд ли возможно, а про индексацию массивов на STL было тут и тут
А можно ли запрограммировать на stl, а потом перевести в FBD?

Schtiel
Site Admin
Posts: 1121
Joined: Wed Sep 06, 2006 12:03 pm
Location: CIS

Post by Schtiel » Fri Jun 24, 2016 1:51 pm

Kreadlling wrote:А можно ли запрограммировать на stl, а потом перевести в FBD?
Можно создать блок доступа к i-му элементу массива на STL, а потом вызывать его на FBD:

Image
FB1
Show

Code: Select all

FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1


VAR_INPUT
  IntArray : ARRAY  [1 .. 9 ] OF INT ;	
  Index : INT ;	
END_VAR
VAR_OUTPUT
  Value : INT ;	
END_VAR
VAR_TEMP
  ArrayPointer : DINT ;	
END_VAR
BEGIN
NETWORK
TITLE =

      L     P##IntArray; 
      T     #ArrayPointer; 
      L     #Index; 
      L     16; 
      *I    ; 
      L     #ArrayPointer; 
      +I    ; 
      T     #ArrayPointer; 
      LAR1  ; 
      L     W [AR1,P#0.0]; 

NETWORK
TITLE =

      T     #Value; 

END_FUNCTION_BLOCK
Image

Kreadlling
Posts: 26
Joined: Sun Mar 27, 2011 8:07 am

Re:

Post by Kreadlling » Mon Jun 27, 2016 3:27 pm

Schtiel wrote:
Kreadlling wrote:А можно ли запрограммировать на stl, а потом перевести в FBD?
Можно создать блок доступа к i-му элементу массива на STL, а потом вызывать его на FBD:
Спасибо большое за информацию буду разбираться

Post Reply