Ребята, я не понял. Наверное криво формулирую вопрос.
Целостность мне сейчас по-барабану. Это уже вопрос следующего порядка. Хотелось бы чтобы она просто работала.
Мастером так мастером, если надо.
Проблемы следующие.
На ИП320 не нашёл как задавать начальное значение. Мало того. Если я задаю границы для этого значения, ИП почему то в начальный момент даже этого не видит.
То есть условно у меня есть уставка температуры она должна быть в пределах 40-60 градусов. Я запускаю проект и ничего не нажимаю на панели. И в цикле связи с панелью ПЛК забирает из панели 0. Что сразу же затирает моё значение.
Короче вопрос такой. Как мне сделать, чтобы текущее значение отображалось на дисплее?
Или если я панель сделаю мастером, то это автоматом произойдёт?
Ясно, что если бы панель была со своей прогой, я бы это на крайняк руками разрулил.
Спасибо. Уже решил аналогичным способом.
Просто в голове некий... диссонанс ... )))
1. Панель оставил слэйвом.
2. В панеле завёл на один адрес 2 переменные с разными именами. 1 на запись - вторую на чтение... ))
3. В цикле обращения к панели, сделал тоже что и Вы.
Проверил - работает...
Хотя, если задумываться, то нюансы могут быть.
Я у себя, когда работаю, ну например в OPC сервере, я несколько типов операций делаю. В частности групповые операции.
Здесь нет подробного описания, непонятно как формируются запросы к панели. Объединяет ли она их? Чётко ли следует сформированному списку адресов? Мешает ли запись с чтением или сначала идёт чтение, а потом запись?
Но для данного проекта, думаю я его закрою. Сейчас устраню замеченные мной нюансы и пускану.
Для данного объекта рюшек не надо. Я запуск производил сидя в луже на табуретке. Шкаф и стены слегка облезли, трубы поржавели, на голову каплет....
sasav
Как делаю я в случае ненулевых значений первоначальных уставок. Панель мастер, ПЛК слейв. В ПЛК пишу проверку требуемых регистров на ноль. В случае если таки ноль, то присваиваю безопасное значение из допустимого диапазона. Проверка (и присванивание если надо) делается только при старте(включении) ПЛК и на работу остальной программы далее не влияет. Очень удобно при отладке. И выручало на ПЛК110 старой серии, где ретайны сваливались, если в ПЛК помирал аккумулятор.
Здравствуйте!
Совсем недавно начал изучать синтаксис ST и столкнулся с задачей, с которой не могу разобраться.
Нужно посчитать время, когда входная переменная INPUT имеет значение FALSE за сутки и сколько раз она принимала значение FALSE.
То есть: вход INPUT может принимать значение FALSE много раз за сутки, поэтому нужна сумма временных интервалов, когда INPUT имел значение FALSE и количество значений FALSE, которые будут обнуляться в заданное время (например, в 9:00 ежедневно).
Код:VAR INPUT: BOOL; Count: UDINT; (*сколько раз она принимала значение FALSE*) SumTimeF: TIME; (*время, когда входная переменная INPUT имеет значение FALSE за сутки*) CountOld: UDINT; (*За предыдущие сутки*) SumTimeOld: TIME; (*За предыдущие сутки*) F_TR: F_TRIG; delta: TIME; (*Время цикла ПЛК*) t1: TIME; prevScanTime: TIME; ttt: TIME; init: BOOL; TON_24h: TON; END_VAR (*Время цикла ПЛК*) t1:=TIME(); IF NOT init THEN (*Первый цикл*) prevScanTime:=t1; init:=TRUE; Count:= Count + BOOL_TO_INT(NOT INPUT); END_IF delta := t1 - prevScanTime; prevScanTime := t1; (*-------------------*) F_TR(CLK:= INPUT); (*Текущие сутки*) Count:= Count + BOOL_TO_INT(F_TR.Q); IF NOT INPUT THEN SumTimeF:= SumTimeF + delta; END_IF TON_24h(IN:= NOT TON_24h.Q , PT:=t#24h); (*За предыдущие сутки*) IF TON_24h.Q THEN CountOld:= Count; SumTimeOld:= SumTimeF; Count:= 0; SumTimeF:= t#0ms; END_IF
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Здравствуйте! Подскажите пожалуйста правильно ли я адресую (с учетом всех необходимых выравниваний) регистры в модбас. ПЛК160 (слейв), OP320 (мастер), из ПЛК считываю переменные модуля Statistic. Заранее спасибо!
Слегка изменил вашу программу. Обратите внимание на переменную temp_m.
Спасибо! А почему надо преобразовать в тип ВОРД? Есть же в режиме слэйв у ПЛК переменная типа ФЛОАТ (Real)? В модуле Statistic переменная температуры тоже REAL?
Показания к сожалению на ОР320 не выводятся, проверить не могу. Пишет на панели "потеря связи". (как после загрузки конфигурации, так и при соединении по RS485 с ПЛК) Микросхему RS485 и цифровой драйвер к ней пропаял, но не помогло. Что может быть еще?
P.S.Панель рабочая, работает как мастер так и слейв с ПР200 (хотя после загрузки конфигурации тоже пишет "потеря связи").