SIEMENS, DF&PD

Предыдущее посещение: Вт июл 05, 2016 3:31 Текущее время: Вт июл 05, 2016 3:31

Часовой пояс: UTC + 3 часа




 [ Сообщений: 96 ]  На страницу Пред.  1, 2, 3, 4, 5

Использование промежуточных DB между входами/выходами и программой?
Хорошо 63%  63%  [ 57 ]
Плохо 16%  16%  [ 15 ]
Без разницы 20%  20%  [ 18 ]
Всего голосов : 90
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 03, 2012 10:18 
Не в сети
Это точно не человек

Зарегистрирован: Вт май 03, 2005 17:11
Сообщения: 3547
Похоже обсуждение носит "религиозный" характер, иналицо попытки обращения собеседника в свою религию. :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 03, 2012 10:37 
Не в сети
Писатель со стажем

Зарегистрирован: Пт фев 05, 2010 9:26
Сообщения: 505
Откуда: Moscow
А на 1200 контроллере блоки Optimaized есть. Их основная фича - нет адреса у переменных. Компилятор их как бы сам раскидывает по памяти,как ему это удобно. Что вообщем-то приближает языки Сименса к высокоуровневым языкам.
Я бы еще добавил глобальный ДБ, объявляя переменные в котором, уже в тексте программы нигде не надо писать имя этого ДБ. Что-то вроде "Header" на C++. Но можно и без этого, если PLCTag могли бы ссылаться на область памяти DB
Вообщем абсолютная адресация - это моветон, хоть без этого и жить пока не получается :)
Ну а как я отношусь к программированию без промежуточных DB догадаться не сложно :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 03, 2012 11:46 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн окт 30, 2006 16:27
Сообщения: 2265
Откуда: Украина, Днепродзержинск
А как по мне, то использование абсолютной адресации позволяте хоть как-то держать порядок в программе, да и упрощает, зачастую, время поиска всяки нехороших вещей (уже неоднократно на форуме были посты, где вопрошающий интересовался как ему найти место в программе, где что-то устанавливается/сбрасывается - при косвенной адресации это просто жуть).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 04, 2012 12:17 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 851
Откуда: Санкт-Петербург
Serex писал(а):
А на 1200 контроллере блоки Optimaized есть. Их основная фича - нет адреса у переменных. Компилятор их как бы сам раскидывает по памяти,как ему это удобно.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 04, 2012 14:12 
Не в сети
Возможно это нечеловек

Зарегистрирован: Пн окт 30, 2006 16:27
Сообщения: 2265
Откуда: Украина, Днепродзержинск
Александр В.. писал(а):
как тогда понять, что работаешь в программе с нужным сигналом?
Вот и я о том же.
Всё таки не надо в крайности бросаться при выделении свободы для среды разработки.
Serex писал(а):
Компилятор их как бы сам раскидывает по


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2012 16:23 
Не в сети
Писатель со стажем

Зарегистрирован: Пт фев 05, 2010 9:26
Сообщения: 505
Откуда: Moscow
Александр В.. писал(а):
у входного сигнала на модуль DI нет адреса? как тогда понять, что работаешь в программе с нужным сигналом?

Для DI есть абсолютный адрес в области памяти I. Но обращаться к нему по абсолютному адресу проблематично. Редактор (в ТИАПортале) все время предлагает тебе символьное автоматически созданное имя, если ты еще не создал для этого адреса символьного имени. Если имя для адреса уже создано, то редактор будет введенный тобой абсолютный адрес постоянно заменять на символьный. В редакторе SCL по-моему уже вообще не возможно ввести абсолютный адрес, редактор его заменит или выругается.

Цитата:
при косвенной адресации это просто жуть

Не косвенная, а символьная адресация. Косвенная - это взятие переменной по адресу, задаваемому другой переменной.

В ДатаБлоках Optimized нет ничего плохого, даже очень удобно. А поиск Cross-Reference на мой взгляд в портале весьма хорош.

Цитата:
А как по мне, то использование абсолютной адресации позволяте хоть как-то держать порядок в программе,

Это вопрос для отдельной ветки форума. Я никаких преимуществ не вижу в абсолютной адресации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2012 16:30 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 851
Откуда: Санкт-Петербург
адресное или символьное обращение к переменной - это понятно
но ведь в данной теме обсуждается перенос массивов сигналов из IO образа процесса ПЛК в Shared DB и наоборот, и работа в программе с этими данными


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2012 18:27 
Не в сети
Писатель со стажем

Зарегистрирован: Пт фев 05, 2010 9:26
Сообщения: 505
Откуда: Moscow
Александр В.. писал(а):
адресное или символьное обращение к переменной - это понятно
но ведь в данной теме обсуждается перенос массивов сигналов из IO образа процесса ПЛК в Shared DB и наоборот, и работа в программе с этими данными

Ну так возможности символьной адресации в Shared DB - это одна из причин, чтобы переносить.
Например в PLCTag вы не сможете создать такой тип данных, как Array или Struct.
А может быть я бы хотел обрабатывать входа, как элементы массива или у меня входа удобно сгруппировать в структуру, так как они повторяются по смыслу через каждые три входа.
Также нельзя в PLCTag создавать переменные более 4 байт, такие например, как LREAL.
Именно поэтому область памяти DB наиболее приближена в высокоуровневому программированию. Память образов процесса является наоборот аппаратно-зависимой и негибкой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2012 19:36 
Не в сети
Писатель со стажем

Зарегистрирован: Пн июл 06, 2009 9:37
Сообщения: 851
Откуда: Санкт-Петербург
Serex писал(а):
Ну так возможности символьной адресации в Shared DB - это одна из причин, чтобы переносить. Например в PLCTag вы не сможете создать такой тип данных, как Array или Struct.
А может быть я бы хотел обрабатывать входа, как элементы массива или у меня входа удобно сгруппировать в структуру, так как они повторяются по смыслу через каждые три входа. Также нельзя в PLCTag создавать переменные более 4 байт, такие например, как LREAL.

1. чем не подходит адресация по Symbol Table? там входу i2.4 можно задать символьное имя Pump_03_SB_Start
2. входные данные от процесса есть входные данные, с чем вы собираетесь объединять в структуру сигнал "Задвижка открыта"?
3. повторяются по смыслу? не от того ли что механизмы типовые? =)
знаю, что вы предпочитаете структуры в DB типа I_Data.Pumps.Pump_03.SB_Start
4. LREAL не относится к IO Process Image ведь, это внутренняя структура данных

как вы переносите данные в DB? мне интересно. BLKMOVE или в цикле с инверсией и фильтрацией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн авг 06, 2012 22:14 
Не в сети
Писатель со стажем

Зарегистрирован: Пт фев 05, 2010 9:26
Сообщения: 505
Откуда: Moscow
Александр В.. писал(а):
1. чем не подходит адресация по Symbol Table? там входу i2.4 можно задать символьное имя Pump_03_SB_Start
2. входные данные от процесса есть входные данные, с чем вы собираетесь объединять в структуру сигнал "Задвижка открыта"?
3. повторяются по смыслу? не от того ли что механизмы типовые? =)
знаю, что вы предпочитаете структуры в DB типа I_Data.Pumps.Pump_03.SB_Start
4. LREAL не относится к IO Process Image ведь, это внутренняя структура данных

как вы переносите данные в DB? мне интересно. BLKMOVE или в цикле с инверсией и фильтрацией?

1. Что такое Symbol Table в ТИАПортале ее нет. Видимо это тоже самое, что и PLCTags. Я ее разумеется использую, так как без этого невозможно читать входа и записывать в выходы.
2. Три сигнала "Задвижка открыта" "Задвижка закрыта" "Задвижка в аварии" можно было бы объединить в структуру, а структуру назвать именем задвижки. Обращение в таком случае было бы вида "Valve1.Open" и могло быть типизировано. К сожалению этот способ в Simatic получается неудобным и излишне съедает память.
3. Ну да :) Об этом ответ выше. Причем опять же не в Simatic, создавая объект, к нему автоматически бы подтягивались все данные и процедуры из уже заранее созданного класса, который можно таскать из одного проекта в другой.
4. Дело не в том, внутренняя или внешняя эта структура, а в том, что область памяти IO Process Image аппаратнозависимая и в Simatic она не может содержать переменные более 4 байт. Соответственно возникают множество ограничений в программировании.
5. Данные переношу из входов в начале OB1 и в выхода в конце OB1. Это может быть по байтное копирование или с обработкой аналогового значения или еще как-то в зависимости от ситуации. Как проектировщики и монтажники входа на контроллер по заводят, так их и прописываю, не физически же переделывать )).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 07, 2012 20:40 
Не в сети
Начинающий писатель

Зарегистрирован: Пн ноя 14, 2011 22:43
Сообщения: 62
BETEP59 писал(а):
Если сможете подтвердить свою "мысль" работающим примером, т.е. исходным кодом, который выполняет абсолютно ту же функциональность, но является "Не_обфусцированным", то будет Вам респект и уважуха. :)


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

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


Если бы значения сигналов копировались один к одному, тогда еще можно было бы считать что нет проблем. Но после возможных инвертирования и таймеров получается просто проект без таблицы символов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 24, 2012 15:59 
Не в сети
Начинающий писатель

Зарегистрирован: Пт апр 11, 2008 8:07
Сообщения: 64
Откуда: Россия, Санкт-Петербург
Я ЗА Дата блоки! и не слушайте тех кто говорит, что привязывать входные данные модуля к логике - это правильное решение.

Приведу веский аргумент

У вас стоит 10 контроллеров управляющих 10 разными агрегатами, вам надо написать групповое регулирование для 10 этих агрегатов.
Как вы будете команды передавать на эти 10 агрегатов? :)

P.S. задумались? и правильно

А для облегчения дальнейших всех своих действий лучше потратить время на создание Блоков Данных, чем потом Мучаться,
П.С. при передаче проекта опять же можно распечать блоки данных с комментариями и другая служба которой нужны данные на свой контроллер, сможет понять какой блок данных им нужен для обработки информации.

И ещё для облегчения жизни разработаны массивы, используйте их для создания большого объёма данных.

Удачи и успехов! ;)

//Маленький пример


Код:
//VERSION: 23.11.2012
//TITLE: Дата Блок для Алгоритма включения / отключения ЗВМ ГРАМ централизованного управления
//AUTHOR: Chebykin_AG

DATA_BLOCK DB6

STRUCT
//Входные парамаметры
   
BLOCK_ZVM:        BOOL;    // Блокировка ЗВМ
DIS_CMD:          BOOL;    // Команда диспетчера 1 - вкл. 0 - откл.
ARCHM_CMD_ON:     BOOL;    // АРЧМ команда включения
ARCHM_CMD_OFF:    BOOL;    // АРЧМ команда выключения
ARCHM_CMD_FAULT:  BOOL;    // АРЧМ ошибка достоверности, возникник когда одновременно с АРЧМ придёт команда на включение и выключение
ARCHM_LINK_FAULT: BOOL;    // АРЧМ неисправность связи с ЦС

//Выходные параметры

SIGNAL_ZVM:       BOOL;    //Сигнал в модуль связи
SIGNAL_DIS_TC:    BOOL;    //ТС централизованный вкл./выкл. Диспетчер или Блокировка ЗВМ
SIGNAL_ARCHM_TC:  BOOL;    //ТС централизованный вкл./выкл. АРЧМ
SIGNAL_ZVM_TC:    BOOL;    //Бит в логику ЗВМ централизованный вкл./выкл.

END_STRUCT
BEGIN
END_DATA_BLOCK


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 25, 2012 7:55 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Пн фев 20, 2012 8:35
Сообщения: 1069
у нас на заводе много разного оборудования - итальянского, чешского, немецкого, русского на сименсе... везде идет вот такая маскировка, только в основном не DB, а меркеры. Сам особо не пойму для чего... Вот ток один человек тут написал что нужно всего лишь в одном месте менять адрес тогда... плюс канеш, но не большой...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 25, 2012 14:13 
Не в сети
Известный Писатель

Зарегистрирован: Ср апр 09, 2008 13:41
Сообщения: 417
Откуда: Питер
Пора заводить ветку "Какого размера лучше ботинки?":
1. 45;
2. 43;
3. 37;
4. 52.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 26, 2012 8:01 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Пн фев 20, 2012 8:35
Сообщения: 1069
vovan_ писал(а):
Пора заводить ветку "Какого размера лучше ботинки?":
1. 45;
2. 43;
3. 37;
4. 52.

какой у вас искрометный юмор


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 26, 2013 7:16 
Не в сети
Известный Писатель

Зарегистрирован: Вт янв 20, 2009 13:44
Сообщения: 343
proskur писал(а):
ProFan писал(а):
proskur писал(а):
Всегда подкрепляйте свою аргументацию конкретными визуальными примерами...
Такие дерьмовые проекты править противно, а вы предлагаете выкладывать на общее обозрение.
p.s. Мое мнение, что количество операции с блоками данных должно быть как можно меньше, так как это всё жрёт место и сильно цикл увеличивает.
Я ещё раз предлагаю выкладывать фактические аргументы - в родительской теме приводились картинки сводящие в 0 некоторые заблуждения
Для современных процессоров (не 400-х :)) нет разницы по скорости при обращении к меркеру или именованному элементу БД
Изображение
Делаем Демо проект в 2-х вариантах для N процессоров 313/315/...417H/...
выкладываем копии экранов со сравнением байто-время затрат...
Вернёмся к чьим-то заблуждениям. Вас не смущает то факт, что в таблице присутствуют нули. На вечный двигатель смахивает, что-то делаем, а затрат нет. Во всех процессорах на выполнение операций затрачивается время, и на это время влияет не только тип инструкции и область памяти (L,M,DB), но размер области памяти (B,W,DW). Есть, конечно, исключения для всех 400(не H) и некоторых 300 время выполнения с памятью L и M одинаковое, при одинаковой длине (B,W,DW).
Для теста использовал следующую конфигурацию ЦПУ: 315-2DP (315-2AG10-0AB0) FW-2.6.11, HW-4. Результ для размерности Byte, Word. 20 загрузок повторили 10000 раз. Время выполнения не является чистым (в это время входит счётчик и переход по метке), но для оценки можно пренебречь, т.к. одинаково для всех вариантов.
Цитата:
B, ms W , ms
L 145 170
M 90 120
DB 580 640
OPN, DB 390 445
Код для последней строчки
Код:
      CALL  "TIME_TCK"
       RET_VAL:=#t

      L     0
      T     MW     0

beg:  OPN   "DB1"

      L     DBB    0                    // 01
      L     DBB    0                    // 02
      L     DBB    0                    // 03
      L     DBB    0                    // 04
      L     DBB    0                    // 05
      L     DBB    0                    // 06
      L     DBB    0                    // 07
      L     DBB    0                    // 08
      L     DBB    0                    // 09
      L     DBB    0                    // 10
      L     DBB    0                    // 11
      L     DBB    0                    // 12
      L     DBB    0                    // 13
      L     DBB    0                    // 14
      L     DBB    0                    // 15
      L     DBB    0                    // 16
      L     DBB    0                    // 17
      L     DBB    0                    // 18
      L     DBB    0                    // 19
      L     DBB    0                    // 20

      L     MW     0
      +     1
      T     MW     0
      L     10000
      >=I   
      JCN   beg

      CALL  "TIME_TCK"
       RET_VAL:=#t_1

      A     M     10.0
      BEC   

      L     #t_1
      L     #t
      -D   
      T     MW     4

      SET   
      S     M     10.0

Для H-систем время выполнения не зависит от области памяти (L,M,DB), зависит только от длины больше слова (W), опять же при работе с блоками данных.
Все сравнения проводились для инструкции L (Load). Если использовать косвенную адресацию для загрузки, указанные времена будут ещё больше.
Так что мой предыдущий пост остаётся в силе, но с поправкой на H системы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 96 ]  На страницу Пред.  1, 2, 3, 4, 5

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group