Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > SCADA-системы и контроллеры стандарта IEC (МЭК) > Программируемые логические контроллеры |
Автор: UniBomb 18.12.2008, 09:34 |
Добрый день. Всем директлоджикам назло создали свой ПЛК и написали свою мини-SCADA систему. Вот в ней то как раз и проблема. Эта система отдалённо напоминает карту Карно и довольно ограниченна функционально. Разрабатывать её дальше смысла я не вижу, т.к. первый же реальный проект показал негодность этой системы как таковой. Естественно программировать контроллеры приходится вручную на родном Си. Начальство же не переубедить бросить затею с дальнейшей разработкой, что надо делать по уму - сделать реализацию существующего языка программирования ПЛК с заточенностью под наши нужды. Т.к. начальство совсем не грамотно в этом вопросе, сложностей с нашей системой не видит. У меня к сожалению тоже не хватает познаний в этом вопросе, поэтому мне нехватает убедительности моих аргументов (а ведь все неудачи и задержки приравниваются на мой счёт), посему прошу Вас ответить на пару вопросов: - какие ныне существующие языки применяются для программирования ПЛК? - все SCADA системы заточены под какую то конкретную архитектуру? Ну т.е. можно ли взять готовую SCADA систему, что бы результат программирования можно было запустить на AVR? - какие наиболее популярные SCADA (платные и если есть бесплатные) есть на сегодняшний день? - может я чего то неверно понимаю? |
Автор: UniBomb 18.12.2008, 11:29 | ||||
Lazin, ты меня удивляеш всё больше))) всё таки они ими и являются... Если честно, то не вижу никаких преимуществ... lua насколько я знаю с-подобный скриптовый язык, таким образом программирование на lua будет мало отличаться от программирования на Си. Тем более мы же только разработчики, вот доделаем этот ПЛК и отдадим его в отделы проектирования, КИПиА, а там то сидят люди далёкие от программирования как такового. Вот использовали они раньше ДиректЛоджик, сейчас перешли на что-то Шнайдеровское и программировали на LD. Думаю им сложно будет выучить Си или Lua.... Та SCADA что была разработана нами представляла из себя что-то типо карты состояний, в которой нельзя делать скажем условия, циклы и т.д. Поэтому вопрос и встал... За это время я хоть провёл небольшие маркетинговые исследования и разузнал на каких языках эти самые ПЛК программируются, так что вопрос пока стоит только один:
С точки зрения программиста может так оно и есть, но ведь автоматчиков изначально учили мыслить в котексте этих языков. Да и потом многие из них пришли из электротехники и релейные схемы им кажуться понятнее.... то же что и педивикия:
|
Автор: Mazzi 18.12.2008, 11:38 |
http://ulei.by.ru/links.html на этой странице есть ссылка на компилятор с языка LD, рекомендую. |
Автор: UniBomb 18.12.2008, 12:04 |
Mazzi, жаль что на работе я не могу выйти на этот сайт (закрыт доступ по подозрению в содержании шпионских модулей), хотя это нужно именно по работе.... |
Автор: ama_kid 18.12.2008, 12:25 | ||||||||
![]()
Причем это закреплено в стандарте! ![]() "ты просто не умеешь их готовить" ![]() Зачастую какой-то кусок кода написать получается гораздо быстрее на LD или FBD. К тому же, при наличии у среды разработки продвинутых средств отладки - такой способ написания программ получается очень наглядным (собственно, практически только в режиме отладки я их и использую)... Самый большой минус этих языков с моей точки зрения - слишком большое время модификации кода.
![]() |
Автор: Lazin 18.12.2008, 12:37 | ||
разница огромная, у "больших" ПЛК, вроде Omron или Bosh на борту достаточно мощный процессор, какая-то операционная система реального времени, и специальная программа, которая исполняет программу, написанную на IL(что-то вроде стандартизированного ассемблера для ПЛК). Программа на IL может быть создана к примеру с помощью http://www.3s-software.com/. В принципе, на AVR это реализовать сложно, поэтому я и предложил lua, вместо программы на IL можно загружать lua скрипт и выполнять его ![]() |
Автор: Mazzi 18.12.2008, 12:45 |
UniBomb, если нужно могу запаковать и прислать тебе по почте. |
Автор: UniBomb 18.12.2008, 13:51 | ||||
к сожалению я на это повлиять никак не могу ![]() это типа поддержка стандартных протоколов обмена (модбас, профибас и т.д.)? Если ответ на предыдущий вопрос "да", то затрудняюсь ответить... В общем в качестве сердца нашего ПЛК стоит ATMega64 (8-ми битный RISC микроконтроллер), в голом виде ничего не поддерживающий. Реализация протоколов достигается программным путём.
Вот тут ты меня запутал. Объясни пожалуйста по-простому, что ты имееш в виду под термином SCADA. Моё пониамние такое - это программный комплекс для разработки управляющей ПЛК. Т.о. нариовал я в ней релейную схему, нажал кнопочку "build" и на выходе у меня готовая прошивка, которую я заливаю в свою мегу....
Наш "маленький" ПЛК задумывался как нечто очень дешёвое (себестоимость прибора получилась что-то окола 700 рублей) для применения в случаях когда готовые брендовые ПЛК избыточны (как по функциям, так и по цене). Производительность соответсвенно тоже уменьшилась, но в приницпе Ось (многопоточную и реалтаймовую) залить удасться... Mazzi, спасибо, но я и дотерплю до вечера, когда домой приду и смогу всё изучить.... |
Автор: Lazin 18.12.2008, 14:06 | ||
на ATmega64 - вряд-ли, так-как MMU у него нет, то-есть процессы будут делить все 4Кб памяти между собой, как это должно работать я не представляю ![]() видимо придется писать интерпретатор IL самостоятельно, хотя, возможно на AVR freaks есть что-то готовое и не сильно бажное... |
Автор: ama_kid 18.12.2008, 14:12 | ||
Добавлено через 1 минуту и 25 секунд есть подозрение, что IL для асушников будет менее понятен, чем родной С++ ![]() |
Автор: Lazin 18.12.2008, 15:14 |
я думаю так, UniBomb должен написать программу для контроллера atmega64 Эта программа, должна позволять какой-либо внешней программе загружать в память контроллера другую программу, которая бы управляла выводами контроллера таймерами и прочей периферией. Эту вторую программу нужно писать на LD или чем-то аналогичном, так? Если так, то программа на LD и подобных языках легко преобразуется в программу на IL, главное, что-бы поддерживались основные инструкции языка IL. Я уже давал ссылку на CoDeSys, я с этой штукой не работал, но насколько я знаю, она позволяет это делать. То-есть схема такая: пользователь, в какой-либо IDE пишет программу на LD, далее эта программа "компилируется" в IL и скармливается контроллеру, зашивается в EEPROM. Далее контроллер в просто просыпается по таймеру, скажем 1 раз в 100 мс и выполняет всю эту программу. Для взаимодействия со SCADA системами нужно реализовать какой-нибудь стандартный протокол связи, думаю подойдет modbus ![]() |
Автор: Mazzi 18.12.2008, 15:53 | ||
С CoDeSys не так всё просто, для того, чтобы востользоваться ею, нужно вступить в члены разработчиков CoDeSys, контроллер должен соответствовать каким то там нормам, в общем большой геморрой для больших производителей. |
Автор: UniBomb 18.12.2008, 17:57 | ||
Вот люблю я винград))) Здесь на все вопросы ответят ![]()
Всё именно так и обстоит дело ![]() Добавлено через 3 минуты и 55 секунд Кстате, тут всё время про киповцев говорили (в том числе и я).... Может быть имелись в виду АСУТПшники? Т.к. киповцы же по всяким датчикам и показаниям и ни к какому программированию не допускаються под страхом кровавой расправы... |
Автор: Lazin 18.12.2008, 18:14 | ||||
ага, как-же ![]()
в памяти программ у тебя должен быть твой код, и все, а программа которую "наворотили" не должна быть нативной. Она должна быть простым текстовым или (лучше)бинарным файлом и интерпретироваться твоей программой. Я думаю интерпретатор IL не сложно реализовать. |
Автор: UniBomb 19.12.2008, 09:11 |
В общем спасибо вам всем, дали пищу для ума))) Буду разбираться))) ЗЫ: Mazzi, прога супер, спасибо за ссылку))) |
Автор: Mazzi 19.12.2008, 09:23 | ||
Рад за тебя. Будут проблемы, обращайся. Удачи! |
Автор: UniBomb 19.12.2008, 16:19 |
Последняя просьба - посоветуйте пожалуйста книги по LD и IL )) Добавлено через 26 секунд если таковые существуют... ну или хорошие ресурсы по этой теме... Добавлено через 1 минуту и 7 секунд но только на русском языке ![]() |
Автор: ama_kid 20.12.2008, 19:39 |
Вообще-то литературы по этой теме очень мало. Я в основном по хелпам изучал... Навскидку только одну книгу щас вспомню более-менее подробную - Петров И.В. "Программируемые контроллеры. Стандартные языки и приемы проектирования" (http://vustintsev.ifolder.ru/1317674) |
Автор: Mazzi 21.12.2008, 11:21 |
Я только на английском читал. |
Автор: UniBomb 22.12.2008, 12:08 |
ama_kid, Mazzi, спасибо. Я тоже начал изучать эту предметную область по описаниям ДиректЛоджика))) зы: отдельное спасибо ama_kid за книгу)) |
Автор: ManiaK 12.1.2009, 02:47 |
UniBomb, Заинтересовала данная идея, может соберусь как-нибудь, посмотрю, что вы там делаете. Как юридически фирма называется? Сайт есть? |
Автор: UniBomb 12.1.2009, 09:01 |
ответил в личку, дабы не плодилось рекламы. |
Автор: UniBomb 4.3.2009, 14:00 |
Возник ещё один вопрос. Вот тут говорилось, что "лишь бы поддерживались стандартные протоколы связи, а-ля ModBus". Я хочу уточнить - в чём же заключается эта поддержка. Вариант 1. Скажем есть готовая мини-ОС, которая включает в себя все функции по инициализации ПЛК, содержит интерперетато языка IL и некий набор АПИшных функций, в числе которых и функции работы с протоколами. Под АПИшными функциями я понимаю уже готовые к исполнению участки памяти программ, адрес которых известен. Далее, в ходе выполнения интепритатором IL-программы он встречает команду "послать по ModBus такие-то данные" после чего интерпритатор джампится по адресу соответвсующей АПИшной функции, после выполнения которой программа ретурниться обратно в то место, на котором интепритатор остановился. Вариант 2. При трансляции программы (написанной на LD или IL или на чём-либо другом) в промежуточный код, который хорошо понимает интепритатор ПЛКашной мини-ОСи. Если транслятор встречает команду "послать по ModBus такие-то данные", то он в эту коамнду дописывает код, который и выполняет эту команду. Таким образом ПЛКашный интерпритатор уже никуда не джампится, а выполняет тот дописанный код. Вариант 3. Свой вариант... Какой из этих вариантов называеться "поддержкой стандартных протоколов"? |
Автор: Mazzi 4.3.2009, 14:10 |
Реализация не столь важна. Главное, чтобы запросы и ответы соответствовали протоколу. То есть для устройств общающихся между собой посредством протокола все другие устройства представляют собой "чёрный ящик" из которого поступают посылки и куда уходят ответные информационные посылки. |
Автор: UniBomb 6.3.2009, 10:43 |
Mazzi, ясно, спасибо за ответ))) |