PDA

Просмотр полной версии : Счетный механизм



Rixo
02.09.2025, 15:38
Задача: В печь укладываются по 1 заготовке, которые передвигаются по печи, и на выходе так же по одной выталкиваются. Заготовок на ложементах в печи должно быть не более 10 штук. После того как заготовка попала на первый ложемент происходит ее передвижение на второй ложемент для загрузки следующей заготовки. Так все десять загружаются. Когда выгрузится 10-я заготовка в печь может быть загружена еще заготовка, на первое место. Так последовательно с разными интервалами загружаются/выгружаются заготовки. Перемещение в печи одновременное порядок и расстояние между заготовками сохраняется. Но возможны пропуски между заготовками (11111011111). Отображение позиций с помощью ряда ламп (10 штук), то есть, где есть заготовка в этой позиции горит лампа.
Как собрать это на ПР200 не соображу? Нужна помощь. Пробовал с помощью сдвигового регистра, в целое, а потом разложить целое на биты - не пошло.

kondor3000
02.09.2025, 16:06
Задача: В печь укладываются по 1 заготовке, которые передвигаются по печи, и на выходе так же по одной выталкиваются. Заготовок на ложементах в печи должно быть не более 10 штук. После того как заготовка попала на первый ложемент происходит ее передвижение на второй ложемент для загрузки следующей заготовки. Так все десять загружаются. Когда выгрузится 10-я заготовка в печь может быть загружена еще заготовка, на первое место. Так последовательно с разными интервалами загружаются/выгружаются заготовки. Перемещение в печи одновременное порядок и расстояние между заготовками сохраняется. Но возможны пропуски между заготовками (11111011111). Отображение позиций с помощью ряда ламп (10 штук), то есть, где есть заготовка в этой позиции горит лампа.
Как собрать это на ПР200 не соображу? Нужна помощь. Пробовал с помощью сдвигового регистра, в целое, а потом разложить целое на биты - не пошло.

Упаковка и распаковка бит из маски, битовые выходы, ваша последовательность, 85544
Маска - число для передачи бит в панель. В одном регистре можно упаковать до 16 бит. Можно и на ST, через точку.

EFrol
02.09.2025, 17:57
Вариант 1:
85547


function_block FIFO10_

var_input
IN, C : bool; // Наличие заготовки и сигнал сдвига
end_var

var_output
Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10 : bool;
end_var

var
Q : udint; // Стек
rt : SYS.RTRIG; // Фиксатор сдвига
end_var

rt(I:=C); // Фиксируем сдвиг по фронту сигнала C
if rt.Q then
Q := shl(Q, 1); Q.0 := IN; // Сдвиг и фиксация заготовки
end_if

Q1 := Q.0; Q2 := Q.1; Q3 := Q.2; Q4 := Q.3; Q5 := Q.4; Q6 := Q.5; Q7 := Q.6; Q8 := Q.7; Q9 := Q.8; Q10 := Q.9;

end_function_block

Rixo
04.09.2025, 09:57
С заталкиванием заготовки в печь в 1-у позицию (и перемещение), вроде, разобрался.
Но остается второй вопрос: теперь, когда заготовки прошли 10 позиций(прогрелись), необходимо из 10-й позиции (там два шибера открываются на наружных стенках печи) вытолкнуть заготовку из печи и снова переместить оставшиеся заготовки в сторону 10-й. Задача , вроде, та ж, но как совместить выход с первого и второго процесса (далее на выходы ПР), не пойму?
85575

EFrol
04.09.2025, 15:10
Вариант 2:
85585


function_block FIFO10_

var_input
PUSH, POP, SH : bool; // Втолнуть, вытолкнуть, сдвинуть очередь
end_var

var_output
Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10 : bool;
end_var

var
Q : udint; // Стек
rtPUSH, rtPOP, rtSH : SYS.RTRIG; // Фиксатор кнопок
end_var

rtPUSH(I:=PUSH); rtPOP(I:=POP); rtSH(I:=SH);
if rtPUSH.Q then Q.0 := TRUE; end_if
if rtPOP.Q then Q.9 := FALSE; end_if
if rtSH.Q then Q := shl(Q, 1); end_if

Q1 := Q.0; Q2 := Q.1; Q3 := Q.2; Q4 := Q.3; Q5 := Q.4; Q6 := Q.5; Q7 := Q.6; Q8 := Q.7; Q9 := Q.8; Q10 := Q.9;

end_function_block


Ну или:
85589