Раньше, когда я не знал о чем писать, то писал о ПЛК, но сейчас разработку приостановили из-за приоритетов, но вот вам новое приключение. PLC Warrior (кодовое название) - платформа для программистов ПЛК, которая позволяет решать задачки на языке ST. Сейчас есть два типа заданий - задачи и сценарии. Задачи - это какой-то алгоритм, который выполняется один цикл ПЛК, Сценарии - технологические задачи, можно отследить прогресс в профиле. Отвечая на вопросы, которые могут быть: тестовые доступы будут, большую часть времени я просто буду кидать ссылку в чат группы, чтобы люди потестировали и накидали замечаний и идей. Регистрация по почте номинальная, потом прикручу нормальную + регистрация через TG. Да, используется LLM.
Тим лид промышленной автоматизации
· 05.099 комментов
· 06.09
А LLM тут только для генерации условий, или ещё проверяете решения? В задачах на ST особенно интересно, как ловите код, который выглядит правильно, но ломается на следующем цикле.
0
ответить
коммент удалён
· 06.09
Проверка решений тут происходит следующим путем: первое это синтаксический анализ, есть ли ошибки в коде, потом этот код передается на runtime, который представляет собой цикл плк: работа с входами, цикл программы, работа с выходами. Тестовые кейсы знают что на входе, что должно быть на выходе, а также состояние входов и выходов каждый период времени. В системе сейчас это 100 ms. Если условно на 300 ms выход не соответствует эталонному, то будет ошибка
0
ответить
ответ удалён
· 06.09
Логично, по шагам ловит почти всё. Меня всегда кусало накопленное состояние: таймеры, защёлки, фронты. Одиночный цикл зелёный, а на N-м уже расходится. Гоняете это длинной последовательностью?
0
ответить
ответ удалён
· 06.09
Тут мне стоит уточнить, что означает длинная последовательность?
0
ответить
ответ удалён
· 06.09
Имею в виду не одиночный шаг, а сценарий на много циклов подряд с меняющимся входом. Чтобы таймер успел добежать, защёлка залипнуть. Баг на сотом цикле на коротком кейсе просто не доживает.
0
ответить
ответ удалён
· 06.09
Если моей целью было проверка решений на надежность, то я бы делал систему для проверки на надежность. Код для ПЛК из-за того что он детерминирован, в идеале должен быть, либо отвалится после первого полного цикла, где будут проверены все состояния, либо будет работать дальше. Есть ситуации при которых код может отвалится в долгую, обычно это уже парсинг данных или неправильные расчеты по условиям, когда происходит ситуация, которая не была описана в коде, чтобы такое вычислить потребуется правильные тестовые данные. На данный момент я не смотрю в сторону такой сложной логики.
0
ответить
ответ удалён
· 06.09
Согласен, для чистой комбинаторики первый полный цикл всё закрывает. А ломается там, где состояние переносится между циклами или приходит вход не из кейсов. По сути упирается в тестовые данные, ты прав.
0
ответить
ответ удалён
· 07.09
Прикольно! Типа литкод?
1
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 07.09
Ага
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён