1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Диагностика PN/DP IM155

Модератор: Глоб.модераторы

Ответить

Автор темы
cb3
новенький
новенький
Сообщения: 1
Зарегистрирован: 24 ноя 2017, 06:42
Имя: Андрей
Страна: Россия
город/регион: Железногорск
Благодарил (а): 1 раз

Диагностика PN/DP IM155

Сообщение cb3 »

Всем привет! Очень нуждаюсь в помощи/совете.
Есть задача по диагностике 8 штук ET200SP, подключенные по Profibus,
я написал из примеров с сайта Сименс код на SCL, в результате желаю получить ошибку корзины и есть ли корзина на связи (код прилагаю)

Вот вопрос - что надо передать в Index и SZL_ID блока SFC51, чтобы получить искомое?

Я вычитал что для случая с Profibus присваиваем INDEX = 1 и SLZ = 694 .


В общем задача самой простой диагностики сети профибас.

Спасибо!

Код:

FUNCTION_BLOCK DIAG
TITLE ='PNDP-DIAG - Диагностика PN/DP'
NAME: DIAG

VAR_INPUT
IN_INDEX : WORD := W#16#0001;
IN_SZL_ID : WORD := W#16#0694;
END_VAR

VAR_OUTPUT
VALUE : WORD;
RETVAL : INT;
ST0 {S7_m_c := 'true'} :BOOL;
ST1 {S7_m_c := 'true'} :BOOL;
ST2 {S7_m_c := 'true'} :BOOL;
ST3 {S7_m_c := 'true'} :BOOL;
ST4 {S7_m_c := 'true'} :BOOL;
ST5 {S7_m_c := 'true'} :BOOL;
ST6 {S7_m_c := 'true'} :BOOL;
ST7 {S7_m_c := 'true'} :BOOL;
END_VAR

VAR
RDSYSST : STRUCT
RET_WERT : INT ;
REQ : BOOL ;
BUSY : BOOL ;
SZL_HEADER : STRUCT
LENTHDR : WORD ;
N_DR : WORD ;
END_STRUCT ;
SZL_11C_5 : STRUCT
index : WORD ;
serialn : ARRAY [0 .. 23] OF CHAR ;
res : ARRAY [1 .. 4] OF WORD ;
END_STRUCT ;
END_STRUCT ;

PNDP_DIAG :STRUCT
Index : WORD;
Status : ARRAY [0..2047] OF BOOL;
END_STRUCT;

BEGIN

RDSYSST.RET_WERT:=RDSYSST( // SFC51 Module identification
REQ := true
,SZL_ID := IN_SZL_ID // W#16#011C: a single identification data record
,INDEX := IN_INDEX // W#16#0005: Serial number of the module
,BUSY := RDSYSST.BUSY
,SZL_HEADER := RDSYSST.SZL_HEADER
,DR := PNDP_DIAG
);

RETVAL := RDSYSST.RET_WERT;
VALUE := PNDP_DIAG.Index;
ST0 := PNDP_DIAG.Status[0];
ST1 := PNDP_DIAG.Status[1];
ST2 := PNDP_DIAG.Status[2];
ST3 := PNDP_DIAG.Status[3];
ST4 := PNDP_DIAG.Status[4];
ST5 := PNDP_DIAG.Status[5];
ST6 := PNDP_DIAG.Status[6];
ST7 := PNDP_DIAG.Status[7];
END_FUNCTION_BLOCK
У вас нет необходимых прав для просмотра вложений в этом сообщении.

LexSL
освоился
освоился
Сообщения: 208
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 67 раз
Поблагодарили: 53 раза

Диагностика PN/DP IM155

Сообщение LexSL »

Для Profinet и Profibus в H-System использую RDSYSST с SZL_ID = W#16#0C91, INDEX = "Диагностический адрес модуля в слоте 0 HW Config"
Возвращается такая структура

Код: Выделить всё

TYPE RecordXY91
    STRUCT
        adr1 : WORD;
        adr2 : WORD;
        logadr : WORD;
        solltyp : WORD;
        isttype : WORD;
        reserve : WORD;
        eastate : WORD;
        ber_bgbr : WORD;
    END_STRUCT
END_TYPE
В eastate есть биты, указывающие - в сети\не в сети модуль
estate.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)»