Не найдя что то типа explode в codesys наваял следующее. Т.к. не очень с указателями дружен, не хочу допустить ошибок, особенно с памятью. Вроде бы работает. Подскажите что может пойти не так:
PHP код:
VAR_INPUT
    _str
:STRING(1024);
    
arr_max_elem_lenth:BYTE;
END_VAR
VAR
    
el_cnt,char_cnt:INT;
    
pt_source,pt_dest:POINTER TO BYTE;
    
elem_lenINT;
END_VAR 
PHP код:
pt_source:=ADR(_str);
el_cnt:=1;
pt_dest:= ADR(temp[el_cnt]);
elem_len:=0;
char_cnt:=0;
IF 
_str<>'' THEN
   
WHILE (pt_source^<>0) AND (el_cnt<30) DO (*до конца строки и не превышая массива*)
    IF (
pt_source^=124THEN(*если найден разделитель*)
        
pt_dest^:=0;(*терминация строки элемента массива*)
        
el_cnt:=el_cnt+1;pt_dest:= ADR(temp[el_cnt]);(*ставим указатель на следующий элемент*)
        
char_cnt:=0;
    ELSE(*
иначе побайтно копируем*)
        IF (
char_cnt<arr_max_elem_lenth) AND  (el_cnt>1)  THEN(*чтобы не переполнить результирующий элемент*)
            
pt_dest^:=pt_source^;(*копируем символ*)
            
pt_dest:=pt_dest+1;
            
char_cnt:=char_cnt+1;
        
END_IF;
    
END_IF;
    
pt_source:=pt_source+1;(*Следующий байт*)
   
END_WHILE;
END_IF