Pull to refresh
1
0
Алексей @XopHeT

Разработчик CODESYS

Send message
# А
CODE_OF_FIRST_RUSSIAN_LETTER = 1040

# я
CODE_OF_LAST_RUSSIAN_LETTER = 1103

CODES_OF_RUSSIAN_SYMBOLS = list(
    range(
        CODE_OF_FIRST_RUSSIAN_LETTER,
        CODE_OF_LAST_RUSSIAN_LETTER + 1
    )
) + [1025, 1105] # Ё, ё

Замените числа на ord("A"), ord("я") и т.д.
Так и от комментариев избавитесь и код читабельнее

  1. Обходит все английские страницы;

  2. Из каждой страницы извлекает весь контент (похожий пример был в прошлой статье);

  3. На нашем сайте большая часть текста, который видит пользователь, хранится в div с классом b-content. Поэтому тест извлекает контент из него с помощью метода find. Остальные блоки div мы тестируем отдельно;

  4. Получает из контента все слова;

  5. Проходится по каждому слову и по каждому символу;

  6. Проверяет, что символ не является русским.

Зачем разбиваете на слова? Почему сразу по тексту не пробежаться?
Думали ли регулярку составить на русские буквы и проверить на совпадение сразу со всем текстом?
Если нужно выделить слова, содержащее русскую букву - регуляркой можно и такое сделать

Ну и что? Встречал, реализовывал но не описывал ведь?

Человек описал, дал посмотреть на код. В чем проблема то?

Честно говоря я не уловил место, в котором говорится, что это уникальная разработка и раньше ещё никогда не разрабатывали.

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

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

Spreadsheet Compare is only available with Office Professional Plus 2013, Office Professional Plus 2016, Office Professional Plus 2019

Самое смешное, что в excel есть встроенный механизм сравнения 2х версий документа.

Но, в последнее время, людям проще написать скрипт на питон, чем выучить инструмент в котором они работают.

Видимо просто так не потаскать область. Можно смещать фокус (стрелками) и если лист в фокусе будет за границами видимости, то область видимости сдвинется

PyCharm так же из линейки IntyellijIDEA, так что плагин доступен для него на marketplace и я попробовал сейчас с community edition, всё грузится и работает

В Clion тоже работает.

Отличная утилита, попробую еще standalone редактор из-за редактора PlantUml.

Пришлось написать свою утилиту на Java, сохраняющую анимации как APNG.

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

Upd: А есть ли возможность в SciaReto обновить версию PlantUml?
printscale weekly zoom 3 в ганнт диаграмме не признает, ругается что версия 164 дня назад выпущена и знать не знает про zoom

Но когда автоматы разрастаются до сотен состояний ПЛК c МЭК будет совершенно недееспособен.

А вы точно понимаете о чем говорите?
Потому что, на сколько мне известно, в МЭК выполняются только активные состояния. Остальные даже не просчитываются. Поэтому нет разницы будет ли это 10 состояний, 100 или 1000.

Алгоритмы на MATLAB Stateflow это не Python, не надо путать. Это графическая нотация гораздо более мощная чем графические нотации МЭК.

Разрабатываю сейчас на Stateflow. Разницы не замечаю по сравнению с SFC.
Те же состояния, условия, переходы и действия.
Да, в MatLab есть FlowChart, но на ПЛК это может быть код на ST. Суть от этого не меняется.
ЧЯДНТ?
К стати, было бы интересно посмотреть на вашу реализацию StateMachine на C++ (или, не дай Б-г на C) на 100+ состояний. И на читабельность такого кода.

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

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

Просто диаграмма единственного цикла у автора в статье в принципе не верна.

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

И ПЛК сам по себе нечем не поможет если программист не приложит усилий по декомпозиции, профайлингу и оптимизации.

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

Подводя итог:
* у каждого инструмента свое назначение, и не стоит забивать гвозди микроскопом.
МЭК хорош именно тем, для чего он создан: низкий порог вхождения и визуальное представление кода, которое легко понять как бизнесу, инженерам так и программистам.
* Правильный дизайн софта важен, но не необходим. Бизнес будет рад исправно работающему говнокоду.

Понятно что библиотеки для поддержки "железа" т.е. драйвера - это минимум, который производитель должен предоставлять.
Я больше говорил о библиотеках которые будут использоваться при разработке бизнес-логики.
Но, в моем представлении, разработка ПО для ПЛК это больше разработка бизнес-логики и здесь есть достаточно возможностей для разработки кода не завязанного на ПЛК конкретного производителя.
Особенно, учитывая что в CODESYS есть полноценный ООП.

К стати да, по поводу ответственности неистово плюсую.

Перешел из АСУ ТП в IT (embedded + около него), я был удивлен на сколько люди безалаберно подходят к разработке и не понимают слова "надежность".

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

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

Тесты?

а зачем, их же поддерживать надо

Переиспользуемый код?

А нужно ли переиспользовать код?

И это дословные комментарии от Senior Developer'a

Я бы назвал у PLC одно преимущество - масштабируемость.

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

Последний проект на PLC делал вообще не читая IEC 61131-3 и спецификации ST.

Тогда, скорее всего, вы не использовали всех возможностей, которые предоставляет платформа и программировали так же, как будто это C, Python и пр.
Работает? Да.
Эффективно ли? Сопровождаемо ли? Хорошие вопросы.

Современные PLC уже не являются однозадачными.

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

У каждого производителя свои библиотеки.

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

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

Исключение, наврное, CodeSys. Про него много написано, и много вспомогательных библиотек.

Кроме этого у CODESYS есть магазин, на котором можно кой-чего найти. Иногда даже не за баснословные (по меркам СНГ деньги), и форум у них есть. Не знаю, на сколько он сейчас жив, но года 3 назад ответ можно было получить относительно быстро.

Данная статья нужна для привлечения внимания. Все проблемы решатся быстрее

В чем смысл общения между программистами CODESYS и Simatic, если, по большей мере, вещи написанные в одном не переносимы во второе?
Подходы, применяемые, конечно можно перенять. Но, как показывает практика даже при встрече люди стесняются\боятся говорить о своем опыте и своих ошибках.
Как-то подготавил выступление для конференции и показал коллеге на слайде "Как у нас было" на котором я рассказывал о ошибках, которые мы победили.
Коллега возмутился "УУУ ЭТО КАК ЭТО ТАК? НЕЛЬЗЯ такое говорить".

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

Есть и всякие штуки без привязки к конкретной среде разработки. Если интересно, на сайте оскат ру ребята выкладывают переводы документации и рекомендаций от PLCOpen. Иногда разбавляют оригинальными статьями.
Может пригодится.

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

На сколько я понимаю глубина стека ограничена везде, поэтому в контроллерах, например, рекурсию не используют либо запретив на уровне coding guide'а, либо на уровне ЯП.
В общем использовать рекурсию можно, если быть уверенным, что памяти всегда хватит на необходимое количество итераций, но, в реальной жизни этого ГАРАНТИРОВАТЬ, наверное, нельзя в 99% случаев.
В реальных проектах мне ее использование не встречалось.

Если я понял предыдущего комментатора правильно, то он жаловался на объем данных в статье, а не на ее форматирование.
Действительно, читать нечего. Всю статью можно сократить до 3 слов + 3 картинки: распечатайте цифру — вырежьте полистирол — подключите по схеме.

Архивируем статью до 4х предложений:


Summary:
Описание краткое, чтобы разраб мог быстро понять суть


Steps to reproduce:
1) открыть ссылку (ссылка )
2) сделать это
3) сделать то


Expected result:
Как ты ожидаешь, что должно работать


Actual result:
Как работает


Скриншоты приветствуются

У меня тоже управление освещением на ПЛК сделано, а вот управление через «умный дом» еще не сделал — нет сервера (на ПК запускал Home Assistant, все работает, но до покупки «Малины» еще не дошел).
По поводу Home Assistant, как по мне так много неочевидных вещей, еще хочу на openHab посмотреть.
Альтернативы Home Assistant рассматривал?

А мультирум аудио не ставил? Может есть какие рекомендации по выбору?
Провода по дому раскиданы, но еще не дошли руки.
Купил у китайцев несколько твердотельных реле на DIN-рейку на 5А. Если верить даташиту пусковой ток до 60А держат. Погонял месяц — все ОК. Сейчас докупил на всю квартиру, жду пока приедут.

Да, механические реле на 5А. Не ожидал, что пусковой ток светодиодных БП может быть настолько выше. Реле залипает при включении 24Вт освещения

Information

Rating
Does not participate
Date of birth
Registered
Activity