PDA

Просмотр полной версии : ип320 - динамические номера регистров



drvlas
03.11.2010, 21:19
здравствуйте!

только пробую впервые конфигурировать ип320. Задача усложнена тем, что сейчас включить ИП320 и проверить конфигурацию в железе нет возможности.

вопрос 1.
у меня измерительный прибор, пусть это будет вольтметр, к примеру. у него есть основной режим, в котором на экране должна отображаться (основная) измеряемая величина (напряжение), а также ряд экранов, в которых я могу настраивать прибор (задавать значения рабочих параметров, таких как поддиапазон измерения, тип входной цепи, предвключенный фильтр и так далее).
никаких картинок в виде графиков, мнемосхем и прочего я не планирую. т.е. рассматриваю экран, как поле для размещения многих тестов, динамических текстов, регистров. думаю, пока это все.

собственно, вопрос:
каков долже быть разумный подход при выборе главного экрана? есть ли в данной области какие-то общепринятые подходы (шаблоны), которые позволяют для подобной задачи выбрать систему экранов?
или каждый творит свое и "стандарт" выделить трудно? тогда, может быть, кто-то поделится своим уникальным опытом - именно применительно к моей задаче.

Может быть, проще будет ответить, если я скажу, что мне не подходит?
В документе по конфигурированию ИП320 приведен пример управления технологическим процессом станка «Термопласт автомата». Мне кажется (в моей задаче), что главным экраном должна быть индикация измеряемой величины. Главным - в смысле того, что этот экран автоматически устанавливается после всяких там приветствий-тестов и прочего. А уже при необходимости каких-то доп.работ оператор будет вызывать другие экраны (которых у меня будет мало - около 4-х).


вопрос 2.
прочел, что при отображении регистра мы можем задать номер регистра только статически.

а мне нужно в пределах одного экрана выделить некоторую область, в которой я хочу видеть название и значение некоторого параметра работы, причем номер параметра задается отдельно. что-то вроде такого:

параметр
номер: 22
наименование: время задержки включения
значение: 1500 мс

я предполагаю такой путь. в регистр 0 (номера условны) плк я записываю номер параметра, который требуется отразить, а плк по этому значению "подбросит" в регистр 4 индекс динамического текста (наименование параметра), а в регистр 8 - численное значение параметра.

это нормально или существует другой (стандартный) способ?

спасибо!

Terrano1992
04.11.2010, 10:16
Мне кажется (в моей задаче), что главным экраном должна быть индикация измеряемой величины. Главным - в смысле того, что этот экран автоматически устанавливается после всяких там приветствий-тестов и прочего. А уже при необходимости каких-то доп.работ оператор будет вызывать другие экраны (которых у меня будет мало - около 4-х).
Ну и что смущает? Нет здесь никаких догм. Стройте экраны так, как сочтете нужным - чтобы все это в целом выглядело информативно, интуитивно понятно и удобно в пользовании для оператора.
Для отображения аварий используйте штатный экран "список тревог" в панели, так удобнее. Он автоматически вызывается на отображение, как только любая описанная тревога возникает, и показывает полный список активных тревог. Можно выйти из него на ранее просматривавшийся экран кнопкой ESC, можно в любой момент зайти в него кнопкой ALM.

предполагаю такой путь. в регистр 0 (номера условны) плк я записываю номер параметра, который требуется отразить, а плк по этому значению "подбросит" в регистр 4 индекс динамического текста (наименование параметра), а в регистр 8 - численное значение параметра.
Тоже неплохо. Если только: а) вам хватит возможностей "динамического текста" для отображения всех наименований параметров; б) вы согласны их численные значения представлять в едином формате (например, xxx.yy), поскольку формат вывода (знак числа, общее количество цифр и их количество после десятичной точки) задается жестко, при создании поля. Даже там, где дробная часть ухудшает восприятие (например, на счетчике выпущенных изделий).
Если это не нравится - делайте отдельные экраны под каждый параметр и отключайте в настройках проекта автоматический переход на главный экран.
Ну и не забывайте, что размеры дисплейчика в ИП320 весьма скромные. С выражением своих мыслей на нем не особо размахнешься, места немного.

drvlas
04.11.2010, 16:23
спасибо, уважаемые, за ваши ответы!

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

удивительная все же здесь техническая поддержка. буквы делаются маленькими, уведомления не рассылаются :(

ну-с а по сути. нужно все осознать. у меня не очень быстро получается. так что вопросы-уточнения впереди.

предварительно сориентирую. сейчас строю таблицу параметров. будет их порядка полусотни. вообще говоря, они у меня были все типа целые (в проекте-прототипе), но при выводе на экран мы подбрасывали точку, куда надо.
и таким образом решались вопросы представления параметров на экране (например, 1500 с точечкой выглядели как 1.500 и это понималось как 1,5 секунд).
были параметры 4-байтные, мы просто тупо разбили их на 2 по 2, назвав один из них младшей частью, а другой - старшей частью. работает, слава богу, почти в 2 тысячах устройств.

но здесь можно и иначе. можно честно сделать параметр флоат и он так будет и обрабатываться, и передаваться, и выводиться. замечательно! один вопрос:
если я вывожу в поле регистр параметр, который изменяется от 0 до 50,00, то будет ли ип320 его елозить по знакоместам?


50.00 - хорошо
20.22 - хорошо
00.01 - хорошо
0.010 - плохо

т.е., не хочу, чтобы положение десятичной точки при изменении значения параметра изменялось. это обеспечивается при обычном задании флоат? или наоборот, флажок флоат нужно убрать?

дальше.



лично мне хватало обеспечить таким образом ввод четырех десятков параметров...
из всего количества параметров (штук 40) я выделил общее.
и у меня получилось всего 4 (четыре) экрана. причем для пользователя это был 1 (один).
...
и для пользователя - это был лишь переход откуда-то из меню в 1 (один) экран изменения параметров где кнопкой верх/вниз он бегал по списку совершенно разнородных параметров.

дык - как? ну, разобью я параметры на группы, в которых одинаковое представление значений:

1) целые, в т.ч. битовые
2) длинные
3) дробные с дискретностью 0,1
4) дробные с дискретностью 0,01
5) дробные с дискретностью 0,001

а дальше? юзер нажимает кнопку работы с параметрами, и...?

drvlas
04.11.2010, 16:47
Да, и еще одно.

Если только: а) вам хватит возможностей "динамического текста" для отображения всех наименований параметров;
А вот как оценить ресурсы? Сколько чего я могу напихать в таблицу?

У меня совершенно точно сейчас ПЛК100 и ИП320. Создаю таблицу регистров и не понимаю, как они реально сохраняются, сколько места занимают. Смотрю в примерах, некоторые разработчики присваивают регистрам номера "по Модикону" (0, 10001, 20001, ...), а в других источниках пишут, что это можно херить. Как лучше?

Для нескольких экранов в ИП320, если там по несколько примитивов отображения, но среди них графические динамические тексты - когда наступит ограничение? В чем проявится?

Terrano1992
04.11.2010, 19:47
можно честно сделать параметр флоат
Можно. Если не забывать, что соответствующий ему тип данных занимает вдвое больше пространства, чем целочисленный. В каких-то проектах на ПЛК с лицензией L (лимит 360 байт на ввод-вывод - оставим за рамками причины, по которым в каждом частном случае оказалось невозможно заменить ПЛК на "безлимитный") этот перерасход может оказаться критичным.
По части того, как Float поступает с положением десятичной точки - не пробовал использовать его на практике. Но вроде бы, если эту галочку поставить, то поля форматирования остаются активными - т.е. должно подчиняться заданному положению точки...

а дальше? юзер нажимает кнопку работы с параметрами, и...?
Ну, полагаю, примерно так.
Мы неким образом (неважно каким, через построенные в проекте панели экранные меню/кнопки/поля ввода) выбрали условный порядковый номер параметра для редактирования. И записали его в специально отведенный регистр.
ПЛК читает этот регистр. Его ответные действия по ненулевому значению регистра: заслать порядковые номера строк динамического текста для этой формы в другие (отведенные вами для этой цели) регистры и установить в регистре "Авт.смена экрана" номер экрана, содержащего подходящую для этого параметра форму ввода. Откуда он эти номера строк и прочие "атрибуты" возьмет - ваше дело. Можете CASE использовать, или выбор констант из массивов, как вам будет угодно и удобно.
Панель переходит на заданный в "Авт.смене" экран и заполняет текстовые поля в нем "динамическим текстом", дорисовывая окончательный вид формы. ПЛК в это время дожидается, пока регистр "Текущий экран" не будет равен "Авт. смене", после чего пишет в "Авт. смену" ноль (команда перехода на заданный экран выполнена, и незачем принудительно удерживать панель на этом экране).
Юзер выполняет ввод новых уставок, штатными средствами панели. ПЛК читает их из регистров (т.е. полей ввода формы) и переписывает во внутренние переменные программы, ориентируясь на номер параметра, который использовался выше.
Далее юзер жмет кнопку ESC и вываливается на предыдущий уровень (откуда он попал в форму редактирования). ПЛК по изменившемуся номеру "Текущего экрана" обнаруживает это событие и записывает в регистр с номером редактируемого параметра ноль (точнее говоря, значение, имеющее смысл "ни хрена пока что не выбрано"). Или, если надо, может принудительно инициировать переход панели на какой-то иной экран (механизм описан выше).
В принципе, все. Сейчас можно выбрать параметр с другим порядковым номером и повторить процесс.
Обращаю внимание, что это все "черновик", предназначенный для общего понимания, и отнюдь не оптимизированный. Наверняка, чуть подумав, многие места можно сделать красивее. Мне просто сейчас думать лень. :)
Полностью согласен с Валенок, что при большом количестве редактируемых параметров это самый экономный способ по ресурсам как области ввода-вывода, так и памяти, занимаемой проектом в панели...

Создаю таблицу регистров и не понимаю, как они реально сохраняются, сколько места занимают.
PLC_Configuration_OWEN.pdf, страница 7 (сколько занимает тот или иной тип данных) и 50..52 (как они располагаются в области ввода-вывода). На 52-й странице полезная картинка, иллюстрирующая все это. Обращайте внимание на выравнивание переменных при расчете их адресов - при желании можно сгруппировать регистры так, чтобы обойтись без "дыр", используемых на выравнивание. Например, не раскидывать четыре 8-битных регистра в живописном беспорядке среди регистров REAL (или WORD), а собрать их рядышком.

drvlas
04.11.2010, 22:18
Радостно видеть внимание к моим вопросам! Но тут, елы-палы, чем больше ответов, тем больше новых вопросов.


Если не забывать, что соответствующий ему тип данных занимает вдвое больше пространства, чем целочисленный. В каких-то проектах на ПЛК с лицензией L (лимит 360 байт на ввод-вывод - оставим за рамками причины, по которым в каждом частном случае оказалось невозможно заменить ПЛК на "безлимитный") этот перерасход может оказаться критичным.
У меня безлимитный. Но опять же, что это значит? Читаю ТТХ ПЛК100, какие-то 8 М ОЗУ, 4 К ЭППЗУ - что и как связано с той памятью, которая используется в обсуждаемой области памяти ввода-вывода?
Вообще-то и тут же новая непонятка. Если мне нужно, чтобы (многие, почти все) регистры сохранялись при выключении питания, то что? - Загружать их после включения из ЭППЗУ или можно объявить переменную области ввода-вывода как Retain?

Манипуляции с экранами для работы с параметрами - буду вкуривать постепенно. Похоже, что здесь боль-мень проясняется.

А вот интересный момент по отражению параметров от третьего устройста. Представим себе, что есть ИП320, который по RS232 работает Мастером с ПЛК100. Отлично, создаем у ПЛК100 нехилую такую область размером в несколько сот байт, которая доступна Мастеру - и он ее отображает, позволяет пользователю смотреть и редактировать параметры и прочее.
А в системе еще есть некий модуль (пусть АЦП), который также имеет много параметров, задаваемых пользователем. И я хочу, чтобы он конфигурировался прямо тут, при работе с ПЛК и ИП320. То есть, его параметры - такие же, как и параметры ПЛК100, их нужно уметь смотреть и редактировать с ИП320.
Сначала я думал связать АЦП (я его еще не выбрал, поэтому называю условно, но считаем, что это тоже стройство с Модбасом) с ПЛК по 485 и в этой паре чтобы ПЛК был Мастером. Однако, прочтя вот это:
"во внутреннее пространство этой памяти можно вставить не только переменные, но и устройство, отображаемое как память", подумал о другом варианте.
Может быть, сделать ПЛК Слейвом в квадрате? Пусть ИП320 берет из него данные и записывает на их место редактированные значения, а тот самый АЦП пусть просто складывает свои параметры в область ввода-вывода ПЛК100, доступную и для ИП320. Тогда нет проблем с редактированием параметров АЦП с панели ИП320. Все, что нужно АЦП для работы, он возьмет из своего ЭППЗУ (если у него есть) и вдует в самом начале работы в ПЛК100. Эти параметры свободно доступны ИП320 для отображениея и редактирования - и их изменение станет видно модулю АЦП, он втянет измененные параметры в свою память.
А результаты непосредственно работы АЦП (результаты измерения) тоже будут складываться в область ввода-вывода. И ПЛК100 может оттуда черпать что ему нужно для работы (преобразование, сравнение, принятие тех или иных решений), что-то изменять в своих регистрах, которые пойдут для отображения на панель. И все счастливы.

Что вы можете сказать о модели, в которой самый умный (ПЛК) - с обеих сторон Слейв?

Terrano1992
04.11.2010, 23:43
Читаю ТТХ ПЛК100, какие-то 8 М ОЗУ, 4 К ЭППЗУ - что и как связано с той памятью, которая используется в обсуждаемой области памяти ввода-вывода?
"Железо" у ПЛК с лицензиями L и M одно и то же. Просто в лицензии L искусственно ограничен максимальный размер области памяти, используемой для организации ввода/вывода (на программном уровне).

Если мне нужно, чтобы (многие, почти все) регистры сохранялись при выключении питания, то что?
То заведите себе столько retain-переменных, сколько вам требуется. Лишь бы они в упомянутые 4 килобайта энергонезависимой памяти уместились. Скорее всего, ограничение в 1024 переменных типа REAL или 2048 типа WORD для вашего проекта не будет критичным. :)
Есть на форуме пример эмуляции ТРМ1 на ПЛК100 (слэйв) и ИП320 (мастер) - там работа с сохранением уставок в retain наглядно показана.

Что вы можете сказать о модели, в которой самый умный (ПЛК) - с обеих сторон Слейв?
Оставляя в стороне вопрос "а на хрена такие хитрости", отмечу, что подавляющее большинство измерителей и регуляторов попросту не способно работать Modbus-мастером. Не заложен в них такой уровень "неестественного интеллекта".
Операторские панели, способные читать данные из одного слэйва и пересылать их в другой, в природе вроде бы существуют. Но это уже не ИП320, а совсем иной класс, на порядок дороже по цене. Да и как-то не очень разумно возлагать на HMI несвойственные ему задачи.
Или вам просто не хватает интерфейсов для связи с периферийными железками? Так вроде бы их в ПЛК100 с избытком - RS485, RS232, RS232-Debug (тоже можно задействовать для общения с периферией, поскольку для программирования и отладки есть еще и USB-device порт) и Ethernet. Куда уж больше?

drvlas
05.11.2010, 11:15
"Железо" у ПЛК с лицензиями L и M одно и то же.
Это я понимаю. Я уже со вчерашнего дня даже понял суть ограничения при L :)


То заведите себе столько retain-переменных, сколько вам требуется
И при этом кто и когда их черпает из 4К ЭППЗУ? Могу ли я вмешиваться в этот процесс?
Например, я поработал с параметрами - и хочу сохранить в ЭППЗУ новые значения. Именно сейчас, а не каждый раз, когда параметр изменяется.
Как "исполнитель" в ПЛК реально реализует запись изменений? Где это описано?


Есть на форуме пример эмуляции ТРМ1 на ПЛК100 (слэйв) и ИП320 (мастер) - там работа с сохранением уставок в retain наглядно показана.
Ну, посмотрю. Хоть бы ветку указал :) В "полезностях"?


Оставляя в стороне вопрос "а на хрена такие хитрости"
Ну вот, простая система:

АЦП (контроллерный, с параметрами)
ПЛК100
ИП320

Я решил, что конфигурирование АЦП с помощью компа - отстой. У меня достаточно опыта, чтобы знать, что некоторые вещи недопустимы.
"Хочу, чтобы окна можно было закрывать мышью. И открывать тоже" (И.Сталин)
Поэтому и решил, что мое устройство будет конфигурироваться (читай: параметры могут редактироваться) прямо на объекте. С использованием штатных модулей (собсно, ПЛК и ИП320).
Отсюда подзадача: параметры работы АЦП должны быть доступны для ИП320. Но они также должны быть быстро доступны и ПЛК100. Поэтому получать их в ПЛК через ИП320 - низзя!
Вот и получается, что должна быть область в памяти то ли ПЛК100, то ли АЦП, в которой видно параметры (и результаты) работы АЦП, но которая видна и ИП320.

Вариант 1. 2 контура: ИП (Мастер) - ПЛК (Слейв) + ПЛК (Мастер) - АЦП (Слейв)
Вариант 2. 2 контура: ИП (Мастер) - ПЛК (Слейв) + ПЛК (Слейв) - АЦП (Мастер)
Вариант 3. 1 контур: ИП (Мастер) - ПЛК (Слейв) - АЦП (Слейв)

Как раз вариант 3 не катит из-за сложного доступа ПЛК к самым свежим результатам АЦП.
Вариант 1, вроде как стандартный (хотя, что я знаю о стандартности в этом новом для меня деле?). Собственно, в моем прототипе так и есть (только ИП не существует отдельно, индикация есть частью контроллера).
ПЛК в общении с АЦП должен выдавать запросы достаточно часто, видит и параметры, и результаты. Но ИП320 как видит параметры АЦП? Просит ПЛК, тот обращается к АЦП, кладет результаты в указанные регистры и тогда они становятся доступными ИП320. Как-то заковыристо.

А в Варианте 2 все выглядит проще.
Оба Мастера напихивают в память ввода-вывода ПЛК все, что может представлять интерес для коллеги Мастера и для собственно главного скромного контроллера, т.е. ПЛК. И считывают то, что кому интересно.
То есть, я хочу создать в памяти ввода-вывода ПЛК актуальную копию всх параметров, которые нужны для работы и для индикации-редактирования. Это плохо?


Или вам просто не хватает интерфейсов для связи с периферийными железками?
Видишь уже из вышесказанного, что не в этом дело? Хотя тоже, мне, как новичку, не ясно, какой лучше выбрать. Поясняю конструктив:

АЦП - далеко и без вариантов там 485.
А вот ИП320 находится рядышком с ПЛК. Как лучше их связать? Например, 232 или дебаговый 232? В чем плюсы и минусы?

С уважением!

drvlas
05.11.2010, 11:29
не знаю, про какой ты праздник говоришь. и русских с любовью называю москалями. они мне братья :)



плетка, наручники.. попробуйте. так интересней.
что-то не вкурил. я ж новичек, не забывай. давай, как блондину?


рядовая ситуация с разными интерфейсами.но.
если производство ответственное, тот прибор сможет как-то сообщить о том что он умер ?
производство ответственное? не знаю. там ничего не взорвется, это точно. но при чем здесь это?

плк100, допустим, слейв в квадрате. но на верхнюю асу у него есть дырка (тот же етернет). если у него какие-то проблемы - может и пожаловаться системе. если он просто умер и некому будет отвечать на запросы ип320 и ацп (двух мастеров в системе) - дык, а толку детектировать эту ситуацию? умерла, так умерла. надо ремонтировать.

если умер кто-то из мастеров. допустим, ацп. тогда плк100 может увидеть по вторичным половым признакам, что ему новых результатов никто в область ввода-вывода не кладет - узнает. что еще надо?
ну, а если ип320... тут интересно. я хочу обдумать вариант, когда плк + ацп могут по включению разобраться, что ип320 нет в системе - и работать без него. там задача управления, в которой оператор не обязательно и смотрит на индикатор. теоретически можно работать без индикации. ну, это решение еще впереди...

Terrano1992
05.11.2010, 16:03
при этом кто и когда их черпает из 4К ЭППЗУ? Могу ли я вмешиваться в этот процесс?
Зачем в него вмешиваться, когда контроллер сам это успешно делает? Отслеживает изменение переменной, своевременно записывает ее в EEPROM...
Но если очень хочется бурной деятельности - можно следить за битом "Power" в модуле Statistics и как только он примет значение FALSE, скопировать рабочие переменные в те, которые объявлены как RETAIN. А при старте наоборот, скопировать значения из RETAIN в рабочие переменные. В ранее упомянутом эмуляторе ТРМ1, кажется, такой механизм реализован.

решил, что мое устройство будет конфигурироваться (читай: параметры могут редактироваться) прямо на объекте. С использованием штатных модулей (собсно, ПЛК и ИП320).
Отсюда подзадача: параметры работы АЦП должны быть доступны для ИП320. Но они также должны быть быстро доступны и ПЛК100. Поэтому получать их в ПЛК через ИП320 - низзя!
Получить их в ПЛК "через ИП320" невозможно в любом случае, чисто по техническим ограничениям. Не умеет ИП320 взять данные из одного регистра и скопировать их в другой, ее таким операциям не научили.
А посему единственный разумный вариант - это подцепить ИП320 мастером на RS232 (ее штатным кабелем КС4), а АЦП и прочие прибамбасы навесить на RS485, где мастером будет ПЛК. Тогда, если выбьете из разработчика АЦП все его "хау-ноу" :), заполучив полную спецификацию на команды конфигурирования, сможете наваять нужную процедуру на ПЛК (и управлять ее выполнением через ИП320).
В то же время, такая система хотя бы частично останется работоспособной при сбое/отказе ИП320 (сможет более или менее корректно управлять техпроцессом на последних введенных уставках).

Я решил, что конфигурирование АЦП с помощью компа - отстой
А как быть с тем, что кроме АЦП в этой системе есть еще ПЛК и панель, которые все равно без компьютера не запрограммировать? То есть, выезжая на ремонт установки, все равно придется тащить с собой ноутбук с установленным на него набором софта (и он не потяжелеет, если на него установить еще и конфигуратор для АЦП)?
Или по условиям задачи необходимо какие-то отдельные рабочие настройки АЦП оперативно изменять?

