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

I-8xx7 и ISaGRAF с чего начать?

 Ответить Ответить Страница  <1234>
Автор
Сообщение
MuadDib Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Июль 2006
Online Status: Offline
Публикации: 304
Свойства публикации Свойства публикации   Ответить, цитируя автора - MuadDib Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: I-8xx7 и ISaGRAF с чего начать?
    Опубликовано: 03 Август 2006 10:42

2 Ленин

К сожалению, не могу выслать проект с блоком опроса Модбас, т.к. он используется в нашем оборудовании и является собственностью нашей организации. Я высылаю проект, содержащий программу опроса весового терминала CAS. Там есть функции опроса СОМ-порта, и используются встроенные массивы Изаграф. Используя описание протокола Модбас, на основании этого проекта можно сделать работающий вариант блока опроса.

Добавлю, что блок для вычисления CRC-16 уже имеется в китайском таргете.

На счет ошибки компилятора. Не мешало бы привести, какая ошибка выдается. Но можно предположить, что ты не создал экземпляр ФБД-блока mbus_n_r под названием BUS_N_R1, который, собственно, и пытаешься вызвать. Экземпляр создается в словаре на вкладке "FB экземпляры". Еще нужно смотреть типы переменных, поскольку Изаграф не поддерживает преобразование типа (только через специальные функции). Если попытаться присвоить вещественной переменной целое значение напрямую, будет ошибка при компиляции.

Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Август 2006 11:13
Да, да, конечно!
Я не только не создал экземпляр FBD блока, НО и не знал, что это нужно делать!!! :)
Ещё 2 недель нет, как я на ISaGRAFе, извиняйте :)

В двух словах может объясните, как сделать опрос нескольких анализаторов? можно ли наваять что-то типа классов, создать объкект "Анализатор"... или хотябы в цикле адреса слейвов перебирать, записывая данные в массив - это вообще возможно?
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Август 2006 11:15
За проект спасибо, ща попытаюсь его распаковать - у меня пока демо версия ISaGRAF - кажись там это заблокировано
Наверх
MuadDib Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Июль 2006
Online Status: Offline
Публикации: 304
Свойства публикации Свойства публикации   Ответить, цитируя автора - MuadDib Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Август 2006 12:35

В демке должно распаковываться без проблем, это делается из меню программы "Проекты" (Инструменты -> Архив -> проекты).

По сути дела, любая программа Изаграф - это экземпляр класса. Функция-элемент у нее одна (собственно программа), а локальные переменные  - это элементы-данные. Это не совсем строгое определение, реально в коде Изаграф ООП не используется. Но понимать так немного легче.

Вариантов решения задачи, на самом деле, много. Самый простой - написать прогу, которая опрашивает 1 анализатор и складывает данные в локальные переменные. Когда прога отлажена,  можно начинать создавать ее копии. Поскольку приборы, висящие на одной линии интерфейса, нужно опрашивать последовательно, нужно позаботиться о том, чтобы прогаммы опроса не работали одновременно. Это можно сделать, например, с помощью SFC программы и глобальных переменных. Вариантов тут масса.

Локальным переменным программы опроса нужно присвоить адреса Модбас, чтобы их можно было опрашивать с верхнего уровня.

На счет массивов. Есть "встроенные" массивы, с которыми можно работать с помощью специальных функций (см. мой проект). Их использовать можно смело. А вот использовать произвольные массивы я пока не пробовал. Не было необходимости, да и методика, которую китайцы предлагают (модификация в разделе debug среды разработки!) вызывает сомнения. По-моему, делать такие манипуляции - значит напрашиваться на неприятности. Но если у кого-то есть положительный опыт общения с произвольными массивами в Изаграф 3 - поделитесь пожалуйста.

Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Август 2006 14:21
Кстати говоря, написал я кусок проги которая шлёт посылку в порт на SFC (уровенн 2 на ST) - так вот, оне не работает. То же самое написанное сразу на ST (секция Begin) - работает! В чём дело?
Посмотрел твой проект, что-то понял... Только вот "встроенный" массив задаётся на вкладке Messages что-ли?
У тебя он назван Buffer, так? Вот КиТАйЦЫ кАзлЫ!!! не могли назвать вещи своими именами - не разберёшься без бутылки ни хрена!
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 03 Август 2006 14:55
Кто мне объяснит, как из SFC вызвать написанную функцию (например на FBD)?
Наверх
MuadDib Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Июль 2006
Online Status: Offline
Публикации: 304
Свойства публикации Свойства публикации   Ответить, цитируя автора - MuadDib Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Август 2006 06:09

Куски ST в уровне 2 SFC должны быть оформлены в виде ACTION. Блок ACTION (N), например, будет исполняться на каждом цикле Изаграф, когда данный шаг активен. Возможно, причина отсутствия посылок в этом. Все подробности о языках программирования есть в документации непосредственно на Изаграф "Руководство пользователя ISaGRAF.pdf". Кстати, в отличие от последних веяний в области пользовательской документации, это руководство написано очень грамотно, дает всю теоретическую базу программирования. Без этого чтива работать в Изаграфе сложновато.

Вызов функции производится очень просто:

возвр_парам := имя_функции(парам1, парам2, ...);

Но нужно помнить, что здешние функции не могут содержать локальных статических данных (с глобальными объектами работать можно). Если нужно хранить локальные данные между вызовами, придется юзать функциональные блоки. И еще одно ограничение. Возвращаемый параметр только один, а Изаграф 3 не поддерживает пользовательские типы данных (структуру вернуть нельзя).

Китайские массивы задавать не надо, они уже определены в таргете и инициализированы нулями. Для работы с ними достаточно использовать функции из серии array...()

Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Август 2006 08:12
Да, не зря говорят: век живи-сЪ, век учись-сЪ :)
И тут у меня опять вопрос: Modbus протокол разносит данные разного типа по разным картам памяти (int и bool, например), причём адресация независимая - это всем известно. Так почему-же в словаре переменных, когда определяешь адрес переменной для карты памяти Modbus, типы int и bool не могут иметь одинаковый адрес? Непонятно!
Наверх
Ленин Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 27 Июль 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 23
Свойства публикации Свойства публикации   Ответить, цитируя автора - Ленин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Август 2006 08:48
Обратил внимание, что если написать код в блоке InitialStep, то посылка шлётся, если же её написать в блоке Step - не работает
ACTION (P) :
    ERR := COMOPEN( 3, 19200, 8, 0, 1 );
    BUS_N_R( 1, 16#0010 );
END_ACTION;
Наверх
MuadDib Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 27 Июль 2006
Online Status: Offline
Публикации: 304
Свойства публикации Свойства публикации   Ответить, цитируя автора - MuadDib Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 04 Август 2006 08:52

Действительно, Модбас так может. Но при этом предполагается, что булевые данные будут считывать только функцией 1, 16-битные регистры - только функцией 3 и т.д. ISaGRAF же позволяет считывать bool и командой 1, и командой 3 (см. "Руководство"). Отсюда и ограничение.

С чем это связано, тоже приблизительно понятно. Дело в том, что и BOOL, и ANALOG переменные Изаграф представляют собой 32-битный int. Очевидно, реализация связи с протоколом Модбас для этих переменных производится в общем алгоритме, со сквозной адресацией по регистрам.

Теория - это когда все знаешь, но ничего не работает.
Практика - это когда все работает, но никто не знает как.
Наверх
 Ответить Ответить Страница  <1234>

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

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