Comments 19
Мда, эпично. 8 лет имею дела с сименсом, но до такого не додумался.
UFO just landed and posted this here
Мои коллеги запрограммили для демо на нашем промышленном защитном контроллере Pong :)
Ввод данных — двумя переменными резисторами, подключенными к AI
Вывод — на визуализацию
Вся логика — на FBD
Ввод данных — двумя переменными резисторами, подключенными к AI
Вывод — на визуализацию
Вся логика — на FBD
А FBD то и ничем не хуже, в сименсе да, STL просто предоставляет полный доступ ко всем функциям, которые в остальных языках недоступны, но FBD всегда был моим любимчиком в университете, сказывалось увлечение схемотехникой и некоторая похожесть внешнего вида на микросхемы.
А фотографии есть?
Еще у меня в коде есть одна фича — весь просчет идет раз в 2 секунды, пробовал ставить раз в одну, но тогда SCADA не успевала обновляться, есть такое. Получалось, что некоторые кадры проскакивали. Да и в самом сименсе говорили, что она не предназначена для мониторинга быстротекущих процессов.
Теперь интересно попробовать подобное — как будет выглядеть…
А фотографии есть?
Еще у меня в коде есть одна фича — весь просчет идет раз в 2 секунды, пробовал ставить раз в одну, но тогда SCADA не успевала обновляться, есть такое. Получалось, что некоторые кадры проскакивали. Да и в самом сименсе говорили, что она не предназначена для мониторинга быстротекущих процессов.
Теперь интересно попробовать подобное — как будет выглядеть…
В ненормальное программирование однозначно! :)
Интересно, а на чистом LD это как все выглядеть будет. И можно ли будет вообще реализовать.
посмотрел.
Генератор пульсов сделан, пожалуй, максимально извращённым способом.
Один раз мне достался объект, который до меня делали итальянцы. Сделали, уехали. Заказчик захотел кое-что изменить, кое-что добавить и т.д. Среди того эпического спагетти-кода был и такой номер. ПИД контроллер вызывали из OB1 по таймеру. В одном нетворке таймер, в следующем вызов ПИД. Первое, что я сделал — перенёс вызов ПИД в OB34.
А теперь переведу на русский. OB1 — это основная программа, исполняется в бесконечном цикле. ПИД надо вызывать строго через одинаковые промежутки времени, а не как попало (как попало произойдёт, если его вызывать из главной программы). Для этого есть циклические прерывания, и одно из них — OB34 — 200 мс.
А итальянцы этого то ли не знали, то ли тупо копировали предыдущие шедевры…
Генератор пульсов сделан, пожалуй, максимально извращённым способом.
Один раз мне достался объект, который до меня делали итальянцы. Сделали, уехали. Заказчик захотел кое-что изменить, кое-что добавить и т.д. Среди того эпического спагетти-кода был и такой номер. ПИД контроллер вызывали из OB1 по таймеру. В одном нетворке таймер, в следующем вызов ПИД. Первое, что я сделал — перенёс вызов ПИД в OB34.
А теперь переведу на русский. OB1 — это основная программа, исполняется в бесконечном цикле. ПИД надо вызывать строго через одинаковые промежутки времени, а не как попало (как попало произойдёт, если его вызывать из главной программы). Для этого есть циклические прерывания, и одно из них — OB34 — 200 мс.
А итальянцы этого то ли не знали, то ли тупо копировали предыдущие шедевры…
Об итальянском коде тоже придерживаюсь негативного мнения, без бутылки не разберешь. Мне поподалось, что тупо в главном цикле вызывают ПИД, но функции скармливают время последнего цикла. Теоретически ПИД функция может все корректно расчитать зная последний кусок времени. При циклическом вызове просто используется константный параметр, например 100мс, а тут нестандартненько так.
А для обнуления есть такая штука, как SFC21 «FILL»
Sign up to leave a comment.
Змейка на ПЛК? Легко!