PDA

Просмотр полной версии : Еще раз о библиотеке SysLibSockets



dudanov
23.01.2015, 15:50
Здравствуйте.

Понимаю, что тема о библиотеке SysLibSockets и о ее реализации в ПЛК110 фирмы ОВЕН довольно избитая и обсуждалась на форуме не один раз, но хочется услышать от уважаемых форумчан советы по реализации следующей задачи:

Необходимо реализовать сервер Modbus TCP, обслуживающий запросы от системы диспетчеризации и HMI. Основное требование - логирование (код команды, IP-адрес, штамп времени), ну уж потом только дополнительные преимущества в виде генерации исключений протокола Modbus на основе своей карты адресов, областей памяти с правами "только для чтения" и т.п.

На вопрос "Почему просто не воспользоваться конфигуратором?" отвечу сразу: невозможно реализовать вышеперечисленные требования.

Все бы ничего, но с существующей реализацией SysLibSockets это превращается в ОГРОМНУЮ ПРОБЛЕМУ. Я бы все мог понять, даже возможность только одного клиентского подключения на один "прослушивающий" серверный сокет, но никогда не смогу понять неработоспособность функций, в частности SysSockAccept, отвечающей за открытие нового сокета и установление через него соединения с клиентом. При этом также должна заполниться структура SOCKADDRESS, содержащую информацию о клиенте, в том числе его IP-адрес.

Самое главное я об этом МАРАЗМЕ даже не догадывался. Как наивный пользователь написал программу принимающую 10 клиентов (с помощью SysSockAccept), "запоминал" все клиентские сокеты в массив и управлял ими, закрывая их по таймаутам после последнего обмена данными, либо сразу при наличии "свободных" соединений менее 2.

Я не хочу здесь расписывать все возникающие проблемы, так как они обсуждались уже достаточно, но хочу сказать одно разработчикам ОВЕН, а также продакт-менеджерам и руководящему составу: нельзя так относиться к клиентам. Существует просто ФАКТ о том, что на официальный сайт для "УВАЖАЕМЫХ" КЛИЕНТОВ выложен архив с библиотеками, содержащими АБСОЛЮТНО НЕВЕРНУЮ ДОКУМЕНТАЦИЮ к ним!!! Это как нужно понимать? Я как клиент и заказчик, расцениваю это как НАПЛЕВАТЕЛЬСКОЕ ОТНОШЕНИЕ по отношению ко всем пользователям. Все отмазки (никак иначе это не назовешь) по поводу того что во всем виновата 3S, то что она такая-сякая изменяет документацию каждый год, а у нас реализация старой версии библиотеки, нас, клиентов, каким образом должно волновать?! Сделайте, подверьте, наконец, всю свою документацию!! Не водите клиентов за нос!!!

Извините за эмоции, просто накипело. Разрабатываю абсолютно новый продукт, который, возможно, будет установлен не на одном предприятии на основе ПЛК фирмы ОВЕН, но в свете последних событий начинаю всерьез задумываться об использовании ПЛК других фирм.

Все же прошу помощи и совета и вообще можно ли (в чем я уже сильно сомневаюсь) реализовать требуемый функционал? Да, прошу принять участие в ОТКРЫТОМ сборе подписей!

P.S.: Может все же ОВЕН наведет порядок с SysLibSockets?? Да, и 3S - молодцы, так как не стоят на месте, а совершенствуют библиотеку для своих клиентов, а что делает в это время ОВЕН??

Scream
23.01.2015, 17:13
В последнее время действительно на разных ресурсах заговорили о КАЧЕСТВЕ ИЗДЕЛИЙ фирмы ОВЕН. ОВЕН заявил что в этом году будет сделан акцент именно на качество продукции, но мне кажется на самом деле бюджет, при нынешней экономики, на разработку нового сократили. Пора задуматься ОВЕН о клиентах и начать, как раз, надо с описания библиотек и привода их в порядок. Еще очень хотелось бы видеть ветку форума\сайта о стабильных и актуальных версиях прошивок и сделанных исправлениях. Лично я зря потратил деньги на мсд 200, он не соответствует описанию в буклетиках и мне уже больше года обещают исправить, положил на полку до лучших времен.

