Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > ПЛК и микроконтроллеры
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

WAGO 750-841 и OPC

 Ответить Ответить Страница  <1 456
Автор
Сообщение
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: WAGO 750-841 и OPC
    Опубликовано: 08 Ноябрь 2011 16:30
Это функциональный блок. Вы его вызвать, случаем, не забыли?
Инженер-системотехник
+7 (916) 477 3925
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Ноябрь 2011 15:47
Первоначально опубликовано Максим Ананских

Это функциональный блок. Вы его вызвать, случаем, не забыли?

Я его вызывал так:
pi();
Это правильно? По крайней мере компилятор не возражает.
Ещё я хотел оценить время выполнения программы, делал это так:
rez:= SysIECTaskGetInfo('PRG_ST',ADR(TaskInfo));
но результат всегда нулевой независимо от названия задачи (перепробовал массу имён задачи, а она у меня одна).
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Ноябрь 2011 15:58
На мой взгляд, вот это должно работать:

PROGRAM PLC_PRG
VAR
     PI: PI_INFORMATION;
     DI_OFS: WORD;
     DI_LEN: WORD;
     DO_OFS: WORD;
     DO_LEN: WORD;
END_VAR

PI();
DI_OFS := PI.INPUTBITS_OFFSET;
DI_LEN := PI.DIGITAL_INLENGTH;
DO_OFS := PI.OUTPUTBITS_OFFSET;
DO_LEN := PI.DIGITAL_OUTLENGTH;

Проверить сейчас, к сожалению, не могу - контроллера под рукой нет. Еще есть тонкости с версиями прошивок. Думаю, вам подойдут версии, начиная с FW12: они умеют автоматически генерировать конфигурацию контроллера, если её нет, а это как раз то, что вам нужно.
По поводу SysIECTask... не подскажу - не пользовался ими. Лучше спросить на форуме по CoDeSys. Но можно в онлайне зайти в PLC Browser и посмотреть там статистику.
Инженер-системотехник
+7 (916) 477 3925
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 17 Ноябрь 2011 18:49
PI(); возвращает FALSE и в структуре все нули. Так что не работает...
А что такое PLC Browser в онлайне?
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 07 Декабрь 2011 12:43
Вопрос есть по диагностике: может ли программа в 841 контроллере обнаруживать потерю связи с верхом (чтобы предпринять действия)? Например, узнать число TCP подключений или даже наличие связи с ethernet коммутатором?
Спасибо.
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Декабрь 2011 13:09
Попробовал приведенную выше программу на 750-841 SW 13. Работает.
PLC Browser - это полезная функция в Codesys. Её можно найти в проекте на закладке ресурсов. С его помощью можно общаться с контроллером в диалоговом режиме. Команда tsk, например, выдает такую информацию:

Number of Tasks: 1
Task 0: DefaultTask, ID: 0
   Cycle count: 209961
   Cycletime:       1 ms
   Cycletime (min): 1 ms
   Cycletime (max): 3 ms
   Cycletime (avg): 1 ms
   Status: RUN
   Mode:   UNHANDLED
   ----
   Priority: 1
   Intervall: 0 ms
   Event:     NONE
   ----
   Function pointer: 16#00CD0454
   Function index:   82

На следующий вопрос постараюсь развернуто ответить позже. Но вкратце - если вы используете встроенный сервер Modbus, то управлять его работой не получится, а получить его диагностику трудно. Но кое-что сделать все-таки можно. Есть регистры Modbus, считывая значение которых, можно получить некоторую диагностическую информацию. О них сказано в описании.
Инженер-системотехник
+7 (916) 477 3925
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Декабрь 2011 14:37
Первоначально опубликовано Максим Ананских

Но кое-что сделать все-таки можно. Есть регистры Modbus, считывая значение которых, можно получить некоторую диагностическую информацию. О них сказано в описании.

Если речь идёт про Configuration Register, то я легко добираюсь к ним через Modbus по сети по адресам начиная с 0x1000, но из контроллера не получается туда добраться - не понял как адресовать.
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Декабрь 2011 14:46
PI() сработало! Что-то я не так раньше делал.... Спасибо!
Наверх
min Смотреть выпадающим
Новичок
Новичок


Присоединился: 03 Сентябрь 2011
Online Status: Offline
Публикации: 22
Свойства публикации Свойства публикации   Ответить, цитируя автора - min Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Декабрь 2011 15:20
О и SysIECTaskGetInfo() заработало! Я просто не догадался до имени DefaultTask, а так и PLC_PRG пробовал...  СПАСИБО!
Остался вопрос, как из контроллера достучаться к конфигурационным регистрам (Configuration Register)?
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Декабрь 2011 00:38
Первоначально опубликовано min

Остался вопрос, как из контроллера достучаться к конфигурационным регистрам (Configuration Register)?

Единственный способ, который я знаю - обратиться к самому себе по Modbus. Где-то в памяти должны лежать эти регистры, но где - неизвестно.
Инженер-системотехник
+7 (916) 477 3925
Наверх
 Ответить Ответить Страница  <1 456

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz