Просмотр полной версии : Owen logic
Oceandivide
02.12.2023, 18:33
Здравствуйте, в ходе реализации управления таймером через дискретные входы столкнулся с такой проблемой, что в случае арифметических операций сложения и вычитания не могу записать результат в одну переменную (среда разработки не позволяет это сделать) должно получится так в случае если пользователь нажимает кнопку увеличения на дискретный вход поступает единица и должно, что-то получится на подобии
int x = int x + 1
В случае вычитания
int x = int x - 1
Но среда разработки позволяет ссылатся только на один такой блок, подскажите пожалуйста как решить данную проблему, либо может у кого есть другая идея по реализации?
kondor3000
02.12.2023, 18:45
Здравствуйте, в ходе реализации управления таймером через дискретные входы столкнулся с такой проблемой, что в случае арифметических операций сложения и вычитания не могу записать результат в одну переменную (среда разработки не позволяет это сделать) должно получится так в случае если пользователь нажимает кнопку увеличения на дискретный вход поступает единица и должно, что-то получится на подобии
int x = int x + 1
В случае вычитания
int x = int x - 1
Но среда разработки позволяет ссылатся только на один такой блок, подскажите пожалуйста как решить данную проблему, либо может у кого есть другая идея по реализации?
Например так 72067
На самом деле вариантов несколько, например так:
72068
Вот и подтверждение, что решений много
Сергей0308
02.12.2023, 18:55
Здравствуйте, в ходе реализации управления таймером через дискретные входы столкнулся с такой проблемой, что в случае арифметических операций сложения и вычитания не могу записать результат в одну переменную (среда разработки не позволяет это сделать) должно получится так в случае если пользователь нажимает кнопку увеличения на дискретный вход поступает единица и должно, что-то получится на подобии
int x = int x + 1
В случае вычитания
int x = int x - 1
Но среда разработки позволяет ссылатся только на один такой блок, подскажите пожалуйста как решить данную проблему, либо может у кого есть другая идея по реализации?
А если элементы последовательно поставить?
В менеджере компонентов есть макрос универсального, реверсивного 32 битного счётчика, может его кишки посмотреть, там нечто подобное!
Если это не одновременный + и - к переменной их и надо просто одно за другим действие ставить.
X add + y далее sub - y = newX
Oceandivide
02.12.2023, 20:36
Всем большое спасибо, оказывается всё было настолько просто
На перспективу. Так как мы кнопочками что-то меняем, то как минимум, необходимо ограничить изменяемое значение. А, еще, можно сделать так, чтобы при удержании кнопки значение автоматом менялось.
72069
Сергей0308
03.12.2023, 01:17
Мой вариант в вещественном виде:
72074
По R - запись числа со входа D_R, затем "убираем" R и входами + и - увеличиваем или уменьшаем записанное значение на величину на входах D+ D- cоответственно!
Выходное значение можно сделать энергонезависимым, если сделать энергонезависимой внешнюю переменную Q, как в моём проекте, всё!
72075
И, желаю ТС хотя бы научиться формулировать свои хотелки, в смысле, ясно и понятно, пока такого даже близко нет, каждый может интерпретировать по своему усмотрению!
kondor3000
03.12.2023, 11:07
Чем хорош ST, скопировал текст в ФБ и получил готовый блок с предустановкой, ограничением (0-100 можно изменить) и регулировкой при удержании 72077
А также возможностью переделки на Float, только изменением типа переменной в ФБ.
function_block fB //имя функционального блока.
var_input //объявление входных переменных
Plus : bool; //входная переменная с типом данных bool
Minus : bool;
In : udint;
end_var
var_output //объявление выходных переменных
Q : udint; //выходная переменная с типом данных udint
end_var
Q:=In;
if Plus then Q :=Q+1; end_if
if Minus then Q :=Q-1; end_if
if In<1 and Minus then Q :=0; end_if
if Q>=100 and Plus then Q :=100; end_if
end_function_block
..
Можете пальцем мс отмерять ? Например - 10 ))
Завидую Вашей реакции.
МихаилГл
03.12.2023, 12:19
Ещё можно со временем удержания поиграть. Т.е. чем дольше держишь, тем больше дискрет прироста/убавления.
МихаилГл
03.12.2023, 12:19
Можете пальцем мс отмерять ? Например - 10 ))
Завидую Вашей реакции.
Да, нужен таймер или триггер.
Можете пальцем мс отмерять ? Например - 10 ))
Завидую Вашей реакции. Слышь! =) Ты не учитываешь барабанщиков!
Считаем. Например, песня из конца этого моего видео (тестового) имеет темп 200. Это значит, что в минуту идёт 200 ударов длительностью в 1/4 ноты.
Правая рука играет нотами в 1/8 длительности. То есть в два раза чаще, чем 1/4. То есть 200 х 2 = 400 ударов в минуту.
Ноги в одном месте припева играют в 1/16ую нот. То есть в 4 раза быстрее чем темп 200 или в 2 раза быстрее, чем руки. Значит 400 х 2 = 800 ударов в минуту.
Как это в мсек перевести-то? У меня с математикой туго. Вроде как 800 / 60 = 13,3 удара в секунду. И вроде как это у нас 13,3 Герца, а значит 1/13,3 = 0,075 сек, что ли?
Вот видео: https://www.youtube.com/watch?v=iPakSkITCcE
Смотреть с 1:10 и дальше. С примерно 1:30 внимание на ноги.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot