Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2020, 04:56   #601
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от dsboss Посмотреть сообщение
Чтобы быстро перейти к блоку от которого выходит связь...
... надо нажать на связи ПКМ и выбрать трасировку, для этой задачи поиск не нужен.
ViS вне форума   Ответить с цитированием
Старый 16.11.2020, 11:29   #602
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от dsboss Посмотреть сообщение
Может уже есть такое, но не встречал: мне порой не хватает поиска по именованным связям на поляне, особенно если проект большой. Чтобы быстро перейти к блоку от которого выходит связь, или когда дублируется имя и приходится искать где дублируется.
Одинаковые имена задать невозможно, переход по пробелу в 3.33 или трассировка по ПКМ в нём и более ранних лоджиках.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 30.11.2020, 16:48   #603
MadKid
Member
 
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Небольшие хотелки в SMLogix

Возможно, уже было, но не перечитывать же всю ветку.

Очень хотелось бы иметь синхровыход на входных modbus-переменных. То есть, чтобы мы были оповещены о факте записи во вход независимо от того, изменилось ли значение.

Это даст возможность реализовывать командные регистры.

Последний раз редактировалось MadKid, 30.11.2020 в 17:03
MadKid вне форума   Ответить с цитированием
Старый 17.12.2020, 20:59   #604
Дядя Вова
Member
 
Регистрация: Jul 2020
Сообщения: 63
Благодарил(а): 7 раз(а)
Поблагодарили: 3 раз(а) в 3 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Выпадающее меню со списком используемых IP.
См.рис.
Миниатюры
Нажмите на картинку для увеличения

Название:  1.png
Просмотров: 34
Размер:  18.6 Кбайт  
Дядя Вова вне форума   Ответить с цитированием
Благодарность от:
Старый 18.12.2020, 08:32   #605
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от MadKid Посмотреть сообщение
Возможно, уже было, но не перечитывать же всю ветку.

Очень хотелось бы иметь синхровыход на входных modbus-переменных. То есть, чтобы мы были оповещены о факте записи во вход независимо от того, изменилось ли значение.

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


Добавлено через 35 секунд


Цитата
Сообщение от Дядя Вова Посмотреть сообщение
Выпадающее меню со списком используемых IP.
См.рис.
+100500
поддержу


Добавлено через 2 минуты


Цитата:
Сообщение от Arsie Посмотреть сообщение
Одинаковые имена задать невозможно, переход по пробелу в 3.33 или трассировка по ПКМ в нём и более ранних лоджиках.
м.б. есть возможность вытащить в отдельное окошко все связи проекта? типа проводника для фбд что-то..
и пусть при клике выделяется/фокусируется на источнике связи. оттуда уже можно перейти по входам.. ну или раскрывающийся список с +плюсиком и там уже весь блэкджек с красотками


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 18.12.2020, 10:40   #606
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от LordN Посмотреть сообщение
м.б. есть возможность вытащить в отдельное окошко все связи проекта? типа проводника для фбд что-то..
и пусть при клике выделяется/фокусируется на источнике связи. оттуда уже можно перейти по входам.. ну или раскрывающийся список с +плюсиком и там уже весь блэкджек с красотками
Мысль интересная...


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.12.2020, 12:25   #607
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
Мысль интересная...
вот только поиск бы туда сразу нужен.
и в проводник с фбд - тоже


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 18.12.2020, 12:29   #608
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от LordN Посмотреть сообщение
вот только поиск бы туда сразу нужен.
и в проводник с фбд - тоже
Я уже продумал, идеальным был бы фильтр по деревьям (ФБД, макросы, железо, проводник), а в проводник также добавить и связи, которые также можно фильтровать и драг-н-дропать на входы блоков на поляне.

Получился бы хороший инструмент. Но...


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.12.2020, 13:00   #609
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
Я уже продумал, идеальным был бы фильтр по деревьям (ФБД, макросы, железо, проводник), а в проводник также добавить и связи, которые также можно фильтровать и драг-н-дропать на входы блоков на поляне.

Получился бы хороший инструмент. Но...
но без поиска по окну будет так же хреново как и сейчас


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 18.12.2020, 15:10   #610
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от LordN Посмотреть сообщение
но без поиска по окну будет так же хреново как и сейчас
А сейчас там нету фильтра текстового. Проводник лично у меня отключен всегда за своей бесполезностью.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.12.2020, 18:31   #611
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 125
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
А сейчас там нету фильтра текстового. Проводник лично у меня отключен всегда за своей бесполезностью.
а, вы про текстовый фильтр.. тогда наверное да.
и чтоб в том дереве все причиндалы были - входы-выходы, весь суп-набор, со всеми мемзами, модбасами связями и т.д. и т.п.

было б весьма недурственно


__________________
C уважением, LordN
LordN сейчас на форуме   Ответить с цитированием
Старый 19.01.2021, 16:29   #612
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Понимаю, что это "большая" хотелка... Но очень хотелось бы иметь блок "макрос для программирования".

Суть - снаружи это простой макрос с обычными входами/выходами.
А при открытии этого макроса открывается не обычное поле для FBD, а текстовый редактор у которого слева поле для входов, а справа поле для выходов.
Не надо никаких наворотов в виде объектно-ориентированных фишек. Всё что надо - конструкции:
- if else
- for ()
- switch (case)
- пользовательские функции/процедуры, которые можно вызывать в данном макросе
- массивы
- преобразование типов
- while do (хотя для подстраховки от входа в бесконечные циклы можно и не реализовывать)


Например есть макрос расчета значения ЦАП для тиристорного регулятора:



Как этот макрос выглядит внутри сейчас:



А как хотелось бы работать с этим макросом:




Понимаю, что для вентиляции и ИТП это конечно не нужно.
Но для общепромышленных целей такого блока мне лично очень не хватает.
Makrel вне форума   Ответить с цитированием
Старый 19.01.2021, 16:54   #613
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от Makrel Посмотреть сообщение
Понимаю, что это "большая" хотелка... Но очень хотелось бы иметь блок "макрос для программирования".
Нет, мы пока не планируем внедрять другие языки программирования в SMLogix


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 29.01.2021, 14:20   #614
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
Нет, мы пока не планируем внедрять другие языки программирования в SMLogix
Очень жаль. Это могло бы расширить область применений, где удобно использовать контроллеры Segnetics.
Ведь не зря существуют отдельно стандарты разработки FBD и обычное программирование. Если бы одно из них было во всём лучше другого, то осталось бы только лучшее.
А так, FBD упрощает простые задачи, но при этом усложняет сложные. А программирование упрощает сложные задачи, но усложняет простые.
Поэтому если в FBD добавить возможность программировать свои "блоки-макросы" - это бы совместило достоинства обоих подходов к разработке.

Потому что FBD становится настоящим геммороем, когда дело доходит до множественных ветвлений в одном алгоритме (когда в зависимости от разных условий исполнительное устройство должно работать по-разному) , или когда надо что бы одно исполнительное устройство могло работать по многим сильно различающимся алгоритмам. Или в целом вся система должна уметь работать сразу по 4 и более разным алгоритмам. А это же в "общепромышленном применении" обычное дело.
Работа ModBus "из коробки", SMArt, прочее "из коробки" - это большие плюсы контроллеров Segnetics. Но отказываться от всего этого, что бы получить возможность "нормально" программировать - это так себе вариант. Тогда ведь проще взять сразу контроллер, приспособленный для программирования.



Тогда более мелкие хотелки:
1) Альтернативное перемещение по "рабочему полю"
В SMLogix никак не задействована средняя кнопка мышки. Почему бы не повесить возможность перемещения рабочего поля на неё? Т.е. зажимаем среднюю кнопку мыши и движение мышки вниз перемещает рабочую область вверх, движение мышки влево перемещает рабочую область вправо.
Потому что сейчас мне лично удобнее всего перемещаться по полю зажав ЛКМ в окне навигации и перемещая рамку рабочей области в нужное место. А перемещаться скроллом мышки или стрелками неудобно.

2) Очень напрягает отсутствие возможности изменить масштаб рабочей области. Приходится "скучивать" блоки, что бы иметь возможность видеть на одном экране связку блоков, которые реализуют какую-то общую функцию.
А так уменьшил масштаб, пока работаешь над "большой функцией", когда надо вернул на 100%.
И если сделать перемещение по полю как описано в пункте выше, то можно масштабирование повесить на скролл мышки.
Это должно повысить удобство работы в SMLogix.
А для тех кто привык к текущему интерфейсу, можно в настройках сделать переключатели режимов скролла.
Makrel вне форума   Ответить с цитированием
Старый 30.01.2021, 19:21   #615
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Вот например как выглядит в Houdini "макрос - блок программирования":
Сравнение "макроса" расчетов, сделанного в визуальном программировании (FBD) с аналогичным "макросом", но сделанным "блоком программирования"



Примечание 1:
Цитата
Сообщение от Википедия
Houdini — профессиональный программный пакет для работы с трёхмерной графикой. Главное отличие данного пакета в том, что он является средой визуального программирования.
Примечание 2:
Меню со списком "блоков" автор руководства вызывает просто нажимая "Tab". И сразу набирает часть названия блока, который хочет вставить на рабочее поле... И в списке остаются только блоки, содержащие введенную строку в названии. Очень очень удобно.
Makrel вне форума   Ответить с цитированием
Старый 01.02.2021, 10:49   #616
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от Makrel Посмотреть сообщение
Очень жаль.
Хотелось бы вести диалог с человеком, который понимает разницу между ПЛК и "программным пакетом для работы с трёхмерной графикой" и в курсе существования IEC61131. А также в каких условиях применяется первое и второе.

Если вы думаете, что я не знаю, что такое IL/ST/LD/SFC и ввод названия блока - это изобретение команды разработчиков Houdini, то ваши предположения неправильны.


PS. Также лично мне очень не нравится насаждение своих привычек работы со словами "так будет лучше". Если вам интересно - поройтесь в архивах форума, вы далеко не первый, кто заблуждается в своих желаниях "хочу как в CAD/CAM-системах" - перетирать всё заново у меня нет ни малейшего желания.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 02.02.2021, 12:00   #617
MadKid
Member
 
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от LordN Посмотреть сообщение
уже не раз говорили что этого делать не будут, т.к. есть есть возможность использовать модбас с синхровходом. у них как раз и есть синхровыходы
Вы меня не так поняли. Я знаю, что у устройств-слэйвов есть вариант с опросом и с явной синхронизацией. Но я не об этом. Я говорю о случае, когда сам контроллер является слэйвом, и я хочу прислать команду сверху. Например, запустить в контроллере алгоритм теста устройства, или сбросить аварию.

В нынешнем варианте верхнему устройству придётся сделать две записи. Это некрасиво, неудобно и даже чревато.
MadKid вне форума   Ответить с цитированием
Старый 02.02.2021, 17:34   #618
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от MadKid Посмотреть сообщение
Вы меня не так поняли. Я знаю, что у устройств-слэйвов есть вариант с опросом и с явной синхронизацией. Но я не об этом. Я говорю о случае, когда сам контроллер является слэйвом, и я хочу прислать команду сверху. Например, запустить в контроллере алгоритм теста устройства, или сбросить аварию.

В нынешнем варианте верхнему устройству придётся сделать две записи. Это некрасиво, неудобно и даже чревато.
Это можно сделать так:


Только блок ADD(int) обязательно должен быть или правее или ниже блока CMP(int).
Makrel вне форума   Ответить с цитированием
Старый 04.02.2021, 15:13   #619
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
Хотелось бы вести диалог с человеком, который понимает разницу между ПЛК и "программным пакетом для работы с трёхмерной графикой" и в курсе существования IEC61131. А также в каких условиях применяется первое и второе.
Извиняюсь, если у Вас сложилось такое впечатление.
Давайте чтобы не было недопонимания немного расскажу о себе и почему я считаю, что могу сравнить удобство применения FBD-программирования или программирования в виде "ST - структурированный текст" (как это называется по IEC61131/МЭК 6-1131) в одном конкретном реальном случае общепромышленного использования.

В 2005 году я закончил БГУИР (бывший МРТИ - минский радиотехнический институт) по специальности "автоматическое управление в технических системах". По распределению попал на завод по производству синтетических алмазов. До прошлого года работал там и основной задачей было как раз обеспечивать работу АСУ. Там использовались ПЛК B&R System 2005 ( http://www.owen-spb.ru/catalog/br/ma...system2005.php ). Так вот за 15 лет работы мне много раз приходилось доделывать и переделывать ПО этого контроллера и встраивать разное новое оборудование в систему.
Какое-то время назад бывшие коллеги организовали в другом месте производство на таких же установках для синтеза алмазов. На старте у них всё управление было в ручном режиме.
Потом они прикупили контроллеры Segnetics, поскольку с ними могли начать что-то делать уже сами. И сделали некоторый полуручной режим управления нагревом. А потом пригласили меня, что бы сделать полноценную автоматизацию этих установок синтеза.
Так и состоялось моё знакомство с контроллерами Segnetics. За полгода неспешной работы (заниматься надо было далеко не только автоматизацией, и в связи со спецификой производства тестирование версий ПО невозможно было проводить часто - только раз в неделю, максимум два, а отсутствие эмуляции не позволило делать это без оборудования). Какое-то время назад доделал стабильную версии автоматизации этих установок со всем нужным базовым функционалом. И уже несколько раз кое-что доделывал/переделывал.

Именно поэтому я как раз могу сравнить "удобство и эффективность" программирования на практически одном и том же оборудовании контроллера с программированием на базе "ST - структурированный текст" (B&R System 2005) и контроллера с программированием на базе "FBD" (Segnetics SMH4).
И, увы, в моём конкретном случае сравнение далеко не в пользу FBD. Этим я с Вами и поделился выше. Написал какие именно неудобства возникли при использовании FBD в моём случае (необходимо реализовывать множественные ветвления в алгоритме работы оборудования) и как можно было бы эти недостатки устранить, сделав тем самым контроллеры Segnetics SMH4 нормально применимыми и для тех задач, которые надо было решать в моем случае.

И вот сейчас почитал про МЭК 61131-3 (IEC61131/3) и там именно это и пишут. То есть "жалобы" с которыми Вы сталкивались от других пользователей скорее всего связаны с тем же.
Цитата:
Сообщение от Arsie Посмотреть сообщение
вы далеко не первый, кто заблуждается в своих желаниях "хочу как в CAD/CAM-системах" - перетирать всё заново у меня нет ни малейшего желания.
Вот обратите внимание на выделенные жирным фрагменты:
Цитата
Сообщение от Энциклопедия АСУ ТП
Языки МЭК 61131-3 (IEC61131/3) появились не как теоретическая разработка, а как результат анализа множества языков, уже используемых на практике и предлагаемых рынку производителями ПЛК. Стандарт устанавливает пять языков программирования со следующими названиями:

структурированный текст (ST - Structured Text);
последовательные функциональные схемы (SFC - "Sequential Function Chart");
диаграммы функциональных блоков (FBD - Function Block Diagram);
релейно-контактные схемы, или релейные диаграммы (LD - Ladder Diagram);
список инструкций (IL - Instruction List).
Графическими языками являются SFC, FBD, LD. Языки IL и ST являются текстовыми.

В стандарт были введены несколько языков (а не один) для того, чтобы каждый пользователь мог применить наиболее понятный ему язык. Программисты чаще выбирают язык IL (похожий на ассемблер) или ST, похожий на язык высокого уровня Паскаль; специалисты, имеющие опыт работы с релейной логикой, выбирают язык LD, специалисты по системам автоматического управления (САУ) и схемотехники выбирают привычный для них язык FBD.

Выбор одного из пяти языков определятся не только предпочтениями пользователя, но и смыслом решаемой задачи. Если исходная задача формулируется в терминах последовательной обработки и передачи сигналов, то для нее проще и нагляднее использовать язык FBD. Если задача описывается как последовательность срабатываний некоторых ключей и реле, то для нее нагляднее всего будет язык LD. Для задач, которые изначально формулируются в виде сложного разветвленного алгоритма, удобнее будет язык ST.

Языки МЭК 61131-3 базируются на следующих принципах [Lewis]:

- вся программа разбивается на множество функциональных элементов - Program Organization Units (POU), каждый из которых может состоять из функций, функциональных блоков и программ. Любой элемент МЭК-программы может быть сконструирован иерархически из более простых элементов;
- стандарт требует строгой типизации данных. Указание типов данных позволяет легко обнаруживать большинство ошибок в программе до ее исполнения;
- имеются средства для исполнения разных фрагментов программы в разное время, с разной скоростью, а также параллельно. Например, один фрагмент программы может сканировать концевой датчик с частотой 100 раз в секунду, в то время как второй фрагмент будет сканировать датчик температуры с частотой один раз в 10 сек;
- для выполнение операций в определенной последовательности, которая задается моментами времени или событиями, используется специальный язык последовательных функциональных схем ( SFC);
- стандарт поддерживает структуры для описания разнородных данных. Например, температуру подшипников насоса, давление и состояние "включено-выключено" можно описать с помощью единой структуры "Pomp" и передавать ее внутри программы как единый элемент данных;
- стандарт обеспечивает совместное использование всех пяти языков, поэтому для каждого фрагмента задачи может быть выбран любой, наиболее удобный, язык;
- программа, написанная для одного контроллера, может быть перенесена на любой контроллер, совместимый со стандартом МЭК 61131-3.
Взято с: https://bookasutp.ru/Chapter9_3.aspx

Вот, представьте, у Вас задача просверлить что-то. Вы покупаете дрель. У неё в комплекте свёрла по дереву. Если надо сверлить дерево, то всё отлично. Но если у Вас стоит ЗАДАЧА просверлить металл? Если алюминий или другой мягкий метал, то в принципе можно и просверлить.
А если вам надо просверлить твердный металл? Наверно тоже можно просверлить и сверлом по дереву, но это будет сделать сложно. Очевидно, что в таком случае вы пойдете в магазин и захотите купить сверло по металлу... Но вдруг оказывается что производитель купленной дрели не делает свёрла по металлу и даже не планирует, а свёрла других производителей не подходят. Производитель считает, что "если вы привыкли сверлить металл свёрлами по металлу, то это проблема ваших привычек. Нашей дрелью и сверлом по дереву прекрасно можно сверлить и металлы...". Вы ведь вряд ли с этим согласитесь? Если надо просверлить несколько дырок, то можно и помучиться, раз уж дрель уже куплена. Но если много, то ведь правильным решением будет купить "нормальную" дрель со сверлами по металу и сделаеть свою работу не мучаясь.


Так вот. Для меня контроллер - это инструмент, с помощью которого мне надо решить определенные задачи. У этого "инструмента" могут быть, а могут и не быть разные "насадки", которые "заточены" под определенные задачи. Ведь не просто так в IEC61131 есть все 5 вариантов способов программирования контроллеров.

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

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

Если бы был универсальный язык программирования, которым было бы удобно решать АБСОЛЮТНО ВСЕ задачи, то он бы остался один в стандарте.

Для моей задачи "чистый" FBD очень плохо подходит. Вот и всё. Если бы была возможность реализовывать свои блоки FBD на базе "ST Структурированный текст", то проблемы не было бы. Сложные/разветвленные места реализовал бы отдельными блоками, которые написаны на "структурированном тексте", остальное на FBD.


Естественно, это только решение Вашей организации - целесообразно реализовать такое или нет.


Но для примера - в Нашей организации уже 3 раза серьезно обсуждался вариант перехода на другие контроллеры, которые поддерживали бы программирование "структурированным текстом". Как раз буквально вчера директор поднял этот вопрос третий раз. Но поскольку стабильная базовая версия уже есть, а свободного времени нет, сейчас переход не целесообразен. Но в будущем если возникнет необходимость автоматизировать что-то со "сложными разветвленными алгоритмами работы", мы однозначно не выберем контроллеры Сегнетик (просто из-за неэффективновности FBD для таких задач, сами контроллеры по-моему отличные).
Makrel вне форума   Ответить с цитированием
Старый 04.02.2021, 15:25   #620
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от Makrel Посмотреть сообщение
Извиняюсь, если у Вас сложилось такое впечатление.
Давайте чтобы не было недопонимания немного расскажу о себе и почему я считаю, что могу сравнить удобство применения FBD-программирования или программирования в виде "ST - структурированный текст" (как это называется по IEC61131/МЭК 6-1131) в одном конкретном реальном случае общепромышленного использования.
Спасибо за ваш труд и отдельное спасибо за вашу угрозу в конце этого труда, это моя любимая часть в общении с клиентами Но...


1) Посмотрите название темы. Поднятую вами тему возможно обозначить словом "небольшая"?

2) Вы уверены, что вы вообще обратились по адресу?) Здесь техническая поддержка Вам наверное с менеджерами нужно общаться, с руководством. Уж точно и 100% не со мной и 146% не на форуме.


Добавлено через 16 минут


Цитата
Сообщение от Makrel Посмотреть сообщение
Для моей задачи "чистый" FBD очень плохо подходит. Вот и всё. Если бы была возможность реализовывать свои блоки FBD на базе "ST Структурированный текст", то проблемы не было бы. Сложные/разветвленные места реализовал бы отдельными блоками, которые написаны на "структурированном тексте", остальное на FBD.
Вот этот отрывок мне интересен.

Раз уж вы так откровенны со мной, то я тоже немного расскажу о себе. Я по специализации обучения чистый программист, победитель или призёр многократных олимпиад по информатике/программированию. Студентом писал за деньги дипломы для "автоматчиков" и "программистов" во всяких питерских ГУ, АП и ИТМО, большинство технических предметов сдавал исключительно экстерном на всех курсах. В совершенстве знаю несколько ассемблеров, С/С++, Паскаль/Дельфи, Фортран и Бейсик (в том числе object и vba).

Можете мне рассказать о вашей задаче? Вот чтобы стало объективно видно, что FBD там ни к чёрту, а ST прямо вот самое оно? Я надеюсь, что я смогу более-менее непредвзято оценить ваши утверждения.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 04.02.2021 в 16:02
Arsie вне форума   Ответить с цитированием
Старый 05.02.2021, 16:11   #621
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
1) Посмотрите название темы. Поднятую вами тему возможно обозначить словом "небольшая"?
Да, я понимаю. В первом сообщении я ведь так и написал: "Понимаю, что это "большая" хотелка...". Но подходящей темы не нашёл, а создавать новую тему - это показалось как-то нескромным

Цитата:
Сообщение от Arsie Посмотреть сообщение
2) Вы уверены, что вы вообще обратились по адресу?) Здесь техническая поддержка Вам наверное с менеджерами нужно общаться, с руководством. Уж точно и 100% не со мной и 146% не на форуме.
Ну, я как-то наивно полагал, что у Вас команда. Т.е. общение есть и общие предложения/идеи как-то циркулируют. Простите, забылся что обычно в наших фирмах постсоветского пространства такое не в чести.


Цитата:
Сообщение от Arsie Посмотреть сообщение
Можете мне рассказать о вашей задаче? Вот чтобы стало объективно видно, что FBD там ни к чёрту, а ST прямо вот самое оно? Я надеюсь, что я смогу более-менее непредвзято оценить ваши утверждения.
Давайте попробуем. Вы определенно намного лучше меня специалист в FBD, а судя по представлению и в "классическом" программирование тем более.

В одной из задач надо было реализовать следующее:
Нужно изменять мощность нагрева по заданному графику. Графиков много, и под конкретные задачи выбирается свой график. Графики делаются технологами. В контроллер график поступает в виде набора точек: точка №1 («прибавка мощности от старта №1» , «время №1»), точка №2 («прибавка мощности от старта №2» , «время №2»), точка №3 … точка №40.
Вот это надо реализовать.

Алгоритм:
1) Определить на каком отрезке графика мы находимся по времени
2) Рассчитать требуемую прибавку мощности на этом интервале
3) Периодически на этом интервале производить корректировку
4) "Сигнализировать" дальше если дошли до последней точки, что бы отключить процесс


Структурированным текстом это делается достаточно просто и наглядно (для меня по крайней мере это и выглядит наглядно и достаточно просто):

Описание переменных:
Код:
TIMEPROC - общий таймер контроллера в секундах
Process_Timer - таймер процесса в секундах. При запуске режима Process_Timer = TIMEPROC. 
already_corrected - для того что бы не обновлять много раз в нулевую секунду данной минуты
process_power_minute - время в минутах от запуска процесса
GR_POW.POW / GR_POW.MTIME - массив значений мощность / время для точек графика
DELTA_POW_MINUTE - расчётная прибавка мощности в минуту на данном интервале графика
RAS_POW - текущая расчётная мощность нагрева
Код функции:
Код:
IF	(TRUNC((TIMEPROC - Process_Timer) / 60.0 ) - (TIMEPROC - Process_Timer) /  60.0) = 0	THEN  ; новая минута (таймер процесса в секундах делится на 60 без остатка)
	IF	already_corrected = NO		THEN							; в данную минуту уже производился пересчёт мощности?
		process_power_minute = UINT((TIMEPROC - Process_Timer) / 60)					; время от старта процесса в минутах
		IF	process_power_minute = GR_POW.MTIME[POINT_GR_POW+1]	THEN			; текущее время процесса в минутах равно времени следующей точки
			INC(POINT_GR_POW)									; перейти к следующему номеру точки графика
			IF POINT_GR_POW <> POINT_POW 		THEN					; если мы дошли до последней точки, то не рассчитывать дельту
				DELTA_POW_MINUTE = (REAL(GR_POW.POW[POINT_GR_POW+1]) - REAL(GR_POW.POW[POINT_GR_POW]))/(REAL(GR_POW.MTIME[POINT_GR_POW+1]) - REAL(GR_POW.MTIME[POINT_GR_POW])) ; рассчёт дельты, которая на этом отрезке графика будет прибавляться (отниматься) к текущей мощности каждую минуту
			ENDIF
		ENDIF
		IF	((RAS_POW + DELTA_POW_MINUTE) > 0)	THEN ; если с учётом корректировки мощность больше нуля, произвести корректировку (график может и уменьшать мощность)
			RAS_POW = RAS_POW + DELTA_POW_MINUTE
		ENDIF
		already_corrected = YES
		IF	 POINT_GR_POW >= POINT_POW - 1	THEN	; если мы дошли до последней точки, то отключить процесс
			end_of_process = YES
		ENDIF
	ENDIF
ELSE	
	already_corrected = NO							
ENDIF

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

Если знаете, как реализовывать подобное на FBD просто, было бы очень полезно увидеть.

Последний раз редактировалось Makrel, 05.02.2021 в 16:27
Makrel вне форума   Ответить с цитированием
Старый 05.02.2021, 17:18   #622
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от Makrel Посмотреть сообщение
Если знаете, как реализовывать подобное на FBD просто, было бы очень полезно увидеть.
12 минут с использованием копипаста.
Миниатюры
Нажмите на картинку для увеличения

Название:  Безымянный.png
Просмотров: 91
Размер:  28.7 Кбайт   Нажмите на картинку для увеличения

Название:  Безымянный1.png
Просмотров: 91
Размер:  30.8 Кбайт   Нажмите на картинку для увеличения

Название:  Безымянный2.png
Просмотров: 81
Размер:  27.0 Кбайт  


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Благодарность от:
Старый 16.02.2021, 18:34   #623
Makrel
Новичок
 
Регистрация: Apr 2020
Сообщения: 12
Благодарил(а): 1 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
12 минут с использованием копипаста.
По поводу решения:
для моих задач её немного надо допилить. Например, глобальный таймер тут инкрементирует каждый тик. То есть это таймер тиков, но на минуты переделать легко.
Когда в первой версии реализовывал измерение времени для графиков на таймере получилась в итоге очень большая погрешность. Запустили на ровно 2 суток - 48 часов. Но когда прошло 48 часов по реальным часам, на "тикающем таймере" контроллера было ощутимо меньше. Не помню точно сколько, но кажется не меньше, чем полчаса "потерялось". Причем при повторе было тоже самое.
В итоге "тики глобального таймера" пришлось переповесить на обновление секунд в блоке GetRealTime, после этого расхождение с реальным временем исчезло.
И мощность мне не надо "складывать" в течении точек, там надо как и в макросе времени, только "текущая" точка и "предыдущая".

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



Я как раз об этом. У меня только минут 15 ушло на то, чтобы перенести схему из Вашего сообщения в SMLogix.

Вот для Вас эта задача на FBD на 12 минут, и "текстом", предполагаю, справились бы за приблизительно столько же времени.
А я на тексте тоже решил бы эту задачу за 10-15 минут... А вот на FBD провозился часа 3-4.
С одной стороны - это моя проблема, что плохо могу решать задачи на FBD. Но с другой-то стороны, я хорошо умею решать такие задачи "текстом". Но кроме автоматизации мне надо заниматься другими делами, поэтому не могу тратить много времени на изучение и наработку приёмов использования FBD. Поэтому лично мне логично использовать контроллер, который смогу программировать быстро - то есть имеющий возможность "текстового" программирования. И как Вы писали выше - я не один сталкиваюсь с такой дилеммой.

Ведь именно поэтому IEC61131/МЭК 6-1131 требует, что бы была возможность использовать любой из пяти языков программирования.
Ведь далеко не все "универсалы", то есть могут решать быстро одну и ту же задачу на любом языке.
Цитата Основной целью стандарта было повышение скорости и качества разработки программ для ПЛК <...> исключение этапа дополнительного обучения при смене типа ПЛК.
Makrel вне форума   Ответить с цитированием
Старый 16.02.2021, 18:43   #624
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от Makrel Посмотреть сообщение
А на счётчиках реализовывать переключение точек, это получше, чем у меня на блоках сложения и сравнения. Благодарю за пример.
Проблема не в мнимой сложности FBD, а в том, что использовав счётчик в линейном языке вы почему-то не перенесли его в FBD.

По любой задаче сначала строится алгоритм, потом алгоритм переносится на язык. Обычно построение алгоритма это 90% времени, перенос на язык 10%. В случае FBD эти стадии перекрываются, т.к. FBD это и есть блок-схемы, что фактически даёт ускорение перед линейными языками. Это ускорение компенсирует более низкую скорость программирования на визуальном языке перед текстовым.

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


PS. В текстовом виде у вас тоже можно чуть не вдвое всё подрезать


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.02.2021, 13:14   #625
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Можно ли сделать такие блоки в SMLogix.
Данные расположены в ОЗУ
1 при на выходе блока текущее значение в ячейке памяти по адресу addr.
2. При установленном wr значение по адресу addr перезаписывается и оно же выдается на выход как прочитанное.
Это для имитации массива.
Могу показать конструкцию как использовать, но в ней есть Ваши недокументированные возможности.
Миниатюры
Нажмите на картинку для увеличения

Название:  Array RAM.png
Просмотров: 44
Размер:  2.3 Кбайт  


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 18.02.2021, 13:26   #626
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от ujin Посмотреть сообщение
Можно ли сделать такие блоки в SMLogix.
Данные расположены в ОЗУ
Однозначно поддерживаю!
ATS вне форума   Ответить с цитированием
Старый 18.02.2021, 13:46   #627
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от ATS Посмотреть сообщение
Однозначно поддерживаю!
Я впервые это захотел при создании универсального проекта ИТП


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 18.02.2021, 14:02   #628
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от Arsie Посмотреть сообщение
Я впервые это захотел при создании универсального проекта ИТП
Тогда совсем ничего не понимаю в приоритетах Вашего руководства.
Если сделать размер массива недоступным для изменения во время выполнения в том числе и в режиме отладки, то нет никакой опасности применения данного блока. Память выделяется один раз при старте.
Реализация на С, С++ так вообще не о чем разговаривать
int array [lenght] = default value; (или с входа)
доступ
a = array[addr];
И у Вас на десятки процентов выше производительность труда при той же зарплате.


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Старый 18.02.2021, 14:24   #629
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата:
Сообщение от ujin Посмотреть сообщение
Если сделать размер массива недоступным для изменения во время выполнения в том числе и в режиме отладки, то нет никакой опасности применения данного блока. Память выделяется один раз при старте.
Правда есть проблема где выделяется.

А то сдуру можно даже х....
ATS вне форума   Ответить с цитированием
Старый 18.02.2021, 14:43   #630
ujin
Senior Member
 
Аватара для ujin
 
Регистрация: May 2010
Адрес: Novosibirsk
Сообщения: 762
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: Небольшие хотелки в SMLogix

Цитата
Сообщение от ATS Посмотреть сообщение
Правда есть проблема где выделяется.

А то сдуру можно даже х....
Опасность представляет выделение и изменение размера в цикле основной программы. Опасность в утечке памяти, если все время выделять или изменять размер на увеличение и не уничтожать память. В Labview есть инструменты для отслеживания работы с памятью.
В лоджике память выделяется для многих блоков, но при старте.
Данный блок в этом плане не будет ничем отличаться. Следовательно задача уже неоднократно решена. Отсюда же следует, что есть тот кто не сломал ничего сдуру и есть кому эту задачу решить.


__________________
В жизни 2 правила успеха:
1 Не говори всего что знаешь
2 ...
ujin вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмениваемся своими макросами Arsie SMLogix 112 10.12.2021 09:01
Как показать прохождение запроса LordN Примеры работы по Modbus 7 07.11.2019 19:55
Отсутствует связь SMH2010 <--> SMLogix Serge_sg Вопросы о SMH2010 19 07.10.2019 18:44
SMH4 не видится в SMLogix (решено) marat Вопросы о SMH4 2 04.04.2019 19:52
Небольшие дефекты в SMLogix Gel SMLogix 20 22.08.2018 14:22


Часовой пояс GMT +4, время: 10:35.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023