Всем привет! Очень нуждаюсь в помощи/совете.
Есть задача по диагностике 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
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Диагностика PN/DP IM155
Модератор: Глоб.модераторы
-
- освоился
- Сообщения: 208
- Зарегистрирован: 16 дек 2011, 15:13
- Имя: Алексей
- Страна: Россия
- Благодарил (а): 67 раз
- Поблагодарили: 53 раза
Диагностика PN/DP IM155
Для Profinet и Profibus в H-System использую RDSYSST с SZL_ID = W#16#0C91, INDEX = "Диагностический адрес модуля в слоте 0 HW Config"
Возвращается такая структура
В eastate есть биты, указывающие - в сети\не в сети модуль
Возвращается такая структура
Код: Выделить всё
TYPE RecordXY91
STRUCT
adr1 : WORD;
adr2 : WORD;
logadr : WORD;
solltyp : WORD;
isttype : WORD;
reserve : WORD;
eastate : WORD;
ber_bgbr : WORD;
END_STRUCT
END_TYPE
У вас нет необходимых прав для просмотра вложений в этом сообщении.