Хоть бы ветку указал. В "полезностях"?
Ну да, разумеется. В "примерах и полезностях", "ТРМ1 модель 2".

Terrano1992
05.11.2010, 16:09
если умер кто-то из мастеров. допустим, ацп. тогда плк100 может увидеть по вторичным половым признакам, что ему новых результатов никто в область ввода-вывода не кладет
И как он должен отличить ситуацию "мастер умер" от ситуации "мастер жив, но измеряемые/вводимые параметры остаются неизменными"? Если только в мастере нет каких-нибудь специальных функций, которые могут быть использованы, как watchdog (например регистра, содержимое которого при любых обстоятельствах обязано изменяться с заданной периодичностью)?

Terrano1992
05.11.2010, 16:18
алгоритм работы должен предусматривать любой вариант развития ситуации, или возможность быстрой доработки для этого.
Угу. Не раз уже сталкивался с тем, что какую-то пустячную функцию, упущенную в ходе разработки (как обычно - не было в ТЗ, необходимость в ней выявилась только в ходе опытной эксплуатации), впоследствии оказывается невозможно добавить без серьезных переделок установки в целом. Уж лучше еще на этапе разработки разумную избыточность заложить.

drvlas
05.11.2010, 16:55
Зачем в него вмешиваться, когда контроллер сам это успешно делает? Отслеживает изменение переменной, своевременно записывает ее в EEPROM...
Ну, это не есть идеально, ИМХО. Как минимум 2 соображения у меня есть:
1) может быть переменная Retain, которая изменияется достаточно часто, но тренировать память с ограниченным числом циклов перезаписи незачем. Я хочу сохранять ее по определенным событиям (воля оператора или какой-то таймер, делающий запись не очень частой). Тогда выгодно тот алгоритм "автоматического сохранения" как-то блокировать.
Ну, я понимаю, что придется завести копию этой переменной (объявив ее Retain), и именно туда сбрасывать измененное значение рабочей переменной.

2) При работе с параметрами я считаю удобным, чтобы оператор не дрожал, боясь напортить. Поэтому хочу, чтобы можно было поиграть с параметрами, не изменяя их сохраняемые значения. И только по осмысленному вызову функции "Сберечь" перенести все в ЭППЗУ.

Поэтому, если я тебя правильно понял, мне вообще придется завести полную копию всех Retain-параметров и работать с ней. А потом заносить измененные (точнее - предназначенные для запоминания) значения в ту область, где у меня переменные, обозначенные как Retain. А потом уже знать, что ПЛК их сам упрячет куда надо.
То есть примерно так:


VAR RETAIN
byVarRetain : BYTE;
END_VAR
VAR
byX : BYTE := byVarRetain;
END_VAR

Дальше работаем только с byX, а в нужный нам момент делаем

byVarRetain := byX;

...и знаем. что ПЛК позаботится о сохранении byVarRetain.
Так?


Получить их в ПЛК "через ИП320" невозможно в любом случае, чисто по техническим ограничениям. Не умеет ИП320 взять данные из одного регистра и скопировать их в другой, ее таким операциям не научили.
Понял. Это я погорячился. Ну и фиг с ним. Этот вариант 3 не катит (чтобы ИП320 всем мастерам мастер был).

Но я рассматриваю вариант 2, когда в паре АЦП-ПЛК все же АЦП может быть мастером. Ищу в твоих ответах серьезные аргументы проив - и пока не вижу.
Ты пишешь про вариант 1:

- это подцепить ИП320 мастером на RS232, а АЦП и прочие прибамбасы навесить на RS485, где мастером будет ПЛК. Тогда, если выбьете из разработчика АЦП все его "хау-ноу" :), заполучив полную спецификацию на команды конфигурирования, сможете наваять нужную процедуру на ПЛК (и управлять ее выполнением через ИП320).
Выбивать ноу-хау, может быть, и не придется. У меня есть великолепный АЦП, который работает не по Модбасу. Если научу его модбасить или разберусь, как заставить ПЛК общаться с нестандартными протоколами (я уже видел ссылки на библиотеку NMU или как там ее) - то лучшего АЦП мне и не надо.
В любом случае, этот вариант 1 вполне в общепринятом русле и я понимаю, что его можно реализовать.
Но обдумываю, а почему нельзя вариант 2? Не вижу, не вижу препятствий. И очень надеюсь, что мне кто-то их покажет (медленно и два раза, я же новичек), чтобы не напороть глупостей. А если не покажет - буду пороть :)

далле ты про вариант 1 говоришь:

В то же время, такая система хотя бы частично останется работоспособной при сбое/отказе ИП320
Дык и вариант 2 такое обещает! Не вижу разницы. Отказал ИП320. Ослеп оператор и с параметрами не может работать. Но 99% времени с параметрами никто не работает. Есть дополнительные кнопки (для грубых операторских рук) и лампочки на шкафу. Работай на здоровье! И какая разница, то ли ПЛК периодически запрашивает у АЦП данные, то ли АЦП их периодически сбрасывает в ПЛК?



А как быть с тем, что кроме АЦП в этой системе есть еще ПЛК и панель, которые все равно без компьютера не запрограммировать?...
Или по условиям задачи необходимо какие-то отдельные рабочие настройки АЦП оперативно изменять?
Именно! Панель - то при выпуске и все.
Но по условиям моей задачи на объекте происходит практически обязательное конфигурирование АЦП. Причем, это делается не только при пуско-наладке, но и потом - персоналом заказчика. И, поверь человеку, который по телефону не один десяток раз руководил процессом, очень важно, чтобы делалось все без компа.
Ты просто не представляешь, в каких "полевых" условиях все это выполняется. На вопрос: "У вас тестер есть?" слышишь смущенное сопение в трубке :)

drvlas
05.11.2010, 17:02
И как он должен отличить ситуацию "мастер умер" от ситуации "мастер жив, но измеряемые/вводимые параметры остаются неизменными"?
Ну, фиг его знает. Например, АЦП записывает нечто новенькое и битик такой неприметный "есть новости!". А ПЛК сбрасывает этот битик всякий раз по вычитке результатов. И если битик никто не вздрочит снова - умер Мастер :( Либо связи нет. А какая разница? Кричим караул и отказываемся работать.
Где-то так.

Там еще могут быть и не быстроизменяющиеся результаты измерения, а что-то другое. Я обдумаю. И выкладу свою концепцию на обсуждение. Хотя обсудителей здесь маловато. Тихое место...

drvlas
05.11.2010, 17:05
2 Валенок:

За пример спасибо! Еще не рассмотрел, вопросы будут.

Но вот такого я не понимаю:

алгоритм работы должен предусматривать любой вариант развития ситуации, или возможность быстрой доработки для этого.
Это общие слова, извини! Почему вариант АПЦ(Мастер) - ПЛК(Слейв) как-то проигрывает в приведенном тобой замечании?

Еще раз: я не настаиваю на варианте слейвового ПЛК. Я пробую разобраться. что в этом плохого.

drvlas
05.11.2010, 17:53
дык в эту, как его, эппзу, фактическая запись происходит только при пропаже питания.
то есть, когда выключается питание, плк это узревает и, непрерывно питаясь от своего аккумулятора, по-быстренькому сохраняет в эппзу все переменные с ключевым словом Retain? и никогда раньше?
аналогично, при включении питания все области Retain заполняются из эппзу - и все?
это можно где-то прочесть? мож оно и не страшно, может даже и правильно, но как-то непривычно. по сути, получается, что свободного доступа к эппзу из программы нет?

drvlas
05.11.2010, 20:03
вот я посмотрел, что бы такое назвать, близкое по интеллекту к моему ацп. взял овеновский мв110-2а, а там только слейв. посмотрел еще парочку подобных устройств - все только слейвы.
и я подумал: наверное реализация мастера намного сложнее? если да, то у меня пупок развяжется свой ацп приноровить. а выпускаемые промышленно и не делают мастерами (поэтому же?)...

увы! значит я был наивен и неправ. ну, теперь хоть понял. мастером зря не назначают. учить его долго надо :)

ок, что из того, что наш ацп будет слейвом? все равно мне надо его конфигурировать не от компа.
а что, всякие там мв110-2а не могут принять от плк100 некую команду, по которой изменят, например, свой коэффициент преобразования на пол-шишечки? то есть, прокалибруются. они, как я понял, поставляются с некоей прогой-конфигуратором и от нее все можно сделать - изменить параметры и записать их. неужели потом в протоколе нет команд, по которым можно изменять параметры от плк?

Terrano1992
05.11.2010, 20:14
завести полную копию всех Retain-параметров и работать с ней. А потом заносить измененные (точнее - предназначенные для запоминания) значения в ту область, где у меня переменные, обозначенные как Retain.
Если есть желание отделить рабочий набор параметров от сохраняемых настроек - можно и так поступить. Правда, разбираться с тем, какие из них были изменены, а какие нет, вряд ли есть смысл. Просто копируем весь набор.

У меня есть великолепный АЦП, который работает не по Модбасу. Если научу его модбасить или разберусь, как заставить ПЛК общаться с нестандартными протоколами (я уже видел ссылки на библиотеку NMU или как там ее) - то лучшего АЦП мне и не надо.
Ну, если этот чудо-АЦП такой умный, что может быть мастером - на здоровье. Останется только разрулить конфликты (когда два устройства имеют возможность писать в один и тот же регистр) между двумя "мастерами", которые и не подозревают о существовании друг друга. Либо убедиться, что такие конфликты в принципе невозможны.

то есть, когда выключается питание, плк это узревает и, непрерывно питаясь от своего аккумулятора, по-быстренькому сохраняет в эппзу все переменные с ключевым словом Retain? и никогда раньше?
аналогично, при включении питания все области Retain заполняются из эппзу - и все?
Ну, примерно так. Хотя какая разница, как именно это реализовано в конкретной модели контроллера? ОВЕН делает так, Simatic как-то иначе, Delta своим методом... Ну и какая в конечном счете разница прикладному программисту? Пусть эти Retain'ы внутри контроллера хоть гномики нанозубилами на кремниевых пластинах высекают, лишь бы их значение сохранилось после пропажи и повторной подачи питания... А о том, чтобы эти кремниевые скрижали подольше служили, уже разработчики контроллера позаботились.

Terrano1992
05.11.2010, 20:23
наверное реализация мастера намного сложнее?
правильная догадка... намного сложнее, и вычислительных ресурсов гораздо больше требует.

а что, всякие там мв110-2а не могут принять от плк100 некую команду, по которой изменят, например, свой коэффициент преобразования на пол-шишечки? то есть, прокалибруются.
Могут. Где-то в тех же "полезностях" (или отдельной темой на форуме) даже такой пример был, с конфигурированием модуля через ПЛК.

drvlas
05.11.2010, 20:52
начинаю прозревать. спасибо за внимание и терпение!

попробую подвести промежуточные итоги.

1) по экранам.

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

экрана меню может не быть вовсе. если экранов всего 4-5, то юзер добредет куда следует.

2) динамические регистры.

здесь подход с подбрасыванием в некий "регистр, из которого инфо попадает на это место экрана". подбрасывает туда плк, а ип320 просто делате то, что его научили - выводит этот регистр на экран. а возле него ип320 научен выводить динамический текст. номер этого текста плк тоже подкинет тот, что нужно - и будет нам и название, и значение параметра на экране.
а чтобы значение еще и нужный формат имело, мы и экран переключим на один из нескольких - в одном приготовлен формат ххххх, в другом хххх.х, в третьем ххх.хх и так далее. юзер и не знает, что работает с несколькими.

если ничего не изменится после внимательного рассмотрения примера от валенка, то все нормально. так и будет.

3) объем памяти ввода-вывода.

ресурсов для работы с несколькими десятками параметров - более чем достаточно. я могу все параметры обозвать Retain и как-то они сохранятся после выключения питания. те из них, которые я принципиально не хочу писать без воли оператора, я буду использовать копии в обычном озу и только их переписывать в ту область, которую обозвал Retain, и которая сохраняется неким чудесным образом (уже без воли оператора).

4) ерзание запятой

про изменение представления дробного числа при изменении его значения ответа я не получил. но будем смотреть по жизни. скоро приедет из гонконга мой преобразователь и включу ип320 в живую.

5) работа плк с ип320 и с ацп. доступ у параметрам ацп от ип320 и их изменение операторм с панели.

тут дискуссия ушла в мою дурную идею про дабл-слейв плк и вопрос остался за бортом. думаю, что мне нужно собрать мысли и все станет на свои места.

возвращаемся к обычной системе:
ип320 мастре - плк слейв
плк мастер - ацп слейв.

то есть, предположительно, плк-слейв предоставляет ип320 свою область ввода-вывода и в ней есть регистры, в которых всякая инфо для и совместной работы (груюо говоря, праметры самого плк).
тот же наш плк работает с ацп мастером и в том ацп есть область, которая доступна мастеру. это параметры и результаты работы ацп. все те параметры, которые нужны для их просмотра и изменения с панели ип320, наш плк вытягивает себе и укладывает в область ввода-вывода, которая доступна мастеру, товарищу ип320. изменение параметров как-то отслеживается и плк вовремя бросает эту инфо своему слейву - ацп в его область регистров.

вот так я понял. надеюсь, сильно не напутал, иначе ткните сразу.

еще раз благодарю и ухожу в осмысление.