Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Hmi или ПЛК-подобное устройство
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
Bpoh
В силу специфики задачи требуется ПЛК, операторская панель или нечто иное:

1) возможность написания программы, не заботясь о времени выполнения цикла. Вместо дробления кода на части и запоминания точки выхода-входа, ОС должна сама прерывать (вытеснять) задачу,обслуживать ввод-вывод и др., а затем возобновлять задачу и т.д..
2) обязателен RS-232 + библиотечные функции к нему
3) от 4 до 8 Кбайт оперативной памяти для переменных
4) встроенный протокол Modbus
5) язык программирования любой подобный С, Pascal, FB, LD или Basic


Операторская панель с макросами перекрывает с лихвой все требования кроме первого.
san
На вскидку
1) unitronics
2) vipa 100 (какие-то есть со встроенной панелью)
3) Magelis (какие-то есть со встроеннім ПЛК)
Bpoh
Цитата(san @ 14.9.2012, 23:23) *
На вскидку
1) unitronics
2) vipa 100 (какие-то есть со встроенной панелью)
3) Magelis (какие-то есть со встроеннім ПЛК)


Не столь важно, какое из устройств будет:
  • панель без ПЛК, для которой можно написать макросы, а также поддерживается протокол Modbus и основные функции COM порта
  • или ПЛК без панели

Cовмещение ПЛК и HMI не требуется, обычно это дорого.

Основное:
Цитата
ОС должна сама прерывать (вытеснять) задачу,обслуживать ввод-вывод и др., а затем возобновлять задачу и т.д.

Перечисленные устройства соответствуют?
Max2114
SMH2G, AMH2Gi от segnetics
У австрийской компании B&R есть ЖК-панели совмещенные с ПЛК. Очень надежные и мощные ПЛК, программятся на С++ пишите в личку, могу дать контакты инженеров, занимающихся этим ПЛК.
Сергей Валерьевич
ну и я свои 5 коп... у дельты есть панель с расширениями...
Bpoh
Цитата(Max2114 @ 15.9.2012, 12:14) *
SMH2G, AMH2Gi от segnetics
У австрийской компании B&R есть ЖК-панели совмещенные с ПЛК. Очень надежные и мощные ПЛК, программятся на С++ пишите в личку, могу дать контакты инженеров, занимающихся этим ПЛК.


Дык это же обычные операторские панели с компьютером на WindowsCE(XP)-emdeded, вот контакты http://insat.ru/products/?category=963


Цитата(Сергей Валерьевич @ 15.9.2012, 13:53) *
ну и я свои 5 коп... у дельты есть панель с расширениями...

ОС сама отрабатывает переключение между задачами или надо дробить программу и "крутиться"?
Max2114
Цитата(Bpoh @ 15.9.2012, 16:18) *
Дык это же обычные операторские панели с компьютером на WindowsCE(XP)-emdeded, вот контакты http://insat.ru/products/?category=963


Что-то вы меня не поняли! Я не провайнтек говорил а про сегнетикс и B&R. Вот ссылка на бернтекер:


www.br-automation.com

ЗЫ кроме того ванйтек на Линуксе, а не на винСЕ... если что..
Max2114
Не прочитал внимательно - это кто-то продает панели вантека на винСЕ, а в оригинале они на линуксе и программятся EasyBuilder'ом
san
Цитата(Bpoh @ 15.9.2012, 0:29) *
Cовмещение ПЛК и HMI не требуется, обычно это дорого.

Вы хотите устройство с функционалом панели и ПЛК, но чтоб таковыми не назывались? Это мне не понятно. Если в панеле есть программирование с функционалом реального времени да и ещё на МЭКовских языках - это пардон, уже ПЛК вместе с панелью.
У VIPA есть графические панели с Zenon, там есть встроенные Straton (SoftLogic) на определенное количество точек ввода/вывода. Но цена панели всё-равно будет большая, так как она графическая и с сенсорным экраном.
Bpoh
Цитата(san @ 18.9.2012, 12:54) *
Вы хотите устройство с функционалом панели и ПЛК, но чтоб таковыми не назывались? Это мне не понятно.


Нет, кашу конфетой называть не нужно


Цитата(san @ 18.9.2012, 12:54) *
Если в панеле есть программирование с функционалом реального времени да и ещё на МЭКовских языках - это пардон, уже ПЛК вместе с панелью.
У VIPA есть графические панели с Zenon, там есть встроенные Straton (SoftLogic) на определенное количество точек ввода/вывода. Но цена панели всё-равно будет большая, так как она графическая и с сенсорным экраном.


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

Можно было бы использовать ПК + Win XP/CE, но придется огрести полномасштабные проблемы с драйверами под сетевые протоколы, а в ПЛК и HMI (кроме Windows версий) эти протоколы уже встроены.

Пока обсуждали, уже написал программу на VBasic для панели. Работает, но притормаживает всё остальное.
Сейчас разделяю программу на части, точки входа и выхода. Диспетчер входа-выхода занимает текста больше, чем основная часть программы. Уже 20 точек, а при существенных изменениях (наращиваниях) программы придется опять добавлять точки.


san
Цитата(Bpoh @ 18.9.2012, 12:41) *
Нет, кашу конфетой называть не нужно

Это Вы так считаете, а многие бренды считают что нужно. Вам же нужен такой функционал, да и многим нужно. Называют они его ПЛК, а вот Unitronics OPLC. Но то что Вы сэкономить хотите - это другое дело.
VB - наверное неудачное решение для этих задач, если вам нужно реальное время. ИМХО.
Сколько хоть точек ввода/вывода, или все должны висеть на сети? Задачи какого плана?

Bpoh
Цитата(san @ 18.9.2012, 13:51) *
Это Вы так считаете, а многие бренды считают что нужно. Вам же нужен такой функционал, да и многим нужно. Называют они его ПЛК, а вот Unitronics OPLC. Но то что Вы сэкономить хотите - это другое дело.
VB - наверное неудачное решение для этих задач, если вам нужно реальное время. ИМХО.

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



Цитата(san @ 18.9.2012, 13:51) *
Сколько хоть точек ввода/вывода, или все должны висеть на сети? Задачи какого плана?


Все вводы-выводы через сеть. Задача - обычное управление и диспетчеризация относительно медленного техпроцесса, а все дополнительное программирование из-за нестандартного по протоколам модема, на котором настаивает заказчик.

Например приходится корректно осуществлять выход+обратный вход в бесконечный цикл ожидания события, флага и т.д. Но и это уже решил. Если было бы устройство, ПЛК или др. с вытесняющей многозадачность, подобных вопросов не возникло.
san
Просетнький ПК или панельный ПК + SCADA не устраивает? Есть бесплатные SCADA на небольшое количество точек ввода/вывода. Есть платные "но не очень" ( :-) ).
Вот например в Citect, используя CiCode можно сварганить серъезные алгоритмы. Поцепив код на шедулер, можно его вызывать с той частотой, какой необходимо. Дров там просто завались, включая возможность написания своих. Вобщем много СКАД могут решать такую задачу, вопрос их стоимости и стоимости железа.
Честно говоря не знаю сколько будет стоить панельный пк с Виндовс ХР. СКАДА (если по честному пути) может потянуть много.
Alexander_I
Если честно - не понять суть проблемы, если это "Задача - обычное управление и диспетчеризация относительно медленного техпроцесса," Да это делает практически любой ПЛК, просто обязан делать, если, конечно он не свободно программируемый. Причем тут разделение задач и проч.? А отображение так-же элементарно делает любая промышленная панель. Конечно, есть подороже, есть подешевле, есть различия в функциональности.

З.Ы. Имеется ввиду, что в свободно программируемом все зависит от рвения и способностей программиста.
IRQ
Цитата(Alexander_I @ 18.9.2012, 16:41) *
Если честно - не понять суть проблемы, если это "Задача - обычное управление и диспетчеризация относительно медленного техпроцесса," Да это делает практически любой ПЛК, просто обязан делать, если, конечно он не свободно программируемый. Причем тут разделение задач и проч.? А отображение так-же элементарно делает любая промышленная панель. Конечно, есть подороже, есть подешевле, есть различия в функциональности.

З.Ы. Имеется ввиду, что в свободно программируемом все зависит от рвения и способностей программиста.


Сама программа несложная, но не вписывается по времени в цикл ПЛК, поэтому ее нужно дробить на части, запоминать точку следующего входа. Диспетчер по обслуживанию программы слишком громоздкий mellow.gif
Alexander_I
Ну это, на мой взгляд, просто неправильная организация выполнения программы. Ни к чему ей помещаться в один цикл контроллера. По крайней мере я что-то не представляю подобной задачи при моем опыте программирования именно технологических задач, а это немало, и во всяких разных отраслях производства.
IRQ
Цитата(Alexander_I @ 18.9.2012, 21:33) *
Ну это, на мой взгляд, просто неправильная организация выполнения программы. Ни к чему ей помещаться в один цикл контроллера. По крайней мере я что-то не представляю подобной задачи при моем опыте программирования именно технологических задач, а это немало, и во всяких разных отраслях производства.


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


Цитата(san @ 18.9.2012, 15:08) *
Просетнький ПК или панельный ПК + SCADA не устраивает? Есть бесплатные SCADA на небольшое количество точек ввода/вывода. Есть платные "но не очень" ( :-) ).
Вот например в Citect, используя CiCode можно сварганить серъезные алгоритмы. Поцепив код на шедулер, можно его вызывать с той частотой, какой необходимо. Дров там просто завались, включая возможность написания своих. Вобщем много СКАД могут решать такую задачу, вопрос их стоимости и стоимости железа.
Честно говоря не знаю сколько будет стоить панельный пк с Виндовс ХР. СКАДА (если по честному пути) может потянуть много.


Можно выбирать экономные варианты, но ничего бесплатного не нужно ни под каким предлогом.
Сначала рассматривал вариант подобный вашему, но он чреват переходом малой вспомогательной задачи в большую основную проблему. Посмотрел описание CiCode, постараюсь поближе познакомится с системой на будущее.

Пока остановился на двух промежуточных вариантах - дополнительная микро-панель под линуксом, VB, "непрерывная программа" и "фрагментированная". Удивительно, но обе программы одинаково хорошо и одновременно работают в одной панели.
У варианта с нефрагментированной программой на ПЛК с ограничением времени цикла мог быть хороший шанс "поймать" ватчдог.


Lex
Цитата(IRQ @ 19.9.2012, 1:59) *
Разные случаи бывают, например ожидание наступления события, после его наступления обрабатывать данные далее по алгоритму, а когда именно произойдет это событие - неизвестно. Какие есть идеи?


А Вы и топикстартер - одно лицо?
А то тему начал он, а Вы вопросы задаете...

И вообще, что Ваш вопрос, что первый вопрос топикстартера меня ставит в тупик....
Если можете, поясните - какие "события" вы ждете, почему нельзя обработать это "событие" в следущем цикле программы.

Такой же вопрос к топиктстартеру.
"возможность написания программы, не заботясь о времени выполнения цикла. Вместо дробления кода на части и запоминания точки выхода-входа, ОС должна сама прерывать (вытеснять) задачу,обслуживать ввод-вывод и др., а затем возобновлять задачу и т.д.."
Правильно ли я понимаю, что время цикла в единицы-десятки миллисекунд для вас много, и Вы хотите в середине (условно говоря) цикла прервать выполнение алгоритма, что сделать и продолжить, не дожидаясь, когда это событие штатно обработается в следующем цикле?
Ludvig
Цитата
"возможность написания программы, не заботясь о времени выполнения цикла. Вместо дробления кода на части и запоминания точки выхода-входа, ОС должна сама прерывать (вытеснять) задачу,обслуживать ввод-вывод и др., а затем возобновлять задачу и т.д.."
Пора привыкнуть, здесь не Диалог специалистов, а Лепет начинающих. Есть идея, но нет опыта реализации. По-любому, надо начинать с подбора софта, который позволяет отработать программу и интерфейс в одном флаконе. То что загибает с прерываниями, это от непонимания реализации задачи. Со временем пройдет. И ваще, какой смысл спрашивать на форуме расплывчатые вещи? Ответы будут такими же.
Если кому показалось обидно, зря. Я сам такой. Вот прикинул задачку: сделать приборную панель в авто на дисплее, взаместо стрелочных приборов. И что? Что нужно, понимание есть. Как сделать, предостаточно. Как начать? Да пинка хорошего получить и все пойдет. Некому. tongue.gif
IRQ
Цитата(Lex @ 19.9.2012, 6:28) *
А то тему начал он, а Вы вопросы задаете...


Игорь (Bpoh) по семейным делам уехал на время и эта задача переложена на меня
IRQ
Цитата(Ludvig @ 19.9.2012, 9:48) *
Пора привыкнуть, здесь не Диалог специалистов, а Лепет начинающих. Есть идея, но нет опыта реализации. По-любому, надо начинать с подбора софта, который позволяет отработать программу и интерфейс в одном флаконе. То что загибает с прерываниями, это от непонимания реализации задачи. Со временем пройдет. И ваще, какой смысл спрашивать на форуме расплывчатые вещи? Ответы будут такими же.


В этот раз временно выкрутились припомощи макросов панели (не самое лучшее решение)
А вопрос был вполне конкретный - избрать такое устройство (ПЛК), операционная истема которого умеет сама переключать задачи.
на основе имеющегося опыта мы с Игорем полагаем, что в ПЛК с ограничениев времени выполнения цикла придется делить программу на части. Alexander_I не согласен с нами, видимо имеет больший опыт.

Цитата(Alexander_I @ 18.9.2012, 16:41) *
З.Ы. Имеется ввиду, что в свободно программируемом все зависит от рвения и способностей программиста.




Ludvig
Цитата(IRQ @ 19.9.2012, 9:04) *
В этот раз временно выкрутились припомощи макросов панели (не самое лучшее решение)
А вопрос был вполне конкретный - избрать такое устройство (ПЛК), операционная истема которого умеет сама переключать задачи.

Мой ответ - любое ПЛК. Есть любители ставить одно ПЛК на несколько объектов управления. Те ни в чем себе не отказывают. Даже не заморачиваются такой проблемой, а просто делают.
Lex
Цитата(IRQ @ 19.9.2012, 13:04) *
А вопрос был вполне конкретный - избрать такое устройство (ПЛК), операционная истема которого умеет сама переключать задачи.
на основе имеющегося опыта мы с Игорем полагаем, что в ПЛК с ограничениев времени выполнения цикла придется делить программу на части. Alexander_I не согласен с нами, видимо имеет больший опыт.

Поддержу Alexander_I и Ludvig. Мне ни разу (за 10 лет работы) не пришлось столкнуться с упомянутой Вами проблемой.
Превышение размера программы доступной памяти - было.
При этом я решал задачи автоматизации инженерных систем.
Т.е. не пром автоматика (АЗ, конвейеры и пр. технологические линии).

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

Еще замечание.
Я работал с программами "верхнего" уровня организации - FBD, SFC.
А коллега Ludvig, как я понимаю, и с "низким" уровнем, типа С++. На этом-то уровне практически все, что может железо - можно сделать (вне зависимости от ОС).

Ludvig
Цитата(Lex @ 19.9.2012, 10:50) *
Почему Вы решили, что в каких-то ПЛК есть ограничение выполнения цикла (или ненастраиваемый wathdog)?
Почему Вы решили, что написанная Вами программа (не больше размера имеющейся для нее памяти) не успеет выполниться за время цикла?
А коллега Ludvig, как я понимаю, и с "низким" уровнем, типа С++. На этом-то уровне практически все, что может железо - можно сделать (вне зависимости от ОС).

Есть всегда в любом и каждом контроллере wathdog, как средство от зависания. К написуемой нами программой, это не имеет никакого отношения. Микроконтроллер контроллера гоняет свои внутренние циклы, заглядывая изредка в пользовательское ППЗУ. Потому и не виснет, и не откатывается. А что касается С++, так это что за контроллер должен быть? Старая Saia? После FBD, можно на С++ вывих мозгов заработать и провалить дело. Даже не представляю где С++ можно применить. Вот VB6, призабавнейшая штука, но опять применение.... .
Кстати, вышла новая NI LabVIEW 2011. Скачайте как сможете LabVIEW, весит дохрена из-за библиотек и модулей. Меньше глупостей писать будете.
IRQ
Цитата(Lex @ 19.9.2012, 11:50) *
Поддержу Alexander_I и Ludvig. Мне ни разу (за 10 лет работы) не пришлось столкнуться с упомянутой Вами проблемой.

ваш личный опыт, вам повезло

Цитата(Lex @ 19.9.2012, 11:50) *
Я работал с программами "верхнего" уровня организации - FBD, SFC.
А коллега Ludvig, как я понимаю, и с "низким" уровнем, типа С++. На этом-то уровне практически все, что может железо - можно сделать (вне зависимости от ОС).


С я использую для avr atmega, а верхний уровень все же SCADA а не FBD


Цитата(Lex @ 19.9.2012, 11:50) *
При этом я решал задачи автоматизации инженерных систем. Т.е. не пром автоматика (АЗ, конвейеры и пр. технологические линии).
нет разницы, пром или не пром., главное - качество решения задачи

Цитата(Lex @ 19.9.2012, 11:50) *
Поэтому и интересуюсь.
Почему Вы решили, что в каких-то ПЛК есть ограничение выполнения цикла (или ненастраиваемый wathdog)?
Почему Вы решили, что написанная Вами программа (не больше размера имеющейся для нее памяти) не успеет выполниться за время цикла?
Даже если Вы сможете разделить программу на части (на 10 например), для Вас критично ожидание "очереди" выполнения в несколько десятков миллисекунд?


- watchdog то настраиваемый, но всему свой предел, один цикл этой программы може длиться до 50-60 минут
- время ожидания в несколько милисекунд некритично, а разделение программы технологически не очень удобно, текст сильно разрастается
поэтому и возникла мысль - возложить эту функцию на ОС.

а какой путь видите Вы?

Alexander_I
Видно вы совсем не имели дела с промышленными контроллерами, работающими в стандарте языков IEC. Разве кто-то отменял флаги, таймеры и пр.? Наступило время выполнения события - установился таймер, начал выполняться фрагмент программы, выполняемый по времени. Произошло что-то на управляемом объекте - установился вход контроллера, или флаг, если требуется некая предварительная обработка, начинает выполняться соответствующий фрагмент программы. Судя по вашим формулировкам, вы работали под DOS на языках типа Assembler/Pascal/C. А это совсем другая песня, сложнее на порядки.
Ludvig
Цитата(Alexander_I @ 19.9.2012, 11:27) *
Видно вы совсем не имели дела с промышленными контроллерами, работающими в стандарте языков IEC. Разве кто-то отменял флаги, таймеры и пр. Наступило время выполнения события - установился таймер, начал выполняться фрагмент программы, выполняемый по времени. Произошло что-то на управляемом объекте - установился вход контроллера, или флаг, если требуется некая предварительная обработка, начинает выполняться соответствующий фрагмент программы. Судя по вашим формулировкам, вы работали под DOS на языках типа Assembler/Pascal/C. А это совсем другая песня, сложнее на порядки.

В FBD это вводится программно, такими же кирпичами как и все блоки. иначе работать невозможно будет. Разновидность IEC обуславливается спецификой языка, но набор операторов в том же составе.
Что касается Assembler/Pascal/C, ложил на компиляторы и гнал прямой код в ППЗУ. А появился нормальный софт, мне пофигу какой, так в этом надобность отпала. Ковыряться, выискивая блох в массиве кода, это для садо-мазо.
Alexander_I
Да я тоже занимался этим (Assembler/Pascal/C) очень долгое время. Отчего-то мне поначалу МЭК не полюбился. А вот лет 7 назад решил, что нервы и время дороже, и резко развернулся в сторону МЭК. И это сильно облегчило жизнь.... rolleyes.gif

P.S. О, вспомнил, отчего МЭК не понравился. Оттого, что на Siemens, Allen Bradley и Omron реализовать задачу обходилось в разы дороже, чем даже на такой крутизне по тем временам, как Octagon Systems.
Lex
Цитата(IRQ @ 19.9.2012, 15:16) *
один цикл этой программы може длиться до 50-60 минут


Вот что-то мне подсказывает, что мы о разных вещах говорим....
Или используем разную терминологию.

Откройте все же секрет, что за тех. процесс у Вас, что
Цикл (программы контроллера) может длиться до 50-60 минут... blink.gif
Andy79
Цитата(Bpoh @ 14.9.2012, 22:09) *
1) возможность написания программы, не заботясь о времени выполнения цикла. Вместо дробления кода на части и запоминания точки выхода-входа, ОС должна сама прерывать (вытеснять) задачу,обслуживать ввод-вывод и др., а затем возобновлять задачу и т.д..

Цитата(IRQ @ 18.9.2012, 22:59) *
Разные случаи бывают, например ожидание наступления события, после его наступления обрабатывать данные далее по алгоритму, а когда именно произойдет это событие - неизвестно. Какие есть идеи?

В классических ПЛК многозадачность реализовывается следующим образом:
1) есть три группы задач (Task): основная, дополнительные и прерывания.
2) Основная выполняется (активна) всегда (Task 0) и из нее вызываются дополнительные. Посути в ней по необходимости реализуется управление доп задачами.
3) Дополнительные задачи просто пристыковываются по мере активации к циклу основной задачи. Имеет смысл использовать только в том случае если не хватает быстродействия для основного тех процесса - в этом случае все настроечные, наладочные, подготовительные алгоритмы выностятся в доп задачи которые активируются когда не выполняется основная.
4) Задачи прерываний: по событиям (питание и физ. вход контроллера - сработал датчик метки), по циклическому таймеру (например, каждые 10 секунд), по событию на внутренней шине ПЛК (событие на коммуникационном порту-переполнеие буфера, событие в модуле расширения-аналоговый сигнал достиг...). Соотвественно как только происходит данное событие: основная или дополнительная задача приостанавливаются и передается управление (за n времени) задачи прерываний которая выполняется 1 раз "сверху-вниз", после чего (за m времени) в месте переключения начинает выполняться приостановленая задача. Приоритетность самая высокая у событий. Буфер кол-ва прерываний в очереди зависит от конкретного ПЛК.
Это так в первом приближении на пальцах. А теперь на основе этого можете конкретезировать вашу проблему?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.