Frayl
25.03.2013, 07:30
Здравствуйте. Подскажите решение или правильное направление, пожалуйста.
Есть у меня несколько экранов, на них жмутся кнопки. Панель работает в режиме слейв(так надо, потому что rs232 занят - была бы мастером я бы не задавал таких вопросов). Проблема в том что если ставить реакцию на кнопку "Моментальное 1" плк не успевает опросить и увидеть что панель выставила свой бит в единицу.
Попробовал делать так чтобы все кнопки при нажатии на них записывали в некий один регистр своё значение и обрабатывать изменение этого регистра на плк с помощью тригера R_TRIG. Вот и возникла проблема - повторно на кнопку уже не нажать. Попробовал писать потом с плк в этот регистр (панели) "0" а он не пишется.
в ПЛК-конфигурации есть Register input r_buttons с адресом 32 и Register Output Module state wr_buttons и comwr_buttons тоже с адресом 32.
b_main_zero_trig(clk:=(r_buttons=1));
IF but_pressed THEN
wr_buttons:=0;
comwr_buttons:=255;
but_pressed:=FALSE;
ELSE
comwr_buttons:=254;
END_IF;
IF b_main_zero_trig.Q THEN
but_pressed:=TRUE;
END_IF;
Есть у меня несколько экранов, на них жмутся кнопки. Панель работает в режиме слейв(так надо, потому что rs232 занят - была бы мастером я бы не задавал таких вопросов). Проблема в том что если ставить реакцию на кнопку "Моментальное 1" плк не успевает опросить и увидеть что панель выставила свой бит в единицу.
Попробовал делать так чтобы все кнопки при нажатии на них записывали в некий один регистр своё значение и обрабатывать изменение этого регистра на плк с помощью тригера R_TRIG. Вот и возникла проблема - повторно на кнопку уже не нажать. Попробовал писать потом с плк в этот регистр (панели) "0" а он не пишется.
в ПЛК-конфигурации есть Register input r_buttons с адресом 32 и Register Output Module state wr_buttons и comwr_buttons тоже с адресом 32.
b_main_zero_trig(clk:=(r_buttons=1));
IF but_pressed THEN
wr_buttons:=0;
comwr_buttons:=255;
but_pressed:=FALSE;
ELSE
comwr_buttons:=254;
END_IF;
IF b_main_zero_trig.Q THEN
but_pressed:=TRUE;
END_IF;