33

Ответ user11467601 в «Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно»

из личного:
То, что раньше я показывал с гордостью: "ВО ЧЕГО Я СДЕЛАЛ заместо заморского Сименса за охулиард рублей!" теперь я прячу и надеюсь, что заказчики не будут гуглить в сети мои статьи и прочее )))

можно оставлю это тут?

Взято с форума "Easyelectronics.ru"
Автор: tigdin . Добавлено: 06 янв 2015, 18:48"

Не являюсь крупным специалистом в области ПЛК, но вот что я напишу по этому поводу... Быть может, покажется, что немного перпендикулярно к теме. Вообще, хотел, было, запостить это в топике "Какой ПЛК выбрать"... Ответ -- ХОРОШИЙ... ))) Все знают, что когда Форда спросили, какая машина самая хорошая, он ответил: "НОВАЯ!" ))

(Аттеншн! Многа букаф!)

Дык по делу.

1) Касаемо выбора ПЛК и ПЛК-неПЛК или, скажем выбор Управлятора.
а) Остановить свой выбор именно на ПЛК или собрать всё на Ардуне -- это, в конечном итоге, Ваши соображения. Если брать промышленное помещение, где по питанию и в воздухе просто кишит куча помех, наводок, бросков напряжения, где тот же Управлятор может коммутировать, например, мрачные индуктивные нагрузки, то, в общем-то задача становится нетривиальной. Одно дело у Вас зависнет темопластавтомат, другое дело, когда игла помехи прилетит и дернет (по внешнему прерыванию) вход МК на Ардунечке или ЛУТ-плате и пресс опустится как раз на бедного оператора, залезшего внутрь что-то там, как всегда подправить. И дело даже не в том, что Вы честно отсидите срок (типун мне на язык!). Предстать перед воротами Рая с осознанием того, что у Вас на душе висит чья-то жизнь... Мне лично как-то совсем не хочется. Видел тут недавно поделки, которые аффтары называют что-то типа дешевый ПЛК... Если честно, то мороз по коже. У них по входам нет хотя бы защитных диодов (ога, а в AVR есть еще pullup резисторы). Я уже молчу о саппрессорах, там и прочей ненужной фигне всякой. У них нет и опторазвязки, там где она совсем бы не помешала, где может запросто прилететь напряжение и что-нибудь как бы внезапно открыть или закрыть в ненужный момент времени -- хрен с ним, с Австралией микроконтроллером, ну сгорит, подумаешь! Вот один маленький примерчик. Окей, как говорят пиндосы, задача. Педаль, идет кабель в блок управления, опторазвязка и все такое. Ок, защита по помехам. Ок, делаем так, чтобы оптрон "срабатывал" по возможно большему току -- чтобы "иголки", грозы и вообще соседний обыскрившийся контактор не запустили процесс и не вызвали ложного срабатывания.... Ладно, положим.. Но банальная жизненная ситуация: оператор постоянно пинает педаль туда-сюда и происходит... или обрыв внутри кабеля или, что еще хуже -- замыкание. Ну вот и всё... Если у Вас стоял Ардунька или, что хуже "дешевый ПЛК" на 800 входов и 8000 выходов по технологии ЛУТ, то изготовителю сего чуда Северное Сияние наблюдать однозначно и очень долго. Как написал один очень уважаемый мной человек с форума по автоматизации, прокурор скажет "Еу, махарайка!" и Вы никогда не докажете, что махарайка был лучше промышленного серифицированного ПЛК. Даже если Управлятор Вы делали по прямому указанию работодателя, знайте, что он всегда отмажется, а отвечать ВАМ! Отсюда вытекает, что выбор не обстоит как ПЛК -- это тупые железяки за безумные деньги, я сам спаяю!!!. Тем более, что эти деньги (на ПЛК) вряд-ли из Вашего кармана.
По-сему не понимаю товарищей, спокойно рекомендующих "споять самому" и что у ПЛК внутри та же неонка... Мое ИМХО -- думайте сами, решайте сами, иметь или не иметь. Повторю, диодиком можно мигать и при помощи ПЛК за 60 000 рублей и при помощи Ардуньки. Но, данная ситуация явно показывает безумие покупать для этого ПЛК, не так ли? А теперь то же самое, но со знаком "минус"! Ну, Вы меня понели... ))
б) Для микроконтроллеров есть куча софта и библиОтек, написанных неизвестно кем, зато бесплатных. Но даже библиотека управления LCD может оказаться опасной. Ну, зависли мы нечаянно в этой библиотеке, а клапан открыт и балшой бочка под давлением просто рванет, пока оператор сообразит, что ему надо переписать библиотеку LCD.HELLO.WORLD. А IAR стоит дорговато, в общем-то... ) Да и при разборках может возникнуть вопрос, откуда Вы взяли торрент...
в) Ну гут, внутри у ПЛК та же неонка. Знаю. Только, например, при просадке питания, в более серьезном случае, как-то не нужно использовать встроенный BrownOut... Лучше, чтобы это делал специальный внешний кусочек кремния, которых почему-то выпускают в больших количествах и которые с большей вероятностью защитят от того, что во флеше окажутся совсем непонятные данные, которые, если MCU примет за истину... А подтяжка в классические 10к на ногу явно рассчитана для применения MCU в холодильниках... Ну да, мясо протухло, ну и с ним... Для автомобильной, нпрмр, промышленности, зачем-то есть прям специальная категория, нпрмр, саппрессоров для защиты входов-выходов. Гроза, блымнула, знаете-ли, в паре тысяч метров от машинки и навела на проводочках, знаете-ли, пару тысяч вольт со всем вытекающими... А кондерчики в 0.1 очень "хорошо" проявляют свои свойства, когда рядом заработал сотовый или нечто такое на высокой частоте -- ну фигня, операторская вышка стоИт в сотне метров от циркулярной пилы с микропроцессорным управлением... Бггг... А еще, почему-то есть для RS-xxх мелкосхемы прям с гальванической развязкой. А есть почему-то и без нее... На порядок дешевле. А еще, почему-то есть мелкосхемы -- прям готовый вход для создания ПЛК, но стОят такие женщины почему-то каких-то безумных денег, в расчете на один вход неонки. А еще миллион того, что я не знаю и никто не знает. Все-таки, при запуске в серию ПЛКи сертифицируют, немножко и эта бумажка может быть тем самым спасительным кругом от мест с холодным климатом. Если кабель у педальки замкнет...
Резюме. По прежнему остаюсь приверженцем того, что не бывает "Кремлевских таблеток" и для каждой конкретной задачи нужно выбирать соответствующий инструмент: Диодиком помигать -- Ардунечька, в холодильник -- АВР-ку, в пресс -- "тупой и безумно дорогой" ПЛК. Спасибо профессионалам в области автоматики. Меня тоже лечили от "Шас спою!" и не скажу, что это всегда были вежливо и терпеливо со мной, за что профессионалам в области автоматизации огромное спасибо! С тех пор я даже на всенародное увлечение в виде "Умного Дома" на Raspberry 3.14 смотрю не без того самого страха. Зато теперь настоящий Линуксоид может неонкой диодиком помигать...
ЗЫ к пункту один: повоторюсь, вовсе НЕ утверждаю, что нужно выбирать ПЛК онли! Перечитайте, пожалуйста еще раз перед тем, как стягивать войска на границу... ;)