dudanov
23.01.2015, 19:41
В последнее время действительно на разных ресурсах заговорили о КАЧЕСТВЕ ИЗДЕЛИЙ фирмы ОВЕН. ОВЕН заявил что в этом году будет сделан акцент именно на качество продукции, но мне кажется на самом деле бюджет, при нынешней экономики, на разработку нового сократили. Пора задуматься ОВЕН о клиентах и начать, как раз, надо с описания библиотек и привода их в порядок. Еще очень хотелось бы видеть ветку форума\сайта о стабильных и актуальных версиях прошивок и сделанных исправлениях. Лично я зря потратил деньги на мсд 200, он не соответствует описанию в буклетиках и мне уже больше года обещают исправить, положил на полку до лучших времен.

Согласен со всем сказанным на 100%. Ветка о стабильных и актуальных версиях прошивок очень нужна, чтобы были описания "Что нового". Это же касается и версий библиотек. По все той же пресловутой SysLibSockets, надо ведь править прошивку, так как версия библиотеки от 3S новая, а реализация в прошивке ПЛК отсутствует!.. В этой ветке и можно было бы запустить этот топик.

Дмитрий Артюховский
23.01.2015, 23:46
а что после "наведения порядка" делать с ранее написанным кодом? ПКЛ110 уже лет 5 поставляется... не, я за то что "работает - не трожь", выявляются ошибки - накапливаем и добро пожаловать в новое изделие!

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

кстати, на новых ПЛК110-(М01) SysSockAccept работает канонически, (а на старых ее вызов вообще не нужен!)

smk1635
24.01.2015, 00:15
Да всё в Овене прекрасно знают. Но сделать навряд ли что смогут. Было же разъяснение. Если новое изделие, после тестирования, по мнению Овена, на 80% выполняет свои функции, то его пускают в продажу. И допиливают по ходу продаж. Руководства печатают в типографии. Крупным тиражом. С дисками, та же история. Все выловленный не точности и поправленные баги можно исправить только в следующем тираже.

dudanov
24.01.2015, 10:31
а что после "наведения порядка" делать с ранее написанным кодом? ПКЛ110 уже лет 5 поставляется... не, я за то что "работает - не трожь", выявляются ошибки - накапливаем и добро пожаловать в новое изделие!

так я за то, что нужно предоставить КОРРЕКТНУЮ документацию на те возможности, которые предоставляют библиотека + прошивка, а получается так, что как-будто кто-то написал сам не знает что, а разбираться предоставим клиентам, в том что кто-то что-то написал.... а может разработку выкупили или выкрали у кого-то, а вот разобраться с нюансами ни времени да и спецов попросту нет?..


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

я понимаю, что во всем могут быть ошибки или опечатки, человеческий фактор играет свое дело, но исправление этих ошибок - дело того кто ошибается, но никак не того, кто использует!.. представьте, если бы во всем, чем мы повседневно используем, разработчики-инженера не делали выводов и не исправляли свои разработки? вот, например, наши с Вами ПК или смартфоны, практически ежедневно выходят исправления и обновления программного обеспечения, закрывающие дыры и огрехи в протоколах и сервисах, ошибки работы приложений, приводящие к аварийному завершению работы и другим последствиям, но ведь не мы приспосабливаемся и, например, не нажимаем эту кнопку при открытом файле и поставленном именно сюда курсоре....! над этим работают разработчики и исправляют это!! это их хлеб! напомню, что ОВЕН ПЛК - это коммерческий продукт, он не создан сообществом энтузиастов, которые занимались проектом, а потом его взяли и забросили, исходные коды которого открыты и любой желающий может возобновить его, создав форк или взяв контроль над проектом с согласия его участников... был бы 110-й таковым, я бы тут сейчас демогогию не разводил, а взял бы исходники, разобрался, исправил и выложил бы патчи для всех... а ПЛК110 ОВЕН его до сих пор успешно продает и по сей день, зарабатывает на этом деньги, водя клиентов за нос и наплевательски предоставляя неверную документацию, авось никто не заметит...


кстати, на новых ПЛК110-(М01) SysSockAccept работает канонически

что Вы имеете ввиду?


(а на старых ее вызов вообще не нужен!)

вот этого, как я говорил, не могу понять... у нас, что TCP работает как UDP без соединения??? в моей голове это просто не укладывается...

dudanov
24.01.2015, 10:52
Да всё в Овене прекрасно знают. Но сделать навряд ли что смогут. Было же разъяснение. Если новое изделие, после тестирования, по мнению Овена, на 80% выполняет свои функции, то его пускают в продажу. И допиливают по ходу продаж. Руководства печатают в типографии. Крупным тиражом. С дисками, та же история. Все выловленный не точности и поправленные баги можно исправить только в следующем тираже.

да, ошибки имеют место быть, именно досадные и скрытые, настолько специфичные, которые в процессе альфа- и бета-тестирования не могли никак проявиться... но здесь имеет место быть ЯВНОЕ и ГРУБОЕ нарушение соответствия документации, а соответственно и заявленным возможностям конечного продукта!.. где исправления прошивок?.. нет! так дайте хотя бы корректную документацию!

а насчет документации и ее тиража, так есть для этого официальный сайт, я не против зайти на него, или получив рассылку по e-mail, порадоваться долгожданной новой версии прошивки, библиотеки, ну или документации... и вообще я бы давным давно отказался от дисков... прошлый век, уже даже в каждом мобильном устройстве есть Интернет, в отличие от CD/DVD приводов даже в ПК... а на эти деньги нанял бы сотрудника, который бы переписал документацию... вот в этом случае я, как клиент, получил положительные эмоции и кучу благодарностей в адрес ОВЕН...

Newcomer
24.01.2015, 11:39
.... а может разработку выкупили или выкрали у кого-то, а вот разобраться с нюансами ни времени да и спецов попросту нет?..

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

Дмитрий Артюховский
24.01.2015, 11:48
в настоящее время выводится в продажи новая модель, в ней поменяно железо, всего компьютерного больше ну и софт допилили...

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

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

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

dudanov
24.01.2015, 11:53
Примерно так оно и есть. У фирмы "ОВЕН" своих штатных, настоящих спецов нет, т.к. очень накладно их содержать. По этой причине для разработки своих приборов нанимают спецов на стороне. Сторонний разработчик это не собственный специалист, ему приказать нельзя. Если у него возникнут трения с заказчиком, то он может легко бросить то, что начал делать и не довел до конца. Есть у "ОВЕН" полностью купленные разработки. Если с этими разработками возникают какие-то проблемы, то довести их до ума еще сложнее. Номенклатура изделий фирмы "ОВЕН" настолько обширна, что собственные специалисты не в состоянии ее переварить.

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

P.S.: Хотя на сайте в информации о вакансиях такие специалисты не значатся, то есть ОВЕН в них не испытывает потребности.... странная политика.... я бы платил таким спецам 200-300 тыс., только чтобы моя продукция была на высоте и лучшая, а тут никто не нужен при таком то качестве...

dudanov
24.01.2015, 12:11
в настоящее время выводится в продажи новая модель, в ней поменяно железо, всего компьютерного больше ну и софт допилили...

канонически - это когда слушающий сокет получает запрос - открывает новый сокет для обмена и процедура возвращает дескриптор нового сокета, который уже собственно нужно дальше читать и писать, а в старом плк - дескриптор обменного сокета равен слушающему и два их или один фиг знает...
тогда это то что и требуется... теперь буду ждать 2 года модификацию с транзисторными выходами и 32 точками ввода/вывода... СПК210 ровно год назад обещали через месяц... так до сих пор статус "в разработке"... пишу и смеюсь... )

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


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

Написать простейший сервер, используя сокеты, обслуживающий 2-3 клиента, на железе, имеющий на борту Ethernet интерфейс и 32-битный процессор по-моему ничего сверхестественного. Не предоставляли бы тогда такие возможности и не писали того, чего нельзя реализовать. Например, на форуме кто-то пишет, что возможно 5 открытых сокетов, кто 10, кто 15... Так сколько же? Как работать с ними? Какие функции использовать? Пусть расскажут (ОВЕН).


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

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

ASo
24.01.2015, 12:15
печально, если так оно и есть... информация достоверная? вообще у меня тоже такое чувство, потому как такие "косяки" при желании можно исправить, но этого не делается... во-вторых "запуски" новых продуктов идут можно сказать годами... такое чувство, что работает один спец, которого просто разрывают на клочки и у него не хватает времени...

P.S.: Хотя на сайте в информации о вакансиях такие специалисты не значатся, то есть ОВЕН в них не испытывает потребности.... странная политика.... я бы платил таким спецам 200-300 тыс., только чтобы моя продукция была на высоте и лучшая, а тут никто не нужен при таком то качестве...


В общем, это реальная политика. К сожалению.

P.S. Можно поинтересоваться вашим местом работы. С точностью до отрасли.

capzap
24.01.2015, 12:17
а много ли в мире создателей операционных систем, уверены что 200-300 Крублей будет достаточно и второе, держать такого специалиста в штате, если его задача сделать одно задание, разумно ли? Переходите на плк с линуксом, я лет десять назад, когда перешел в гражданскую сферу, на таких устройствах запускаю объекты
А по поводу документации, тут судачат люди, которые разбираются в оборудовании, те кто на форуме задает вопросы, порой очевидные, начинают читать доки только после конкретного указания на это в ответе на вопрос,так стоит её "причесывать" если ни кто её не читает
Итог: мне не интересно, если компания начнет какие то телодвижения в этом направлении, пустая трата времени

Вольд
24.01.2015, 12:32
Итог: мне не интересно, если компания начнет какие то телодвижения в этом направлении, пустая трата времени
Ну ты не один на белом свете. Или ты думаешь, что, например, немцы такие дураки, что пишут очень подробные инструкции на свои изделия.

dudanov
24.01.2015, 12:42
Ну ты не один на белом свете. Или ты думаешь, что, например, немцы такие дураки, что пишут очень подробные инструкции на свои изделия.

Согласен! Например, на ОМРОН документация 1200 страниц! И это только один том!

dudanov
24.01.2015, 12:50
а много ли в мире создателей операционных систем, уверены что 200-300 Крублей будет достаточно и второе, держать такого специалиста в штате, если его задача сделать одно задание, разумно ли? Переходите на плк с линуксом, я лет десять назад, когда перешел в гражданскую сферу, на таких устройствах запускаю объекты
А по поводу документации, тут судачат люди, которые разбираются в оборудовании, те кто на форуме задает вопросы, порой очевидные, начинают читать доки только после конкретного указания на это в ответе на вопрос,так стоит её "причесывать" если ни кто её не читает
Итог: мне не интересно, если компания начнет какие то телодвижения в этом направлении, пустая трата времени

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

Какой ПЛК с линуксом используете? Посматриваю на Beckhoff CX8090. Правда он на Windows CE, что немного отпугивает. Но пока не занимался.

dudanov
24.01.2015, 12:54
P.S. Можно поинтересоваться вашим местом работы. С точностью до отрасли.

Машиностроительное предприятие ОАО "ТЯЖМАШ". В своей жизни занимался и программированием, сетевыми и серверными технологиями, телефонией, энергетикой, автоматизацией.

ASo
24.01.2015, 13:10
И как ваше оборудование на фоне других по цене и качеству?

dudanov
24.01.2015, 13:14
И как ваше оборудование на фоне других по цене и качеству?

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

Scream
24.01.2015, 13:50
Конечно, то что тут встретились и поплакались - это хорошо.
Но хотелось бы чтобы тут появились представители овен и сказали что то типо "все будет хорошо, исправим..." и будем ждать дальше...

Насчет плк110 (обновленный) у меня складывается мнение, опять же опираюсь на разные ресурсы и на этот форум в том числе, что это мега обновление провалилось не оправдав надежды с визжанием и дребезгом.
Вроде пришли к выводу что делать надо хорошо следующие модели (документация, описание библиотек, socketAccept, хорошее накнец-то архивирование, поддержка кдс 3, нет самопроизвольной остановки выполнения программы и т.п.). Этот момент настал? Я лично ОЧЕНЬ ждал такого рода контроллер.

ASo
24.01.2015, 14:17
На этот вопрос, к сожалению, ответить не могу, так как с конечными заказчиками не работаю. Могу сказать что выпускаемая продукция единичная и уникальная в своем роде.
Кто потребитель?

dudanov
24.01.2015, 14:30
Кто потребитель?

Можно зайти на официальный сайт (http://www.tyazhmash.com/) и более детально посмотреть. Не работаю с заказчиками, поэтому, собственно, и не знаю кто они.


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

Источник: Студия Артемия Лебедева (http://www.artlebedev.ru/everything/tyazhmash/)

dudanov
24.01.2015, 14:50
Конечно, то что тут встретились и поплакались - это хорошо.
Но хотелось бы чтобы тут появились представители овен и сказали что то типо "все будет хорошо, исправим..." и будем ждать дальше...

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


Насчет плк110 (обновленный) у меня складывается мнение, опять же опираюсь на разные ресурсы и на этот форум в том числе, что это мега обновление провалилось не оправдав надежды с визжанием и дребезгом.
Вроде пришли к выводу что делать надо хорошо следующие модели (документация, описание библиотек, socketAccept, хорошее накнец-то архивирование, поддержка кдс 3, нет самопроизвольной остановки выполнения программы и т.п.). Этот момент настал? Я лично ОЧЕНЬ ждал такого рода контроллер.

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

Дмитрий Артюховский
24.01.2015, 23:51
а чего брать на тест? ПЛК110-32 (М01) вроде как со склада продается уже 2 месяца

говорил по ПЛК308
Встроенная ОС
2 порта Ethernet для применения в системах с обязательным резервированием каналов связи
3 встроенных последовательных интерфейса RS232
5 RS-232/RS-485, для подключения различного оборудования
Наличие 2-х USB портов для подключения внешних накопителей информации
Наличие встроенного карт-ридера для подключения SD-карт, объемом до 2-х Гб
Наличие встроенных часов реального времени
Возможность использования 2-х сред программирования контроллеров для создания проектов таких как CoDeSys 3 и ISagraf 5
Возможность встраивания в вертикально интегрированные SCADA и softlogic системы с (например MasterSCADA, Энтек, Каскад, Круг2000, и др)

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

а ПЛК323 пишут что линукс внутри...

dudanov
25.01.2015, 07:34
а чего брать на тест? ПЛК110-32 (М01) вроде как со склада продается уже 2 месяца

На официальной странице (http://www.owen.ru/catalog/programmiruemij_logicheskij_kontroller_oven_plk110/66555705) такой модификации в продаже нет. Только с 30 в/в и релейными выходами.


говорил по ПЛК308

Такие "навороты" мне ни к чему. Но вот CoDeSys v3 мне по душе. Хочу в ней работать. Пока не приходилось, но вроде как там полноценная поддержка ООП есть, а это очень и очень хорошо, чего очень не хватает во 2-й версии, правда действия все же очень выручают.

capzap
25.01.2015, 09:38
вроде как там полноценная поддержка ООП есть, а это очень и очень хорошо, чего очень не хватает во 2-й версии, правда действия все же очень выручают.

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

ASo
25.01.2015, 09:53
Вот и я про тоже.
Зачем нужен полиморфизм в контроллерах?

Дмитрий Артюховский
25.01.2015, 11:38
ну например, скорость написания и переносимость... самый простой пример для понимания - объект архив, указываешь какие переменные (имена) надо сохранить или считать, а уж строки, дворды или логические - архив сам разбирает и корректно (и оптимально!) сохраняет

ASo
25.01.2015, 11:55
Считывать обратно как будем?

capzap
25.01.2015, 11:59
ну например, скорость написания и переносимость... самый простой пример для понимания - объект архив, указываешь какие переменные (имена) надо сохранить или считать, а уж строки, дворды или логические - архив сам разбирает и корректно (и оптимально!) сохраняет

к чему такие уверенные заявления :) мне например не понятно что Вы хотели этим сказать, покажите наглядный пример, если имеется

Дмитрий Артюховский
25.01.2015, 17:07
CArchive ar(&filein, CArchive::load); // на основе него обьект архив

ar >> m_sConfigName;
ar >> m_sConfigComment;
ar >> m_sAvtomatNumber;
ar >> m_sAvtomatType;
ar >> m_fMinDoze;
ar >> m_fAvansMin;
ar >> m_fAvansMax;
ar >> m_bAvansReturn;
ar >> m_fAvansTime;
ar >> m_sTovarName;

>> - перегруженный оператор с полиморфизмом... и пофиг чего в файл запихиваем, само разберется ))) это конечно строки из вижинл си, но ООП так ООП )))

ASo
25.01.2015, 17:21
Вопрос.
С какой целью это делать - независимость от типа архивируемых данных или независимость от типа и нахождения архива?
Если первое - то глупо и не эффективно.

dudanov
25.01.2015, 21:48
не сильно надейтесь, я с трудом нашел ему применение, да и то только потому что поставил перед сабой задачу его использовать

Я бы не отказался от (что первое приходит на ум):


полноценных методов вместо действий с возможностью передачи аргументов в качестве локальных переменных метода да и просто поддержкой самих локальных переменных методов
реализации полноценной инкапсуляции с private переменными и методами (не очень нравится, когда используешь ФБ (тот же класс в ООП) в программе, и в раскрытии списка высыпаются все его переменные и действия)
правил хорошего тона использовать геттеры и сеттеры совместно с защищенными private переменными, минуя прямого доступа к свойству (переменной) объекта
в моих проектах очень пригодилось бы наследование, тот же полиморфизм, интерфейсы или абстрактные классы


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

dudanov
25.01.2015, 21:52
Вот и я про тоже.
Зачем нужен полиморфизм в контроллерах?

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

dudanov
25.01.2015, 22:00
ну например, скорость написания и переносимость...

я бы сказал понимание программы в целом...

capzap
25.01.2015, 22:09
когда управляешь несколькими объектами со схожими методами управления (или одним или несколькими интерфейсами), но отличающихся реализацией (алгоритмом)... полиморфизм совместно с наследованием облегчил бы задачу и понимание кода в разы....

всё это теория, на "пальцах" покажите где будете использовать, только не надо как выше предлагалось на Си,Яве и т.п. а конкретно применительно в пром.автоматике

dudanov
25.01.2015, 22:11
Вопрос.
С какой целью это делать - независимость от типа архивируемых данных или независимость от типа и нахождения архива?
Если первое - то глупо и не эффективно.

Перегрузка методов в данном случае необходима для прозрачности кода. В определении класса "Архиватор" должны быть объявлены все перегруженные методы (с одинаковым именем) для всех типов и комбинаций входных переменных, классов и т.п. А в используемом этот класс коде мы прозрачно архивируем любой тип данных, используя одно и то же имя метода, что очень и очень удобно.

Да, кстати, неэффективного тут ничего НЕТ, этот механизм позволяет программисту лишь использовать единое имя, а методы в откомпилированном коде разные и компилятор в процессе компиляции на основе используемых типов входных данных понимает какой метод на самом деле выполнять.

dudanov
25.01.2015, 22:26
всё это теория, на "пальцах" покажите где будете использовать, только не надо как выше предлагалось на Си,Яве и т.п. а конкретно применительно в пром.автоматике

Да что тут придумывать?! Например, есть 10 двигателей, управляемых частотными приводами разных производителей, подключенных к одному ПЛК по интерфейсу RS-485. Каждый частотник имеет свои команды, свою реализацию управления. Мне нужно ставить частотникам задачи: установить частоту в Х Гц, крути вперед, стоп, крути назад. Мне удобно будет создать единый интерфейс и реализовать его в каждом из классов: Schneder, ABB, Eaton и т.д. А дальше в программе тупо: Schneider.GoFWD или Eaton.STOP.

Или плохой пример?

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

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

capzap
25.01.2015, 22:35
Да что тут придумывать?! Например, есть 10 двигателей, управляемых частотными приводами разных производителей, подключенных к одному ПЛК по интерфейсу RS-485. Каждый частотник имеет свои команды, свою реализацию управления. Мне нужно ставить частотникам задачи: установить частоту в Х Гц, крути вперед, стоп, крути назад. Мне удобно будет создать единый интерфейс и реализовать его в каждом из классов: Schneder, ABB, Eaton и т.д. А дальше в программе тупо: Schneider.GoFWD или Eaton.STOP.

Или плохой пример?
нормальный пример, как по учебнику. А в реальном производстве, тот кто заложил в проекте такое разнообразие двигателей с головой дружит? На каждый движок надо иметь отдельный ЗИП, на сервисное обслуживание надо оплачивать в каждый бренд. Я же писал, что программисту плк это ООП чисто для поднятия самооценки, в реальности особых преимуществ нет, под конкретный проект у меня будет свое ПОУ, например поменяв марку двигателя, я окно объявлений оставлю то же, а код поменяю под соответствующий алгоритм и главное загружу в контроллер только тот код, который необходим, а не все это наследование которое пойдет баластом в ООП

dudanov
25.01.2015, 23:08
нормальный пример, как по учебнику. А в реальном производстве, тот кто заложил в проекте такое разнообразие двигателей с головой дружит? На каждый движок надо иметь отдельный ЗИП, на сервисное обслуживание надо оплачивать в каждый бренд. Я же писал, что программисту плк это ООП чисто для поднятия самооценки, в реальности особых преимуществ нет, под конкретный проект у меня будет свое ПОУ, например поменяв марку двигателя, я окно объявлений оставлю то же, а код поменяю под соответствующий алгоритм и главное загружу в контроллер только тот код, который необходим, а не все это наследование которое пойдет баластом в ООП

спорить не буду, у каждого свой подход... кто-то до сих пор знаю на счетах считает, и калькулятор на дух не переносит, есть и такие, они по своему правы... если ассемблерщику сказать про ООП, так он вообще отматюкает так, что мало не покажется... только вот кто быстрее возведет число 5 в 25 степень? тот кто со счетами? или кто быстрее программу напишет? тот кто пишет на ассемблере или на Java? думаю ответ очевиден...

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

dudanov
25.01.2015, 23:29
Только хотел написать об безнадежном устаревании языков МЭК 61131-3, как зайдя по ссылке с удивлением обнаружил (надо почаще обращаться к стандартам), что в 3-й редакции исключен язык (сейчас любители дзен кода расстроятся) IL и введено понятие ООП, множество в связи с этим ключевых слов, типов данных и т.п.

Что я могу сказать?! Неплохо! Введено все то, что мне так не хватало! Еще бы хотябы Си-подобный язык ввели, а лучше Java. Обязательно прочту целиком стандарт. Подробнее здесь (https://ru.wikipedia.org/wiki/IEC_61131-3)

to capzap: поспорь теперь с создателями стандарта, зря видимо они такую колоссальную работу проделали, ни к чему это все... уволить их там всех надо, бездельников... без обид...;)

capzap
26.01.2015, 01:04
Только хотел написать об безнадежном устаревании языков МЭК 61131-3, как зайдя по ссылке с удивлением обнаружил (надо почаще обращаться к стандартам), что в 3-й редакции исключен язык (сейчас любители дзен кода расстроятся) IL и введено понятие ООП, множество в связи с этим ключевых слов, типов данных и т.п.

Что я могу сказать?! Неплохо! Введено все то, что мне так не хватало! Еще бы хотябы Си-подобный язык ввели, а лучше Java. Обязательно прочту целиком стандарт. Подробнее здесь (https://ru.wikipedia.org/wiki/IEC_61131-3)

to capzap: поспорь теперь с создателями стандарта, зря видимо они такую колоссальную работу проделали, ни к чему это все... уволить их там всех надо, бездельников... без обид...;)
о чем спорить то, я же говорю на локальных объектах можно и без ООП обойтись, а уровень предприятия всёравно делать будут на S-400 и мощнее, ни как не на ОВЕНе.
ЗЫ и если мне так нравится ООП применять, я возьму мощный комп, поставлю его в серверный шкаф, на Яве напишу прогу, в которой могу сделать а-ля систему реального времени с циклом в районе единиц микросекунд, а не милли и будет он пахать на несколько объектов

Дмитрий Артюховский
26.01.2015, 10:29
нормальный пример, как по учебнику. А в реальном производстве, тот кто заложил в проекте такое разнообразие двигателей с головой дружит? На каждый движок надо иметь отдельный ЗИП, на сервисное обслуживание надо оплачивать в каждый бренд. Я же писал, что программисту плк это ООП чисто для поднятия самооценки, в реальности особых преимуществ нет, под конкретный проект у меня будет свое ПОУ, например поменяв марку двигателя, я окно объявлений оставлю то же, а код поменяю под соответствующий алгоритм и главное загружу в контроллер только тот код, который необходим, а не все это наследование которое пойдет баластом в ООП

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

capzap
26.01.2015, 10:43
влезая в тему по управлению теми же двигателями - можно хорошо вычистить код, но уже через год будут сильные напряги вспоминать почему решено так а не иначе, и некоторые вроде как мелочи будут обязательно переделаны "как лучше" ))) а лучшее, против работающего и проверенного, как известно к добру не приводит!

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

Дмитрий Артюховский
26.01.2015, 12:24
в переносимости. иметь 1 класс - "двигатель" (в одной библиотеке!) и написать OWEN.PUSK - сможет любой "автоматизатор" на форуме, а вот тех кто знает что такое ПОУ и уж тем более что-то поправить в чужом коде, намного меньше... и 100 пудов у него совпадут имена переменных внутри модуля с глобальными со всеми вытекающими проблемами...

capzap
26.01.2015, 12:38
отсюда какой вывод, ООП остается для разработчиков библиотек, совершенно не тот уровень. обычный пользователь который пишет программу под локальный проект вполне может обойтись и без новомодных штучек, максимум это воспользоваться бибкой написанной другими

dudanov
26.01.2015, 16:03
Мужики, что мы спорим? В скором времени все встанет на свои места и ООП в программировании на ПЛК станет обыденным делом. Это будущее и от него не уйдешь. Вот увидите, что сегодня исключили из стандарта IL, а завтра принудительно заставят писать на ООП как в Java или C#. Где простейший Hello World в составе класса. И я обоими руками ЗА, хотя тоже вспоминаю как для меня это было поначалу просто дико, переходя с языка C (не путать с C++).

Напомню, что тема топика иная, а мы что то в оффтоп ушли. Так что посоветуете, прочитав заглавный пост?

Scream
26.01.2015, 17:39
16373

....
Так что посоветуете, прочитав заглавный пост?

Что тут советовать, может так будет работать?

ссори за оффтоп, неудержался.

ASo
26.01.2015, 17:49
Мужики, что мы спорим? В скором времени все встанет на свои места и ООП в программировании на ПЛК станет обыденным делом. Это будущее и от него не уйдешь. Вот увидите, что сегодня исключили из стандарта IL, а завтра принудительно заставят писать на ООП как в Java или C#. Где простейший Hello World в составе класса. И я обоими руками ЗА, хотя тоже вспоминаю как для меня это было поначалу просто дико, переходя с языка C (не путать с C++).
Такого не будет, а "интероперабельный ассемблер" - это продавливание Сименса, он нафиг не нужен, но монстр - продавил.


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

Scream
26.01.2015, 22:05
Мужики, что мы спорим? В скором времени все встанет на свои места и ООП в программировании на ПЛК станет обыденным делом. Это будущее и от него не уйдешь. Вот увидите, что сегодня исключили из стандарта IL, а завтра принудительно заставят писать на ООП как в Java или C#. Где простейший Hello World в составе класса. И я обоими руками ЗА, хотя тоже вспоминаю как для меня это было поначалу просто дико, переходя с языка C (не путать с C++).

Напомню, что тема топика иная, а мы что то в оффтоп ушли. Так что посоветуете, прочитав заглавный пост?

1) Обязательно общаться по модбас? реализовать "свой" протокол, в котором в пакете передается всё что в SOCKADDRESS (ip,номер пакета и т.д.) скажем для установки связи, а потом общаться по модбас. Если конечно есть возможность + для каждого клиента по сокету, одновременно слушующих 5 сокетов или вообще использовать UDP, только позаботиться о доставке.

2) Лично я не люблю когда на плк крутится какой либо сервер для обмена с hmi. У меня на производстве специально купленный сервер, на нем самописная серверная программа (запись в БД MySQL, WEB....) плк на данный момент около 20 - клиенты. Для плк ОВЕН 100й серии разработана библиотека (универсальная), передача+архивировация данных с помощью SysLibSockets, SysLibFile и описаны события для каждого плк при которых данные отсылаются на сервер, если нет связи то пишутся в файл с меткой времени, при возобновлении связи скачиваются на сервер в базу (на данный момент дописывается архивация).

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

Yegor
26.01.2015, 23:51
Еще бы хотябы Си-подобный язык ввели, а лучше Java.Нафигнафигнафигнафиг... Все эти джавы и сишарпы совершенно под другие модели исполнения, задачи и объёмы кода создавались. В МЭК-языках не просто так полностью статическое выделение памяти под все переменные сделано. А ещё диапазонные типы, персистентность, чистый код (отдельно от объявлений).
Обязательно прочту целиком стандарт.340 евриков (http://webstore.iec.ch/webstore/webstore.nsf/Artnum_PK/47556) за него отдать не забудьте. Нелегально в открытом доступе только вторая версия ходит. Кстати я готов сложиться на приобретение третьей версии (в пределах 5000 р., но поровну с остальными).
Java или C#. Где простейший Hello World в составе классаИх за эту воду справедливо ругают (http://fsharpforfunandprofit.com/posts/fvsc-sum-of-squares/), есличо.
Так что посоветуете, прочитав заглавный пост?Письмо с уведомлением о вручении напишите руководству компании. Пускай спускают сверху, если снизу не долетает.

Дмитрий Артюховский
28.01.2015, 10:21
при наличии указателей, отсутствие динамического выделения памяти смотрится недоработкой, а не "столпом стабильности" работы кода

Yegor
28.01.2015, 15:41
Лихо вы возможность в ранг необходимости возвели. В том же сишарпе, наверное, чисто ради прикола сделано, чтобы указателями только в unsafe-блоках можно было пользоваться.