Спасибо, буду пробовать!
Вид для печати
Помогите с вопросом
ПР200
На экран вывожу переменную результат целочисленную и переменную порог тоже целочисленную, это Бары давление.
При срабатывании порога переключается клапан.
Вопрос про редактирование переменной порог, можно ли сделать редактирование не по единице а сразу по 5, в настройках не нашел такого и в интернете тоже. ЧТобы не зажимать кнопку и ждать подолгу, а сразу переменную увеличить на 5,10,15
Вы пишите не в тот раздел, здесь ПЛК (среда CoDeSys V2.3), вам нужно писать в раздел Программируемые реле (вопросы для новичков) или Овен Лоджик.
По вопросу сделайте булевую переменную, которая управляет SEL, к нему подключите +5 и по включении переменной, у вас будет прибавляться по 5.
Не получается настроить тренд визуализации в режиме онлайн подключения к ПЛК110-30[M02]
Тренды же работают?)
скрины настроек тренда:
Работают, для примера вывел секунды красным и минуты синим, только онлайн Вложение 71474
Настраивать надо тут, гориз. осьВложение 71475 верт. ось Вложение 71476переменные Вложение 71477Тип линии Вложение 71478
Спасибо, завтра опробую.
Не подскажете, чем отличаются принципиально тренды и трассировка (когда она работала ещё) ?
Есть ли возможность записывать тренды в файл на флешку подключенную к ПЛК? (у нас ПЛК110-30[M02]), но это не в онлайн режиме, а когда ПЛК запущен нормально автономно в RUN
Она работает, только её надо настроить и запустить Вложение 71481
Трассировка больше подходит для быстрых процессов, максимум 1024 семпла, это на пол экрана 5000 ms, , больше растянуть нельзя.
на скрине те же сек. и мин., делённые на 10 и переведены в REAL ( просто для примера).
На флешку с ПЛК тренды не записывал, поэтому не знаю, наверное можно.
По идее, можно архивировать переменные, а потом по ним построить график в Exel.
Делал давно уже проект, у меня тренды архивировались на панели СП310, с возможностью просмотра на панели и вывода значений на флешку, там всё проще и удобней.
Трассировка у меня не заработала, написал сюда пост, потом увидел аналогичные посты на форуме, и ответы на них что трассировка не поддерживается более овном.
Архивирование на флешку у меня настроено, но там период секунды, а переменные отслеживать нужно с периодом в миллисекундах
Вот скрин, настроить число и шаг семплов, добавить переменные внизу. Вложение 71492
После настройки вывести переменные в Перо1, Перо 2 и т. д. В настройках начать трассировку и автоматическая трассировка.
Число и шаг семплов можно менять, растягивая время. Запускать можно без триггера и по триггеру,
но вот считать записанное, как раз и не получается.
Вроде делаю так же, но одни нули опять в трассировке. При этом отслеживаемые значения всегда не нулевые, на последней картинке видно что ненулевые
Вложение 71500Вложение 71501Вложение 71502
Есть способ посмотреть размер оставшейся памяти на ПЛК 110-30 [M02]?
При заливке загрузочного проекта он занимает 146 кб
Не хочет компилить переменную размером 1Мб, можно сделать вывод что величина свобоной памяти у меня сейчас от 100 Кб до 1 Мб
результат компиляции:
Вложение 71591
Всем привет. Не соображу как написать в CFC (в ST грамотно не смогу) вот что: я получаю в переменную весовые данные. Нужно взять пять последовательно получаемых значений и усреднить их. затем цикл повторяется.Проблема возникла из за того что Штатный блок из Codesys выдает некорректные значения. а такой метод дает приличное приближение к среднему значению. Понимаю что нужно как-то записывать в массив и при достижении индекса 5 просуммировать значения и поделить на пять но никак не получается грамотно это написать. Пенсионер я да и киповец по образованию.
Изучайте инструкции типа FIFO. Правда я не знаю есть ли подобное в Codesys.:confused:
Ещё есть вопрос, 5 значений, потом следующие 5? Или 5, а потом 4 старых и 1 новое, и т.д.?
Спасибо, ознакомился с блоком, Я использовал штатный STATISTICS_INT он так-же сглаживает, но из за того что я предварительно фильтрую случайные и не корректные значения,часть их не записывается, поэтому установление времени выборки в блок, сильно влияет на результат, вот я и хочу просто брать выборку из последних пяти правдивых значений и усреднять без привязки ко времени а просто по наличию.
Да, получил 5, обсчитал затем сброс и жду следующие 5.
Чем среднее скользящее не угодило?
Критерий такой, каждое следующее значение меньше предыдущего, не равно 0 и расход в пределах верхней и нижней границ допуска,ну это работает вроде хорошо
Я и не хотел ничего переделывать- заставили, ищем способ точнее дозировать компоненты
input
value: real;
cnt_average:byte; //1..255
output
average:real;
var
i,j:byte; //byte!
m:array[0..255]of real;
---------
if value = m[i] then
return; //в опу время
end_if
i:=i +1;
m[i]:=value;
cnt_average:=max(1,cnt_average);
average :=0;
for j:=0 to cnt_average - 1 do
average :=average + m[word_to_byte(i-j)];
end_for
average:=average/cnt_average;
делаем prorgram и вставляем евоный квадратик в поле квадратиков
Две палки слева, и одна справа думаю понятно что.
Добрый день! Подскажите есть ли в 2.3 опция сбросить значения регистров в ноль при потере связи по modbus с устройством по аналогии с codesys 3.5 (работаю только в этой версии, но тут нужно залезть в чужую программу)
Добрый день. Вопрос такой - при объявлении ФБ или структуры необходимо часть переменных сделать retain persistent, а не весь блок. Как это сделать? Пытался пользоваться директивой {nonpersistent} , но что то не работает, по прежнему весь ФБ в retain.
если что - ПЛК 110 М2, версия кодесис 2.3.9.61
Ответ - никак. В справке про это четко написано.
Вложение 71787
В документе написано что можно с помощью директивы. С 5-19
Я к тому что может кто смог её использовать и получилось, либо это зависит от ПЛК либо что-то еще надо настроить что не описано. Либо - в мануале - ошибка или неверный перевод.
Так retain или persistent или retain persistent?
Добрый день коллеги!
Продолжение проекта ПЛК110 + МВ110-8ас и String:
считываю с каждого МВ данные в String и присваиваю этот string в структуру struct_original_8AC
На скрине выдает "Х = "Переполнение строки" это нормально или ненормально?
Вложение 71795
По структуре если считать что command равен 1 байту то получается 80 байт, но у меня command в структуре равен DWORD то есть 4 байта. Не пойму как правильно должно быть.Код:TYPE struct_original_8AC :STRUCT
command : DWORD;
SRD : ARRAY[1..8] OF INT;
Read : ARRAY[1..8,1..3] OF WORD;
x : STRING(15);
END_STRUCT
END_TYPE
По этому поводу уже писал, при работе блоков, все SRD должны быть 0, все Read должны быть числами не равными 0, если есть смещение, то это сразу видно.
На command : DWORD и STRING плевать, они для выравнивания.
У вас на скрине похоже не все датчики подключены, по некоторым SRD не 0, а число как ошибка датчиков.
Так как тип стоит тип INT вместо WORD.
У меня ошибка обрыв датчика показывает 61453, а у вас -4083, а в HEX это 16#F00D - обрыв датчика.
У вас всего должно быть DWORD 4 байта +80 байт = 84 байта
И зачем вам стринг, так и не понял.
Подключены только пара датчиков, показания по ним верные, меня смутило наличие надписи "Переполнение строки" думал мало ли какой перекос у меня.
У меня проблема такая что изначально было сконфигурировано 7шт UMD для семи компрессоров, а по факту оказалось что нужно три и вот когда я удаляю последине 4 шт у меня перестает все работать так как возможно плывут все данные. Массивы и структуры я переделал под 3 компрессора, а вот когда удаляю UMD лишние то все плывет. Причем в Master кроме этих UMD нет ничего.Вложение 71796
В string я же получаю данные от МВ110 и он максимально 80 байт вмещает и чтобы не путаться добавили X[15]: string для удобства, чтобы "один string == один МВ110". Или вы про какой string?
У меня вот так происходит объявление структуры:
Код:original_8AC AT %QB6.1.0 : ARRAY[1..3] OF struct_original_8AC;