2) Ну лан, определились с железом. Дальше что? Если вы определились с применением микроконтроллера -- дальше можно не читать, потому как глупо советовать здесь что-либо. Тут просто широчайший выбор средств как аппаратных, так и программных и всё зависит исключительно от Ваших знаний и умений. Я вот, например, боюсь tqfp100 даже в руки взять, а умельцы между ножками еще и резисторы с кондерами распаивают, после изготовления платы... ЛУТ-ом. Помните, как в одном очень популярном фильме охреневший слегка Ватсон: "Но, черт возьми, Холмс..." ))) Но и этим все не ограничивается. Программный инструментарий -- это просто фантастика. Хошь на асме извращайся, хошь на С-умножить-умножить, а то и вообще ставь RTOS. Бесплатную или даже платную. Но мне очччень понравился постулат создателей, например, ARM-а, с его навороченной системой прерываний. Буквально написано, что хоть микроконтроллер и умеет работать в режиме реального времени, но, типа, ребята, Вы сами должны понимать, что его "реальное время" зависит, в общем-то, от того, чем он занят в настоящее время и какое прерывание обрабатывает. Поэтому корректность проектирования тормозной системы автомобиля лежит, всецело, на Вас... Опять не таблетка. Совсем. А если Вы модно поставили RTOS и теперь у Вас полный "ртос"... Ага... Особенно без отладчика (это я недавно вычитал, ми-ми-ми), который позволяет отлаживать все в работе именно с RTOS (и стоит как чугунный мост)... В общем, полет Вашей фантазии и возможностей ограничивается только Вашим жизненным циклом... ;) Поэтому скажу о ПЛК. Дело в том, что их, немного, как бы задумывали на смену привычек суровых Челябинских металлургов электронщиков, которые ваяли управление оборудованием в виде высоких таких шкафичков, набитых дискретной логикой. Помню, однажды, привезли парочку настоящих роботов в отдел промэлектроники и некто ХХХ, по кличке "Сундук" был занят тыканием в многа ножек, которые помещались в двухэтажном корпусе метр-на-ноль-пять, волшебным карандашиком с загорающимися лампочками... Хврезерный станочек автоматизировался... )))
В общем, производители ПЛК-ов придумалии классную штуку! Щелкнул на рейке DIN, прикрутил всякие там трансдьюсеры и оп-ля, все готово! За одним исключением. Выяснилось, что "суровые металлурги" ни бельмеса не понимают, частенько, после того, как щелкнули на рейке, как сделать так, чтобы всё зажужжало-закрутилось. Более того, времена, когда появились ПЛК, как бы внезапно совпало с объектно-ориентированным программированием в пубертате, да и вообще, как я писал выше, применение ООП было тогда понятно, не до конца, другим суровым металлургам, но в случае с опасным промышленным производством -- это даже очень не есть хорошо, поскольку не понятно, чем будет занят ПЛК в это время. А посему, чтобы загладить вину перед инженерами-электронщиками, стали придумывать понятные для них субстанции в виде LD для привыкших к шкафам с релейной автоматикой или FBD (и, как бы CFC) для Челяб... электронщиков. Однако, существует и много возможностей для тех случаев, когда "твердочник" придумывает аппаратное обеспечение, а "мягкочник" пишет для него программу. Вот и появились IL и ST для тех, кому асм и паскаль роднее. Касаемо SFC -- это для тех, кто очень любит "конечные автоматы", с той лишь разницей, что внутрь SFC можно запросто понапихать и IL и ST, на раз... Только, если этот "конечный автомат" получается большой и толстый, то моск начинает плавится, потому, что в данном случае нужно, чтобы особенно было "всё под контролем", ресурсов этого "процессора" на всегда хватает.
ПЛКи, они еще и работают несколько "странно" и эту специфику нужно учитывать. Например, ПЛК считывает состояние входов, сохраняет их и несется дальше, пока не закончит свой цикл, выплюнув команды на выходы. То есть ему как бы наплевать на изменения на входах, пока он снова не прибежит к точке считывания их значений. Следовательно, системе некоторое время "пофигу на Ваши принципы" и эти "странности" надо учитывать. К тому же, ПЛК могут иметь зависимое и независимое время цикла. То есть, чем сложнее у Вас программа, тем тугодумнее будет ПЛК в первом случае, и как он работает во втором -- не берусь ответить, поскольку не вкуриваю, как это вообще может быть, а производители ПЛК держат всё нужное и ненужное в большой тайне (большое человеческое спасибо им!)

Слегка коснусь языков и как бывший программер, как это модно сейчас произносить. Если с IL и ST более или менее понятно, с точки срения работы компилятора (если он там настоящий), но я с большим трудом представляю быстродействие кода, нарисованного мышкой. Да, здорово, понакидал блоков, посоединял их "проводками" и всё работает... Но если с "пошаговыми" инструкциями все понятно, то КАК работает потом пережеванная в понятный микроконтроллеру код схэма из кубиков, как бэ, совсем не представляю. И на практике применение таких "графических" языков не есть всегда легко решить проблему. Работать будет, но совсем не так, как красиво было нарисовано. Это не настоящая логика, где всё работает "параллельно"... Да и с убогими объемам памяти ПЛК придется реально экономить, чтобы как-то быстро эти объемы не закончились. Я уже не говорю о файлах проектов, размеры которых растут как-то совсем непропорционально сложности проекта... Если у Вас всё работает на LD или FBD, то или проекты такие или одно из двух... Я знаю случай, когда ребята на отладке одного такого проекта гробили миллионы рублей в день... Не знаю, чем у них там все закончилось... Но однозначно рекомендовать один из языков в качестве основного не возьмусь.

Кстати, очень осторожно пискну, в виду своей туманной осведомленности, но на тех же ПЛИС крутые дядьки пишут всё строчками, хотя и есть возможность нарисовать мышкой (Не пинать! Чик-чик! Я в домике!)

3) О том, как продают НЕЧТО. Как и в случае со всем, что продается, каждый производитель стремится привязать покупателя к своей продукции. Поэтому, не смотря на стандарты, каждый из них добавляет в свои ПЛК какие-нибудь фишки, которые работают только у них, приручает разраба к своей среде разработки и еще к чему-нибудь, о чем напряженно морщат лобики манагеры в отделах маркетинга. Поэтому подсев на ПЛК определенного производителя, разработчики очень неохотно пытаются сделать нечто на ПЛК других производителей. А мои тапочки просто умрут от смеха, если Вы попытаетесь реально перенести программу на оборудование другого производителя, несмотря на все МЭКи... Впрочем, никто особенно и не заморачивается...
Подчеркну еще одну фишку. Эти ребята маркетологи получают зарплату и пытаются ее оправдать. И, поэтому, часто будучи очень далеки от электроники, автоматизации и вообще от того, что они продают, они, тем не менее, упорно влияют на возможности/к/цене производимой продукции. Вот почему приходится вспоминать пункты из Толкового Словаря Даля, когда вдруг оказывается, что с точки зрения "обычного" электронщика "копеечная" задача вдруг выливается в то, что нужно вдвое увеличивать стоимость проекта, чтобы "оно смогло"... Даже очень интересная фишка... Посмотрите, сколько стОит реле LOGO! Сименса и сколько стОит... ШНУРОК, для того, чтобы его запрограммировать... А возможность использования обычной SD-карты памяти в качестве хранилища! Карта-то стоит копейки, а вот если Вы возжелали хранить данные, покупайте проприетарный модуль памяти по той же цене и объемом в.... тысяч раз меньше. Когда появилась возможность использовать обычные SD-шки, я, прочитав эту новость, плакал от счастья целый день... Поэтому так часто возникает желание послать этих умников в Словарь Даля и спаять, нафиг, на "тиньке" и за три копейки. Однако, не поддавайтесь искушениям. Северное Сияние... Оно...)
Но не только это... Поверьте, автоматизация производства -- это там, где все должно быть как у взрослых. Именно под автоматизацию разрабатываются настоящие полковники железяки. Я молчу, например, об искрозащите, но Вы попробуйте прикрутить к Атмеге датчик давления, хотя бы на сраные 12 бар, если найдете такой в непромышленном исполнении и на 5 вольт, такой... В Чипе-Дипе есть... Ага... и за 3 копейки...

4) Ну гут, покупаю! С оговорочкой. Можно купить и кетайский ПЛК и поделки (не в обиду) отечественных производителей. У них шнурки программирования вообще можно спаять самому. Но вот ведь какая фигня. Купив железяку, будьте готовы к тому, что она программируется.... последней бета версией программного обеспечения. ЗдОрово? К тому же предыдущая не-бета-версия сама лезет в инет и обновляется... на эту самую бету. И ждать реальных обновлений не приходтися. Однако, о программном обеспечении в целом: чтобы НОРМАЛЬНО его использовать, нужна не только его безглючность, "дружественность интерфейса" и "нативность" там все остальныя. Нужна еще дотошная и детальная документация. Иначе Вы можете и "не догадаться". Поэтому призадумайтесь, маленькие -- по три, или большие -- но по пять... Есть, конечно, и такая фишка. Вам говорят -- CoDeSys -- там все написано и его использует BOSCH! ВАХ! Ну, да, это так, но под конкретный ПЛК все равно есть "кусочек", который обеспечивает работу этой самой железяки. Так что вылизанная Кодесис может столкнуться с корявеньким таргетом, писанным местным программером, который, в основном, боролся с утра с голодом, а после обеда со сном... Поэтому время, которе может быть потрачено на проект, может быть несоразмеримо дороже, фирменной железки, вылизанной IDE и документации, изобилующей примерами, понятным даже имбецилам... ) Ну да, зоказчег -- он часто далековат от проблем, у него один критерий -- цифра, обозначающая конечные (причем одноразовые) затраты на конкретные осязаемые железки. Не все же умеют считать, реально, деньги. И то, что козлика надо не только доить, но еще и кормить, встречают, часто, даже агрессию... Тут уж как в известной сказке: "А можно из одной шкурки пошить восемь шапок?" Ответ, однако нетривиален... )))
И все-таки, ПЛК Мицубиси, они... ПЛК Мицубиси (сорри, не конкретно об этом производителе). Они, на весь мир продаются... Что кагбэ намекает (не думайте, пжлст, что это критерий выбора. Здесь речь только о том, что в разработку вкладыватся огрмные деньги и огромный опыт, схемотехникой занимаются группы инженеров, а над документацией потеет, наверняка целый отдел)

И маленькое такое ЗЫ еще на восемь страниц... )) Если Вы думаете о том, что я тайный эротоман Хоботов, то задумайтесь о том, что есть стандарты, где указано, на каком расстоянии в миллиметрах от кнопки "Пуск" и в какой части панели должен быть размещен, например, "грибок" экстренной остановки.. ))

Как-то так...

Спасибо, однако, тем, кто асилил... ) Был рад, если о смыслом )


ps

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

Будете смеяться, но определенные входные цепи я делаю на (герконовых) реле. Реле, коммутируемые 24 вольтами, сидят рядом с контроллером и одно из них срабатывает, второе отпускает. То есть к педали идет три провода. Общий, NO, NC... Обработка выполняется по XOR. Если в кабеле происходит замыкание, Общий --> NO, то контроллер распознает, что это замыкание и не сработает, поскольку цепь Общий -- NC должна быть разорвана. В том числе, можно диагностировать замыкание и трех проводов и обрыв проводов. Да, там есть "мертвая" комбинация, но все таки, такой опрос педали резко повышает выживаемость оператора... ))) А реле на 24 вольта потому, как кроме достаточно большого напряжения, ему нужен и, относительно, большой ток. То есть релям как бы пофигу на все наводки, помехи и иголки... Нужно такую, блин, наводку забабахать, чтобы реле сработало... (кстати, аж два, в случае с XOR -- что в принципе невозможно -- наводка-то на три проводника сразу.. )) ))) За ресурс реле бояться нечего. Контакты, коммутирующие вход контроллера доооолго будут обгорать. ;) Фактически, например, с герконовыми реле их ресурс стремится к бесконечности... )

Касаемо аварийного стопа и всех прочих защит, как сказал anakost -- это в любом случае должна быть отдельная система, не зависящая от контроллера. Она должна лишь сигнализировать контроллеру о разрыве петли безопасности -- либо концевыми выключателями, либо кнопкой "стоп" либо другими компонентами. Было бы неплохо, если такая система имеет еще защиту от умников, которым не хочется, например, нажимать две кнопки одновременно двумя руками, и они ставят перемычку. В таком случае система безопасности должна вываливаться с ошибкой и сигнализацией основному блоку управления... ИМХО, но в любом случае делать аварийный стоп программно... лучше уж выгоревший шкаф управления от дуги в 6 KVх1000А, чем человеческая жизнь... Это не утверждение. Опять, нужно "на месте ориентироваться" как там всё устроено...
И еще... Если есть ресурсы, у системы безопасности, я стараюсь быть савсэм хитры. Например, у некоего пресса есть огромная ведомая шестерня. Я присобачил рядом индуктивный датчик, который "считает" зубы у этой шестерни. В случае, если оператор нажал кнопку "Стоп" (имеется в виду штатная остановка), а тормозная муфта не сработала (или хреновато сработала -- умный механик чистил все подряд и протирал колодки тормозной муфты тряпочкой извозюканной в масле) и плита пресса продолжает двигаться (или вообще она почему-то продолжает двигаться), то система тупо отрубает питание с жуткими воплями и сигнализацией критической неисправности. Плита остановится в виду того, что ведомой шестерней крутить ведущую как бы трудновато... ))) И снова запустить пресс после такой ошибки ни фига не получится, пока не придет skilled personnel... Ну и профит еще в том, что можно сказать о том, когда пора менять колодки или пора отрегулировать тормозую муфту.. )

Ну, параноик я, чо... )))

Показать полностью
42

Ответ на пост «Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно»

Ну ты крут, мужик! Что еще сказать) Было дело запускал завод асфальтный, на своих двух платах самопальных(даже зеленных и красивых сам спроектировал китайцы отправлили мне их) , эти платы были у меня как модули ввода вывода, микроконтроллер там стоит ESP32(кодил на Framework Arduino Platformio Visual Studio Code) через протокол Modbus RTU, вся логика была на обычном Ноутбуке , линукс туда еще поставили, там логику завода написал на C++ QT Framework, три года завод уже отработал. К чему я тут: короче я тогда тоже типа мысленно соревновался с ПЛК крутыми. Но времени и сил убил на это все много, и денег мало заработал, но было весело, спал прям там в операторской в спальном мешке, короче на улице почти) Удачи вам и сил!!!

783

Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно

Серия Моими разработками, соревнуюсь с Брендами в АСУ ТП
Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно

Кто читает первый раз мой пост. Что у меня за проект: Своими разработками соревнуюсь с брендами в АСУ ТП. Превзойти Codesys

Если коротко, я работаю над собственным аналогом комплекса - Codesys. Программная экосистема для разработки ПЛК на разном железе, под названием 3o|||sheet (читать как “Зошит”). Состоит из трех уровней: Среда разработки IDE (LD/FBD/ текстовые), собственного компилятора, и собственная среда выполнения на стороне железа.

Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно

В прошлом посте, сравнивал свой ПЛК с китайскими клонами на базе Mitsubishi FX3 При одинаковом чипе (stm32f103) мой инженерный образец был в три раза медленнее Mitsubishi.

С этим я мириться не стал, и первое что сделал - чуть оптимизировал выборку команд из виртуального ОЗУ.

Внутри рантайма в микроконтроллере. Было:

ic.b[3]= memory[PC];

ic.b[2]= memory[PC+1];

ic.b[1] = memory[PC+2];

ic.b[0]= memory[PC+3];

Во времена тестирования на ПК и микроконтроллерах, чтоб не возиться с “Big Endian/Little Endian” я оставил такой медленный но прямой способ.

Изменил на:

memcopy(&ic, &memory,4);

ic - это регистр инструкции (структура типа Union) , он первым читается из виртуального ОЗУ. К нему  применяются различные маски и сдвиги, для извлечения данных (номера регистров, операнды, константы и т.д).

Производительность нашего ПЛК  на “ровном месте” увеличилась больше чем на 30%.
Сейчас картина выглядит так по работе с релейной логикой (LD)- Указано время выполнения базовых LD инструкций в микросекундах (меньше - лучше):

Данные по Allen Bradley Micro810 -  взято из документации, какой внутри стоит чип - неизвестно. Данные по китайским клонам по Mitsubishi FX3 - взято из тестов на просторах интернета.

Данные по Allen Bradley Micro810 -  взято из документации, какой внутри стоит чип - неизвестно. Данные по китайским клонам по Mitsubishi FX3 - взято из тестов на просторах интернета.

Наш ПЛК на базе собственного 3o|||sheet все еще уступает Mitsubishi FX3 (с китайским клоном и идентичного микроконтроллера stm32f103), но уже не в три раза, как в прошлый раз, а примерно в два раза. Поле для оптимизации у меня еще широкое (та самая работа с декодированием инструкций- маски, сдвиги, и прочее, я молчу уже об оптимизации - конкретно  выполнение виртуальных инструкций). Пока я создаю инженерные образцы ПЛК (а не коммерческие) где тестируется в основном- стабильность, а не скорость, хотя периодически бывает интересно что можно выжать по скорости.

Но возможно достичь аналогичного результата клона Mitsubishi FX3 может и не удастся, учитывая универсальность моей архитектуры 3o|||sheet и деревянного ( бюджетного конечно)  от Mitsubishi. Но если я оптимизирую производительность до уровня 10-20% разницы с Mitsubishi, буду считать - прекрасным результатом, и вот почему.

Превосходство моей архитектуры:

Mitsubishi FX3 - деревянный и не гибкий, напоминающий Allen Bradley SLC 500). У них “табличная память”. Жестко выделенные области - битовые переменные, целочисленные переменные, таймеры  и т.д Адресация, чтение/запись идет быстро - никакого декодирования . В моей архитектуре 3o|||sheet - единое адресное пространство, и любые типы переменных могут располагаться в перемешку, в любой последовательности, с адресным пространством 4 гигабайта:

Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно

То есть, делить адресное пространство можно - как угодно. Создавать или нет внутри Диспетчер задач или Операционную систему.

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

Но не только я так думаю. Бюджетный современный  Allen Bradley может уже исполняться из ST языка ( в отличии от старых бюджетных SLC 500), и что произошло? Новый бюджетный как видим выполняет релейную логику в 2.5  микросекунды на команду,  против 1.2 микросекунды у старых SLC 500 ))) данные я прочитал в документации SLC 500. То есть современный ПЛК Allen Bradley стал медленнее в два раза в сравнении с старым Allen Bradley))

Давайте продемонстрирую возможности своего компилятора 3o|||sheet  и системы воспроизведения в железе, о том что значит - гибкость системы.

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

Я не буду демонстрировать LD или ST  (это у всех ПЛК +- тоже самое, ведь стандарт же), интересней это выглядит внутри микроконтроллера:

func1(){

func2();

}

func2(){

func3();

}

func3(){

func4();

}

func4(){

func5();

}

pause(){

}

main()

{

func1();

}

В данном видео примере выводятся строки: чем глубже функция, тем длиннее строка для наглядности

Main ------| переход

func1 ------------| переход

func2 ------------------| переход

func3 ---------------------| переход

func4 ------------------------| переход

func5 ---------------------------| Самая глубокая функция

func5 ---------------------------| возврат

func4 ------------------------| возврат

func3 ---------------------| возврат

func2 ------------------| возврат

func1 ------------| возврат

Main ------| Завершение Main. -> Начало Main.

Глубокие переходы между функциями ( функция внутри вызывает другую функцию, а та следующую и т.д), или рекурсии - на всю память. Единое адресное пространство - чем больше программа - тем меньше данных, и наоборот. Никакой жесткости типа -  “память программ 256 кб, память данных 128 кб” и прочее. Никаких жестких списков  “целочисленных переменных 256 страниц, булевых 256 страниц, таймеров 64” и т.д. Как в архитектурах типа FX3. Гибкая архитектура подразумевает  - есть целое виртуальное ОЗУ - а там распределяйте сколько чего нужно в каких пропорциях -  сами.

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

Для обновления кода на лету, надо перекомпилировать проект, и загрузить программу в ПЛК от указанного начала адреса, и до указанного конца. В будущем сделаю удобно - переписать код блока или функции - просто указав по имени.

Для обновления кода на лету, надо перекомпилировать проект, и загрузить программу в ПЛК от указанного начала адреса, и до указанного конца. В будущем сделаю удобно - переписать код блока или функции - просто указав по имени.

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

Архитектура. LD ST - текст, переводится в текст .3osheet и .3osheet компилятором своей разработки, переводится в байткод. Сама виртуальная машина написана на СИ. Теоретически, если сделаю транслятор из Java, то получится аналог напоминающий Android.

Архитектура. LD ST - текст, переводится в текст .3osheet и .3osheet компилятором своей разработки, переводится в байткод. Сама виртуальная машина написана на СИ. Теоретически, если сделаю транслятор из Java, то получится аналог напоминающий Android.

Ну и на последок,

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

Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно
Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно

Никак не доедет отладочная плата на RISC V для теста, кому интересно - присоединяйтесь, периодически буду публиковать ход разработки проекта.

Пишите на почту:

zoshytlogic@gmail.com

Показать полностью 8 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества