Средство для программирования контроллера: Си или МЭК 61131? |
Ответить | Страница <1 3839404142 53> |
Автор | |||||||
Новичок Присоединился: 26 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 22 |
Опубликовано: 22 Октябрь 2003 20:23 |
||||||
В сущности, Вы сейчас мимоходом озвучили единственный СЕРЬЕЗНЫЙ недостаток примененения C++ в рассматриваемой области. Действительно, все зависит: 1) от ОС 2) от тех базовых библиотек, которые пользователь сам себе создал, "проблемно-ориентируя" C++ для себя. В результате имеется, во первых, зависмость кода от платформы (1), во вторых, лишняя работа по созданию "каждому для себя" инфраструктуры, которая в случае с мэковскими языками обеспечивается поставщиком систем разработки. Насчет "синхронизацию и обмен между узлами никакое языковое средство не поддержит" - не совсем правда. Мэковские языки имеют средства описания распределенной системы и требования к синхронизации, например, требование когерентности данных, вычисленных одной программой, куда бы эти данные не поставлялись. Можно критиковать эти средства, но они есть, и требования стандарта поставщики инструментальных средств выполняют (по крайней мере должны). Для С++ ничего СТААНДАРТНОГО нет (хотя могло бы быть). Это не не недостаток языка как такового, это недостаток .. текущего положения дел. ПОэтому, чтобы C++ был конкурентоспособен в сравнении с мэком для решения не только сложных или нестандартных, но и любых задач (и вообще, чтобы не изобретать каждый раз новый велосипед), нужны определенные усилия по стандартизации инфраструктуры (то есть библиотек функций/классов/макросов), ориентированной на задачи АСУТП. С++ безусловно, имеет существенные преимущества как язык принципиально более высокого уровня, чем мэк1131. Более высокого потому, что он позволяет пользователю не только пользоваться встроенными в язык абстракциями, но и вводить свои. Например, нетрудно реализовать (с помощью перегрузки операций) скажем, нечеткую логику или интервальную арифметику, или заменить простые переменные чем-то вроде OPC-тегов (с качеством и таймстампом), сохранив возможность обычных арифметических операций с ними. Недостатки (как обратная сторона гибкости), тоже имеются. Так что сосуществование С++ и мэка в области АСУТП (и их конкуренция) пошла бы на пользу обеим подходам. Но, повторюсь, мне кажется, что со стороны С++ основная проблема - не собственно в языке, а в отсутствии стандартизации инфраструктуры. |
|||||||
С уважением,
Дмитрий Теркель |
|||||||
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 09 Сентябрь 2003 Категория: Russian Federation Online Status: Offline Публикации: 247 |
|||||||
Очень хорошо. Мы уже согласились с тем, что эти алгоритмы сложны в реализации и ненаглядны в LD. Теперь можно поговорить и о "наглядности" в FBD. Будем?
Что значит "разрабатывались ОЧЕНЬ опасные объекты, такие как завод"?! 8-) Выражайтесь поточнее... Что там было конкретно автоматизировано и какими средствами... а то из Ваших слов следует на LD АСУП построили...
Ну я смотрю разговор плавно переходит в русло "интеллектуальных" КИП... ПО которых, и об этом не следует забывать, написано на Си. Кстати, в сотый раз, специально для Вас, повторяю: я не считаю, что все и вся нужно писать на Си. Более того, собственно Си я лично при автоматизации использую достаточно редко... Хотя и считаю это вполне допустимым. Религиозными фанатиками тут являются как раз приверженцы МЭК 61131.3 в его понимании а ля ISaGRAF, предлагающие использовать FBD, IL, и LD. Моя же точка зрения - из всего МЭК 61131.3 имеет смысл изучать и использовать только SFC+ST. Несмотря на их убогость и ограничения, это парочка все-таки имеет хоть какое-то отдаленное отношение к автоматизации. |
|||||||
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК http://reflex-language.narod.ru/ |
|||||||
Новичок Присоединился: 14 Октябрь 2003 Online Status: Offline Публикации: 25 |
|||||||
Что вас постоянно заносит, а передергивание слов это вообще дурной тон. ПроЧитайте "не так наглядно". Задайте вопрос:" По сравнению с чем??". Ответ написан во второй половине предложения. Я еще раз напишу: "FBD (просто и наглядно и в он-лайн все параметры видны)" Так откуда здесь категоричные утверждения СЛОЖНЫ и НЕНАГЛЯДНЫ? И мы опять говорили об LD, но вы переходите уже на FBD. Воспользовавшись собственным утверждением:"Ну все договорились". Вы сами с собой договорились???
Вы правда не понимаете??? Дмитрий говорил о том, что на языках МЭК разрабатывались очень опасные объекты. Естественно речь идет об автоматизации их. При чем тут один LD? Прошу Вас внимательнее читайте ответы. Там ясно написано:"где на МЭКовских языках разрабатывались"
Да никуда он не переходит, это вы его постоянно переводите, то с IL на ST, то с ST на LD затем на FBD, а теперь вообще на интелектуальные КИП.
Что вы постоянно на ISaGRAF косите??? Вы же в нем даже не работали, так как работающий с изаграфом человек, не делал бы многих детсконаивных утверждений о реализации МЭК в ISaGrafe, а почитал бы документацию. Да и не о IsaGrafe разговор. Языки МЭК реализованы во многих других продуктах. Да и прочитайте тему форума, а то я уже устал Вас туда посылать и впредь не отклоняйтесь от нее, а то уже и КИП притянули сюда. И никто Вам не предлагал использовать только IL,FBD и LD. НИКОГДА и НИКТО НЕ ПРЕДЛАГАЛ. В противоположность Вам, фанатики (как Вы их назвали) привели примеры реализации и функции, и последовательности реализации управления клапаном. От Вас я не слышал не видел ни одного примера, только утверждения типа "MЭК аля ISaGRAF сакс и шиза", "МЭК это шиз." и тд. и тп.. Это практически цитаты, так как полные тексты Ваших предложений выдергивать лень. Приведите реальные примеры, иначе люди здесь собравшиеся могут подумать, что вы простой теоретик начитавшийся умных книжек. И никогда ничего не автоматизировавший. На мой взгляд, это уже почти и так понятно. |
|||||||
Каждой вещи свое место.
С уважением, VSerg. |
|||||||
Новичок Присоединился: 14 Октябрь 2003 Online Status: Offline Публикации: 25 |
|||||||
Спорно, что синхронизацию и обмен не поддерживает ни одно языковое средство. Вы изучили все языковые средства?? Ну да ладно, я не о том говорил. Я говорил об синхронизации данных и не между узлами, а между управляющими программами(можете читать процессами на разных узлах соединенных сетью). О их достоверности, о их производстве и потреблении, об изменении данных во время выполнения управляющей программы. Как было уже сказано многие среды SCADA позволяют строить распределенные системы с достаточно жестким контролем производства и потребления данных, т.е. синхронизацией. О сети мы не говорим, так как надежные среды передачи данных это в другой форум. |
|||||||
Каждой вещи свое место.
С уважением, VSerg. |
|||||||
Гость |
|||||||
Буду рассматривать только комплекс этих программ :)
Владимир, средства Вы наши знаете. Я Вам про них тысячу раз говорил. Это не Исаграф. Какие конкретно установки Вас интересуют чтоли? Ну гляньте на сайте, много всего, в т.ч. компания Thomas Swan and Company Ltd
Стоп. Я говорил об алгоритмах управления, которые исполняются в полевых устройствах. Например блоки ПИД. А ПО, которое реализует общение, разработку алгоритмов и пр, действительно написано на Си, но это к делу уже не относится. Речь идет о алгоритмах управления ТП. Кстати, в сотый раз, специально для Вас, повторяю: я не считаю, что все и вся Ну вот :) Какое-то соглашение уже есть :))) Они, насколько я понял, все говорят именно про разработку алгоритмов для ТП. Опять же, я могу привести Вам как минимум 2 конкретных примера, которые я поддерживал, разработанных на LD. Один из примеров- ПАЗ всего НПЗ. Какого- Вы догадаетесь сами :)
|
|||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||
В обратном порядке: 1. я изучил почти все языковые стедства ;-) - до какого-то времени я взаправду считал языки, на которых сделал реальные проект или хотя бы небольшую задачу... до 23-х я считал - а потом перестал... Я это говорю не для бахвальства, а потому, что это - моя специальность и единственная : писать программы, об чём угодно, и на всём, что угодно... Другого я не умею. Это я к тому написал, что здесь в форуме ругани много: кто-то АСУТП занимается, методологией этого процесса, ... ругали здесь "теоретиков" - "которым бы книжки только писать"... Так без Хоара и Дэйкстры (теоретиков!) - не было бы ни структурных языков ни параллелизмов... Я бы посоветовал здесь всем - уважать в собеседнике специалиста в том, что он умеет... А следовать ли этому совету - каждому самому решать! 2. то, что "...ни одно языковое средство..." не поддерживает синхронизацию и обмен, само по себе (как язык) - должно быть не "спорно", а "бесспорно"! ;-) Все средства взаимообмена данными между хостами - опираются на транспортные протоколы обмена (кто-то должен же ваши данные переносить). В свою очередь: - протоколы обмена - реглпментируются стандартами, в частности, многие из них - RFC: Ethernet, TCP/IP, PPP, SNMP... - не может ни один язык содержать поддержку сетевых средств, иначе: стандарт протокола умер - и язык "выноси"... - для каждых видов взаимообменов - вводятся моделтрующие их абстракции: socket, TLI... (которые применимы к широкому набору конкретных протоколов); - поддержка и использование сетевых абстракций осуществляется из библиотек. - собственно, для разделения сущностей и полномочий и продумана "7-ми уровневая модель ISO взаимодействия открытых систем"... по которой ПО и языковые средства выражения должны быть "чувствительны" только к верхним 2-3 уровням.
А это оно и есть - кто вам будет данные между процессами на хостах переносить? Из тех OS, которые я знаю (до 10-ти - работал, ещё 10-ток просматриваю) - только в QNX я знаю средство непосредственного взаимодействия удалённых процессов, во всех остальных случаях - извольте через автономный промежуточный протокольный слой!
Данных - на разнесённых узлах? Не верю! SCADA возможно и могут оперировать с удалёнными данными, но только теми средствами, которые ей предоставляет базис - OS, например. И ни на грамм больше! |
|||||||
Новичок Присоединился: 14 Октябрь 2003 Online Status: Offline Публикации: 25 |
|||||||
Поддерживаю.
Да я и не спорю, куда же без протоколов.
Я имел ввиду, что некоторые SCADA допускают изменение внутренних данных только в определенные моменты, например только в начале цикла целевой системы, что гарантирует что данные не изменятся не в то время. ОС позволяет провести данные до определенного уровня, а кто их будет забирать и как, Ей разве не все равно? Или я ошибаюсь? |
|||||||
Каждой вещи свое место.
С уважением, VSerg. |
|||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||
Нет здесь ничего ни интересного, ни удивительного... То, что вы используете в примере через указатель, гораздо "культурнее" (т.е. с меньшим нарушением логики языка, без изысков) реализуется в С через union: union { char c[ 2 ]; int i; } x; x.i = 258; printf( "%d", c[ 0 ], c[ 1 ] ); То-же самое в FORTRAN (именно его я выбрал, потому, как это явно ориентированный на вычислительные задачи язык, уж ни у кого не поворачивался язык называть его зависимым от платформы): COMMON/CCC/ I INTEGER*2 I DATA I/258/ ... COMMON/CCC/ L1, L2 LOGICAL*1 L1, L2 WRITE( 6, 60 ) L1, L2 То же самое - в Pascal: type T = record case Boolean of true: ( I : integer ); false: ( C[ 0..1 ] : char ) end; {T} var V : T; V.I := 258; Write( V.C[ 0 ], V.C[ 1 ] ); В Java такие трюки "в лоб" не проходят (что связано, вообще-то, с тем, что "компилированное" Java-приложение - байт-код, цепочка байт ... что, в свою очередь, имеет серьёзные издержки). Но эффект big endian - litle endian могут тоже проявляться и здесь. Например: при взаимодействии через сокет (здесь может и не присутствовать сети - через IP "петлевого интерфейса" 127.0.0.1 - такое часто используется). При этом корреспондент по обмену (который может быть прописан и не в Java) может делать или не делать преобразований адресов, портов (htos, htol...) - в зависимости от этого у вас будет "конект" или не будет... работает тот-же эффект. Всё это к машинной зависимости средств описания - не имеет отношения.
А он и будет безупречно транслироваться на всех платформах и всеми трансляторами ;-) - другой вопрос, что вы можете получать на разных платформах (процессорах!) различные результаты... Но это - практически во всех языках! |
|||||||
Действительный член Присоединился: 14 Октябрь 2003 Категория: Ukraine Online Status: Offline Публикации: 267 |
|||||||
1-я позиция - я её никак не могу признать. Ни одно средство (даже если это МЭК ;-)) никак не может использовать средств, которые не предоставляет ему базис! Чудес не бывает (т.е. - законы термодинамики утверждают, что бывают но та-а-а-ак редко;-)). Как ваш МЭК будет "синхронизировать" данные, независимо каким механизмом они доставляются: RS-232, ModBus, Ethernet MAC, TCP/IP, UDP vs TCP ;-), HTTP, SNMP, FTP... - назвать ещё 1234 протоколов/механизмов? А как ваш МЭК собирается работать в Windows, положим, OS при обмене "в стиле NFS" ... когда Windows никогда не слышала об NFS, и сочтёт всё это "мусором". Или МЭК станет "разгребать" данные на портах адаптера? какого: NE-2000, RTL-8029, RTL-8139 ... назвать ещё 4321 адаптеров? ;-)
А уж вот эта "святая вера" в возможности таких средств - вот это уже всерьёз опасно! |
|||||||
Гость |
|||||||
Как ваш МЭК будет "синхронизировать" данные, независимо каким механизмом они доставляются: RS-232, ModBus, Ethernet MAC, TCP/IP, UDP vs TCP ;-), HTTP, SNMP, FTP... - назвать ещё 1234 протоколов/механизмов? Гммм..мдя. В общем сабж нужно было называть по другому- Средство для программирования алгоритмов для тех. процессов. Потому что мэковские языки предназначены для этого и ТОЛЬКО для этого. Не более. Не нужно приписывать им возможности для написания драйверов, протоколов и пр. Отсюда и спорьте :) Потому как если средства разработки по Виндовз (что удобно и недорого, да и зачем там Юникс?), то сама программа транслируется под ту Ось, что использует тот или иной контроллер, будь там Юникс, или своя операционка...не важно. Т.е. кто-то хочет возразить, что например в контроллерах Triconex или Hima "крутится" не своя ОС, а Виндовз? :) Кстати, доп. вопрос- а какое кол-во моделей контроллеров поддерживает Исаграф? И каких? Он универсален или же "заточен" под определенный тип контроллеров?
|
|||||||
Ответить | Страница <1 3839404142 53> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |