PDA

Просмотр полной версии : драйвер Delphi



AntoNechayuk
30.12.2009, 15:49
Здравствуйте
Мне нужно читать переменные в режиме он-лайн, а также записывать значения и подавать команды в ПЛК150. Все это из программы на Delphi. как это реализовать - может кто-то уже сталкивался (есть пример), или знает - помогите... буду оченнь благодарен!:o

Hemann
02.01.2010, 18:43
Есть такая вещь, как OPC-сервер. Он поддерживает протокол OPC DA 2.0. Вещь достаточно документированная и современным приложениям доступная. Т.е. Ваша задача-написать под Дельфёй специфический ОРС-клиент, который будет читать-писать то, что Вам нужно. Для начала нужно подготовить соответствующим образом проект ПЛК и установить ОРС-сервер (см. файл "Подключение_OPC_3S-Software.pdf", например на диске ПЛК110-го). Можно повернуть вопрос по-другому: создать в ПЛК переменные с именами и типами как в каком-либо приборе ОВЕН и задействовать библиотеку owen_io.lib в Вашем проекте (такой вариант где-то в форуме проскакивал, вроде бы участник запомнился - Дмитрий Егоренков, но могу ошибиться)

Sniper007
02.01.2010, 20:56
Можно еще задействовать протокол Modbus. Не знаю как в Delphi, но я находил в свободном доступе библиотеки для .Net C# и использовал в Visual Studio

Филоненко Владислав
03.01.2010, 23:29
Странно видеть, как люди используют Delphi, а простой мастер modBus (даже все функции поддерживать не надо, достаточно 2-х) написать не могут. Дело 1 часа. Самое сложное - разобраться с выводом в порт.

AntoNechayuk
04.01.2010, 09:40
ситуация такая - есть контроллер собственного производства (дедки напаяли - работает, но продают его директору за ДОРОГО). Под него написана программа на Делфи - притом вполне сложная(помимо рисования графика онлайн, расчет последующих параметров, печать протокола, работа с базами данных, работа с базой данных 1С, все архивируется и сохраняется. Так как в сам контроллер, по понятным причинам меня не допускают, я предложил перейти на ОВЕНовский. Купил ПЛК150-220-УМ. Теперь разбираюсь с ним. читать необходимо (пока) 1 параметр - с датчика давления (потом добавлю энкодер и др.) - но как его читать с делфи - ума не приложу сейчас.

может скиньте самый простой примерчик на nechayuk@mail.ru - спасибо заранее

Малышев Олег
04.01.2010, 10:29
См здесь http://www.owen.ru/catalog/69481466 (там есть пример и на delphi). Для работы с протоколом овен в режиме slave в плк все есть - добавляется буквально 3-мя кликами мышки (См PLC_configuration)

Dmitry
04.01.2010, 19:27
Помимо OPC можно воспользоваться интерфейсом dde, в Delphi есть готовые обхекты для работы с ним (у меня Delphi 7 - вкладка system). Интерфейс пишет/читает через DDE codesys gateway. См. документацию на codesys с сайта ОВЕН.

Sniper007
04.01.2010, 22:00
Да дался вам этот Delphi! Ставьте скаду - и быстрее и лучше, и скорее всего дешевле.

Сергей71
05.01.2010, 08:22
Да дался вам этот Delphi! Ставьте скаду - и быстрее и лучше, и скорее всего дешевле.

Интересно во сколько обойдется СКАДА со всеми приблудами (ОРС, БД, Архивы, логи, конверторы в 1С, горячая замена ПК и тп).

PS сам все пишу на Делфи уже давно (дешево и быстро, ставлю ОРС клиента или модбас ТСР и все ) программу можно быстро изменить, картинки какие хочешь оживить, полная свобода и не отстегиваешь за каждый ключ кому-то и не звонишь в службу поддержки с вопросом а как это в вашей СКА.. реализовать, а сколько стоит вот это и тд.

AntoNechayuk
05.01.2010, 08:54
Помимо OPC можно воспользоваться интерфейсом dde, в Delphi есть готовые обхекты для работы с ним (у меня Delphi 7 - вкладка system). Интерфейс пишет/читает через DDE codesys gateway. См. документацию на codesys с сайта ОВЕН.

Могли бы Вы выслать на nechayuk@mail.ru примерчик самого простого рабочего проекта(имею ввиду программку для ПЛК и для Делфи), чтоб наглядней было и сэкономить время на изучения компонентов - заранее благодарен.:)

Также просьба относится ко всему люду, что пишет на Delphi и пользует ПЛК ОВЕН.;)

AntoNechayuk
05.01.2010, 09:00
Да дался вам этот Delphi! Ставьте скаду - и быстрее и лучше, и скорее всего дешевле.

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

Sniper007
05.01.2010, 10:23
Интересно во сколько обойдется СКАДА со всеми приблудами (ОРС, БД, Архивы, логи, конверторы в 1С, горячая замена ПК и тп).

Ну а сколько по времени займет написать прогу "со всеми приблудами"?
А насчет цены скады... На тут смотря сколько каналов, если каналов мало то берем скажем MasterScada на 32 точки, подсоединяем к ней Lectus OPC получаем OPC, SQL запросы (а следовательно архивы и БД). Итого - 3000 рублёв.

Сергей71
05.01.2010, 11:04
Ну а сколько по времени займет написать прогу "со всеми приблудами"?
А насчет цены скады... На тут смотря сколько каналов, если каналов мало то берем скажем MasterScada на 32 точки, подсоединяем к ней Lectus OPC получаем OPC, SQL запросы (а следовательно архивы и БД). Итого - 3000 рублёв.

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

Sniper007
05.01.2010, 20:38
Ну на 32 канала конечно особо не разгуляешься, но... В принципе да.
Отчеты причем там сейчас можно очень красивые и функциональные делать. Инсат интегрировал в свой пакет редактор отчетов от компании StimulSoft (Смоленск).

AWA1971
06.01.2010, 13:31
Добрый день всем и с наступающим Рождеством! AntoNechayuk, не буду учить, могу только посоветывать: не бросать работу с Delhpi. Да, заморочек побольше, чем с готовой скадой (настройка, графика и т.д.), но результат работы будет ТОЛЬКО ВАШ, а это дорогово стоит. Никаких ограничений, шаблонов, лицензий и т.д. Все - Ваше. Для начала - модуль для Delphi «dOPC Client Toolkit Version 3.7 for Delphi» 7MB (можно скачать с сайта http://www.dopc.kassl.de/download.shtml). Устанавливается элементарно (exe), после чего в Delhpi появляется вкладка (крайняя) dOPC, где нас интересует OPC DA. Конфигурация CoDeSys описана в документации к ПЛК, а в Delphi выбираем сервер в свойстве ServerName, после чего переменные, отмеченные Вами в CoDeSys, появятся в дельфийском проекте. На работе есть более подробное описание, но это после 10-го. Нарветесь на подводные камни - пишите, отвечу. Главное - установить связь Delphi - ПЛК, остальное пойдет как по маслу. Удачи!

AWA1971
06.01.2010, 13:40
Кстати, код для кнопки (расшифровывать, думаю, не надо):
procedure TForm1.Button1Click(Sender: TObject);
begin
if dOPCServer1.OPCGroups[0].OPCItems[0].Value=FALSE
then dOPCServer1.OPCGroups[0].OPCItems[0].WriteSync(1)
else dOPCServer1.OPCGroups[0].OPCItems[0].WriteSync(0);
end;

magirus
06.01.2010, 22:39
хм... напЕсал целый опус... всё стёр...

заморочек побольше, чем с готовой скадой (настройка, графика и т.д.), но результат работы будет ТОЛЬКО ВАШ
угу, а где конечному пользователю потом искать Уважаемого AntoNechayuk если (или когда), он сменит место работы?, и ему уже не интересно будет заниматься этим проектом?
что делать? нанимать новых, чтобы переписать ВСЕ под новые требования?
или в стандартизованной скаде за относительно небольшие деньги разобраться и поменять параметры?
Извините, но я не согласен с Вами....

Sniper007
07.01.2010, 10:42
Согласен, тоже считаю писание собственной скады - анахронизмом.
Уж если так хочется что нибудь пописать, то берите Master Scada и пишите к ней какие нибудь собственные ФБ и ActiveX. Может даже Инсат у вас их купит :)
Кстати по поводу Delphi 7. Им что еще пользуются? Он же древний как яйца динозавра. Я помню я на нем еще в далеком 2002 программил...
Кстати тут недавно его снова поставил, поплевался... Visual Studio на три головы выше. Но сейчас вроде новая версия есть 2010 или как там его.

AWA1971
07.01.2010, 12:40
Господа форум, думаю нет смысла напоминать по поводу "товарищества на вкус и цвет". Нравится Master Scada - да на здоровье, без ума от Trace Mode - флаг в руки, неземная любовь к WinCC - паяльник в помощь. А если человек не хочет ограничивать себя рамками отдельной стантартизированной скада-системой? Анахронизм? Почему же? Какая из существующих на сегодняшний день скада превосходит по своим возможностям "динозавриную яичницу" Delphi7 ? Какими достоинствами, недоступными для D7, обладает упомянутая VS? И потом, почему же проект, созданный в скаде, имеет право на изменение другим программистом, а дельфийская программа - нет? В Delphi что, код иероглифами отображается? Так что, извините, господа, но Ваши доводы неубедительны (во всяком случае, для меня). Еще раз с Рождеством и удачи всем, всегда и во всем!

Sniper007
07.01.2010, 13:33
Если опять таки говорить про любимую Master Scada, то она тоже не ограничивает фантазию разработчика. Вот была тут проблема такая. В MS встроенный блок "ползунковый задатчик" имеет кнопку подтверждения, то есть передвинул ползун, потом надо нажать кнопку. Мне так не понравилось, я хотел сразу подвинул ползунок - задание устанановилось. Написал свой ActiveX на C#. Времени на это ушло минут 20.
На ABOK в теме про обсуждение скады, были такие сообщения. Одному гражданину нужно было в автоматическом режиме переключатся между принтерами (график печатать на цветном струйнике, отчет - на лазернике) и в скаде с которой он работал (Zenon кажется) этого сделать было нельзя. Я ради интереса написал такой блок под Master Scada. Так что не все скады ограничивают разработчика.
Насчет Visual Studio 2008 и Delphi 7, то тут достаточно одного взгляда (да и не удивительно - между ними 8 лет разницы). Ускоренный ввод команд очень помогает, особенно при длинных именах. В Delphi 7 к сожалению этого нет. Но повторюсь, насколько мне известно есть новая версия Delphi и думаю там все не хуже чем в Visual Studio.
Ну а уж если пишете сами скаду, то считаю что обязаны отдать заказчику весь проект с исходниками и комментариями.
У меня ведь у самого такая же проблема. Есть один участочек, на котором стоит Win98 и самописная скада + самодельное оборудование. Фирма которое это сделала просит за обновление такие деньги - шнайдер с сименсом, нервно курят за углом :)

magirus
07.01.2010, 15:16
самописная скада + самодельное оборудование. фирма которое это сделала просит за обновление такие деньги - шнайдер с сименсом, нервно курят за угломвот вот, ситуация один в один...

ASo
07.01.2010, 15:33
Ну а уж если пишете сами скаду, то считаю что обязаны отдать заказчику весь проект с исходниками и комментариями.
Скажем так - свежо питание, да верится с трудом (про комментарии и документирование).
При таком поточно-коленочном написании программ - ну не будет нормального документирования. Во всяком случае мне такого при "самопале" (что у себя, что у других) - не попадалось. Про серьезные программистские фирмы - помолчу, это совсем другие миры.

AWA1971
07.01.2010, 15:46
Насчет Visual Studio 2008 и Delphi 7, то тут достаточно одного взгляда (да и не удивительно - между ними 8 лет разницы). Ускоренный ввод команд очень помогает, особенно при длинных именах. В Delphi 7 к сожалению этого нет.
Нет? Своеобразная у Вас D7. У меня почему то есть (и был еще в 2001 году). У вас, господа, довольно предвзятое отношение к Delphi. Я не рекламный агент, поэтому навязывать НИЧЕГО НИКОМУ НЕ СОБИРАЮСЬ. Не нравится - не надо. Меня - устраивает, но при этом я не собираюсь принижать значение готовой скады. Вам проще идти этим путем - Ваше право. А насчет самописной скады - Вы вообще уверены, что на всех предприятиях сидят готовые специалисты, способные в любой момент изменить что-либо во внедренной "стандартной" системе? Или за забором стоят толпы знатоков MasterScada или TraceMode, готовые все исправить за копейки и моментально? Что то я таких чудес еще не видел. За все надо платить. И если заказчик пожелает увидеть при загрузке скада только СВОЙ логотип, если он захочет увидеть на экране не набор графических шаблонов, а один-в-один свое оборудование, если..., то еще вопрос, кто сможет довольно легко (и быстро) это реализовать, а кому придется выжимать из стандартов скады все возможное (и невозможное) или пытаться переубедить любыми доводами (вешать лапшу на уши). Не убедили, господа, не убедили. Не люблю рамок и границ. И, поверьте, я такой не один.

Sniper007
07.01.2010, 18:42
Ладно оставим D7 в покое (тем более например мой не менее любимый OPC-сервер Lectus написан именно на Delphi). Хотя нет у него ускоренного ввода. Там кажется какие то команды можно ввести, а какие то нет. В VS это сделано лучше. Проверьте сами. А почему вы кстати не пользуетесь новыми версиями?


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

И если заказчик пожелает увидеть при загрузке скада только СВОЙ логотип, если он захочет увидеть на экране не набор графических шаблонов, а один-в-один свое оборудование, если..., то еще вопрос, кто сможет довольно легко (и быстро) это реализовать, а кому придется выжимать из стандартов скады все возможное (и невозможное) или пытаться переубедить любыми доводами (вешать лапшу на уши). Не убедили, господа, не убедили. Не люблю рамок и границ. И, поверьте, я такой не один.
Хотите видеть свое оборудование? Пожалуйста - есть модуль рисунок, есть модуль фильм (анимацию делать). Берем Компас 3D, фотошоп и делаем. Хотите что нибудь навороченное, с обработкой нажатий правой клавиши, изменяющимися элементами? Пожалуйста - ActiveX, все классы открыты для наследования, есть соответсвующая документация. Берем Visual Studio и пишем, пишем, пишем.

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

ASo
07.01.2010, 19:30
Еще раз повторюсь, я не то чтобы против самописных скад. Но мне кажется нужно от этого отходить. Ну а уж если пишете сами, то уж тогда весь исходник - заказчику на стол
И что заказчик будет делать с исходником? Естественно - реальным, серьезным исходником на 10..50 тыс строк (если уйти в классический эквивалент). Реально - плохо (часто - никак) документированном? Как пример - ну есть исходный код многих прог под *nix - сколько % в них способны разобраться?

Sniper007
07.01.2010, 21:06
Да нет. Разобраться можно. Но нужно чтобы тот кто разбирался был квалификацией не ниже того кто писал :)
Насчет что недокументирован.. не согласен. Я думаю любой разработчик документирует то что делает. Даже не для облегчения работы того кто будет этот код разбирать, а для самого себя. Через месяцок-другой забываешь что и где писал.
А с Open Source под *nix сравнивать не надо. Там все таки совсем другой уровень. 3D редактор Blender, Open Office, MySQL, "огненная лисичка" я думаю посложнее простенькой скады.

AWA1971
07.01.2010, 21:17
Берем Компас 3D, фотошоп и делаем. Хотите что нибудь навороченное, с обработкой нажатий правой клавиши, изменяющимися элементами? Пожалуйста - ActiveX, все классы открыты для наследования, есть соответсвующая документация. Берем Visual Studio и пишем, пишем, пишем.

Чем я, собственно, и занимаюсь. Только на Delphi (там, кстати, есть свой встроенный графический редактор). А если все-равно писАть, то в чем тогда преимущество "стандартной" скады? Ну а новые версии...Побаловался 8-й - не понравилось, в семерке привычней, да и неудобная какая то. А последующие (те, что смотрел) сильно напоминают именно восьмую, хотя я последнюю версию даже в глаза не видел. Просто D7 меня во всем устраивает. Да и полазав по дельфийским форумам (а где еще ума набраться?) выяснил, что многие по сей день сидят на Delphi5 и всем довольны. Так что не вижу причин бросать товарища, который не подводит меня уже 10 лет. Ну пойду, приму за ваше здоровье бальзам программиста. Всем удачи! Sniper, желаю, что бы в цель!

Sniper007
07.01.2010, 21:45
Не.. Я же сказал - если есть желание что нибудь пописать. Просто не понравился мне стандартный компонент управления - написал свой. Мог и стандартный поставить. Да и объем которые нужно потратить на написание ActiveX гораздо меньше чем на создание ядра собственной скады.

Sniper, желаю, что бы в цель!
Спасибо. :)

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

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

AntoNechayuk
11.01.2010, 11:59
скачал компонент - буду разбираться. а так все равно жду помощи в виде рабочего проекта (самого манюсенького) :)

Dmitry
11.01.2010, 15:36
вот если кому нужен наипростейший пример работы с DDE сервером CODESYS. Для небольших проектов сойдёт. Минус такого сервера - для каждого ПЛК запускается свой CODESYS или CoDeSys Gateway DDE Server. Хотяв зависимости от проекта, можно данные с нескольких ПЛК накапливать в одном и работать уже с ним.

AntoNechayuk
11.01.2010, 16:02
для каждого ПЛК запускается свой CODESYS

а этот пример можно загрузить в ПЛК и запускать без CoDeSys?

AntoNechayuk
11.01.2010, 16:03
и спасибо огромное! - он рабочий и это главное :)

AWA1971
11.01.2010, 16:03
AntoNechayuk, отослал подробное описание подключения Delphi через OPC-сервер на Вашу почту. С загрузкой на форум возникли проблемы (из-за рисунков вес почти 13 MB). Пробовал делить на несколько частей - бесполезно. Надеюсь - как вариант подойдет. Успехов!

AntoNechayuk
11.01.2010, 16:06
пока нету... дублирую почту (для проверки)
1. nechayuk@mail.ru
2. aiz.asma@mail.ru

буду с нетерпением ждать - Вам огромное спасибо. Жаль, конечно что на форум не получилось - ведь поможет народу 100%!

AntoNechayuk
11.01.2010, 16:27
было бы круто читать из плк без кодесиса.
не могли бы такой пример дать - а то долго буду головой пыхтеть
спасибо.

AWA1971
11.01.2010, 16:36
туда (1-ый адрес). если что не так, из дома по 2-му попробую или на форум загрузить.

Sniper007
12.01.2010, 08:14
было бы круто читать из плк без кодесиса.
не могли бы такой пример дать - а то долго буду головой пыхтеть
спасибо.
А что вам мешает использовать какую нибудь Modbus библиотеку для delphi. Вот для примера для Modbus TCP:
http://sourceforge.net/projects/delphimodbus/

Hemann
12.01.2010, 10:10
я вот сижу на D5 и не жужжу :-), правда уже посетила мысль о переходе на D7. что-то еще более новое не понравилось.

AntoNechayuk
12.01.2010, 15:45
пока не получается.... много говорим - а рабочей самой простенькой программки не могу найти....:confused:

AWA1971
12.01.2010, 18:41
AntoNechayuk, не расстраивайтесь. У всех все когда-то не получалось. Сейчас подзагружен, как разгребусь - загружу что-нибудь с пояснениями. Вы, кстати, почту не получили?

AntoNechayuk
13.01.2010, 08:56
почту пока так и не получил.... так что ломаю голову пока над дде... но думаю что это направление мне не подойдет, так как необходимо чтобы для работы включался сам плк и только прога на делфи... остальные программы (в данном случае серверы) если и подгружались - то только автоматически без установки соответствующих программ. + работа должна быть оперативна, ибо в будущем подразумеваю подключение минимум одного энкодера.

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

как только сделаю проект - обещаю выложыть на форум :)

AWA1971
13.01.2010, 10:24
AntoNechayuk, ловите минимальный проект (его можно сделать и другим способом, просто этот более показателен). Почитайте несколько сумбурное, но, насколько возможно, подробное описание. Вобщем, когда разберетесь и переделаете под свой ПЛК, думаю, дальнейшая модернизация Вам под силу. А возможностей у Delphi - немеряно (кроме того, дельфийский exe-шник на ПК может работать и без установленной Delphi, а кодесисовский OPC-сервер может быть установлен и без самой CoDeSys). Короче - все дороги перед Вами.

AntoNechayuk
13.01.2010, 10:59
принял... респект за описание!
у меня плк 150-220-ум.... в кодесисе при компиляции пишет:3728 ошибка.... неверно указан адресс. как его описать еще не знаю...

а есть где-либо описание какие на моем плк все адресса?

AWA1971
13.01.2010, 11:11
вкладка "ресурсы"-> "конфигурация плк".

AntoNechayuk
13.01.2010, 11:24
DO1 AT%QB0.0:BOOL;
DI1 AT%IB0.0:BOOL;

все равно пишет неверный адресс:confused:

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

AWA1971
13.01.2010, 12:46
Так может у Вас в CoDeSys нужный таргет-файл не установлен? Качайте и устанавливайте (там просто, в документации это есть).

AntoNechayuk
13.01.2010, 12:48
Так может у Вас в CoDeSys нужный таргет-файл не установлен? Качайте и устанавливайте (там просто, в документации это есть).

Да, что-то было не так... таргет был... но что-то не так. Сейчас "ручками" пишу все по описанию - пока все ок.(дошел до Делфи):)

AWA1971
13.01.2010, 12:50
вот ваши переменные (к примеру)
Var_global
Do1 At%ix0.0:bool;
Di1 At%qx1.0:bool;
End_var

AntoNechayuk
13.01.2010, 13:49
заработало!. ура!! только в описании где-то ошибка(в пунктах Delphi). при нажатии на кнопку срабатывает выход плк, а цвет не меняется.... поставил изменение на событие кнопок и все пучком....:)

как еще можно регулировать опрос плк (меньше секунды?)

AWA1971
13.01.2010, 14:03
Временной промежуток опроса ПЛК я изменял в свойстве таймера "Interval"(чем меньше - тем быстрее). А насчет изменения цвета - так я и планировал менять его при подаче 24v на вход ПЛК, а кнопка в Delphi подавала сигнал на выход ПЛК (просто показать взаимодействие Delphi и ПЛК). Так что так и должно было быть, но, впрочем, Вам и карты в руки. Теперь, я думаю, сами все для себя поменяете так, как Вам самим надо.
Кстати, в случае переменных типа REAL (может пригодиться):

чтение из ПЛК
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=FloatToStr(dOPCServer1.OPCGroups[0].OPCItems[1].Value);
end;

запись в ПЛК
procedure TForm1.Button2Click(Sender: TObject);
begin
dOPCServer1.OPCGroups[0].OPCItems[1].WriteSync(StrToFloat(Edit1.Text));
end;

Удачи!

AntoNechayuk
13.01.2010, 14:06
спасибо... уже многое что понимаю.
а нет ли где полного описания компонента орс?

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

AntoNechayuk
14.01.2010, 14:10
странно - записываю значение в плк со скады(Делфи, через ОРС, переменную counter) - то значение хранится только до следующей инициализации скады. После запуска обнуление происходит. Как записать так, чтобы хранилось всегда и не обнулялось?

AWA1971
14.01.2010, 16:26
для сохранения переменных в плк при отключении питания, они объявляются как "ретайн"(добавить к Var слово Retain) .например:
Var Retain
A1:int; (*сохраняемая в постоянной памяти переменная*)
End_var

AntoNechayuk
14.01.2010, 16:48
даже используя Retain при запуске программы переменная в плк обнуляется.... почему??

AWA1971
14.01.2010, 16:55
Да не должна по идее. Может засада в коде. Киньте проект, будет время - гляну, да и из спецов по CoDeSys может кто-нибудь подскажет.

AntoNechayuk
14.01.2010, 17:10
вот всё что накрутил:

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

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

AWA1971
14.01.2010, 19:59
http://www.owen.ru/forum/showthread.php?t=2727&highlight=RETAIN
Возможно, здесь ответ на Ваш вопрос. Кстати, проект Вы выслали неполный (Delphi). А насчет тормозов системы - что то не замечал.

AntoNechayuk
15.01.2010, 09:15
перезалил:

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


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

AntoNechayuk
15.01.2010, 13:30
скопировал exe файл на другой комп... установил только орс-сервер(кодесисовский) - не работает - пишет неопознанная ошибка....

AWA1971
15.01.2010, 14:42
Трудно сказать, не видев своими глазами. Явно с настройками конфигурации что-то не так. Посмотрите здесь по поводу dOPC и OPC-сервера CoDeSys: ProgramFiles->Kassl->dOPC->demo->DA->DA Client.
http://forum-ru.3s-software.com/viewtopic.php?t=708&highlight=opc
Ну и небольшой пример по Ретайн-переменным(входы и выходы ПЛК инициализированы прямо в "Конфигурации ПЛК"). Проект на 110-м ОВЕНЕ (переделайте под свой) делает следующее:
Счетчик COUNTER_OWEN увеличивается на 1 при срабатывании DI1, сбрасывается в 0 при DI2 и сохраняет значение при выключенном питании.
Счетчик COUNTER_DELPHI увеличивается на 1 и сбрасывается в 0 при нажатии соответствующих кнопок в Delphi и сохраняет значение при выключенном питании.

AntoNechayuk
15.01.2010, 15:10
с переносом вроде разобрался... (некорректные настройки сервера)

теперь самое главное - реализовать проект

AWA1971
15.01.2010, 16:28
уверен - все получится. удачи!

AWA1971
15.01.2010, 16:48
Кстати, опишите ошибки при переносе проекта с одного ПК на другой (у кого-то может та же проблема возникнет). Вы просто не сконфигурировали OPC-сервер CoDeSys? Несовпадение верcий ОС на обоих ПК? Или еще что то? Сам OPC-сервер устанавливали отдельным EXE-шником или при установке CoDeSys убрали все галочки за исключением серверов?

AntoNechayuk
18.01.2010, 09:52
ошибка была из-за неправильной настройки сервера.
1. Установил ОРС, убрав все галочки в инсталляторе Кодесис, оставив только "Communication Modules"
2. Запустил ОРСсервер и настроил связь, проверив перед этим работоспособность обмена данными в HyperTerminal (как описано по адресу: http://owen.ru/forum/showthread.php?t=4261&highlight=%F1%E2%FF%E7%FC+%F1+%EF%EB%EA). Не забыть проставить галку на SinglePLC и сохранить все. (тут и была, наверное ошибка - не проставил галку)
3. Важно чтобы версия Сервера совпадала с настройками в самой программе на Делфи. Я вручную описал подключение, задав имя сервера:
dOPCServer1.ServerName:= '{7904C302-AC19-11D4-9E1E-00105A4AB1C6}';
dOPCServer1.Connect(dOPCServer1.ServerName);
4. Сейчас все работает. Хотя при запуске программы необходимо выводить сообщение любое, чтобы успел прочитать переменные из ПЛК... в противном случае присвоения будут нулевыми.(у меня подключение реализовано при запуске программы)

Пробовал на другие компы ставить, только корректно все настраивать - все ок.


Сам OPC-сервер устанавливали отдельным EXE-шником

я бы установил отдельным - но где его взять???

AntoNechayuk
20.01.2010, 12:35
:eek:

сегодня не вижу переменных через компонент dOPC.... в чем проблема - не могу разобраться. Переустанавливал сам кодесис... куча раз перенастраивал как ОРСсервер так и в самом проекте - ничего.....

может триал все-таки работает не только на мессаги???:confused:

AWA1971
20.01.2010, 19:03
У меня dOPC стоит уже давно (даже не помню, когда устанавливал) и кроме сообщения при запуске ничем не докучает. Попробуйте dOPCServer1.ServerName настроить вручную, а не через присваивание '{7904C302-AC19-11D4-9E1E-00105A4AB1C6}' в коде.

AntoNechayuk
21.01.2010, 11:51
почуму-то слетела галочка "Создавать описания" в "рабочей области" вкладки Ресурсов.... Пол дня возился вчера - пока не допер что нужно там посмотреть настройки... теперь работает.


Попробуйте dOPCServer1.ServerName настроить вручную

А это как (т.е. что вы имете ввиду?) - через клик на самом компоненте и потом Сервер-Коннект? или ещё как-то?... (Просто английский плохо знаю, чтобы понимать хелп к dOPC):)

AWA1971
21.01.2010, 15:27
Я имел в виду, что можно было попробывать загрузить переменные в dOPC снова, через ручное подключение к OPC-серверу CoDeSys: "dOPCServer1.ServerName"-> нажатие кнопки в правом от него поле -> и т.д.(дальше Вы в курсе) без "dOPCServer1.ServerName:= '{7904C302-AC19-11D4-9E1E-00105A4AB1C6}'''. (Проверить наличие списка переменных или их отсутствие и тогда определиться, где искать: Delphi или CoDeSys). Ну если и так все выяснилось - тем лучше. Теперь уже знаете, какие ошибки могут возникать. Примеры в "ProgramFiles->Kassl->dOPC->demo" могут на что-нибудь полезное навести. Удачи! И не забудьте выложить проект (с ПОДРОБНЫМ описанием - как и что) - тема вроде популярна, посмотрите на количество просмотров. Многим может пригодиться.

AntoNechayuk
22.01.2010, 13:11
проект пока не готов... в разработке :) есть только маленькая программка отображения в реальном времени изменения на входах моего ПЛК ...а как будет все (в проекте) работать - выложу....

AntoNechayuk
10.02.2010, 12:23
Вот названия интересных компонентов для Делфи включающих светодиоды, тумблеры, стрелочные индикаторы и т.п.:

1.Abakus
2. Alpha (скины)

Скачать можна по ссылке:
http://admin.work.antonechayuk.operaunite.com/file_sharing/content/

Нужно ввести будет пароль. Пароль вышлю на Ваш e-mail. Пишите его в персональные сообщения. Постараюсь отвечать всем, но только в рабочее время (с 8.30 - 17.00 Москва).

AWA1971
10.02.2010, 16:26
Здесь тоже большая подборка компонентов для Делфи. Пригодится и для собственной скады и еще много для чего...
http://www.delphiexpert.ru/component.php?page=1
AntoNechayuk, вышлите пароль мне в личку. Пригодится. Кстати, в дельфийском редакторе сами не пробовали рисовать? Те же кнопки, джойстики и т.д.

Stork-Systems
13.03.2010, 09:02
16 пропарочных камер, на каждой ПЛК-150.
Все в сети Ethernet (TCP/IP). В ПЛК-150 проект с поддержкой
OPC переменных, CoDeSys OPC Server.
На компьютере АРМ диспетчера:
- приложение написанное на Delphi 2009,
- для работы с OPC: Iocomp_Ultra_Pack_4.0.3 и для графиков (iPlot),
(ранее проект был на dOPC, но с Iocomp надежней и проще)
- Firebird SQL Server 2.0 для базы данных (компонент FIBPlus 6.9)
- гриды, деревья: компонент EhLib 5.0
- Отчеты: FastReport 4.7

Преподаю ПЛК, АСУ ТП студентам. Раньше давал MasterSCADA, TraceMode -
закрытые системы, документация покупается и т.д. ...
есть конечно скидки для учебных заведений, но это сильно ограничивает.
Пару дипломов сделали на SCADA и отказались, получается я изначально
привязываю студента к определенной оболочке, ну и соответственно
прийдя на предприятие, для работы он должен будет ее купить.

С Delphi все намного проще, во первых Паскаль преподают еще со школы,
среду Delphi используют во многих предметах на младших курсах.
Мое дело научить работать в Delphi с библиотеками по автоматизации.
А про SCADA просто говорю, что есть такие, открываем,
смотрим Demo примеры ...

ASo
13.03.2010, 09:24
Преподаю ПЛК, АСУ ТП студентам. Раньше давал MasterSCADA, TraceMode -
закрытые системы, документация покупается и т.д. ...
есть конечно скидки для учебных заведений, но это сильно ограничивает.
Пару дипломов сделали на SCADA и отказались, получается я изначально
привязываю студента к определенной оболочке, ну и соответственно
прийдя на предприятие, для работы он должен будет ее купить.
Студентам ВУЗов?
Простите, но если студента чему научили - только то и знает - это не инженер, а в лучшем случае техник.
Задача студента (в данном примере) научиться применению SCADA систем. А с какой он (инженер) там дальше встретится какая разница - обучится, вопрос максимум 2-х недель на обучение и нескольких недель на "вход". Иначе как специалист на рынке труда он ничего не стОит.

С Delphi все намного проще, во первых Паскаль преподают еще со школы,
среду Delphi используют во многих предметах на младших курсах.
Мое дело научить работать в Delphi с библиотеками по автоматизации.
А про SCADA просто говорю, что есть такие, открываем,
смотрим Demo примеры ...
Когда я был молодым выпускником ВУЗа - рассуждал похоже, правда по другим причинам - тогда компы были слабенькими. Потом понял, почему в мире используют SCADA. А если прибавить сопровождение - то стандартный язык просто "отдыхает".

Sniper007
13.03.2010, 11:08
MasterSCADA закрытые системы, документация покупается и т.д. ...

Приехали...
Во первых документация покупается только в ПЕЧАТНОМ виде. Или может учебники по делфи стали бесплатно раздавать?
Второе. С какого MasterScada стала закрытой? Лично написал несколько компонентов ФБ и ActiveX на C#. Документация есть, классы открыты, пиши - нехочу.
А с появлением модуля "Скрипт" можно теперь такие фокусы выкидывать...


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

А так не привязываете?
А насчет покупки. Скажите может подразделение корпорации Borland (Embarcadero) сменило лицензию Delphi на freeware?

AntoNechayuk
15.03.2010, 09:56
А насчет покупки. Скажите может подразделение корпорации Borland (Embarcadero) сменило лицензию Delphi на freeware?

Согласен - Enterprise стоит недешево - но взломанных "рабочих" версий хоть отбавляй - что не скажешь о СКАДАх.... Как не крути - а чтобы нормально ее попробовать необходимо ее купить... А чтобы купить - необходимо попробывать и правильно сформировать требования - замкнутый круг!

Кстати наша компания собирается приобрести Delphi - и все благодаря тому - что есть готовые программные решения которые приносят деньги! А как там будет со скадами - никто не знает.... Кроме Вас, конечно.

AntoNechayuk
15.03.2010, 09:59
для работы с OPC: Iocomp_Ultra_Pack_4.0.3 и для графиков (iPlot),

Не подскажете!? - я вот установил "на пробу" и пока не вижу особых удобств..... ведь как я понимаю с сервером будут работать только те элементы что входят в компонент..... или все-таки есть возможность подключения к серверу не используя сами элементы (как в dOPC)?

Дмитрий Егоренков
15.03.2010, 10:14
плохому детей учите. маргинальная среда разработки, нелицензионное по, использование не подходящих инструментов.

и никакая поделка на дельфи не сравнится с нормальной Scada. ни по одному параметру. даже по цене.

Sniper007
15.03.2010, 14:44
А чтобы купить - необходимо попробывать и правильно сформировать требования - замкнутый круг!

Что значит правильно "правильно сформировать требования"?

AWA1971
15.03.2010, 16:50
Признаться, думал: тема успокоилась…Да куда там! От чего у людей такая антипатия к Делфи? Не пойму. Или Борланд кому то дорогу перешел? Вот уже и в разряд маргинальных ПО ее, бедную, перевели…А за какие недостатки? Ведь так никто квалифицированно и не ответил. Значит, изучит студент готовую скада-систему и вот он – спец высшей категории, за пару-тройку недель освоит любую другую, на рынке труда его рвут с руками, весь в шоколаде и приносит счастье и доход немерянный любому производству. А если он на делфе СОБСТВЕННУЮ скаду напишет, то изучить что-нибудь другое ему уже, конечно, не судьба, вся жизнь его проходит впустую, а максимум его карьеры – мышь за программистом Trace Mode носить.
На Delphi, значит, поделки, а на «нормальной» скаде – шедевр…А я то всегда думал, что конечный продукт в первую очередь зависит от того, что в голове его создателя находится, а во-вторую – от возможностей, которые ему (программисту) среда разработки предоставляет. И в чем же меня урезает маргинальная Delphi? До сей поры она мне все только предоставляла. Но это, как говорится – на любителя…

Sniper007
15.03.2010, 19:08
Ну начнем наверно с того что тему "оживил" как раз сторонник Delphi и самопальных скад. Можно еще сказать что Delphi для Borland уже скорее балласт, а не ценный продукт (почитайте на Википедии, Борланд вообще хотел продать ее).
Насчет ограничений... Ладно.. каюсь... Я сам писал свою скаду :)
Более того - я написал ее (вы не поверите именно в Delphi 7 :) ). Она работала. Времени на написание у меня ушло несколько недель. А потом я взял Master Scada, и сделал ту же задачу за 3 часа...

Один преподователь из ВУЗа рассказывал. Раньше писал программы для промышленных систем на С. Уходили месяцы. А потом взял LabView, и схожие задачи стали решаться за 3 вечера.

AWA1971
16.03.2010, 09:51
Добрый день, господа форум! Согласен, что на Delphi приложение дольше разрабатывать. Первый раз. Потом появляются наработки и подобные участки кода иногда просто тупо копируются в новый проект с изменением переменных (это если лень свою библиотеку или компонент написать). И куда в этом случае пропадает ЕДИНСТВЕННОЕ (и только на первых порах) преимущество (про Master Scada тактично промолчу, а то уже слышу, как Sniper007 затвор передергивает…) «стандартной» скады?
Куплет окончен, теперь припев про цены:
Появилась потребность в создании приложений для 10 АРМ по 100 точек доступа в каждом. Что надо разработчику и во сколько это выльется? Мне – одна Delphi. Повторю – ОДНА. И все, расчет окончен. А сколько затратит программист (или его заказчик) стандартизированной Scada-системы? После подсчета и выхода из депрессии – второй куплет:
Ну не нравится многим готовые изображения из пробной заставки к телепузикам в готовых скада? Что делаем? Правильно – создаем сами. Руками и головой. Отчет нужен? Фаст Репорт, Рэйв Репортс… – выбирайте. Сохранить данные в вордовский, экселевский, текстовый документы? Да на здоровье – все доступно. Подцепиться к серверу (на выбор)? Пожалуйста, вкладку «ADO» (к примеру) посетите и будет вам счастье.
Ну и заключительная ария: Не нравится Delphi? Да пишите вы на доброе здоровье в том, что вас устраивает. Я только одного не пойму: почему при упоминании слова «Делфи» многих начинает трепать легкий паркинсон? Да…Есть многое на свете, друг Горацио…(ну дальше сами знаете). Всем – удачи и терпения!

Sniper007
16.03.2010, 11:47
Но вы забываете что непрерывно работая со стандартной Scada, скорость тоже увечивается. И то на что сначала уходило несколько дней будет решаться за пару часов.
Выигрыш по времени у стандартных скад будет всегда.
Насчет компонентов. Повторюсь - никто не заставляет рисовать свои. Можно воовсе обойтись функцинальными обозначениями: насос - треугольник в кружочке, клапан - два треугольника и т.д.
Насчет стоимости APM. В вашем случае при использовании Master Scada обойдется в 9 тыс рублей один APM.

А вот теперь я выскажу еще одно мое личное мнение (не претендующее на истину).
Итак. Вы утверждаете что написание собственной скады - это средство экономии. Я не согласен. Пример.
Есть в Сибири одна небольшая гидроэлектростанция, там еще недавно небольшая авария произошла (не будем говорить какая именно - не важно :) ). Так вот одна питерская фирма (опять таки не будем говорить какая именно :) ), делала там систему управления. При этом использовалось самое дорогое "железо" из Японии и Германии. Но при этом они использовали самописную APM. Неужели дело в экономии бюджета?
Я думаю как раз наоборот, компания-собственник станции заплатила за эту APM столько что Интачи и ВинЦЦ нервно курят за углом. Так что для меня вопрос "самописная APM - это средство экономии или возможность хорошо заработать?" остается открытым. :)

AWA1971
16.03.2010, 13:39
Да, нелегко спорить с тем, у кого два стола в аватаре, но все же…
Выигрыш по времени скорее всего будет зависит от того, кто сидит за компом, а не от того, что в этом компе установлено. Да и на стандартной скаде со всем ее быстродействием можно такого наворочать, что потом ни один ж/б бункер не спасет от заказчика, желающего выразить благодарность лично…
Кстати…кое-кто (не скажу – кто именно), в обозримом прошлом изрек мысль, что «написание собственной скады – анахронизм». Получается: «одна питерская фирма» после «одной небольшой аварии» на некоей «сибирской гидроэлектростанции» внедрила систему, которая снимает показания и управляет «дорогим железом из Японии и Германии» с помощью…самописной скады??? Я в ужасе, Интач в шоке, ВинЦЦ в ауте…. И куда смотрел Чубайс?
Ну а если серьезно – то нам то с Вами конечный продукт не покупать, а делать. И цену, в конце концов, тоже нам устанавливать, исходя из суммы необходимого ПО и трудозатрат на его (продукта) разработку и внедрение. А при данных условиях положительное сальдо будет у Delphi, потому что покупаю я его один раз и (возможно) на всю жизнь без учета количества разрабатываемых АРМ, точек доступа и пр. А, значит, себестоимость созданной системы будет зависеть только от того, насколько я оценю свои мозги (после выходных – оставшуюся в рабочем состоянии мозгу…).
Так что вопрос: "самописная APM - это средство экономии или возможность хорошо заработать?" останется открытым всегда, т.к. желающие разрабатывать что то свое за пределами рамок и шаблонов никогда не переведутся.

Sniper007
16.03.2010, 14:39
Выигрыш по времени скорее всего будет зависит от того, кто сидит за компом, а не от того, что в этом компе установлено. Да и на стандартной скаде со всем ее быстродействием можно такого наворочать, что потом ни один ж/б бункер не спасет от заказчика, желающего выразить благодарность лично…

Верно.
Но во первых, универсальные Scada осваиваются на порядок быстрее чем Delphi. Во вторых, уж если кто-то может наворотить в универсальной скаде что никто не разберется, то что будет если дать ему в руки Delphi и сказать "Дерзай"?
Я больше скажу, я видел произведения творчества таких вот людей. Ну что я могу сказать, операторы лишний раз боятся чихнуть за компьютером. :)


Кстати…кое-кто (не скажу – кто именно), в обозримом прошлом изрек мысль, что «написание собственной скады – анахронизм». Получается: «одна питерская фирма» после «одной небольшой аварии» на некоей «сибирской гидроэлектростанции» внедрила систему, которая снимает показания и управляет «дорогим железом из Японии и Германии» с помощью…самописной скады??? Я в ужасе, Интач в шоке, ВинЦЦ в ауте…. И куда смотрел Чубайс?
Ваш сарказм мне непонятен.
Во первых не после аварии, а до. Во вторых Чубайс на тот момент уже рулил корпорацией РОСНАНО.
А сказал я это потому что не считаю что собственные скады дешевле универсальных. Зачастую это даже наоборот

AWA1971
16.03.2010, 16:07
Но во первых, универсальные Scada осваиваются на порядок быстрее чем Delphi.
Возможно, если пытаться освоить ВСЕ Delphi. Не встречал таких спецов, да и зачем это нужно для написания Scada?

Во вторых, уж если кто-то может наворотить в универсальной скаде что никто не разберется, то что будет если дать ему в руки Delphi и сказать "Дерзай"?

Есть варианты. Один из которых:"А это гораздо проще, чем я думал..."

Ваш сарказм мне непонятен.
Во первых не после аварии, а до. Во вторых Чубайс на тот момент уже рулил корпорацией РОСНАНО.
Мой сарказм, разумеется, не касается самого факта аварии ни коим образом. Чем там рулил Чубайс и кому и что именно пытался продать Borland - это все вторично. А первично то, что КАЖДЫЙ ЧЕЛОВЕК ДОЛЖЕН ИМЕТЬ ПРАВО ВЫБОРА. А для принятия решения он должен обладать некоей информацией. Желательно - достоверной и очень сильно желательно - аргументированной. "Универсальная скада"???????? Своеобразно...Как называется и в чем ее универсальность? Подходит ко всем существующим типам PLC? Не нуждается в обновлениях, драйверах, способна управлять чем угодно и когда угодно? Не пойму, или Вы про Delphi, что ли, говорите? Ладно...Спор ни о чем. Давайте останемся при своих интересах, тем более, что кроме Вас никто никакого сколько-нибудь существенного аргумента не привел. Все остальные на уровне:
- Scada лучше, чем Delphi...
- Чем лучше?
- Чем, чем...чем Delphi...
Успехов Вам и развития Мастерскаде (пусть достигает уровня "универсальная"). Удачи!

Sniper007
16.03.2010, 16:22
Хорошо. Ну тогда скажите что может ваш Delphi чего не может Master Scada?


Как называется и в чем ее универсальность? Подходит ко всем существующим типам PLC? Не нуждается в обновлениях, драйверах, способна управлять чем угодно и когда угодно?
Да к любым ПЛК, который имеет OPC сервер или поддерживает стандартный протокол. Чем угодно и когда угодно... Ну даже не знаю... Кажется в атомной промышленности нельзя использовать - там OPC вроде бы запрещены, но я не уверен. А в целом да, чем угодно.

Перечисляю преимущества универсальной Scada (на примере Master SCADA):
1) Проще в освоении. Был пример когда человек впервые увидевший SCADA систему сделал на ней пару несложных проектов буквально за пару часов.
2) Скорость разработки возрастает в разы.
3) Простота масштабирования проекта.
4) В разработанном проекте легко сможет разобраться другой человек.
5) Многие SCADA системы скомбинированы с Soft Logic (а также MES, HRM). Что позволяет упростить разработку проекта при использовании PC-контроллеров.
Подводя итог - она проще по всем показателям, потому как заточена именно под задачу автоматизации. Так же как молоток приспособлен к забиванию гвоздей. Но разумеется можно успешно забивать гвозди и рубанком.

А теперь преимущества самодельной:
1) Ниже цена (возможно)
2) Требует меньше ресурсов. Тоже сомнительное преимущество, потому что современные компьютеры рассчитанные на 3D игры вроде Сталкера, любую скаду сожрут и не подавятся.

P.S. На одном форуме пару лет назад была темка наподобие "А зачем вообще нужны скады?" Ведь у нас есть замечательный Excel, Power Point и Visio - давайте на них проекты для автоматизации лабать.

ASo
16.03.2010, 16:37
А теперь преимущества самодельной:
1) Ниже цена (возможно)
Не будет она ниже! Ниже - если только не считать времени разработки, типа оцениваем только то, что покупаем, а стоимость программиста 0 (ноль), типа, он и так есть, оклад получает - пусть топчет клавиши. Но это чушь. При соизмеримой стоимости среды разработки СКАДА и "языка программирования высокого уровня" стоимость точки в РТМ СКАДЫ много кратно окупается.
В конце концов, никто (ну, может быть кроме очень специальных случаев) не программирует ПЛК на ассембелере под прикладную задачу, хотя это может съэкономить стоимость лицензии на ПЛК.

Crusash
16.03.2010, 16:39
дедушке дельфи действительно пора на заслуженную пенсию...
уж если и писать свою скаду то на Qt (во всяком случае свои проекты мы решили писать на нём)
а универсальные скады пусть курят в сторонке...

Павел ГОН
16.03.2010, 16:43
Прочитал все посты на 9 страницах. Хочу вставить свои 5 копеек. Во первых зря наехали на дядьку, что учит в ВУзе. Надо с начало научится программировать, а потом в скадах рисовать. Именно рисовать. Это не программирование, а рисование и привязывание элементов к каналам и т.д. Это Скады умеют делать отлично. Если скада еще проект на 500 и более каналов, скада от производителя оборудования, то ни надо ни чего придумывать. Цена скады будет занимать проценты от оборудования и потеряется в огромной сумме проекта. К тому же производитель будет отвечать и за оборудование и за софт. В нашем случае 5- 10 ПЛК овен стоят ваще слезы по сравнению с сименсами и др. И ставить великие скады на 50 -100-200 каналов не интересно. Мы не смогли быть конкурентно способны и поэтому написали для нескольких своих проектов мини скады для испытательных стендов, прессов и дозаторов на Делфи. Т.е. речь идет о небольших проектах, а не системах сбора данных тогда это приемлемо. Ну, и еще не надо забывать о товарищах которые работают на предприятиях. Это просто ужас какой-то - не то что в программировании, в простейших электрических шкафах с плк не могут разобраться! Поэтому мы делали софт такого уровня, что уставнил WINWOWs сунул инсталляционный диск и все установилось автоматом и работай! Что там кто то будет дописывать что-то слабо верится. Если у предприятия есть деньги, то оно купит новую линию, стенд и прочее, которые будут иметь на борту все что надо. Если нет денег, то будут модернизировать искать что то дешевое включая программные решения. Т.е. скада удобна разработчику потратить мало времени и поразить покупателя, но заказчику ?????? А ваще пора ОВНУ написать свою скаду для ПЛК.

ASo
16.03.2010, 16:52
Именно рисовать. Это не программирование, а рисование и привязывание элементов к каналам и т.д. Это Скады умеют делать отлично.
Во многих СКАДАХ есть возможность middleware, в т.ч. и на КДС РТМ.

И ставить великие скады на 50 -100-200 каналов не интересно.
СКАДЫ на данное количество каналов в практике - это вообще редкость.
Если Вы не используете ДА (Data Accuarity, сохранение данных), а в данных случаях это не используется, ибо не нужно - то это либо панель, либо комп с HMI (человекомашинным интерфейсом) а он часто вообще бесплатен или стОит копейки.

Т.е. скада удобна разработчику, но заказчику ??????
Так и ПЛК удобен разработчику, а не заказчику - спаяйте свое спецустройство под проект. Вот только цена... Так и со СКАДОЙ.

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

Sniper007
16.03.2010, 16:55
Не будет она ниже!
Вот и я о том же.

Мы не смогли быть конкурентно способны и поэтому написали для нескольких своих проектов мини скады для испытательных стендов, прессов и дозаторов на Делфи.
Ну уж если на то пошло, то ведь есть и бесплатные SCADA. Функциональность у них конечно не очень, но все таки. KVision, FreeScada, OpenScada, MasterScada на 32 точки (небольшой проект вполне можно запихать).

AWA1971
17.03.2010, 09:26
Доброе утро, джентльмены! Ну что, прошла температура кипения? Билли Гейц с лекцией по WindowsScada7 не снился? Ну и замечательно.

Ниже - если только не считать времени разработки, типа оцениваем только то, что покупаем, а стоимость программиста 0 (ноль), типа, он и так есть, оклад получает - пусть топчет клавиши. Но это чушь.
Разумеется - чушь. На скаде ведь времени для разработки не требуется. Совсем. А стоимость программиста умножим на 10 (т.е. тот же нуль)...

При соизмеримой стоимости среды разработки СКАДА и "языка программирования высокого уровня" стоимость точки в РТМ СКАДЫ много кратно окупается.

Шедеврально! Все рассчитано до копейки с учетом среднестатистического программиста. Незамедлительно в анналы Бух.учета и пару нобелевских премий в области экономики!

Перечисляю преимущества универсальной Scada (на примере Master SCADA):...

А стоило ли? То же самое сейчас можно написать про что угодно...Как любил говаривать старина Колчак: "И что?". Но вот фраза:

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

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

Sniper007
17.03.2010, 11:05
Разумеется - чушь. На скаде ведь времени для разработки не требуется. Совсем. А стоимость программиста умножим на 10 (т.е. тот же нуль)...

Ну это уже начинает надоедать... Раз время разработки в Scada меньше, то и стоимость работы меньше.

Параллели не просматриваются?

Нет не просматриваются.
У сегнетикс есть такая хрень AutoScada - Scada сделанная на базе MasterScada но только строящая диспетчеризацию систем вентиляции в полностью автоматическом режиме.
Проект там довольно сложный, объемный. С множеством мнемосхем для универсализации перекрывающих друг друга. Так вот я без особых проблем разобрался с их проектом, и даже своровал несколько элементов и приемов (:cool: ). Что уж говорить про небольшие и средние проекты выполненные в данной системе? Да легко разберутся. Особенно если разработчик делал комментарии к ФБ, скриптам и т.д.


А стоило ли?

Стоило. Вы просили - я ответил.

Про неаргументированность. А у вас то есть аргументы? Я ведь спросил:


Хорошо. Ну тогда скажите что может ваш Delphi чего не может Master Scada?

AWA1971
17.03.2010, 12:09
Мне это надоело не меньше Вас, но спор затеял не я. И потом, если

Раз время разработки в Scada меньше...
-это для Вас догма, то и спорить не о чем.

что может ваш Delphi чего не может Master Scada?

Вы спросили? А посмотрите, если не трудно, сообщения за 7 января. Я тоже спрашивал нечто подобное, но ЗНАЧИТЕЛЬНО РАНЬШЕ ВАС. Ответа не получил и, в свою очередь, отвечать так же не собираюсь. Я не на экзамене. Кроме того, Вы не увидите меня на ветках обсуждения MasterScada с сообщениями типа: "Бросьте заниматься этой скадой и переходите на Delphi". Вы разобрались с проектом на AutoScada? Замечательно! А если кто то не разберется, тот - дурак, не так ли? Ведь все же должны быть такими, как Вы? В общем, надоело мне все эти переливы из пустого в порожнее. Могу только посоветывать (хотя догадываюсь, что Вам не сильно нужен мой совет) уважать чужое мнение и чужой выбор. Тогда, вероятно, и Ваша точка зрения кого-то заинтересует. Все, ушел в работу (разумеется на дедушке Delphi). Удачи.

Gans
18.03.2010, 09:08
Перед началом реализации проекта пообщался и поговорил с людми и решил делать на делфи и ни разу не было причин сожелеть об этом!!!
Люди пользуются тем к чему привыкли хотя на делфях однозначно возможностей больше. Вот взгляните например:
http://ads-kaluga.narod.ru/download/Instruction/Kalugateploset/Instruction_Kalugateploset.pdf
подключение новой котельной к программе занимает не более пары часов. За пять лет не разу прога не подвисла - связь изчезала только когда реально не было связи. Сейчас думаю (на персперктиву) как к этой штуке прикрутить сбор данных/управление через интернет. На мой взгляд в данном случае любая скада будет большим (ударение на первый слог) гемороем.
P. S. о вкусах не спорят и конечно заказчик рассудит:).

BETEP
18.03.2010, 21:13
во страсти кипят, какие всё таки иностранцы тупые если скады придумали, ну зачем они нужны если всё можно так на чём угодно написать.

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

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

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

кстати, берём ресхакер и правим заставки скады и прочего под свой вкус.

тема начата 30.12.2009 сегодня 18.03.2010, самописная прога ещё не готова....

Sniper007
18.03.2010, 21:39
да неужели, а я так умею: засунул диск в комп, установилась настроенная винда вместе со скадой и всем необходимым.

да? а рецептиком не поделитесь?



тема начата 30.12.2009 сегодня 18.03.2010, самописная прога ещё не готова....
:)

magirus
18.03.2010, 23:01
да? а рецептиком не поделитесь?

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

BETEP
19.03.2010, 09:53
Винда изначально расчитана на авт.установку, подробно об этом на http://oszone.net/ там я и учился этому, т.е. берёшь нормальную чистую винду, урезать её можно очень осторожно, встраиваешь в неё DriverPack, необходимые обновления, нетфреймворки и прочее, в том числе наработки других людей, например по настройке сетевого доступа на третьем сервиспаке, пишешь пару файлов с настройками реестра, несколько командных файлов чтобы добавить нужное в реестр и установить дополнительные проги.
многие проги поддерживают авт. установку с ключами. с теми которые не поддерживают и не требуют драйверов устройств, помогает справится Ashampoo UnInstaller, т.е. с его помощью определяем файлы добавленные на диск и ключи реестра, из того что он нашёл делаем самораспаковывающийся архив с батником внутри который доделает то что архиватор не может. также батниками и ключами реестра на одноразовую автозагрузку доделываем в системе всё что хотим, например дефрагментацию диска.

Всё что нечувствительно к дровам обкатываем на Microsoft Virtual PC, чтобы съэкономить время на пробные установки. В двух словах не объяснить но если есть свободное время лучьше потратить, и не лишнее обучение по винде, и экономия времени когда десяток компов на новом объекте пускать нужно.

AntoNechayuk
19.03.2010, 11:10
ну я наверное отвечу.... пора.... (не думал что тут такое :) )

Вобще проект готов. Реализация осталась за малым и никак не связана с ПЛК (разве что взломать дОРС :) ).

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

Я никак не мог полусить точный сигнал с датчика давления. Напомню что я наверное один из первых кто осмелился использовать ПЛК в приборостроении (притом лабораторное оборудование - погрешности минимальны - а скорости бешенные).

Вот наконец удалось реализовать корректировку(Fuzzy Logic + метод наименьших квадратов) - погрешность сигнала с датчика меньше 0,5% в каждой контрольной точке, а если средняя - то 0,2% ( и датчик был на 20МПа, а использовался только на 10МПа - т.е. половина диапазона!). Попробуйте-ка добится этого используя те методы что есть в КоДеСисе - не получится:p ( сигнал через МВ110-8ас - опрос 200Гц)!

нашел куча компонентов, которые просто ооочень помогают реализовать красивый, современный проект.

в самом проекте - получение сигналов от датчика давления, энкодера + управление двигателем (пока одним) + контроль состояния процесса - это все малая часть. Вы сможете проводить испытания, сохранять файлы, печатать протоколы(несколько видов) все экспортировать в самые разные форматы (pdf,odt,doc,txt,jpeg,xls) работать с базами данных (тоже несколько) подключатся к 1С, рисовать графики (сразу более10-ти) производить расчеты и даже менять скины программы + многое другое. Все это делалось двумя программистами и с целью использования в различных проектах - т.е. делая один мы будем использовать все наработки для еще, по крайней мере на данный момент, в двух проектах! Сама программа имеет справку к себе - что немаловажно, инсталляционный файл, видеоуроки. И работает уже на 3-х предприятиях, которые купили Оборудование. (Конечно вы скажете СКАДА - тоже многое может - но я сомневаюсь+ где мне посмотреть что она может??? дадите мне скаду? - тоже сомневаюсь :) :rolleyes: )

И!!!! самое главное стоимость - стоит это все (плк+промышленный пк собственного производства + программа - 850 у.е.).

И все - благодаря Делфи!

ЗЫ. Конечно у меня заветная мечта - ПЛК с быстрыми дискретными входами + 2 аналоговых по типу как в МВ110-8ас(т.е. не меньше 200Гц опрос) и с такой же скоростью опрос сигнала с Тензодатчика 2 входа. А на выходе 2 аналога 0-10В + Дискретка 2 - на базе транзисторных и 4 реле. + погрешность 0,1% - Вот было бы счастьЕЕЕ!!!!:rolleyes:

ЗЫ2: пока писал пост - напарник накидал на форму несколько компонентов и реализовал на них отображение времени (Часы, короче). Мне нужны были манометры - мы их нашли!:p

Дмитрий Егоренков
19.03.2010, 12:20
И!!!! самое главное стоимость - стоит это все (плк+промышленный пк собственного производства + программа - 850 у.е.).


что-то в этой сумме я не вижу зарплаты разработчиков, стоимости средства разработки и использованных компонентов (только dOPC стоит $700).

AntoNechayuk
19.03.2010, 12:29
средства разработки и использованных компонентов (только dOPC стоит $700).

1. dOPC - работает и без покупки
2. средства есть бесплатные, есть платные - но бесплатных больше :)


СКАДА тоже стоит и на каждую разработку необходимо куптиь новую (согласно лицензии)

А самое главное результат - все довольны и зарабатывают. Клиент - благодаря автоматизации, мы - благодаря тому что клиент купил у нас её.

Дмитрий Егоренков
19.03.2010, 12:35
это не ответ. то есть дельфи и компоненты у вас краденые.

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

ну а клиент просто не в курсе, что ему продали товар с душком.

AntoNechayuk
19.03.2010, 12:47
850 - у.е. - это все что клиенту надо.
а виндовс, фотошоп, офис, даже винрар - у вас, позвольте, куплены??? - сомневаюсь..... (как впрочем у клиента тоже)
раз уж мы живем в такой среде - то и выживать нужно.

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

и повторяюсь - что такое скада???? - я её никогда не видел.

AntoNechayuk
19.03.2010, 12:49
если бы вы читали лицензию на dOPC
и кстати с Kassl мы тоже сейчас ведем переговоры. Они собираются снизить цены для бедных Украинцев, а может и для СНГ - это если ВЫ не знали.....

Дмитрий Егоренков
19.03.2010, 12:59
а вы не сомневайтесь. фотошопом и винраром я не пользуюсь, офис у меня от работодателя, ос куплена с компьютерами, а из нелицензионного по в доме только шестая студия.

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

AntoNechayuk
19.03.2010, 13:06
опять деньги..... я не знаю сколько вы зарабюатываете
а у нас, в украине, так сказать в её центре (не в киеве) - зарплата у программиста 200 у.е. - и это хорошо!, а то может быть и меньше...

BETEP
19.03.2010, 13:38
хе, а если скада крякнутая? на чём дешевле будет?

Павел ГОН
19.03.2010, 16:35
ну я наверное отвечу.... пора.... (не думал что тут такое :) )

Вобще проект готов. Реализация осталась за малым и никак не связана с ПЛК (разве что взломать дОРС :) ).

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

Я никак не мог полусить точный сигнал с датчика давления. Напомню что я наверное один из первых кто осмелился использовать ПЛК в приборостроении (притом лабораторное оборудование - погрешности минимальны - а скорости бешенные).

Вот наконец удалось реализовать корректировку(Fuzzy Logic + метод наименьших квадратов) - погрешность сигнала с датчика меньше 0,5% в каждой контрольной точке, а если средняя - то 0,2% ( и датчик был на 20МПа, а использовался только на 10МПа - т.е. половина диапазона!). Попробуйте-ка добится этого используя те методы что есть в КоДеСисе - не получится:p ( сигнал через МВ110-8ас - опрос 200Гц)!

нашел куча компонентов, которые просто ооочень помогают реализовать красивый, современный проект.

в самом проекте - получение сигналов от датчика давления, энкодера + управление двигателем (пока одним) + контроль состояния процесса - это все малая часть. Вы сможете проводить испытания, сохранять файлы, печатать протоколы(несколько видов) все экспортировать в самые разные форматы (pdf,odt,doc,txt,jpeg,xls) работать с базами данных (тоже несколько) подключатся к 1С, рисовать графики (сразу более10-ти) производить расчеты и даже менять скины программы + многое другое. Все это делалось двумя программистами и с целью использования в различных проектах - т.е. делая один мы будем использовать все наработки для еще, по крайней мере на данный момент, в двух проектах! Сама программа имеет справку к себе - что немаловажно, инсталляционный файл, видеоуроки. И работает уже на 3-х предприятиях, которые купили Оборудование. (Конечно вы скажете СКАДА - тоже многое может - но я сомневаюсь+ где мне посмотреть что она может??? дадите мне скаду? - тоже сомневаюсь :) :rolleyes: )

И!!!! самое главное стоимость - стоит это все (плк+промышленный пк собственного производства + программа - 850 у.е.).

И все - благодаря Делфи!

ЗЫ. Конечно у меня заветная мечта - ПЛК с быстрыми дискретными входами + 2 аналоговых по типу как в МВ110-8ас(т.е. не меньше 200Гц опрос) и с такой же скоростью опрос сигнала с Тензодатчика 2 входа. А на выходе 2 аналога 0-10В + Дискретка 2 - на базе транзисторных и 4 реле. + погрешность 0,1% - Вот было бы счастьЕЕЕ!!!!:rolleyes:

ЗЫ2: пока писал пост - напарник накидал на форму несколько компонентов и реализовал на них отображение времени (Часы, короче). Мне нужны были манометры - мы их нашли!:p

ВОТ МОЛОТОК!!! Именно от таких задачах я и говорил в своем посте. Мы занимаемся подобным (Испытательными стендами). Там главное мегаалгоритмы и фишки в самом ПЛК, задание программ испытаний протоколирование в ГОСТовской форме протоколов и т.д. И на делфи реализовать нам просто и удобно - работаем с 1998 года накопили всякого кода своего производства на делфи КУЧУ. Меняются контроллеры, виндовсы и т.п., а мы остаемся 8) и используем свои наработки. А ДЕЛФИ 6 версии мы купили еще 2003 году (вроде так давно это было) при реализации одного проекта и пользуемся им до сих пор. Написано огромное количество проектов. Используем и СКАДУ, но это проекты совсем другого уровня. Но самое смешное, что если чего-то не хватает или нам не нравится реализуем это на ДЕЛФи. Например, в прошлом году как примочку к скаде пришлось писать утилиту для ввода рецептов, их хранение, резервное копирование и т.д А также пришлось переделывать отображение трендов так как заказчик хотел всяких извращениий прямо на графике. Т.е. еще повторюсь СКАДА хороша когда проект масштабный (и не дешевых) и есть кому поддерживать его на предприятии. Для небольших или очень специфических задач подойдет и делфи и др. Естественно что должны быть наработки на Делфи или С в своей теме. иначе условия сравнения со скадой будут не корректны. Еще раз респект и уважуха AntoNechayuk!!

Павел ГОН
19.03.2010, 16:39
уважаемый,ветер! как можно крякнутые версии (если вы конечно вы не сами их взломали) устанавливать заказчику??? а если он за тысячи километров и полет туда и обратно стоит моей зарплаты??? это не правильно! можно только побаловаться дома и понять возможности скады, а заказчику только купленное.

BETEP
19.03.2010, 17:01
павел, по поводу первого поста с вами абсолютно согласен, и скада и делфи и прочее каждое для своих задач. а по поводу второго, я работаю частным образом, продаю только свою работу и не перепродаю оборудование и софт, заказчику предлагаю и честно купить софт и не очень, выбирает сам заказчик, даже если он использует ломаный софт, перед законом я чист, т.к. я не ломаную прогу ему продаю, а свой проект, где он взял ломаную скаду, его проблемы. как вы думаете, на честный софт много народу соглашается?
всё просто, не жадничать и спать спокойно.

Crusash
21.03.2010, 00:03
Существует такая вещь как Kylix, которая осуществляет перенос написанного для Delphi приложения из Microsoft Windows на GNU/Linux. Позволяя заказчику отказаться от виндоуса, тем самым уменьшая риски заказчика при использовании пиратской продукции попасть под статью...

Уважаемый Ветер, может ли ваша скада похвастаться подобной гибкостью?
Wine или виртуальные машины не предлагать...)))

ASo
21.03.2010, 10:20
Позволяя заказчику отказаться от виндоуса, тем самым уменьшая риски заказчика при использовании пиратской продукции попасть под статью...
Сколько стоит лицензия Win на рабочее место?

BETEP
21.03.2010, 10:40
а если приложение на Delphi использует компоненты сделанные под винду? тогда что? переписывать всё заново?
Господа, сколько лет прошло с тех пор как Borland забил на своё творение, у меня такое впечатление что любители Delphi мягко говоря застряли во времени.
Кстати, простую, но набитую красотой и анимацией HMI можно и на флешь нарисовать и особо не парясь разместить у хостера на своём сайте, а данные для неё брать из XML с рабочего компа с публичным IP. В этом случае ось пользователя как вы понимаете вообще по барабану, будем спорить что Delphi в этом вопросе круче?

Crusash
21.03.2010, 13:57
а если приложение на Delphi использует компоненты сделанные под винду? тогда что? переписывать всё заново?


Ну всё заново переписывать врятли будет так уж необходимо, но попарится наверное придётся (всё зависит от того какие компоненты используются)...
Поэтому мы изначально и выбрали Qt как основу для своих проектов, хочешь компили в винде, хочешь в Линуксе и всё сто процентов будет работать...
(но тема всётаки про Дельфи)



Сколько стоит лицензия Win на рабочее место?

А при чём здесь это? - этак мы сейчас свалимся в новый холивар - "Что лучше - дешёвая винда или открытый Линукс"

ASo
21.03.2010, 14:42
А при чём здесь это? - этак мы сейчас свалимся в новый холивар - "Что лучше - дешёвая винда или открытый Линукс"
При суммарной стоимости владения.

Crusash
22.03.2010, 12:36
При суммарной стоимости владения.

Не понял,вопроса. Стоимость владение кем и чего?

grimsun
25.03.2010, 07:34
а если приложение на Delphi использует компоненты сделанные под винду? тогда что? переписывать всё заново?
Господа, сколько лет прошло с тех пор как Borland забил на своё творение, у меня такое впечатление что любители Delphi мягко говоря застряли во времени.
Кстати, простую, но набитую красотой и анимацией HMI можно и на флешь нарисовать и особо не парясь разместить у хостера на своём сайте, а данные для неё брать из XML с рабочего компа с публичным IP. В этом случае ось пользователя как вы понимаете вообще по барабану, будем спорить что Delphi в этом вопросе круче?

Давай те начнем с того, что Borland уже давным давно не разрабатывает Delphi. Этим занимается компания Embarcadero (ранее известная как отдел Borland CodeGear). Второе, это то что Делфи под другие ОСь не выпускаются уже с 2001 года. Хотя вот уже второй год есть так называемый проект Prism, он же Delphi для .net в среде Visual Studio. С одной лишь разницей, что программы можно писать кросс платформенные, заменив всеми любимый .net на библиотеку Mono. Ну и на последок так называемый Lazarus который есть абсолютно под любую ось, даже под ARM, такие как WinCE. А компиляция кросс платформенных приложений в Lazarus просто сказка, в настройках проекта выставляем целевые платформы. Жмем кнопочку "Скомпилировать" и все. Ваш проект готов, под те платформы, которые вы выбрали. А теперь давайте это сравним с вашим глючным продуктом от Adobe. Начнем хотя бы с того, что он является глючным до ужаса. Не смотря на такое количество различных реализаций как Flex и AIR, флэш как терял популярность, так и теряет. Люди все больше вместо флэш начинают использовать современные JavaScript фреймворки. Конечно, спад популярности связан все таки не с тем, что флэш унылое творенье. А с тем, что есть куча других способов реализации. Тот же Silverlight, который сейчас является кросс платформенным. Даже на мобильниках под Windows Mobile и Symbian есть Silverlight. А говорить о Linux и MacOS не приходится. Там хоть и нет его, но есть его реализация Monolight (точно не помню название). Ну а о том, что под Silverlight можно писать все на том же Delphi Prism уже может ответить на все ваши вопросы.

Еще есть вопросы по поводу Delphi?

P.S.: Wine под Linux еще никто не отменял.

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

так что каждый тянет в совй огород. хорошо бы только чтобы все делились своим огромным опытом.

AntoNechayuk
25.03.2010, 10:16
и кстати тема все равно открыта -

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

Gans
25.03.2010, 17:42
можно ли не использовать Opc сервер от кодесиса, и иметь подобный доступ к плк из делфи???
Подобный доступ к ПЛК наверное нет, а вот получить и отправить в ПЛКххх данные конечно возможно! Посмотри ModBus-TCP, если переменных менее сотни то точно можно сделать симпотично. И разумеется можно написать свой протокол и тд (кодесис веещщщь!!! :-)

grimsun
25.03.2010, 19:19
и кстати тема все равно открыта -

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

никто не мешает использовать собственный OPC сервер. Спецификации в открытом доступе, так же как и компоненты для его реализации. Рекомендую все таки зайти на сайт opc foundation где просмотреть более полную информацию.

Crusash
26.03.2010, 16:21
и кстати тема все равно открыта -

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

общаюсь с ПЛК посредством сокетов, глубина доступа определяется программно и можно пофантазировать с собственным протоколом)))

AntoNechayuk
29.03.2010, 16:09
общаюсь с ПЛК посредством сокетов
а примерчик мона?:o

Gosha
29.03.2010, 18:26
Тоже пришел к выводу, что использование scada не всегда подходит к конкретной задаче.

Иногда, проще написать собственную программу. Особенно, если ОС-Linux, qnx, lynxos, VxWorks.

Тогда либо lab_view для linux либо под scada под wine, самый дешевый вариант qt_designer (free gpl типа borland builder) + gcc(gpl) + linux .

Соотв за счет free средств разработки получаем удешевление изделия.

Gosha
29.03.2010, 18:29
и кстати тема все равно открыта -

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

Это как настроите кодесис или овен орс сервер и как напишете программу для ПЛК.

Получите доступ к тому, к чему настроите.

SvAlex
31.03.2010, 17:30
Споры по поводу того, что надежней, дешевле, практичней SCADA или Delphi...! Если занимаетесь небольшими проектами, то лучше Delphi найти что-либо сложно... Потому как время разработки очень невилико... Сам писал два маленьких проекта на делфи, в том числе для опроса OWEN PLC110, управился за 8-12 дней с базой данных, графиками и отчетами. Больше всего времени заняли поиски компонентов под графики, стандартный график не нравился. Опрос... тупо встроил в приложение Modbus-TCP и не имел проблем.
А скада... Она то конечно хорошая вещь...
Ну допустим, имеем кол-во необходимых переменных 430, купили лицензию допустим InTouch на 500 тегов... , а заказчик посмотрел и решил к этой системе подключить еще что-нибудь переменных этак еще на 100... И что делать? Покупать лицензию на 1000, а на 500 положить в ящик? А на делфи нам без разницы скоко переменных... И ведь так не только InTouch, если мне не изменяет память то только в WinCC можно докупить переменных...
Ну и еще одно... в лицензиях пока разберешься можно дуба дать... имели "приятный" опыт с TraceMode :(
А еще скады глючат! Тот же InTouch. WinCC на слабый комп не поставишь... Удобство в скадах это все отностельно...

Romiros
05.04.2010, 21:56
Народ, обращаюсь к тем кто пишет на Delphi. Посоветуйте пожалуйста компоненты, обучающие статьи или ресурсы для написания Scada. (DOPC, IOCOMP знаю, сам использую). Кстати есть в природе лекарство для DOPC 3.7? У меня только к 3.0 для Delphi7.
Самое главное преимущество Delphi это то, что я делаю что хочу и как хочу и единственное ограничение - это знание Delphi и желание разбираться.

Дмитрий Егоренков
05.04.2010, 23:19
> я делаю что хочу и как хочу

вот в этом то и беда.

Romiros
06.04.2010, 06:06
Почему беда? Просто снимаются ограничения, накладываемые возможностями Scada системы

AWA1971
06.04.2010, 08:36
Есть возможность работать с OPC , используя библиотеки: OPCDAAuto.dll, opccomn_ps.dll или opcproxy.dll (ждут своего часа в C:\WINDOWS\system32). Например, с OPCDAAuto.dll это выглядит примерно так:
Пуск –> Выполнить -> tlibimp.exe -P+ OPCDAAUTO.dll -> ОК. В Documents end Setting ищем получившиеся файлы: OPCAutomation_TLB.pas и OPCAutomation_TLB.dcr. Копируем их в папку проекта. Добавляем в раздел USES модуль OPCAutomation_TLB. Библиотека готова к работе.

var
NewServer:OPCServer;

procedure TForm1.Button1Click(Sender: TObject); //подключаем сервер
begin
NewServer:=CoOPCServer.Create;
NewServer.Connect('CoDeSys.OPC.02',NewServer.Serve rNode);
еnd;

procedure TForm1.Button2Click(Sender: TObject); //отключаем сервер
begin
NewServer.Disconnect;
end;

Добавление Group, Item, работа с ними и прочая документация в свободном доступе: OPC Data Access Automation Interface Standard, OPC Data Acccess Custom Interface, OPC Common Interface. Раньше была на http://www.opcfoundation.org. Будет время – напишу пример. Если кто раньше разберется – киньте сюда проект (с пояснениями). Удачи!

AWA1971
06.04.2010, 09:14
Если указанных выше библиотек не окажется, то просто копируйте их из этого архива в system32. Ну а дальше - знаете. Кстати, может кто-нибудь работал с OPC в Lasarus. По сути - то же Delphi, только бесплатное. Вот только с документацией там туговато. Если кто то цеплялся к PLC из него - направьте в нужном направлении. Да и пример небольшой был бы совсем не лишним.

Romiros
06.04.2010, 17:49
спасибо Awa1971 попробую

Romiros
07.04.2010, 19:11
"будет время – напишу пример"
да не мешало бы. спасибо за помощь

AWA1971
08.04.2010, 10:56
Написано для PLCWinNT (реального ПЛС под рукой не было). Но принцип, думаю будет понятен. Смотрите описание в папке - вроде ничего не забыл.

P.S. Переменные могут обозначаться по другому: «PLC1:.INP1», «PLC1:.PLC_PRG.INP1» или «.PLC_PRG.INP1» – думаю, разберетесь. Удачи

AWA1971
08.04.2010, 12:01
Этот вариант OPC-клиента подходит и для Delphi и для Lasarus. Для него не надо копировать ***_TLB в каталог с проектом. Все, что надо, подключается в коде.

AWA1971
08.04.2010, 12:40
есть довольно дешевый российский Opc-продукт. месяц пользуете бесплатно, потом покупаете у автора за 50 американских денег. в архиве присутствует описание и пример использования.

И еще...Господа дельфийцы! Тут не раз уже упоминались собственные протоколы, ModBus, сокеты и т.д. Но только упоминались. До описания и примеров дело почему то не доходит. Россия большая да и не все форумчане в России живут. Ну не конкуренты мы друг другу. Никак под это определение не подходим. Одна ветка на всем форуме, а мы сами себе помочь не можем... И чего ради? Чтобы в собственных возникающих проблемах самим копаться? А если для другого это давно уже не проблема? Что от него, убудет что ли, если поделится? Уверен, что нет. Так что предлагаю подавить жабу, которая нас всех душит и поделиться с остальными. Лог-файлы, собственные компоненты, создание и подключение к БД - все, что, возможно для вас уже далеко не открытие Америки, другим пока - китайская грамота. Делитесь, господа, делитесь. Вам же тоже когда то помогали...

Romiros
08.04.2010, 22:11
procedure TForm1.Button6Click(Sender: TObject);
var
Item1,Item2:Variant;
Val1,Val2:boolean;
begin
NewServer:=CoOPCServer.Create;
NewServer.Connect('dOPCSim.Kassl.Simulation',NewSe rver.ServerNode);
NewServer.OPCGroups.Add('Group1');
Memo1.Lines.Add(NewServer.OPCGroups.Item('Group1') .Name);

Item1:=NewServer.OPCGroups.GetOPCGroup('Group1').O PCItems.AddItem('int1', 1); //добавляем Item

Item1.Read(NewServer.OPCGroups.GetOPCGroup('Group1 ').OPCItems.Item('int1'),Val1); //читаем значения

end;

Ошибка: Variable 'Val1' might not have been initialized
что у меня не так? Подскажите пожалуйста

AWA1971
09.04.2010, 08:05
Доброе утро. Что можно проверить:
1. Запущена ли программа (в CodeSys или PLC). Это на всякий случай, просто меня разок так перемкнуло, что полчаса искал ошибку, так и не нажав «Онлайн» -> «Старт».
2. Правильно ли обозначена переменная (Вы писали, что работали с dOPC - посмотрите, как название переменной отражается в dOPC Explorer, может быть ".PLC_PRG.int1" или "PLC1:.int1"). Обратите внимание на точку перед названием переменной.
3. Тип переменной в CoDeSys и Delphi совпадает? У меня в CodeSys было BOOL, а в Delphi, соответственно, - boolean.
4. Если переменная Val1 в Delphi еще где то используется, то может стоит вынести ее в глобальные переменные, а не привязывать к одной процедуре.

P.S. Не мое, конечно, дело, но почему Вы не используете кодесисовский OPC-сервер? Бесплатно, нормально работает и есть возможность установить клиенту без самой CoDeSys. Впрочем - дело хозяйское. Удачи.

AWA1971
09.04.2010, 10:41
Пример попроще, без дополнительных манипуляций с библиотеками. На ПЛК назначаете входу имя INP1, выходу - OUT1. Конфигурируете (если кто не знает как -на этой ветке в примерах есть описание) При подаче сигнала на вход ПЛК - загорается соответствующая надпись в Delphi. При нажатии кнопки "Изменить переменную OUT1"- срабатывает выбранный Вами выход на ПЛК. Единственное, в зависимости от того, глобальные или локальные будут переменные и как все это дело сконфигурировано, переменные для Delphi могут читаться по разному. Выше я уже приводил варианты. Поэкспериментируйте и все получится.

Tip
20.04.2010, 10:07
что-то делаю не так...
V: Variant;
Item1:Variant;
Val1:string;

V := CreateOleObject('OPC.Automation');
V.Connect('OWEN.RS485');
V.OPCGroups.Add('Group1');
Item1:= V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('Com1/MVA8(11bit adr=40)/General_ID/VER', 1);
Item1.Read(V.OPCGroups.GetOPCGroup('Group1').OPCIt ems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1); // здесь возникает ошибка!
edit1.Text:=vartostr(Item1.Value);

ошибка "параметр задан неверно" в edit1.Text пусто, хотя в логе OWEN.RS485:
09:55:52.261 COM1: адрес 40(11) чтение VER данные: << 35 2E 37 76
09:55:52.301 COM1: ВРЕМЯ ОПРОСА ВСЕХ ТЕГОВ 140(+-10ms)
09:55:53.236 COM1: адрес 40(11) чтение VER данные: << 35 2E 37 76
09:55:53.276 COM1: ВРЕМЯ ОПРОСА ВСЕХ ТЕГОВ 110(+-10ms)

Малышев Олег
20.04.2010, 10:39
попробуйте вызывать чтение отдельной кнопкой - возможно после подключения не сразу прочитываются данные из по Rs485

Tip
20.04.2010, 10:59
procedure TForm1.FormCreate(Sender: TObject);
begin

V := CreateOleObject('OPC.Automation'); V.Connect('OWEN.RS485');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
V.OPCGroups.Add('Group1');
Item1:= V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('Com1/MVA8(11bit adr=40)/General_ID/VER', 1);
Item1.Read(V.OPCGroups.GetOPCGroup('Group1').OPCIt ems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1);
edit1.Text:=vartostr(Item1.Value);
end;

ошибка в строке:Item1.Read(V.OPCGroups.GetOPCGroup('Group1' ).OPCItems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1); - параметр задан неверно

AWA1971
21.04.2010, 12:25
Точно сказать не могу, т.к. с OWEN.RS485 не работал (не было пока надобности). Поэтому, может и не в тему (вдруг пригодится...), но я в первую очередь постарался подцепиться к серверу через Kassl-овский dOPC Explorer и посмотрел, как отражаются там нужные переменные. В Delphi они будут выглядеть точно также. Может быть там все дело в какой-нибудь точке. И еще...может я не прав, но может параметр General_ID стоит поменять на General_IDs? Вы в любом случае напишите, получилось что-нибудь или нет. Может тоже придется с этим столкнуться.

P.S. Насчет General_ID точно обманул. Посмотрел по Explorer - переменная так и отражается. Проверьте соответствие типа обьявленной переменной Val1. Может быть все-таки не string?

Tip
21.04.2010, 16:20
var
V:variant;
val1:string;

FormCreate:
V := CreateOleObject('OPC.Automation');
V.Connect('OWEN.RS485');
V.OPCGroups.add('Group1');
V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('Com1/MVA8(8bit adr=40)/General_ID/VER', 1);
Button1Click:
val1:=V.OPCGroups.item('Group1').OPCItems.Item('Co m1/MVA8(8bit adr=40)/General_ID/VER').value;
edit1.Text:=val1;

и в edit1 пусто, в kassl строки пишутся со '/', т.е. также, и значения читаются. меня начало смущать CreateOleObject('OPC.Automation'); может необходимы какие либо действия на самой виндой?

AWA1971
22.04.2010, 08:11
Может модуль какой не подключен? Примерный перечень:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj, OleCtrls, ExtCtrls;

Что касается CreateOleObject('OPC.Automation'), то если в трее появляется иконка "485", то свою задачу он выполняет. Попробуйте обьявить Val1:variant. Может еще какой-нибудь тип. Просто нет у меня МВА (да и все ОВЕНовское в работе), попробывать читать-писать, соответственно, не могу.
Народ, да помогите же человеку! Ведь в мелочи какой-нибудь дело то.

Малышев Олег
22.04.2010, 08:24
Простите что неточно выразился
Вызывайте ЧТЕНИЕ - отдельной процедурой.
Item1.Read(V.OPCGroups.GetOPCGroup('Group1').OPCIt ems.Item('Com1/MVA8(11bit adr=40)/General_ID/VER'),Val1); // здесь возникает ошибка!
edit1.Text:=vartostr(Item1.Value);

Суть в следующем - группа мгновенно отдает значение элемента - но фактически он еще не прочитан!!!

Еще проблема в том что в OPC клиенте нужно выбрать разделитель явно и по умолчанию он не всегда '/'. См документацию на свой OPC клиент

Tip
22.04.2010, 11:03
я уже думаю что проблема в guid-ах
исходник в студию:

Crusash
26.04.2010, 15:00
а примерчик мона?:o
Вот примерчик связи с ПЛК посредством сокетов , правда пока сырой и глюковатый поэтому не судите строго :o
Заранее извеняюсь перед дельфистами, пример на Qt...
Описание протокола в tsmessages.h

честно говоря это первые шаги и есть проблемы: при простое обмена клиента с ПЛК через 12-13 сек. теряется связь.. , можно конечно связь при потере восстанавливать или используя "watch dog" не допускать её обрыва, но возможно проблемам в настройках сервера на ПЛК...

Если кому интересно могу выложить сервер на Qt работающий с этим клиентам...

Филоненко Владислав
26.04.2010, 15:20
честно говоря это первые шаги и есть проблемы: при простое обмена клиента с плк через 12-13 сек. теряется связь.. - по стандарту Tcp/ip при отсутствии потока данных в соединении в течении таймаута (10 сек в нашем случае) соединение должно быть закрыто.
если надо его держать открытым - посылайте пустые (нулевые) пакеты.

AntoNechayuk
26.04.2010, 15:22
народ! у кого-то есть кодесисовский орс-сервер инсталлятор (без кодесиса)?? - дайте плиз.

AWA1971
26.04.2010, 18:50
http://forum-ru.3s-software.com/viewtopic.php?t=708&highlight=opc%F1%E5%F0%E2%E5%F0
Здесь не смотрели? Но нужна регистрация. Мне почему то в ней отказали (правда, вместо этого пригласили...в Нюрнберг), поэтому на 100% гарантировать наличие инсталлятора не могу. Впрочем, там и так есть много полезного и не только про OPC.

nalnik
11.05.2010, 13:22
В Delph7 заработало, но постоянно растет используемая память, система тормозит.

AWA1971
11.05.2010, 14:15
Трудно сказать...У меня CPU 3.4GHz и оперативки 512. Цеплялся к ОВЕНу и Mitsubishi, TTimer вообще на 10 мс ставил - вроде ничего не тормозило и с памятью проблем не возникало.

AntoNechayuk
13.05.2010, 07:58
Народ! вот такая проблемка имеецца:

под windows7 не могу читать с плк переменные в делфийский проект хоть убей (по ethernet, rs232). Изменять их., т.е. прописывать значения могу, а считать не могу. подключил к ноутбуку с ХР-ной виндой - всё пучком..... но нада чтобы и в 7-ке работало. Ведь сейчас уже все компы на 7-ке......

Может кто знает где собака порылась?

AWA1971
13.05.2010, 08:54
Может установка с каким-нибудь глюком прошла или с настройками не так что то? (Это так, предположение, просто я с XP никак спрыгнуть не могу - привык уже). Делфу так ставили и настраивали?
http://gunsmoker.blogspot.com/2009/11/delphi-7-windows-7.html
Там вроде написано, что она 7-ку как XP определяет...

AntoNechayuk
13.05.2010, 09:07
не... сама делфя работает. и проект (екзешник) на ХРюше работает без проблем. но в семерке не читает никаких переменных, хотя записывать- записывает.... думаю или dOPCServer,или Gateway глючит.....

nalnik
13.05.2010, 13:49
поставь совместимость - Xp сервис пак 3. все заработает!

nalnik
14.05.2010, 20:45
поставь совместимость - Xp сервис пак 3. все заработает!

Помогло или нет?

AntoNechayuk
17.05.2010, 08:51
ничего пока не помогает..... не происходит чтение ни по 232, ни по Ethernet :(

nalnik
17.05.2010, 09:21
Я на двух компах Win7 64 + DOPC Тыкал на иконку Delphi7 правой кнопкой мыши-свойства - совместимость.... Для EXEшника проэкта тоже.

michaeladm
17.05.2010, 10:58
Пример попроще, без дополнительных манипуляций с библиотеками. На ПЛК назначаете входу имя INP1, выходу - OUT1. Конфигурируете (если кто не знает как -на этой ветке в примерах есть описание) При подаче сигнала на вход ПЛК - загорается соответствующая надпись в Delphi. При нажатии кнопки "Изменить переменную OUT1"- срабатывает выбранный Вами выход на ПЛК. Единственное, в зависимости от того, глобальные или локальные будут переменные и как все это дело сконфигурировано, переменные для Delphi могут читаться по разному. Выше я уже приводил варианты. Поэкспериментируйте и все получится.
можно немного подробнее по этому примеру?
1) V := CreateOleObject('OPC.Automation'); - что это за обьект, откуда он берется???
2) V.Connect('CoDeSys.OPC.02'); - откуда это имя, где его определять?
3) Этот пример требует работающего на ПК OPC-сервера или общается с контроллером вместо него?
4) какое отношение к обмену имеет CodeSys? Она так же должна быть установлена и запущена на этом ПК??

Простите за ламерские вопросы, они возникают из-за нехватки теории. Обещаю разобравшись выложить подробное описание с примером для остальных

michaeladm
19.05.2010, 13:15
можно немного подробнее по этому примеру?
1) V := CreateOleObject('OPC.Automation'); - что это за обьект, откуда он берется???
2) V.Connect('CoDeSys.OPC.02'); - откуда это имя, где его определять?
3) Этот пример требует работающего на ПК OPC-сервера или общается с контроллером вместо него?
4) какое отношение к обмену имеет CodeSys? Она так же должна быть установлена и запущена на этом ПК??

Простите за ламерские вопросы, они возникают из-за нехватки теории. Обещаю разобравшись выложить подробное описание с примером для остальных

или хотя бы намеком на то, где можно прочитать о том откуда берутся 'OPC.Automation', 'CoDeSys.OPC.02', .OPCGroups.Add('Group1') и т.д. и что там есть еще

AWA1971
20.05.2010, 20:24
1. Вы в коде создаете OLE объект, используя системную библиотеку Windows "OPCDAAuto". В свою очередь "OLE" или Object Linking and Embedding представляет собой способ обмена информацией между приложениями.
2. 'CoDeSys.OPC.02' - название OPC-сервера, устанавливаемого вместе с CoDeSys. "OPC" - это аббревиатура от OLE for Process Control, или OLE для Управления Процессами.
3. OPC-сервер нужен. В данном случае это - 'CoDeSys.OPC.02'.
4. CoDeSys в данном случае нужен, чтобы через него сконфигурировать и загрузить проект (даже с кодом ";") в ПЛК. Когда проект создан, то для того, чтобы перенести его на ПК клиента, CodeSys уже не нужен. Достаточно будет установить только OPC-сервер от него.

Вкратце так. Извините за сумбурность и запоздалость - загрузили выше крыши...

AWA1971
21.05.2010, 08:18
P.S. Немного поподробнее, пока время есть. OPC технология предусматривает обмен данными между двумя своими составными частями: ОРС-клиентом и ОРС-сервером для последующей передачи на исполнительный механизм. Т.е. для данного случая мы имеем следующую цепочку передачи данных: Скада (Delphi) <-> OPC-клиент(в данном случае созданный с помощью библиотеки Windows) <-> OPC-сервер (в данном случае CoDeSys OPC-сервер)<->Порт PC (COM1)<-> кабель (КС1 из комплекта ПЛК "ОВЕН")<-> Порт PLC (для ПЛК 110-60 Debug RS-232)<-> программа в ПЛК.
Поэтому:
1. V := CreateOleObject('OPC.Automation'); - так мы создаем ОРС-клиента.
2. V.Connect('CoDeSys.OPC.02'); - так мы соединяем его (ОРС-клиента) с ОРС-сервером, который у нас установлен (не обязательно CoDeSys, но как составная часть обмена данными он все равно нужен);
3. Этот пример требует работающего на ПК OPC-сервера или общается с контроллером вместо него? - Для ОРС-технологии ОРС-Сервер необходим (см. выше).
4. Какое отношение к обмену имеет CodeSys? - В CoDeSys при создании проекта вы конфигурируете свои переменные (данные), т.е. указываете те из них, которые будут участвовать в обмене со Скада-системой и предоставляете OPC-серверу право их передавать (принимать). Непосредственно в самом обмене данными из всего комплекса CoDeSys, устанавливаемого по-умолчанию на ваш ПК, работает только CoDeSys OPC-сервер (тот самый, который мы подключали -'CoDeSys.OPC.02'). Поэтому при переносе программы на ПК заказчика, можно при установке убрать все галочки кроме серверов. Тогда CoDeSys там не будет, а, благодаря установленному OPC-серверу сконфигурированная ДЛЯ НЕГО программа спокойно будет передавать УКАЗАННЫЕ ВАМИ В КОНФИГУРАТОРЕ переменные для СОЗДАННОГО (ПОДКЛЮЧЕННОГО) ВАМИ ОРС-клиента.
Примерно так, надеюсь ничего не перепутал. В двух словах вряд ли получится все описать, но если заниматься ОРС - то скоро такие проблемы будете как орешки щелкать. Удачи!
Небольшой пример тут http://www.opcfoundation.org/forum/viewtopic.php?t=2042&postdays=0&postorder=asc&start=0&sid=fcd1c06007e188f93a6f12f2bec6e8b2
Там же на сайте и информация про ОРС-технологии.

michaeladm
21.05.2010, 10:38
спасибо за подробное описание.
Меня больше интересует откуда Вы узнали, что имя сервера 'CoDeSys.OPC.02', что нужно создать группу и для этого есть команда V.OPCGroups.Add('Group1'), потом в нее нужно внести переменные командой v.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('PLC1:.out1', 1) и т.д., какие есть еще команды и где об этом почитать? В данной вами ссылке подобной информации я не нашел. Может есть где-то вразумительное описание команд общения с OPC-сервером?

AWA1971
21.05.2010, 11:33
"откуда Вы узнали, что имя сервера 'CoDeSys.OPC.02'"
у меня (просто как вариант) установлен dOPC от Kassl (он бесплатен, на этой ветке есть ссылка). После установки запускаете dOPC Explorer, добавляете (правой клавишей OPC-Server) и у Вас целый спмсок всех установленных ОРС-серверов на Вашем ПК (названия, которые Вы будете использовать, к примеру - 'CoDeSys.OPC.02')

"нужно создать группу и для этого есть команда V.OPCGroups.Add('Group1'), потом в нее нужно внести переменные ..."
Технология OPC подразумевает определенную иерархию: Group-Item (что то типа "город-улица"). Т.е. сначала создаем (добавляем) группу, потом ее подключаем, затем добавляем Item. Причем команды при использовании различных OPC-клиентов тоже отличаются. Структура - остается та же :Group-Item, а команды разные. dOPC здесь на ветке более-менее описан, а вот другие варианты - не очень. Я просто привел пример, в ответ на вопрос, что еще можно использовать вместо Kasslовского dOPCа, но сам, к сожалению, именно такой возможностью для скада на Delphi не пользовался, поэтому, кроме данного примера и ссылки, более подробной документации не имею. Так что, придется Вам все-таки поискать самому, тем более, что данный вариант - бесплатен, в то время, как остальные OPC-разработки либо платные, либо с какими то ограничениями или сообщениями (как Kassl). Вероятно, поэтому и так мало документации - конкуренция. Сожалею, что не смогу помочь. Поищите примеры, не может быть, что бы в инете ничего по этому поводу не было. Удачи!

michaeladm
21.05.2010, 14:22
нарыл описание, правда применительно к Perl, но это лучше чем ничего
http://kobesearch.cpan.org/htdocs/Win32-OLE-OPC/Win32/OLE/OPC.pm.html

michaeladm
26.05.2010, 14:19
Выкладываю пример взаимодействия между Delphi-приложением и ОВЕН ПЛК 100 подключенными по Ethernet через OPC-сервер (CodeSys) с подробным описанием (с картинками) Жаль только, что без OPC пока осилить неполучилось... Отдельное спасибо AWA1971 за помощь
http://www.owen.ru/forum/attachment.php?attachmentid=2396&d=1274872013

Sunnytommi
01.06.2010, 12:10
Интересно, а можно чтобы мастерскада и мое приложение на делфе забирали данные с одного и того же opc codesys. сейчас к сожалению поэкспериментировать не имею возможности.

michaeladm
02.06.2010, 13:40
Интересно, а можно чтобы мастерскада и мое приложение на делфе забирали данные с одного и того же opc codesys. сейчас к сожалению поэкспериментировать не имею возможности.

конечно может, в этом плюс работы через OPC

AntoNechayuk
03.08.2010, 15:31
Проблема такая:
Нужно в программе реализовать возможность изменения порта связи с устройством (устр-во на данный момент - МВ110-8ас). в самом компоненте dOPC - конечно можно изменить, но в программе не получается.

Н-р - на моем компе есть COM порт - и звётся он "1", а вот на нетбуке нет его - и поэтому пользуюсь конвертором на USB. и порт в итоге получается не "1" - а 6, или 9 или еще че-нить. Так вот нужно реализовать выбор в программе. Пробовал присваивать через ItemID:= COM8/.... не получается...

а как есчё - не знаю....

nalnik
03.08.2010, 18:06
Проблема такая:
Нужно в программе реализовать возможность изменения порта связи с устройством (устр-во на данный момент - МВ110-8ас). в самом компоненте dOPC - конечно можно изменить, но в программе не получается.

Н-р - на моем компе есть COM порт - и звётся он "1", а вот на нетбуке нет его - и поэтому пользуюсь конвертором на USB. и порт в итоге получается не "1" - а 6, или 9 или еще че-нить. Так вот нужно реализовать выбор в программе. Пробовал присваивать через ItemID:= COM8/.... не получается...

а как есчё - не знаю....

В компе в настройке виртуального СОМ(USB) поменяй его номер, я менял на своем нетбуке win XP и на INTEL i5 win7 64 bit

AntoNechayuk
04.08.2010, 08:19
В компе в настройке виртуального СОМ(USB) поменяй его номер, я менял на своем нетбуке win XP и на INTEL i5 win7 64 bit

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

TPEHEP
09.09.2010, 15:52
В дельфи даю такую команду на запись значения.

OPC.OPCGroups.GetOPCGroup('Group1').OPCItems.Item( 'PLC1:.Out1').Write(1);

Вылетает с такой ошибкой:

<a target="_blank" href="http://www.radikal.ru"><img src="http://s61.radikal.ru/i174/1009/ba/cb72e3673a1b.jpg" ></a>

Что делать?

AWA1971
09.09.2010, 16:48
Может быть все же "Write(True);". вместо "Write(1);". Проверьте соответствие типа переменной в Delphi и CoDeSys (Boolean и Bool, к примеру). Так же попробуйте разделить команду на части - у Вас сейчас и создание/добавление новой группы и команда на изменение значения Item в одной строке. Здесь, на ветке есть рабочие примеры - посмотрите.
Ну и все-таки выложите весь проект, может быстрее все выяснится.

TPEHEP
10.09.2010, 08:14
OPC.OPCGroups.GetOPCGroup('Group1').OPCItems.Item( 'PLC1:.Out1').Write(True);

Не работает всё равно. Вылетает с ошибкой.

Попробовал как вы советовали:
Item1:= OPC.OPCGroups.GetOPCGroup('Group1').OPCItems.AddIt em ('PLC1:.OUT2', 1);
Item1.Write(True);

Всё заработало!

Огромное спасибо за помощь.
Может есть ещё небольшой хелпик по остальным командам ОРС?

AWA1971
10.09.2010, 12:40
рад за вас. на счет "хелпика" - нет, к сожалению. все "методом тыка": пошло/не пошло. сами понимаете: иногда точка критичную роль играет. попробуйте, все должно получиться, тем более первый шаг вы уже сделали. если что - пишите. чем можем..., как говориться. удачи!

TPEHEP
10.09.2010, 12:47
сразу возник ещё один вопросик.
как можно просмотреть список доступных переменных на сервере орс, програмным путём из дельфи?

AWA1971
10.09.2010, 16:36
Доступность переменных на OPC-сервере Вы сами определяете при конфигурировании. Соответственно их наименованию (которые вы самостоятельно им дадите) и обращайтесь к ним из Делфи. К примеру: 'PLC1:.Out1' или 'PLC2:.Vhod8' - как Вам угодно. Они по-определению доступны, т.к. Вы сами предоставили им эту "доступность". Так что список переменных Вы "составляете" сами в конфигураторе ПЛК CoDeSys.
Соответственно, определение именно программным путем этих переменных просто теряет всякий смысл. Но, если хотите просто посмотреть, как для Delphi будут выглядеть данные Вами названия - воспользуйтесь (к примеру) эксплорером от Кассл, который устанавливается вместе с OPC-Сервером (Кассловским, разумеется). Он бесплатен и на этой ветке есть ссылки на него и описание процеса работы. Там добавите свой сервер (CoDeSys-овский - 'CoDeSys.OPC.02'), затем свою группу и у вас появится перечень всех Ваших доступных для Delphi переменных, входящих в нее.
P.S. Посетите, кстати, сайт http://www.opcfoundation.org/Search.aspx . Возможно, в чем то он Вам поможет. Наберите в Search "Delphi" и получите по крайней мере 60 веток с исходниками, обсуждением возникающих проблем и т.д. К примеру: http://www.opcfoundation.org/forum/viewtopic.php?t=2042. Удачи!

Victor-a
22.10.2010, 09:53
Добрый день!
У меня при выполнениии V := CreateOleObject('OPC.Automation');
выплёвывается ошибка "Не верная попытка доступа к адресу памяти".
у меня XP SP2 , OPCDAAutu.dll взят из 'OPC-Client.rar' у AWA1971 и весит он 228 К, а у меня есть эта dll от MatrikonOPC весом в 136.
Кто-нибуть подскажите пожалуста, в чем может быть причина отказа в регистрации обьекта.

AWA1971
24.10.2010, 18:43
Сервис-пак2, возможно, что то не понимает. Попробуйте реализовать создание библиотеки в своей операционке самостоятельно. Выглядит это так:
Пуск –> Выполнить -> tlibimp.exe -P+ OPCDAAUTO.dll -> ОК. В Documents end Setting ищем получившиеся файлы: OPCAutomation_TLB.pas и OPCAutomation_TLB.dcr. Копируем их в папку проекта. Добавляем в раздел USES модуль OPCAutomation_TLB.
Надеюсь, что поможет.

Victor-a
25.10.2010, 14:17
Спасибо за ответ.
tlibimp.exe - это первое, что я попробовал зделать. Сегодня повторил ещё раз для верности. Эффект нулевой. Попробовал запустить задачку на чистом компе с Sp3 - ответ тотже : "Не верная попытка доступа к адресу памяти".

Дмитрий Ф
20.12.2010, 09:18
небольшую скаду можно делать на конструкторе программ Хиасм http://hiasm.com/. Он бесплатен. В основе тот же делфи.
Единственное он не работает с OPC, но я использую DDE. соединяю с CoDeSys Gateway DDE Server или Lectus server.
http://i050.radikal.ru/1012/c0/d91e0b5a8412.bmp
http://i039.radikal.ru/1012/a1/53b9ba9c87f2.bmp

Алексей Дмитриев
21.12.2010, 20:51
Скажем так - свежо питание, да верится с трудом (про комментарии и документирование).
При таком поточно-коленочном написании программ - ну не будет нормального документирования. Во всяком случае мне такого при "самопале" (что у себя, что у других) - не попадалось. Про серьезные программистские фирмы - помолчу, это совсем другие миры.
Цены, кстати, тоже совсем другие. А по поводу скад хочу заметить, что прикрутить к ним пользовательскую базу данных ох как непросто. Стандартно можно только архивировать значения параметров в базе данных. Скада хороша для быстрого построения операторского интерфейса, не более того, что-бы там не говорили.:(

Semy
26.12.2010, 18:57
Приветствую!

Пишу свою мини скаду на делфи+dopc, имеется один (пока) ПЛК150. Возникла проблема, не срабатывает событие onDatachange (ни у dOPCServer, ни у OPCGroups) при подключении к CoDeSys.OPC.02, при выборе другого ОРС сервера событие вызывается. Значения входов меняются. В чем может быть проблема?

alexxxx
30.12.2010, 10:47
небольшую скаду можно делать на конструкторе программ Хиасм http://hiasm.com/. Он бесплатен. В основе тот же делфи.
Единственное он не работает с OPC, но я использую DDE. соединяю с CoDeSys Gateway DDE Server или Lectus server.
http://i050.radikal.ru/1012/c0/d91e0b5a8412.bmp
http://i039.radikal.ru/1012/a1/53b9ba9c87f2.bmp

Дмитрий вопрос, стабильно ли работает DDE Server-а, не было вылетов. Просто мне нравится Hiasm? хотел сделать небольшую программку для дома без заморочек OPC.

Дмитрий Ф
11.02.2011, 06:09
Дмитрий вопрос, стабильно ли работает DDE Server-а, не было вылетов. .

У меня система в работе четыре месяца, никаких проблем нет.

Tip
06.04.2011, 11:12
Как контролировать в делфи физическое отключение контроллера, в OPC кодесиса при этом сохраняются последние нормальные значения? может через свойство quality переменной или како-то иначе?

Sunnytommi
07.04.2011, 15:31
Не подскажите на чем в delphi тренды рисуете?

Tip
07.04.2011, 16:58
Руками по канве image

Sunnytommi
08.04.2011, 06:20
А компонентом не поделитесЬ?:) С настройкой осей, прокруткой.хотя бы прокруткой:)

Tip
08.04.2011, 08:16
прокрутки как таковой нет, есть просто по нажатию на кнопку например (+ 1 час) к выборке из базы занчений прибавляется один час:
DateTimeBeg:=incHour(DateTimeNOW,1);
DateTimeEnd:=incHour(DateTimeNOW,-10);
далее выборка между этими данными.
а после масштабирование и отрисовка непосредственно под размер своего image

Gans
09.04.2011, 11:42
Не подскажите на чем в delphi тренды рисуете?
А чем Вас не устраивает стандартный Chart или DBChart ?
+ примеры из инета … :-)

Леонид
12.04.2011, 18:57
Начал изучать DELPHI 7 с целью исспользования вместо SCADA систем, там где они дороги и излишни.
Не мог бы ктото выложить, или ткнуть носом, где можно взять библиотеки или компоненты, или как там они называются, для ModBus TCP.
Может есть примеры как их подключить или исспользовать.
Буду рад любой помощи.:)
Спасибо!!!

AntoNechayuk
13.04.2011, 08:11
читайте ветку - тут как раз все есть и примеры и компоненты

Дмитрий Егоренков
13.04.2011, 09:38
вы ничего не перепутали? Delphi 7 без малого десять лет, сейчас нет _ни одной_ причины изучать этот реликт.

если вы хотите писать современные программы, изучайте лучше C#. да и средства разработки там бесплатные и отличаются от delphi как машина мазда от ведра с гайками.

Алексей Дмитриев
13.04.2011, 12:56
850 - у.е. - это все что клиенту надо.
а виндовс, фотошоп, офис, даже винрар - у вас, позвольте, куплены??? - сомневаюсь..... (как впрочем у клиента тоже)
раз уж мы живем в такой среде - то и выживать нужно.

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

и повторяюсь - что такое скада???? - я её никогда не видел.
Их, скад этих, будь оне неладны, в сети полно!
Качайте: http://rutracker.org/forum/viewtopic.php?t=3339329
PS: Вот такой вопросик: Если Вы, уважаемый, никогда не видели скадов всяких, как можете о них рассуждать?:confused:

Леонид
13.04.2011, 14:18
читайте ветку - тут как раз все есть и примеры и компоненты

Ветку читал ранее, собственно благодаря ей и заразился этой идеей!
Только OPC не хочется исспользовать, так как подключил один комп с примитивным проектом Delphi, и все подключиться CodeSys ом не получается.
Именно по этой причине хочется ииспользовать ModBus TCP, тогда и отладка не проблема, и более одной операторской станции подключить можно.

Drump
18.05.2011, 08:30
Добрый день!
Задача: изменять и опрашивать состояние дискретного выхода для ПЛК 150 А-М. Написал программу в CoDesys, в Target Setting на вкладке General поставил галочку Download symbol file, задал имя для дискретного выхода (a), через Project->Options->Symbol configuration поставил галочку Dump symbol entries а в Config symbol file выбрал переменную "a" так же поставил галочки "Export variables of object" и "Export data entries". После этого откомпилировал проект, запустил его (Online->Login). После Запустил OPC Configurator и настроил следующим образом:убрал галочки с public Groups,Sync Init,Log Events,далее Append PLC, указал Project name, перешл в Connection, через Edit создал новое подключение(с тем же именем что и в проекте CoDeSys) через TCP/IP(Level2) в строке Address ничего менял, оставил Localhost(пробовал прописывать IP но результат тот же), там же в GateWay в поле Connection оставил Local. После File->Single PLC. На вопрос "Save change in Multi-PLC Configuration" ответил "Да". После запускаю программу, в ней содержится следующий код:

V:=CreateOleObject('OPC.Automation');
V.Connect('CoDeSys.OPC.02');
V.OPCGroups.Add('Group1');
V.OPCGroups.GetOPCGroup('Group1').OPCItems.AddItem ('PLC1:.a', 1);
и на последней строке выскакивает ошибка "Неопознанная ошибка".
путем разнообразных тыков в OPC Configurator ошибка перестала выскакивать(хотя из-за чего-не уловил), но появилась следующая проблема при
V.OPCGroups.GetOPCGroup('Group1').OPCItems.Item('P LC1:.a').Write(0);
вылазиет то же "Неопознанная ошибка". Прочитать состояние могу, но оно не соответствует действительности (меняю через CoDeSys на 1 а пишет все равно 0). Что я не так делаю? если необходимо - могу скинуть проект и программу!Да и еще, воспользовался dOPC Explorer(от Кассла), он видит переменную a(только ее там почему то 2 штуки), но так же записать ничего не выходит.

Денис_NTS
18.05.2011, 09:07
Самое простое - это взять и по ModBus TCP и работаешь с сокетом... Не знаю как с делфи(пишу на сях). всё просто...и никаких тебе opc server. библиотек и т.д.

capzap
18.05.2011, 11:36
Не знаю как с делфи(пишу на сях). всё просто...

Судя по тому, что Вы уже две темы создали про запись нескольких регистров, не все так просто ;)
Сегодня проверил ПЛК100:


PLC model MODEL PLC 100
Binary VERSION 2.10.9
Need Target version 2.10
Compiled: 13:25:45 Sep 25 2009

Реализованный МодбасТСР на Яве записывает в регистры без каких либо сложностей, так что ищите ошибки в своей программе

Денис_NTS
18.05.2011, 12:19
Можно пример конфигурации плк под яву который

capzap
18.05.2011, 12:48
выложил, пользуйтесь

Денис_NTS
18.05.2011, 14:24
спасибо, но у меня так же .....
Запись области памяти в контроллере не реализована. То есть Вы можете записывать только возможный подмодуль: 2Байта, 4Байта. И, соответственно 10 команда теряет смысл.
Однако, с использованием SysLibSocket Вы можете реализовывать обмен как Вам удобно (конфигурация ПЛК при этом вообще не используется).
вот что мне ответили....кто опровергнет сие утверждение... capzap ,Вы можете попробовать запись 0х10 функцией (у Вас плк 100)

AWA1971
19.05.2011, 13:09
в строке Address ничего менял, оставил Localhost
Может в этом дело. Если программу заливали в ПЛК, то там должны стоять те же данные, как в "Параметрах связи". Порт, скорость и т.д.
В любом случае: скорее всего что-то с настройками, т.к.
воспользовался dOPC Explorer(от Кассла), он видит переменную a(только ее там почему то 2 штуки)
Видимо Делфи видит, но не ту...

Вова
18.07.2011, 16:20
Всем здравствуйте!
Не стал заводить новую тему, спрошу здесь.
Для связи программы на дельфи с ПЛК110 через Ethernet использую компонент modbustcp. Связь организована следующим образом: в конфигурации ПЛК прописано 6 байт, ПЛК настроен Slave'ом. Программу дельфи сначала попытался строить по такому принципу:
По таймеру (раз в 100 мс) сначала происходит чтение 2 байт из ПЛК, затем математическая обработка, затем запись 4 байт. Но не получилось так, как хотелось - таймер срабатывал примерно раз в секунду (смотрел по инкременту числа на надписи, который производился в каждой обработке срабатывания). Разнёс процедуры чтения и записи на разные обработки срабатывания и увеличил частоту срабатывания до раз в 75 мс (то есть, в первой процедуре читаем и математически обрабатываем, в следующей записываем) - всё заработало в расчётном режиме, то есть число на надписи инкрементировалось ~13 раз в секунду. Кто-нибудь может предположить, отчего так происходит, что одновременное чтение и запись так сильно тормозят программу? Работать-то оно хорошо теперь работает, но хотелось бы понять причину, да и не люблю в программе лишние костыли.
Второй вопрос следующий. Какой функцией можно проверить, подключён ли ПЛК к компьютеру по сети, доступен ли для "общения"? Просто хочу по запуску программы запускать некую функцию типа CheckCommunication, и если ПЛК подключён, то сигнализировать об этом опредённым текстом и цветом надписи, иначе выводить сообщение об ошибке. Сейчас же не нашёл ничего подобного. Таймауты компонента пробовал ставить разными (все три), ничего не получилось. При попытке чтения/записи переменных ПЛК, когда он физически не подключен, функция не возвращает 0 (как должно быть, судя по исходникам компонента мастера) по таймауту, а наглухо вешает программу. Другого способа проверить состояние соединения не знаю. Понимаю, что не хватает знаний, но голова уже замылена этим вопросом, возможно решение где-то наверху, а не вижу. Помогите, пожалуйста, советом.
Встречал где-то здесь (вроде бы в этой теме, или в подобной) упоминание о том, что кто-то использует самописные функции для связи по ModBus TCP. Подобный пример нашёл на просторах интернета, подключил, откомпилировал программу, всё хорошо, ошибок нет, но при попытке чтения/записи программа вылетает с аксесс виолейшен.
Всё идёт к тому, чтобы разбираться поглубже в modbus tcp и писать свои функции или минимальный компонент. Но не хочется изобретать велосипед, к тому же вдруг это уже есть. Как хорошо сказал АWА1971 - "Давайте делиться наработками!" Свои я уже выкладывал, и выложу то, что получилось на этот раз, если кому-то будет интересно.

swerder
18.07.2011, 16:57
по первому вопросу: на форуме несколько раз видел настойчивое указание производить запись и чтение по сети в разных циклах плк для стабильного соединения и безошибочной передачи данных;
по второму: плк же слэйв, следовательно со стороны компа посылаем запрос, если ответ приходит, значит все хорошо, если не приходит - обрабатывать эту ситуацию как потерю связи

Вова
19.07.2011, 08:38
по первому вопросу: на форуме несколько раз видел настойчивое указание производить запись и чтение по сети в разных циклах плк для стабильного соединения и безошибочной передачи данных;
по второму: плк же слэйв, следовательно со стороны компа посылаем запрос, если ответ приходит, значит все хорошо, если не приходит - обрабатывать эту ситуацию как потерю связи
1. Странно, вроде много форум читаю, а настойчивого указания, которое вы привели, не встречал, учту на будущее... Но тогда значит, что всё логично и закономерно. Прикольно, мне казалось, математика в моей программе занимает побольше времени, а оказывается, цикл в ПЛК ещё не успевает закончиться... Спасибо, здесь всё ясно, вопрос снят.
2. Так в том-то и проблема, что любой запрос (чтение входов, байта, запись и т.д.) наглухо вешает программу, если ПЛК физически не подключен, функция не возвращает 0 по таймауту соединения, как должна бы. Понимаю, что это глюк компонента, либо мой (но вот как - ума не приложу). А вы можете привести пример запроса на основе winsock?
Сейчас попробую из своего найденного примера засунуть функции по работе с modbus в основной unit, сейчас они пытаются вызываться из другого юнита, может что не так подключил...

swerder
19.07.2011, 10:52
увы, примера нет. действительно, нехорошая ситуация, что функция даже сама по себе не работает нормально, даже без плк.
этот пример (http://www.owen.ru/forum/showpost.php?p=8968&postcount=10) рассматривали?

Вова
19.07.2011, 14:46
этот пример (http://www.owen.ru/forum/showpost.php?p=8968&postcount=10) рассматривали?
Нет, спасибо за ссылку. Посмотрел - для простой связи между ПЛК по сети езернет самое оно, без лишних заморочек в коде. Но в данный момент у меня в проекте используется связь между контроллерами по RS485 (связал бы по ethernet'у, наверное, было бы надёжнее, но там контроллеры установлены на движущихся устройствах, а витая пара, боюсь, не выдержит постоянных сгибов, хоть и не очень крутых - или есть спец. кабели? но это уже вопрос для другой темы), а сетевые переменные с компа прекрасно читаются через модбас тисипи, проблема вот с этой проверкой на отсутствие связи... Ладно, буду дальше искать решение.

swerder
19.07.2011, 15:26
контроллеры связаны между собой по rs485, а с компом по езернет? или через переходник какой-то?

Вова
20.07.2011, 08:56
контроллеры связаны между собой по rs485, а с компом по езернет?
Именно так, как процитировано. Между собой будут связаны и в целевом проекте, а связь с компом только для эмуляции реальных входов/выходов (вместо чтения реальных входов и установкой значений на реальных выходах идёт работа с сетевыми переменными, которые читает/пишет комп, на все три ПЛК). В целевом проекте компа не будет.

Coder
29.12.2011, 11:08
Очень нужна помощь! Подключаюсь к OPC c использованием библиотеки OCSDAAuto.dll из Delphi. По таймеру раз в секунду проверяется условие
if OPCServerV20.ServerState <> 1 then OPCServerV20.Connect('CoDeSys.OPC.02',OPCServerV20 .ServerNode). При этом если контроллер не подключен, то программа зависает. Посоветуйте пожалуйста как это исправить ...

Okmor
04.01.2012, 18:26
if OPCServerV20.ServerState <> 1 then OPCServerV20.Connect('CoDeSys.OPC.02',OPCServerV20 .ServerNode).

- Запускайте в отдельном потоке и ждите когда сервер даст CONNECT, если не дал за какоето время - убиваем поток.

Здесь я это сделал для опроса порта
http://www.owen.ru/forum/showthread.php?t=10668
Если без отдельных потоков - то при каждом кратковременном пропадении связи, все виснет намертво.
И не забывайте про паузы в цыклах потоков.

Coder
04.01.2012, 22:04
Спасибо! Буду пробовать ...

Sdvnkhp
22.02.2012, 15:38
Делфи давно умер... вы откуда упали?
похоже вы забыли на чем написаны были "программы на мертвом языке", такие как: Altium Designer,FastStone Image Viewer, The KMPlayer, AIMP, Skype, QIP, QIP Infium и R&Q, The Bat!, FruityLoops, Guitar Pro, Open Perl IDE , Macromedia HomeSite, Macromedia Captivate, Avant Browser, Total Commander (мертвая программа), Download Master, ASProtect, Bred2, Everest(а мервтее этой уж точно нет!), Hexapad(и прах этой то же).

IVM
22.02.2012, 16:39
Делфи давно умер... вы откуда упали?
похоже вы забыли на чем написаны были "программы на мертвом языке", такие как: Altium Designer,FastStone Image Viewer, The KMPlayer, AIMP, Skype, QIP, QIP Infium и R&Q, The Bat!, FruityLoops, Guitar Pro, Open Perl IDE , Macromedia HomeSite, Macromedia Captivate, Avant Browser, Total Commander (мертвая программа), Download Master, ASProtect, Bred2, Everest(а мервтее этой уж точно нет!), Hexapad(и прах этой то же).

А что можете лучшее предложить ?

Sdvnkhp
23.02.2012, 02:07
Я это к тому что делфи считают архаизмом.. скорее наоборот архаичный идиотизм так считать...
Я тут на основе кастомных интефейсов решил своять свое подобие Kassl прошу не кидать помидорами... это только начало... если кому надо описание OPC DA 3.0 (Агл.) могу кинуть на мыло.
Касательно овена и Codesys список добавленных переменных можно брать с проекта (*или тут :\WINDOWS\Gateway Files\*) Файл *.Sym (блокнотом можно посмотреть...) по мере возможности и времени буду допиливать и тут обновлять...

P.S. пытался читать...

AntoNechayuk
23.02.2012, 17:06
интересно будет глянуть по свободе....
Хотя касл нормально работает.... и антитабличка имеется;)

JIexa21
27.02.2012, 22:32
Внесу и свои 5 копеек. :)
Когда недавно возникла задача вести небольшой процесс, к нему же немного визуализации на ПЦ и заодно архивировать эти данные с возможностью удаленно просмотреть, то оказалось что трейсмод с нужными либами + лектус обходится в сумму не менее 30 килорублей. Что-то мне подсказало что это как-то немного жирновато будет.
В результате быстро набросал черновой проект на акцессе: mscom32.ocx + немного кода для модбас аски...
Сразу предвидя крики о стоимости лицензии на акцесс, хочу этих кричащих обломать: клиенту можно и не покупать акцесс - достаточно поставить бесплатный рантайм. Т.е. трейс с опц идет лесом, а мощности акцесса хватит для натягивания трейса в любой конфигурации с ценником за сотню килорублей. Ну и разобраться в акцессе можно быстрее чем в том же дельфи, и это еще не говоря про разные трейсы с мастескадами с их человеконенавистническим интерфейсом, в которые без бутылки лучше не соваться...
В планах накатать свою ocx/dll для полной подержки modbus serial ascii/rtu на сях (или можно на том же дельфи). Потом может и до TCP доберусь, если это конечно кому-то интересно.
Только вот свободное время будет где-то в мае...

capzap
27.02.2012, 22:48
зачем что то изобретать, нужно пользоваться опытом других :) http://alexsentcha.wordpress.com/saia-plc-communication-library-with-delphi-ide/delphi-using-saia-communication-library/

JIexa21
28.02.2012, 08:22
зачем что то изобретать, нужно пользоваться опытом других :) http://alexsentcha.wordpress.com/saia-plc-communication-library-with-delphi-ide/delphi-using-saia-communication-library/
Да дельфи для работы с акцессом подходит не очень - работа с памятью и указателями его не очень сильная сторона. Точнее я вообще не помню как он там работает с указателями, т.к. раньше их вообще не было. :)
А без прямой работы с памятью будет не намного лучше встроенного vba, на котором даже с отдельными битами работать приходится с разными "калькуляторами разрядов". Поэтому этот черновой вариант и был ascii only, т.к. даже контрольную сумму RTU посчитать проблема. Ну и кроме поддержки собственно модбаса, планировалось сделать несколько функций для работы с разными мелочами.

TPEHEP
28.02.2013, 16:10
Всем привет.

Полтора года назад начинал писать небольшую скаду и всё успешно работало...
Однако на днях понадобилось сделать некоторые изменения и наткнулся на острую проблему. При поптыке выполнить программу из Дельфи, вылетает ошибка: http://clip2net.com/s/2T5vE

Работаю с ОРС без каких либо навесок.

Единственное что приходит на ум, винда7. Полтора года назад всё это писалось на компе под win-xp, а сейчас это всё установлено под управлением win-7.

Люди, помогите...

test_91
20.10.2014, 10:20
Добрый день! Прошу Вашей помощи.
Изучив данную ветку
я используя приведеный пример написал программу для работы с OPC сервером (Контроллер ПЛК-100)

В процессе разработки программы, сначала были созданы кнопки для отправки данных и для считывания. Они работали на УРА. Можно было запустить программу, и через часа два все работало. Но затем я добавил таймер, для постоянного мониторинга состояния датчиков. И тут начались беды. При запуске программы с таймером минут 5-10 все работает и все. Складывается впечатление что ОРС сервер просто "зависает". Данные с него считываются, но только те, которые были в момент зависания. К примеру в контроллере переменная уже равна двум, а он как принимал единицу, так и принимает. А данные не отправляются, при отправке данных происходит ошибка "неопознанная ошибка"....
Перезагружаешь компьютер - 5 минут работает и виснет. Побывал увеличивать интервалы таймера (изначально я поставил 100 мс, отображение было идеальноым. Не помогло. Затем я просто отключил таймер, и к моему удивлению и это не помогло, хотя ранее без таймера все работало отлично. Может быть Вы сможете что нибудь подсказать? Очень надеюсь на Вашу помощь!

Текст программы:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OPCAutomation_TLB, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Panel1: TPanel;
Panel2: TPanel;
Timer1: TTimer;
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
end;

var
Form1: TForm1;

NewServer:OPCServer;
NewGroups:OPCGroups;
NewGroup:OPCGroup;
NewItems:OPCItems;

NewItem1, NewItem2, NewItem3, NewItem4, NewItem5:Variant;
Val1 : Integer;
Val2, Val3 : Boolean;

implementation

// Подключение к серверу
procedure TForm1.Button4Click(Sender: TObject);
begin
// Шаг 1, подключение
NewServer:=CoOPCServer.Create;
NewServer.Connect('CoDeSys.OPC.02',NewServer.Serve rNode);

Memo1.Clear;
Memo1.Lines.Add(NewServer.ServerName);
Memo1.Lines.Add(DateTimetostr(NewServer.LastUpdate Time));
Memo1.Lines.Add(NewServer.VendorInfo+'. Версия '+Inttostr(NewServer.MajorVersion)+'.'+Inttostr(Ne wServer.MinorVersion)+'.'+Inttostr(NewServer.Build Number));
Memo1.Lines.Add('Состояние сервера='+Inttostr(NewServer.ServerState));

// Шаг 2, создание группы
NewGroups:=NewServer.OPCGroups;
NewGroup:=NewGroups.Add('Group1');

Memo1.Lines.Add(NewGroup.Name);

// Добавим Items для обмена данных
NewItem1:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.tx', 1);
NewItem2:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz1', 1); // Левый датчик
NewItem3:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz2', 1); // Правый датчик
NewItem4:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.sec3', 1); // Левый датчик
NewItem5:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.sec1', 1); // Правый датчик
end;

// Отключение
procedure TForm1.Button5Click(Sender: TObject);
begin
NewServer.OPCGroups.RemoveAll;
NewServer.Disconnect;
Memo1.Lines.Add('Состояние сервера='+Inttostr(NewServer.ServerState));
end;

// Установить 1-ый режим
procedure TForm1.Button2Click(Sender: TObject);
begin
NewGroup.OPCItems.Item('PLC1:PLC_PRG.tx').Write(1) ;

Memo1.Lines.Add('Установлен 1-ый режим!');
end;

// Установить 2-ой режим
procedure TForm1.Button3Click(Sender: TObject);
begin
NewGroup.OPCItems.Item('PLC1:PLC_PRG.tx').Write(2) ;

Memo1.Lines.Add('Установлен 2-ой режим!');
end;

// Чтение режима
procedure TForm1.Button1Click(Sender: TObject);
begin
NewItem1.Read(NewGroups.GetOPCGroup('Group1').OPCI tems.Item('PLC1:PLC_PRG.tx'), Val1);

Memo1.Lines.Add('Установлен режим №'+VarToStr(NewItem1.Value));
end;

// Программа таймера, обновляет показания датчиков
procedure TForm1.Timer1Timer(Sender: TObject);
begin
NewItem2:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz1', 1); // Левый
NewItem2.Read(NewGroups.GetOPCGroup('Group1').OPCI tems.Item('PLC1:PLC_PRG.poz1'), Val2);

NewItem3:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz2', 1); // Правый
NewItem3.Read(NewGroups.GetOPCGroup('Group1').OPCI tems.Item('PLC1:PLC_PRG.poz2'), Val3);

if NewItem2.Value then panel1.Color:=clred else panel1.Color:=clgreen ;
if NewItem3.Value then panel2.Color:=clred else panel2.Color:=clgreen ;
end;

end.

kfvniiz
21.10.2014, 17:30
// Программа таймера, обновляет показания датчиков
procedure TForm1.Timer1Timer(Sender: TObject);
begin
NewItem2:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz1', 1); // Левый
NewItem2.Read(NewGroups.GetOPCGroup('Group1').OPCI tems.Item('PLC1:PLC_PRG.poz1'), Val2);

NewItem3:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz2', 1); // Правый
NewItem3.Read(NewGroups.GetOPCGroup('Group1').OPCI tems.Item('PLC1:PLC_PRG.poz2'), Val3);

if NewItem2.Value then panel1.Color:=clred else panel1.Color:=clgreen ;
if NewItem3.Value then panel2.Color:=clred else panel2.Color:=clgreen ;
end;

end.

Может сам OPC глючит, тут после лектуса и кодесиссовского OPC можно всякого ожидать. Крайне они специфичны. Хотя после выбора правильной версии и настройки вроде пашут (зато цена у них не такая как у того же kepware). Для тестов я обычно использую какой-нибудь проверенный клиент, например, kepware. Есть и другие.

Глянул код. Вот мне странно, а почему ты в таймере каждый раз теги добавляешь
NewItem2:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz1', 1);
как думаешь когда OPC от этого станет нехорошо и когда у системы закончатся ресурсы? Конечно за 5 минут вроде не должны бы, хотя как знать. В общем из таймера добавление тегов лучше убрать. Только конечно, если это не какая-то особенность вот данных библиотек. Далее в Delphi таймеры очень специфичны и код в них лучше защищать на случай вылета exception внутри метода и повторного входа в обработчик из-за всплывшего модального окна.
Потом хорошо еще предусмотреть вариант того что OPC сервер вот взял и упал. Причем очень тихо. И вот тогда надо к нему переконнектится. В общем случае должны быть процедуры для коннекта к OPC с созданием групп и тегов, далее процедура для обновления данных, процедура для проверки доступности сервера, процедура для дисконнекта.

rwg
21.10.2014, 20:25
Да дельфи для работы с акцессом подходит не очень - работа с памятью и указателями его не очень сильная сторона. Точнее я вообще не помню как он там работает с указателями, т.к. раньше их вообще не было. :)
В Паскале есть всё, что есть в Си и наоборот. Недостаток Паскаля перед Си состоит в том, что его код более доступен для понимания и любой желающий может находить ошибки и указывать на них. А в программе на Си может разобраться только программист более высоко класса, чем творец программы, то есть проверять её и тыкать носом в ошибки никто не будет.

Валенок
21.10.2014, 23:17
!!! Если ж кто таки разберется - на такого и другой ЯЕБВУ найдется.
(Язык Еще Более Высокого Уровня)

test_91
28.10.2014, 15:07
Может сам OPC глючит, тут после лектуса и кодесиссовского OPC можно всякого ожидать. Крайне они специфичны. Хотя после выбора правильной версии и настройки вроде пашут (зато цена у них не такая как у того же kepware). Для тестов я обычно использую какой-нибудь проверенный клиент, например, kepware. Есть и другие.

Глянул код. Вот мне странно, а почему ты в таймере каждый раз теги добавляешь
NewItem2:=NewGroups.GetOPCGroup('Group1').OPCItems .AddItem('PLC1:PLC_PRG.poz1', 1);
как думаешь когда OPC от этого станет нехорошо и когда у системы закончатся ресурсы? Конечно за 5 минут вроде не должны бы, хотя как знать. В общем из таймера добавление тегов лучше убрать. Только конечно, если это не какая-то особенность вот данных библиотек. Далее в Delphi таймеры очень специфичны и код в них лучше защищать на случай вылета exception внутри метода и повторного входа в обработчик из-за всплывшего модального окна.
Потом хорошо еще предусмотреть вариант того что OPC сервер вот взял и упал. Причем очень тихо. И вот тогда надо к нему переконнектится. В общем случае должны быть процедуры для коннекта к OPC с созданием групп и тегов, далее процедура для обновления данных, процедура для проверки доступности сервера, процедура для дисконнекта.

Изначально этих тегов не было, и программа без них не работала корректно. Когда с датчика приходила единица, то все ок, а вот когда ноль - первый раз считывал нормально, затем вылет - с ошибкой что вышло из допустимого диапазона....

Пьер
23.04.2015, 12:58
Дорогие друзья, тему прочитал, просмотрел. Ничего против скады, си и си шарпа не имею. Все хороши, сам работал со SCADAMaster.
Но моя задача проста:

Мне нужно через приложеньеце Delphi7 подключиться к ПЛК 154 И.м. по MODBUS RTU (RS-485), т.е. отправлять и получать данные.
OPC сервер мне не подходит. Приложение должно быть независимое.

ПК (Master), ПЛК154И.М. (Slave), в дальнейшем хочу последовательно еще контролеров 10 подключить, чтобы с ПК считывать данные и где нужно, управлять.
Кто нибудь делал такое, можете подсказать что-то по коду?
читал про ModbusRTU. Вроде все понятно, но камни... В делфи много всяких библиотек. голова кипит от инфы.
Спасибо!

Semy
23.04.2015, 13:27
Дорогие друзья, тему прочитал, просмотрел. Ничего против скады, си и си шарпа не имею. Все хороши, сам работал со SCADAMaster.
Но моя задача проста:

Мне нужно через приложеньеце Delphi7 подключиться к ПЛК 154 И.м. по MODBUS RTU (RS-485), т.е. отправлять и получать данные.
OPC сервер мне не подходит. Приложение должно быть независимое.

ПК (Master), ПЛК154И.М. (Slave), в дальнейшем хочу последовательно еще контролеров 10 подключить, чтобы с ПК считывать данные и где нужно, управлять.
Кто нибудь делал такое, можете подсказать что-то по коду?
читал про ModbusRTU. Вроде все понятно, но камни... В делфи много всяких библиотек. голова кипит от инфы.
Спасибо!

Могу подсказать по ModbusTCP (http://sourceforge.net/projects/delphimodbus/), почти 2 года без глюков работает 24/7. Причем универсально, данные собираю с ПЛК150 и AVR. До этого использовал OPC (для плк), не понравилось.

capzap
23.04.2015, 13:59
Дорогие друзья, тему прочитал, просмотрел. Ничего против скады, си и си шарпа не имею. Все хороши, сам работал со SCADAMaster.
Но моя задача проста:

Мне нужно через приложеньеце Delphi7 подключиться к ПЛК 154 И.м. по MODBUS RTU (RS-485), т.е. отправлять и получать данные.
OPC сервер мне не подходит. Приложение должно быть независимое.

ПК (Master), ПЛК154И.М. (Slave), в дальнейшем хочу последовательно еще контролеров 10 подключить, чтобы с ПК считывать данные и где нужно, управлять.
Кто нибудь делал такое, можете подсказать что-то по коду?
читал про ModbusRTU. Вроде все понятно, но камни... В делфи много всяких библиотек. голова кипит от инфы.
Спасибо!
а ява не подойдет http://capzap.mobi/plc/

ks-app
30.05.2016, 09:53
Да дался вам этот Delphi! Ставьте скаду - и быстрее и лучше, и скорее всего дешевле.
А вот здесь я поспорю. Быстрее - при условии, что вы очень хорошо знаете СКАДУ. Дешевле - это совсем нет. Особенно если СКАДА импортная и требуется использовать много точек.
Кроме того, любая СКАДА - это тюрьма для истинного программиста. Иногда ограничения приходится обходить через зад (вот вам и быстрее). СКАДА хороша для более-менее типовых проектов.
Если же требуется свобода программирования - то здесь только Делфи, Визуал Студио или что-то типа того.

JIexa21
30.05.2016, 13:43
Полгода назад написал АРМ сушильной камеры на с#. Сначала шла тяжело, т.к. до этого вообще на C# ничего не писал, но за пару недель разобрался, изобрел несколько велосипедов (зато свои) и все вообще пошло без проблем. Никаких тебе ограничений по точкам и все бесплатно. Кодил в SharpDevelop 4.4, С ПЛК работал через бесплатный easymodbus, с MySQL через их же халявный MySql.Data.dll.
Мнение по скадам до сих пор не изменилось (3 года назад тут есть мой пост на предыдущей странице). :)

sergeykrylov
02.06.2016, 12:14
Занимаюсь автоматизацией РБУ и АБЗ. Раньше использовал ПЛК110-60, а на Delphi делал только сервер базы данных расхода материалов. Теперь использую только модули ввода и вывода, а всё управление реализую в проге написанной на Delphi - очень удобно. Особенно корректировать удалённо логику управляющей программы. Ни каких платных СКАД и ОРС.

Вольд
02.06.2016, 12:38
Занимаюсь автоматизацией РБУ и АБЗ. Раньше использовал ПЛК110-60, а на Delphi делал только сервер базы данных расхода материалов. Теперь использую только модули ввода и вывода, а всё управление реализую в проге написанной на Delphi - очень удобно. Особенно корректировать удалённо логику управляющей программы. Ни каких платных СКАД и ОРС.

А ПК какой ставишь ?

sergeykrylov
02.06.2016, 12:53
Обычный, только операторская с евроремонтом, кандюком и каждый день влажная уборка (если ты пыль имеешь ввиду).

Вольд
02.06.2016, 13:05
Обычный, только операторская с евроремонтом, кандюком и каждый день влажная уборка (если ты пыль имеешь ввиду).

А с COM-портом ПК как работаешь ?

sergeykrylov
02.06.2016, 13:26
Есть компоненты для этого ModBusRTU

Вольд
02.06.2016, 14:22
Есть компоненты для этого ModBusRTU

И на какой скорости обмен с модулями ведешь ?

sergeykrylov
02.06.2016, 14:27
Обычно 19200

Вольд
02.06.2016, 14:31
Есть компоненты для этого ModBusRTU

Компонент только под Delphi работает ?

sergeykrylov
02.06.2016, 14:34
Да. Разработан именно для Delphi.

YuriBel
03.06.2016, 18:35
А можно про компонент чуть подробнее?
Самописный или заимствованный, свободный или покупной, где взять?