И как делать эту задержку, можно по подробней? Пробовал после LE ставить AND и TON , но что то не получилось. Единственное может я время мало ставил, секунд 5Я в таких случаях делаю задержку
У меня проблема в том, что при подачи питания на плк и мв 8а на LE проскакивает импульс который активирует триггеры , хотя не должен температура плюсовая.
Блин, столько постов наплодили.
Ни каких отрицательных значений при включении не проскакивает!
Ну не ужели не понятно, что условие "LE" по русски "меньше или равно". При старте программы переменная a_p однозначно равна "0" до тех пор пока не прочитается значение из модуля МВ. По этому при старте программы условие a_p=0 выполняется всегда, R_TRIG срабатывает и Ваши Pusk1 и A_pusk закономерно установятся в TRUE. Это даже в эмуляции можно проверить.
Вложение 18370
Замените "LE" на "LT", или сравнивайте не с "0", а с"-0.5", например.
ЗЫ. Если уж очень хочется строгое выполнение условия "<=", то сделать так
Вложение 18371
Порядок ФБ важен, таймер ТР должен выполнятся раньше чем LE. Уставку для таймера подобрать по факту.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Спасибо, всё заработало.
Есть ПЛК63 с модулем МК110.8Д.4Р
в основной программе реализована связь между ними
в подпрограммах ST_1; - ST_5; реализация плавного регулирования 5ти групп светильников подключенных на выхода 0-10V от кнопок пульта(задание сцен освещения 4шт) и от выключателей.
От выключателей все работает нормально, каждая отдельная группа регулируется своим выключателем плавно изменяется напряжение на выходе от 0 до 10 или от 10 до 0
От одной кнопоки пульта регулируются сразу все группы освещения, так называемая сцена освещения.
Проблема: регулировка на первых двух выходах(AO2,АО3) происходит плавно, а на последних трех(АО4,5,6) скачком, хотя все подпрограммы одинаковы и в онлайн симуляции регулирование плавное, в реальности проверено тестером на выходах скачок
Пробовал увеличить время цикла выполнения программы отличное от 1ms - тогда пропадает связь.
Пробовал заменить контроллер - все тоже, плавности нет
задача перегнать bit в word и обратно, подскажите пожалуйста все ли я правильно делаю
Код:PROGRAM PLC_PRG VAR Var_Word: WORD; Byte_low: BYTE; Byte_hi: BYTE; Byte_low2: BYTE; Byte_hi2: BYTE; Bit1: BOOL; Bit2: BOOL; Bit3: BOOL; Bit4: BOOL; Bit5: BOOL; Bit7: BOOL; Bit8: BOOL; Bit9: BOOL; Bit10: BOOL; Bit6: BOOL; Bit11: BOOL; Bit12: BOOL; Bit13: BOOL; Bit14: BOOL; Bit15: BOOL; Bit16: BOOL; Bits: ARRAY [1..16] OF BOOL; UNPACK1: UNPACK; UNPACK2: UNPACK; PACK1: UNPACK; PACK2: UNPACK; END_VAR (*заполняем биты (библиотека UTIL)*) Bit1:=1; Bit2:=0; Bit3:=0; Bit4:=0; Bit5:=0; Bit6:=0; Bit7:=0; Bit8:=0; Bit9:=1; Bit10:=0; Bit11:=0; Bit12:=0; Bit13:=0; Bit14:=0; Bit15:=0; Bit16:=0; (*упаковываем биты в байты*) Byte_low2:=PACK(Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7,Bit8); Byte_hi2:=PACK(Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15,Bit16); (*ну и байты в слово объединям*) Var_Word:=SHL(BYTE_TO_WORD(Byte_hi2),8) OR BYTE_TO_WORD(Byte_low2); (*ОБРАТНАЯ ПРОЦЕДУРА Переменная Var_Word разбивается на два байта*) Byte_low:=WORD_TO_BYTE(Var_word); Byte_hi:=WORD_TO_BYTE(Var_word/256); (*байты раскладываются на биты с помощью ФБ Unpack (библиотека UTIL)*) UNPACK1( B:=Byte_low , B0=>Bits[1], B1=>Bits[2] , B2=>Bits[3] , B3=>Bits[4] , B4=>Bits[5] , B5=>Bits[6] , B6=>Bits[7] , B7=>Bits[8] ); UNPACK2( B:=Byte_hi , B0=>Bits[9] , B1=>Bits[10] , B2=>Bits[11] , B3=>Bits[12], B4=>Bits[13] , B5=>Bits[14], B6=>Bits[15], B7=>Bits[16]); (*все получили массив Bits заполненный (другая переменная чтобы легче было оценивать результат) *)