Как стать автором
Обновить

Комментарии 108

Вспоминается программа HiAsm

image
Идея хорошая! Спасибо!
На мой взгляд, эдакий мини-LabVIEW для Arduino.
Хотелось бы чтобы в будущем появилась также и Linux-версия этой программы.
Удачи!
Linux и Mac планируется. Язык разработки программы позволяет это сделать малой кровью. Но пока все таки планирую развивать проект на винде до какого — то логически завершенного этапа. Да и если линуксу можно поставить на обычную машину, то на Mac я пока не заработал. Плюс поддержка нескольких платформ мне пока физически не под силу.
Плюс поддержка нескольких платформ мне пока физически не под силу.

Откройте код и попросите помощи у комьюнити! ;)
Есть несколько проблем.
Во первых язык программирования — SmallTalk. У нас в стране это очень большая экзотика и программистов работающих на нем единицы.
Во вторых я пока не готов раскрывать код и работать в открытой группе. Опять же из за языка. У него нет понятия модулей, есть понятие образ. Все изменения должны мержится всеми участвующими в разработке программистами в очень тесном общении. Ну и еще есть некоторые менее важные причины по которым я не готов пока открывать код. Сама программа бесплатная, я не требую ни регистрации, ни активации программы. То есть можно зайти на сайт, свободно скачать программу и пользоваться без ограничений. Но об этом в следующем посте
Так может этсамое… в консерватории немного поправить, выбрать более попсовый инструмент (дайте подумать… кроссплатформенный GUI с хорошим ООП и сложной графикой? Похоже на Qt/C++), там глядишь и комьюнити соберется, кодогенерацию поправят, чтобы не порождала уродства, выкинут килобайты ардуинского барахла из прошивок, примотают изолентой simulAVR и породят не очередной позор платформы, а нечто стоящее. Я в такое дело впишусь, например.
SmallTalk мне нравится. Я работал на нескольких языках, но с точки зрения удобства разработки, отладки я пока лучше не встречал. Я конечно не могу позиционировать себя экспертом в области оценки языков программирования. Я не профессиональный программист. Это моё хобби. Основная моя специальность — инженер АСУ. Но для себя я выбрал язык и другого просто не хочу
Мне кажется, вы боитесь показывать посторонним свой код, т.к. думаете, что там у вас полное говно, потому что вы писали проект в одиночку, и не являетесь профессиональным программистом — потому и хотите довести код до приличного вида, а не проект до логически завершённого этапа (может доводиться годами, очень растяжимое понятие).

Не принимайте моё предположение близко к сердцу. Прав я или нет — важно скорее вам, чем мне, но помощь такому полезному проекту не помешает. Тем более, это же реальный проект на Smalltalk! (редкость, как и Scheme) И, если вы считаете, что на Smalltalk командная разработка ведётся несколько по-другому, нежели в мейнстримовых языках — это тем более интересно, пост на Хабр прямо-таки напрашивается.

В общем, я бы расценивал выход на какой-нибудь Github как возможность, а не как ограничение.
Код конечно ужас, и я в этом не сомневаюсь. Стеснятся не стесняюсь, поскольку мне довелось поработать в команде с профессиональными программистами над одним проектом. За пять лет я уже привык к их оценке моего кода. Там я как раз и познакомился и заболел смолтолком. Кстати этот проект то же реально до сих пор живущий на смолтолке. Правда я уже в нем не участвую, хотя смело могу называть себя его папой.
Я так же смутно представляю возможность публикации смолтолковского кода на Github. Хранилище кода смолтолк представляет специально сформированную базу данных. А на гитхабе насколько я знаю файловая система хранения.
Насчет поста о смолтолке я давно думаю но пока не решаюсь. Я не настолько знаком с другими языками программирования что бы проводить сравнительную характеристику, и рассказывать о плюсах и минусах. Боюсь заклюют. Передам Ваше предложение в недавно образованный клуб программистов на смолтолке. Там настоящие зубры, может кто и захочет.
Нагуглился вот этот инструмент wiresong.ca/monticello/. Как пишут на стэковерфлоу, он дает те же прелести, что и git, но реализует их в рамках подхода смолтолк.

В части мейнстримного решения, я очень рекомендую взглянуть на связку Qt/C++. Qt пополняет C++ как раз тем, чего так не хватает в чистом C++ — развитым механизмом обмена сообщениями между объектами, поэтому логика программ на Qt должна быть вам близка.
Спасибо большое за советы. Мне действительно очень важно мнение профессионала. Но на текущий момент я не хочу тратить время на изучение другого языка и перенос программы на новую платформу. Все это очень долго и с моей точки зрения не оправданно. Я не планирую становится профессиональным программистом. Мне нравится моя специальность. А в качестве для души — и общего развития у меня есть проект. Я считаю на данном этапе важнее максимально расширить функционал программы, дать возможность пользователям полнее реализовывать свои идеи. А тормозить проект на несколько месяцев, я считаю не гуд.У программы уже более 160 пользователей, и все кипят идеями. Но для их реализации постоянно надо добавлять новое железо, новые блоки. Я не хочу обманывать их ожидания
Так или иначе, вам придется залезать в Си и ассемблер для AVR, иначе многие вещи, которые в принципе на AVR сделать можно, будут недоступны из-за переутяжеленных библиотек (в частности, float для работы с измеренной температурой даром не дался, но тащит за собой килобайта полтора арифметики с плавающей точкой).

Кроме того, поезд популярности AVR уже отошел от вокзала и скоро скроется за поворотом, на его место прибывает состав STM32. Вот там такая неприятность имеет место быть: документация разрознена, примеры писаны кривыми руками (один USB — Virtual COM чего стоит, это же ужас на крыльях ночи какой-то), а главное — нет мешка библиотек аля «подключаем камеру кэнон к ардуине».
Ну в си мне и сейчас приходится лезть, ассемблера в принципе не боюсь, есть опыт работы. То есть компилировать можно и туда и туда. Когда дойдет время. Вы же понимаете что вопрос написать компилятор в виде нового классса и подсунуть его классу Project не проблема. Главное что бы интерфейсы совпадали. Но все UI, формирование проекта, классы блоков, В общем описание самого языка FBD никуда не денутся. А написать компилятор для нового контроллера, это не такая уж запредельная задача. Конечно потребует времени и сил на изучение этого контроллера. Ну тут уже никуда не деться. Чем удобна ардуина. Во первых тем что она очень дешёвая (STM в разы дороже), при этом достаточно функциональная. Значит и круг потребителей большой. Во вторых на ней удобно отработать всю логику языка, работу UI, имея в лице пользователей очень хороших тестеров. А более дорогие платы не все могут себе позволить.
Кстати я уже сейчас могу с очень малой кровью добавить новые платы Intel® Galileo поскольку Arduino выпустила среду специально под них. Но пока не вижу смысла. Все таки они дороговаты.
Не знаю, где вы увидали, что STM32 дороже AVR… Отладочные платы (некоторые) возможно. Но сами кристаллы в разы дешевле, а возможностей в STM больше. Если Вам надо просто поучиться программированию, то Arduino возможно неплохой вариант. Но на производстве всё должно быть всерьёз и надолго.
Я лично себе на завод не поставлю промышленный контроллер на AVR и языке, созданном для обучения.
Надо смотреть в будущее. А будущее за ARM.
Вот такое ИМХО (:
Сами AVR в ответственной технике прекрасно работают — в автомобилях, в автоматических медицинских анализаторах (от результатов анализов крови прямо зависит дальнейшее лечение) и так далее, так что с надежностью у AVR проблем нет — обычный industrial grade, если по-ихнему.

По поводу стоимости — ST активно демпингует, так что их отладочные платы нынче даже в Чипе и Дипе в целом дешевле Ардуин.

При наличии приятного фарша вроде распаянного ST-Link (можно отлаживать прошивку в любимой IDE как будто это десктопное приложение), эти платы так и просятся в руки.
Я в курсе про надёжность атмеловских ядер. в своё время мы их гоняли на температурах до +150 градусов, где они (некоторые отобранные экземпляры) вполне успешно работали, в отличие от тогдашних STM.
Просто автор пишет программу для учебных слабомощных плат. Пройдёт немного времени и ARM вытеснит AVR и вместе с ним Arduino. И что потом опять всё менять и переходить на ARM?
Знаете сколько стоит час простоя конвейера?
Если для себя побаловаться или детишек поучить, то пожалуйста.
А в промышленность должны идти только профессиональные, проверенные и долгосрочные продукты.
Вот об этом моя мысль.
А вообще, бесит уже, что каждый начинающий программист вместо того, чтобы нормально выучить существующий принятый всеми язык, старается придумать свой новый. А если не хватает мозгов придумать язык, придумывает кучу библиотек и втирает всем, что с ними вам уж точно будет легче, чем раньше…
Я не придумал язык, я взял готовый, всеми принятый именно в этой области. И почему всякий ''настоящий" программист считает только свой язык настоящим и принятым. Ну и во вторых пока никто не собирается применять ардуинку в промышленности, а вот собрать автоматический сварочник, или систему управления освещением для своего старенького жигуленка, или ту же погодную станцию — это самое то. И что для этого изучать С? Почему бы не перенять опыт того же Сименса и сделать упрощенный вариант его TiaPortal.
А почему не изучить С? Для простых контроллерных применений вам понадобится несколько простых команд. И кстати, мне как энергетику, проще было бы программировать промышленные контроллеры на С, а не строить бесконечные «схемы» на языках типа Сименса.
Но вы поймите меня правильно. Я не пытаюсь вас поругать или остановить. Я хочу донести и другой взгляд на данный вопрос. Дискуссия и ничего личного ;)
Конечно — же ничего личного. Но с моей точки зрения, кто захочет изучить тот же С например — возьмет и изучит. Даже после моей программы. У меня в пользователях есть один программист. Он мне пишет что использует программу для создания заготовки, а потом то чего нет в функционале дописывает уже в готовом скетче. То же вариант. Хотя я конечно им восхищаюсь, поскольку после компилятора код выходит не очень то удобочитаемый. Но заставлять всех обязательно учить именно С — это неправильно. Я просто хочу дать людям выбор.
Этот программист делает именно то, чего я боялся — берет продукцию вашего генератора, а потом модифицирует вручную. А вы еще удивляетесь, зачем я простыню об этой продукции сочинил.
А чем это плохо. Я не понимаю. Ну пишет он для себя, Понимает что делает. Не понимал бы не брался, а подождал пока нужный функционал появится. В чем проблема — то?
На С легко сделать ошибку которую трудно будет найти, схемы они как-то нагляднее и ошибку сделать будет достаточно трудно, поэтому они и применяются.
Ардуино уже оказалась в профессиональной деятельности:
  1. Arduino управляет промышленным грузовым лифтом — ни один здравомыслящий человек не допустит самоделку без кучи сертификатов и тестов к управлению потенциально опасным объектом.
  2. Вскрытие показало: виноват пробел — в падении сервиса виновен любимый метод написания программ — копипаст+опечатка = Эффект последней строки


А разработка автоэлектроники или сварочного автомата таки требует знаний, более широких нежели «здравый смысл». Иначе из-за непредусмотренных эффектов можно получить материальный ущерб, или чего похуже. О том, как совсем неглупые люди имели проблемы в огромных количествах, разрабатывая сложный технический объект (а все аппаратно-программное, оно уже «сложное»), можно почитать у того же Чертока, в четырехтомнике «Ракеты и люди»
Тот же опытный электрик лучше поймет схему, и сделает её более безопасной, чем будет собирать код из кусочков надерганных из интернета, ничего не понимая в них. Или же вы предлагаете ему вообще запретить что то делать — поскольку нефик. Не умееш программировать — нефик изобретать. В одном из предыдущих постов в комментариях один деятель предлагал уволить за профнепригодность всех асушников не знающих языков программирования. Я думаю он не прав. Кстати копипаст — это как раз способ написания кода в С. В FBD как раз пробелы не пишутся поскольку код там вообще не пишется
Возьмите, например, схему пассажирского лифта с автоматическим приводом дверей. Сколько времени у вас уйдет на то, чтобы выяснить, как схема определяет, в какую сторону запускать кабину, не читая отдельное описание логики ее работы?

Хороший код позволяет восстановить логику своей работы просто путем прочтения, сразу. Не зря изобрели люди именно язык программирования — мы мыслим и общаемся словами и фразами, а не схемами.
Не зря отмечают, что зачастую филологи выдают более внятные программы, нежели математики — они рассказывать умеют.
Ну тут вы уже перегибаете) нормальный АСУТПшник прекрасно поймёт куда поедет лифт, когда посмотрит схему. Другое дело — удобство. В схеме чтобы сделать сложную функцию, мне надо разложить её на элементарную логику. Потом обязательно в правильном порядке эти кусочки соединить, чтобы получить верную функцию на выходе.
С одной стороны, электрик видит знакомые ему выключатели, реле, кнопки…
Но, когда это всё завязано в огромную схему и всё друг от друга зависит, образуя логические функции, у него мозг закипает.
Другое дело, когда он читает:
«Если Датчик1=1 то Выход3=0...»
Вот над этой золотой серединой между схемой и программой и бьются умы человечества много лет уже)
Так я говорю именно об этом, на более-менее сложной схеме мозг «закипает», а если схема на многих листах — разбор превращается в мрак из прослеживания кучи соединений и взаимозавязок.
Примерно то же самое можно сказать и про язык. Если методов штук пять, и классов десяток — то все хорошо. А если классов 5000 и у каждого по 100 методов? Тут то же мозг закипает. Да еще взаимодействия между ними. А если еще система change от вложенных классов наверх, с обработкой параметров. Тут то же мозги закипают. А не дай боже логическое кольцо и программа зацикливается, попробуй разорви. Конечно stack overflow помогает, но все равно трудно. Тут сложно определить что лучше. Просто кто то думает как программист, кто то как электрик. У меня бывает мозги взрываются и от того и того. На работе турбина от сименса на несколько десятков тысяч чартов. На досуге проект на пару тысяч классов наверное уже (не считал, но если еще добавить движок сайта то точно получится). Но это же интересно.
Кстати программы на лифты написаны именно на FBD, ну или на LAD — e. Именно потому что там стоит промышленный сертифицированный контроллер. А они все пишутся именно на этих языках. И как вы с прекрасно представляете как поведет себя программа читая код, так и асушник прекрасно понимает как поведет себя схема читая её. У электрика портянка схем, у Вас портянка кода в миллион строк. Так же как у Вас законченные логические кусочки в методах, так и в схемотехнике логически законченные куски схем. В С — осмысленные названия переменных, в FBD — логически осмысленные названия тэгов. В принципе разницы не так много — разное представление. Я не призываю отказаться от С и других языков. Я просто хочу дать альтернативу. Этот проект и представляет собой альтернативную среду программирования а не замену.
ну вот и славно! если вы так отстаиваете свою идею, уверен вас ждёт успех. когда прославитесь, не забудьте дать нам с gbg по маленькому пакету акций за то, что мы в вас поверили! ;)
Обязательно, только проект не коммерческий, и не будет таким никогда. Так что акции будут дешёвыми))))
Мне просто интересно этим заниматься. Вахты такие длинные, и не хочется на них отупеть. Мозги должны работать.
По поводу языка разработки программ для лифтов — откуда дровишки?
В лифтах стоит не общепромышленный контроллер, а специальное поделие (или такое), причем в отечественных лифтах оно отличается прорывными схемотехническими и монтажными решениями.

В главной роли там MCS51, индикация кодов ошибок вымигивается на светодиодном сегментном дисплее — на радость обслуге. Учитывая длину этих топиков на отраслевом форуме, а также поднимаемые там вопросы (Чтобы немного поправить лифту логику, добавив пропуск этажа, нужно заказывать на заводе специальную версию процессора), я делаю вывод, что там пишут голыми руками на голом ассемблере, причем не приходя в сознание. Очень хочется ошибаться.
Ну у нас в доме стоит лифт на 200-ом сименсе. Делал пожарку, забегал в лифтовую. И панелька, правда без тача. Но лифт российский. Чей не знаю.
Извините за внезапное окончание поста, и большой кусок текста до ката. Пост не дописан. Что то случилось с сервером хабра, и пост вместо того что бы сохраниться в черновики опубликовался. И теперь я не могу ни убрать его в черновики ни опубликовать. При попытке любого из этих действий вылетает какая то ошибка связанная с базой данных и с постом ничего не происходит. Поэтому пишу здесь. Более подробный рассказ о самом проекте будет в следующем посте
Работники хабра, подскажите как с этим бороться
image
Я думаю тут просто опечатка в коде запроса Хабра, +-, вместо просто +.
Надеюсь ребята на хабре разберутся
НЛО прилетело и опубликовало эту надпись здесь
Ну это не моя идея. Не знаю кто первый придумал языки FBD и LAD. Но все производители промышленных контроллеров их используют. Последний и самый впечатляющий пример TIA Portal от Siemens. Я лишь применяю этот накопленный ими годами опыт к ардуино
вы еще обратите внимание на среды разработки у Honeywell и DeltaV. В плане наглядности, простоты, гибкости и возможностей они покруче будут, чем у Siemens (тот же TIA) и ABB.
DeltaV видел но плотно не работал. Про Honeywell честно говоря не слышал, надо будет посмотреть. По основной работе специализируюсь на Siemens, ABB, Schneider. Мое личное мнение что пока все таки новый TIA Portal удобнее и легче в освоении всех остальных. Единственно конечно для него необходим большой монитор, а лучше несколько. Но сколько людей столько и мнений. Я не претендую на истину в последней инстанции.
Простыню под кат не хотите спрятать?
Я уже написал чуть повыше, И рад бы да не могу. В службу поддержки уже отписался, может помогут
Ну вы же понимаете, что при нормально работающем хабре такую простыню просто нельзя было бы воткнуть без ката.
Явно же баг, а человека минусуют…
Вообще то кат у меня внизу был заготовленный, просто перенести в нужное место я не успел. Теперь он является последней строчкой в посте )))). Так что кнопочка внизу есть, но после нее ничего нет. Плохо что изменить ничего не могу, и боюсь до понедельника не получится. Сегодня то суббота, и не знаю работает ли сегодня служба поддержки. Я и пост собирался в понедельник публиковать
А сайт должен не работать? Выкиньте установочные файлы хотя бы на GoogleDrive
Все сайт работает. У провайдера были проблемы. Поскольку проект не коммерческий, сайт крутится на домашнем сервере.
А чем вам Яндекс диск не нравится?
Редактирование заработало, удалось перенести кат.
Исчезла последняя отмазка не покупать Ардуину…
Я с темой электроники знаком скорее поверхностно, но как говорит мой знакомый электронщик, языки описания схем еще более низкоуровневые, чем ассемблер. Не получается ли с этими схемами забвания гвоздей микроскопом? Я конечно понимаю всех этих проблем с изучением Си, не самый простой язык для людей из другой области. Может лучше придумать все-таки язык программирования (пусть и графический), а не описания схем для ardunio?
Любой работающий с электрикой человек умеет рисовать схемы. Это закон. Иначе ему там просто делать нечего. Здесь пользователь рисует схему как он привык и всегда делал. Не надо ничего нового изучать. Как обычно смотрит TTX устройства (в случае с программой FLProg — описание блока) и использует по назначению. Блоки в программе можно смело приравнять к дискретным микросхемам или другим элементам. То есть пользователь работает с привычными ему объектами привычным ему образом
Здесь не электрика а электроника. И «умеет» не означает «предпочитает». Мои знакомые схемотехники предпочитают verilog схемному редактору.
Любой человек, связанный с разработкой/ремонтом электроники, должен уметь читать (и соответственно -рисовать) схемы. Иначе это, извините, не «схемотехник», «инженер» либо еще кто-то, даже не любитель.
Ну так вот я не уверен, что решение не изучать ничего нового — оно верное. Привычное ведь не значит оптимальное.
Вопрос все таки в том — а оно им нужно. Люди не собираются становится программистами. Им надо решить задачу. И люди ищут инструмент для этого
А правильно ли они поступают? Как насчет эффективности решения задач не правильным, а привычным способом? Я же не лезу со своим программирванием там, где есть свои инструменты? Например знаете, есть всякие трансляторы из Си в Verilog и VHDL, типа для программистов, которые не знаю схемотехнику, к чему я так же отношусь скептически.
А почему Вы решили что программирование на С — единственно правильный метод? Почему программирование на FBD не правильный способ? Вообще то как я уже писал, FBD и LAD признаны стандартом для программирования промышленных контроллеров во всем мире. Чем Arduino отличается от того же Logo иди Zelio. Только отсутствием корпуса. Так почему программирование ардуинки на языке признанным стандартом для Logo от Siemens неправильно?
А я не утверждаю однозначно, что языки опиания схем — это плохо, просто меня смутил ваш аргумент, что это привычно, стандартизировано и так далее. Хотелось бы более конструктивного стравнения алгоритмического подхода с другими, там, с лестничной логикой и так далее.
Так как раз для контроллеров и являются стандартом (по крайней мере в промышленности) языки FBD и LAD. Вы сможете назвать хотя бы одного производителя промышленных контроллеров который их бы не применял для своего оборудования. Я — нет, хотя и работаю в этой области 15 лет.
Уф. Вы меня не понимаете. Стандарт — не истина. Мне вот в программировании тоже попадаются стандарты, которые в основном стараютя избегать. Хотелось именно конструктива, чем конткртено эти языки лучше. То, что это стандарт, или кто-то там привык — это не обьективно.
А как объективно сравнить два языка работающих на совершенно разных принципах. Как сравнить AutoCad и Word? Как сравнить рисовалку и текстовый редактор. Вот FBD — это графический редактор. С — это текстовый редактор. Это просто совершенно разные вещи. Вам проще писать текст, и при этом Вы видите в голове как это будет работать. Кому то проще нарисовать схему, и он видит в своей голове как это будет работать. Кто прав. Все! Просто каждый видит по своему. Вот для вас поэтому лучше С а для него лучше FBD. Кто то видит и так и так, вот ему приходится выбирать. Лично мне все равно проще увидеть схему, хотя и код я вижу, иначе не стал бы хоть каким — то программистом.
Только контроллером обычно называют готовый узел, но по большому счету правильней его называть встраиваемая система.
А в ардуине мы имеем именно голый контроллер, который едва тянет на встраиваемую систему из-за отсутствия развитой периферии. Но функционально, он в принципе может заменить один из промышленных контроллеров если брать в расчет только цифровые входы/выходы.
Периферия у ардуино будет побогаче многих промышленных контроллеров. ЦП например у S7-400 вообще пустой, то есть без модулей расширения он просто железяка. А у ардуинки как минимум 14 цифровых входов — выходов, и 7 аналоговых входов. Плюс куча стандартных интерфейсов. Плюс китайцы сейчас производят шилды на все случаи жизни. Отличие от «настоящих» контроллеров -только отсутствие корпуса.
И защита входов-выходов от перенапряжения и КЗ.
Ой — ли, знаете как у того — же 1200 летят выхода при кз на выходе. Да и в случае чего заменить контроллер за 20 тысяч если скосячил в монтаже или за 500 рублей. Опять таки разговор идет о личном применении. Почему вы считаете что я рвусь в промышленность. Я знаю что мне там нечего делать.
я-то не считаю, просто промышленные контроллеры это куда больше чем ардуина и проработка мелочей там на более высоком уровне вплоть до трассировки печатной платы чтобы противостоять ЭМИ. Печально, конечно что некоторые экземпляры выходят из строя всего лишь от простого КЗ…
У ардуины выводы работают на стандартной ТТЛ в 5 вольт, гальванической развязки не имеют, токовый выход — слабый (до 40ma). Чтобы сопрягаться с популярными промышленными интерфейсами (CAN, RS485, RS232, токовая петля), потребуются отдельные модули.
Чтобы получать на вход какой-либо сигнал, потребуется отдельный модуль с гальваническими развязками, аналогично и с управлением чем-либо.
То есть набирается на два-три шилда из плат. Дальше вопросы
  1. Пройдет ли этот бутерброд из разъемов термоциклирование и вибростенд?
  2. Электромагнитная совместимость: кажется, у кого-то контроллер вис от сработавшего неподалеку пускателя, а дисплей набивался мусором.

Вывод — ардуине место на столе у любителя или в школе. Допускается применение в самодельной бытовой электронике.
Но не в промавтоматику.
Могу точно сказать по сименс, про другие врать не буду. Но для сопряжения с CAN, RS485, RS232 им так же требуются модули расширения. Только цена у сименса — десятки тысяч рублей у ардуино -сотни рублей. Чувствуете разницу? Я конечно не призываю в стратегические объекты ставить ардуино, но управление каким ни будь АВР-ом — без проблем.
По поводу электромагнитной совместимости. Вопрос в качественном питании, и экранированных проводах. Вы видели размеры и цену за сименские блоки питания? А цену за метр кабеля Profibus. Если взять одну десятую или даже сотую этой цены, то я думаю можно положить отличные экранированные провода, взять хороший блок питания, и ещё останется на отличный экранированный корпус. И не будет никаких сбоев и зависаний.
Высокая стоимость промконтроллеров означает наличие ответственности их производителя и наличие хоть какой-то бумажки-сертификата. Если произойдет ЧП с самоделкой, кто отвечать будет?
Если вы сами делали проводку в доме, и что то случилось — кто отвечает? Вопрос то идет о частном применении. Я уже писал что не лезу в промышленность. Крупные производители могут себе позволить купить настоявшие сертифицированные устройства. Да и не сертифицированные им никто и не позволить применить. А вот правление домашней тепличкой — почему нет.
Судя по вашим комментариям, Вы за тотальный запрет применения ардуино и подобных плат. Но ставить дома контроллер со стоимостью небольшой машинки, как то грустно. Может все таки для домашних целей можно и без сертификата?
Дома самоделку ставить можно. При условии, что без присмотра ее никто оставлять в гордом одиночестве не будет, а если и будет, то у нее не будет возможности открыть газ, устроить потоп или пожар. Остальные неприятности и риски пусть ложатся на плечи владельца.
Ну вот и слава богу. Договорились))
Придумывать еще один язык нет необходимости:
  1. Ада
  2. ДРАКОН

Ну и еще одна лепилка из визуальных блоков — FlowCode
Преобразователь лестничных диаграмм в прошивку для AVR и PIC — cq.cx/ladder-ru.html

И просто полезное чтиво:
habrahabr.ru/post/137987/ — Две стороны повсеместного применения микроконтроллеров
habrahabr.ru/post/146975/ — Вы все еще считаете, что воткнуть пару проводков в Arduino это DIY?
Ну Ада — это все таки именно язык программирования где надо писать код. А дракон — язык описания алгоритмов. Насчет ады ничего не знаю, не работал. Дракон мне понравился, но у него другая категория пользователей. Насколько я знаю он был создан для оформления задач учеными для программистов в каком то космическом институте. Еще раз повторюсь, очень хороший язык, но ЦА у него немного другая
Ада по моему мнению все-таки не особо удачный язык, он сильно переусложненный, и для не профильных людей совсем уж непригодный.
Лучше открыть коды и перевести хотя бы на BSD лицензию.
А то получится еще один никому не нужный «алгоритм билдер».

Кстати, как у этой штуки с VCS? hg diff разницу покажет между версиями кода?
Демократический ПЛК — Wecon LX3V-32-MR-A, к примеру. 6500 руб включая доставку из Китая. Это китайский клон Mitsubishi FX2N. Конкретно эта версия имеет 2,5 последовательных порта. Именно 2,5, так как они не совсем равнозначны. Есть один порт, который доступен в LAD-программе, поддерживается несколько режимов работы, в том числе по modbus. Остальные два — для программирования, имеют разный физический интерфейс и фиксированные настройки связи.

IDE GX Works 2, не Step 7, но вполне терпимо.

Что касается отладки, то тут я бы сказал, удобств мало, а если и есть, то не для простых смертных. Сам использую ibaPDA для отладки.

В общем, если писать плюсы и минусы, то аналог LDmicro для ардуино по моему мнению не взлетит. Да, и про VCS правильно заметили.

Вот, если бы кто сделал аналог FX2N на ардуино, это другое дело. Если arm'ы такие мощные и периферийные, то почему бы не повторить нутро уже зарекомендовавшего себя ПЛК? Софт весь использовать уже имеющийся, а железку на базе avr или arm.

П.С. Я вот себе в квартире ставлю в щитке китайский ПЛК. Он будет заведовать автоматикой. Ардуины и пр. не ставлю, так как нет софта, который бы поддерживал весь комплекс Умного дома. LAD мне не нравится как язык, сопровождать код очень сложно и не надо сказок про понятность схем. Реально они понятные только после снятия циклограммы работы, где алгоритм работы показан во времени. Чтобы снять такую диаграмму нужен специализированный софт, который для ПЛК-то трудно достать, чего уж про ардуины говорить.
А на каком языке программируется Wecon LX3V-32-MR-A. Насколько я помню Mitsubishi там язык чистый LAD. Даже FBD нет. И что этот контроллер умеет того чего не умеет Arduino? В особенности одна голова за 6.5 тысяч. Та же мега за 900 деревянных в россии имеет 4 последовательных порта, 52 цифровых входа — выхода, 14 аналоговых входов, аппаратные шины SPI, I2C и еще много вкусностей. Сколько входов у вашего контроллера?.. Опять таки я давно последний раз работал с Mitsubishi причем с более старшим FX4, но насколько я помню там 16 цифровых входов, 8 выходов. Аналоговых нет. То есть напрашиваются модули расширения. То же я думаю не дешёвые. По крайней мере в сравнении с ардуинкой и ее шилдами.
С вашей точки сказки про понятность схем, с моей же точки — большие сказки про понятность кода. Люди разные и каждый лучше понимает то в чем он лучше разбирается
Как я ардуино с шилдами в модульный щиток воткну? Мне там самоделки на соплях не нужны.

Да, там LAD. Это не одна голова, а 16 DI + 16 DO + дополнительный встроенный порт RS-485. Аналоговых нет, но для одного частного случая управления освещением я обошелся и цифровыми вместо аналоговых.

Вот зачем мне в щитке spi, i2c и прочее? Там всё в модульном исполнении и на DIN рейках. Вся автоматика на реле. Если всё на 485, то достаточно двух портов — один для нижнего уровня и один для верхнего.

Самое же главное — я могу использовать привычный мне промышленный софт.

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

Вот у меня есть набор ПО, с которым я могу писать все сигналы на скорости 115200 через modbus, не влияя на работу LAD-программы. Причём софт этот работает как сервис в фоне и имеет удобные настройки по разбиению файлов с данными. Я планирую писать сигналы вечно на всё время жизни системы. Поддержка этого всего идёт из коробки и мне ничего не надо писать для этого, а просто настроить.
Как добиться того же для ардуино? Я вот реально не представляю. Писать что-то специальное для средств отладки мне просто лень.
Дополню, что все эти чудесные интерфейсы (USART, SPI, I2C) из ардуины могут использоваться только в пределах одной платы, максимум — стопки из шилдов. Оказавшись внутри провода, они через 10 метров наловят таких помех, что туши свет, снижай скорость.
DHT-22 и DS18B20 проверенно работают на 20 метрах при использовании экранированного сетевого кабеля при правильном подключении. И это на переходе из рабочего помещения в серверную с кучей идущих рядом кабелей локалки
Про 1-Wire и его DHT-вариацию я ничего не говорил, но и аппаратной поддержки их в ардуине нет.
Я просто рассказал о том что реально работает. I2C — обычно не тянется далеко. По нему работает дисплей, часы реального времени. Они обычно далеко не уносятся. То же самое SPI. На SPI садятся Ethernet, SD карта. Зачем их выносить то? Они рядышком. А датчики работают как раз в основном по 1-Wire. Пусть и программная реализация, но она же есть.
От сетевых кабелей излучения практически нет — уровни сигналов достаточно слабые и сама витая пара способствует отсутствию помех.
А вы попробуйте проложить сигнальный кабель(не витую пару!) рядом с силовыми — пускатели там или даже простые диммеры…
Датчики ваши проработают до первой грозы… у меня микросхему разорвало физически к которой подключена была пара проводов длиной 5 метров во время грозы.
Ну это касается любой сигналки. В ПУЭ есть жесткие требования по прокладке сигнальных кабелей. Они касаются не только Arduino, но и вообще всех
Как раз идея этого проекта и состоит в реализации всего того что вы описали. И это реально. Пока нет Ethernet и Wifi. Но уже сейчас есть свободный обмен переменными между несколькими ардуинками подключенными напрямую друг к другу. Причем скорость та же. Если в качестве головы использовать мегу то как распределенную систему ввода можно подключить на текущий момент 4 дешевеньких (100 р на ебае) мини.
На SPI удобно вешать дисплейчик (120р двухстрочный дисплей и 100р переходник для него на SPI и это в россии), часы реального времени и многое другое. И это в проекте то же уже реализовано. На шину I2C вешается гирлянда из например температурных датчиков DS18B20 (150 -120 р на ебае). И это то же уже реализовано.Ну а как Вы например организуете на вашем контроллере управление серводвигателем или шаговым двигателем. Например что бы открыть форточку. Функция управления серводвигателем и шаговым двигателем в проекте была реализована одна из первых.
Так же я думаю на Вашем контроллере будет сложно реализовать без применения постоянно работающего компьютера управление с ИК пульта (в FLProg уже есть) а так же управление чем ни будь с помощью ИК передатчика — эмуляция пульта (ждет очереди на реализацию).
Ну и последнее, сейчас найти и заказать недорогие готовые корпуса для ардуинки — не проблема. На том же ебае по моему 40 р за корпус для унки.
Я в ближайшее время напишу пост с рассказом о текущем состоянии проекта, советую почитать. На текущий момент во многом проект превосходит софт от Mitsubishi. Ну а Scada на очереди
На самом деле в ПЛК многое уже реализовано прямо в виде функций. Если почитать datasheet на ПЛК, то там есть разделы по типовым применениям, где показана типовая схема и конкретная функция, которая с этой схемой используется. Всё уже придумано до нас. Да и RTC там встроенные.

Я очень сильно сомневаюсь, что ардуино может потянуть функции сервера. Не даром в проекте CyberWrt ардуинка используется только как мост между датчиками и роутером. У меня тоже в ПЛК нет Ethernet и WiFi, для этих целей у меня будет связка ПЛК+NUC (миниПК). На NUC будет WinXP или Win7 с ПО верхнего уровня, в т.ч. программа архивирования сигналов.

Что касается реализации ШИМ или чего-то подобного, то для этих целей есть ПЛК с транзисторными выходами, часть из которых могут прямо генерить ШИМ (см. картинку ниже).

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

Ну так примерно это ардуино из себя и представляет. Именно ядро для дальнейшей обвязки. Чем это и удобно. Нужно управлять нагрузками — пожалуйста — релейные шилды на 1 -2 — 4 — 8 -16 каналов. Не хватает выходов — пожалуйста платы расширения выходов (можно просто микросхему поставить за доллар) на шину SPI. каждая микросхемка добавляет 8 выходов. Соединяются каскадом. Так что выходов можно навесить очень много. Нужен ethernet — без проблем. Пристегиваешь бутербродом Ethernet шилд. На меге можно поднять неплохой веб сервер. Нужно логгирование — цепляем SD карт ридер. Вся прелесть ардуинки в том что для нее сейчас наплодили целую кучу шилдов, и написали море библиотек с подключением к чему угодно.
Ну а моя задача — сделать те самые функции для удобного применения этого железа в своих задачах. И многое уже сделано.
Это все слишком идеализировано. На практике встречаешься с ограничениями — шилды могут конфликтовать друг с другом, реализация одной функции отбирает ресурсы и делает невозможным использование другой и т.д.
На словах получается всё красиво… а как начинаешь что-то делать цепляешься за мелочи и понеслось. Это нельзя, это работает кое-как, одно не совместимо с другим из-за реализации функции «в лоб» и отсутствия альтернативных вариантов реализации.
Месье однако недостаточно плотно работал с ПЛК, там тоже на словах все красиво, а чуть поглубже копнуть — дрова :)
Тогда получается изобретение того же кривого велосипеда… от чего уходим туда же и движемся, зато своё, родное и дешевле(а дешевле ли на самом деле?).
Ребята, вы так описываете, что язык С — это идеально, и на нем невозможно совершить. Как и другие языки он не совершенен. Так и fbd с lad- ом конечно не совершенны. Просто Вам привычнее С, а все что не похоже на него Вы заклевываете. Я же представляю на хабре тех людей которые не знают и не хотят изучать эти языки. Как я уже говорил, оно им не нужно. Они прекрасно разбираются в схемотехнике, умеют работать руками. Как для у Вас вызывает дрожь мысль о том что надо рисовать схему, так и у них вызывает неприятные ощущения мысль о том что надо писать какие — то коды, придумывать какие — то циклы, подключать какие — то библиотеки. Так что из за этого мир микроконтроллеров для них должен быть закрыт? Или им покупать дорогие промышленные контроллеры?
Лично я считаю это неправильным, и поэтому хочу дать им возможность использовать платы Arduino в своем творчестве.
Ну а по поводу кривости, сложный вопрос что кривее, С или графические языки. С например позволяет совершить намного больше ошибок и логических и синтаксических чем тот же FBD. Все таки средства контроля за правильностью и логичностью скетча в Arduino IDE очень слабы
Расскажите (лучше в виде поста), чем ваша среда лучше того же Algorithm Builder или FlowCode.
Как раз сейчас я оформляю пост в котором рассказываю о программе. Ну а что лучше, что хуже — это не мне решать. У каждого свои приоритеты, свои пристрастия. Я лишь предлагаю еще одну альтернативу с другим подходом. С моей точки зрения (и еще минимум 170 — ти человек) более удобным.
На тех ПЛК, которые благодаря своим родным LAD/FBD могут только освещением в подъезде управлять (грубо :)) — можно межпланетные станции запускать, дайте только С и ассемблер к тому железу :)
А вот снижения порога вхождения в программирование ПЛК — ни разу не видел за 10 лет. Есл ичеловек хоть на бейсике не умеет программировать — то и ПЛК ему не по зубам.
Я сейчас работаю инженером АСУП на больной газотурбинной станции. Нас в вахте 5 человек. 2 вахты. То есть 10 человек. Из них только я один занимаюсь «настоящим» программированием. Остальные даже близко с ним не стояли. Но при этом без проблем разберутся не только с простенькой программой для ПЛК, но и с серьезным мультипроектом PCS — 7 для 400-ой серии сименского контроллера и верхним уровнем на WinCC. Это про обязательность знания бейсика для начала работы с ПЛК.
Теперь про уровень вхождения.
На предыдущей работе я проводил обучение программированию младшей линейки контроллеров ABB и Schneider.
Обучались два инженера схемотехника занимающихся разработкой схемных решений НКУ. Через месяц оба могли легко собрать прошивку для обеих контроллеров по заданию. Только один предпочитает LAD а другому как и мне больше нравится FBD. Причем ни тот ни другой про с программированием даже близко не стояли. Да и где Вы в средах для ПЛК видели хоть строчку кода. Есть конечно STL, но это уже совсем близко к ассемблеру, и я ни разу не видел что бы им кто то пользовался.
Ага, сколько раз электронщики-радиолюбители в четвертом поколении мне говорили: «Мы тут набрали программку из руководства, а она не работает, не можешь разобраться и чуть переделать?». И это LAD. Электрические схемы читают как Шекспира, а тут вроде та же схема — а мышление не позволяет. А вот программисты-профессионалы с академическим образованием из моего окружения тоже плюются на LAD/FBD и только на STL пишут, ибо схемотехника для них — темный лес. А вот все IECовские языки понимают и применяют люди, которые и электронщики, и программисты, кто в детстве/молодости спектрумы паяли себе и ЕС-ки программировали в машинных кодах :)
Научить то можно легко человека хелловорды писать, главное чтобы процесс на хелловордах не остановился. У меня студенты за 1 лабу осваивали программирование на LAD, главное показать, что вот логическое выражение вот так вот преобразуется в релейную схему, вот «И» — несколько контактов последовательно, вот «ИЛИ» — параллельно.
Есть конечно STL, но это уже совсем близко к ассемблеру,

STL это как раз паскаль в чистом виде — в любой железяке, программируемой под Codesys, например. Ассемблер это IL, но его из стандарта вынесли не так давно. Хотя штука удобная, на нем очень здорово в ногу стрелять :)
Насколько я видел внутренности китайского ПЛК (по фоткам), там плис стоит кроме прочего. Знание си и асма мало поможет, если не умеешь программировать плис.

Про порог вхождения соглашусь. Тут даже не Бейсик важен, сколько понимание цикла работы программы ПЛК (он имеет неявную составляющую в отличие от простого процедурного программирования). Совсем недавно один товарищ отказался дальше разбираться в программе на LAD, ибо просто устал. Отдали мне.

Если ты не можешь представить циклы изменения переменных, то даже простые вещи будут очень долго доходить.
Не в плисе дело, это китайцы что-то скрывают. :) Вот например Zelio Logic на Атмеге сделано, можно было очень расширить стандартные возможности, если залезть туда с ассемблером.
Иногда очень не хватает возможностей, предоставленных производителем, хоть свой контроллер собирай, свободно программируемый с прямым доступом к железу. Но нельзя :)
Так же я думаю на Вашем контроллере будет сложно реализовать без применения постоянно работающего компьютера управление с ИК пульта (в FLProg уже есть) а так же управление чем ни будь с помощью ИК передатчика — эмуляция пульта (ждет очереди на реализацию).

Зачем мне ИК связь при наличии WiFi и сотового телефона? Многие современные телевизоры уже через мобильник управляются по локалке, благодаря фирменному софту, я уже не говорю про YouTube, который можно с мобилы на телек «перекинуть». Единственным «пультом» у меня будет либо планшет, либо мобила.
Могу задачку простую показать, на основе которой можно понять некоторые отличия в подходах программирования.

Я уже писал, что у моего ПЛК только дискретные входы, аналоговых нет. Мне хочется измерять такими входами уровень яркости, который устанавливается диммером. Диммер (светорегулятор) использует обрезку синусоиды как метод управления. Не долго думая, я собираю простую схемку с оптроном, который срабатывает, когда напряжение «больше нуля». Беру в качестве источника напряжение сети (только пол периода — не мостовая схема) и через оптрон подаю на вход контроллера.

LAD выглядит вот так, к примеру:



Смотрю значения D2 и D3 в онлайне, их сумма постоянна, а вот сами они периодически и часто изменяются от нуля до некоторого значения.

Алгоритм простой: мы считаем в течении некоторого интервала (2 сек в данном случае) количество нолей и единичек. Их отношение даст нам скважность, а по ней мы можем определить уровень напряжения «при прочих равных».

Но у меня они скачут, в чём же дело? Кто сможет догадаться?

В чем дело — не скажу, но неужели это проще C?
Для многих — да. Хотя конечно не скажу что среда от митсубиси — идеал. Все таки у японцев свое виденье мира)). Но наверное им такой вариант по душе
Немного не по теме, но забавный пример из моего опыта: когда я начинал осваивать FPGA, первую свою задачу — приемник SPDIF я начал реализовывать в графическом редакторе на основе логических элементов. Но как ни странно, мне удалось быстрее и лучше реализовать ее изучив основы VHDL, хотя у меня был достаточный опыт построения систем на дискретной логике. Модуль на VHDL получился проще, понятнее и что самое главное — работал :)
Да, еще хотел спросить — а какой Smalltalk используете?
VisualWorks® Personal Use Edition, 7.9.
Смотря для каких задач и какой бюджет. Некоторые ставят ПЛК только для того, чтобы сделать интерфейс между кнопками и реле. Тогда это действительно проще.

Сложности начинаются, когда нужно, к примеру, иметь modbus на борту. У меня modbus в ПЛК встроен, поэтому достаточно пару регистров задать и я имею полный доступ к внутренним данным ПЛК. Если же modbus в ПЛК не встроен, то будет не просто его реализовать в LAD, страшно даже представить.

На Си реализовать полноценный modbus тоже не просто, но выглядеть это будет по-человечески.

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

Что касается примера выше. Для того, чтобы заставить его работать нужно быть хорошо знакомым с устройством ПЛК и его конфигурационными регистрами. Точно также, как мы изучаем архитектуру AVR, мы должны изучить внутренности ПЛК. Нельзя вот так вот взять и что-то написать. Я вот взял, написал, а оно не работает.

В моем ПЛК по умолчанию все входы фильтруется с постоянной фильтра 10 мсек. Видимо это сделано для антидребезга. Из-за этого я получаю не «мгновенные» значения на входе, а непонятно какие вообще. После того как я отключил фильтр всё заработало как надо и ширина импульса измеряется достаточно стабильно.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий