Собственно так и сделал, еще вчера, спустя пару минут после сообщения на форуме. Умные мысли приходят после :-)
Вложение 65496
Вид для печати
Собственно так и сделал, еще вчера, спустя пару минут после сообщения на форуме. Умные мысли приходят после :-)
Вложение 65496
Так у Вас всего семь аварий, а макрос для большого количества аварий я придумывал(для подсчёта количества бит в состоянии "1" в целочисленной переменной), впрочем это не помешает его использовать для семи аварий, вот добавил в проект макрос вставки бит, до восьми бит, вам должно хватить, ранее был на 16 бит и все эти макросы с расширением, для этого у них верхний целочисленный вход "Х" и настройки в свойствах макроса:
Вложение 65498
Вложение 66026
Этот вариант тоже интересен (если бы ST в ПР мог делать AND)
Вложение 65501
Валенок по идее все штатные функции в ST коде должны работать так же, как и FBD на холсте, и если AND и остальное не может работать с целочисленными так же, то это косяк реализации.
melky, то что хотелось бы - и я не против (о чем сказал ранее) - п#2837
Учитывая реальность (нет битовой логики, надеюсь - пока) и применительно к заявленной задаче (посчитать биты), то какой смысл в сложных алгоритмах и тем более на FBD. Чего там выгадывается ? Якобы производительность ? Это в п#2836-то, который на FBD т.к. нет битовых в ST ? )))
2й алгоритм статьи (и в #2843) - стандартный и кошерный, и быстрее лобового цикла в отдельных случаях (типа 8000_0001h). Но :
1. Только для какой задачи для ПР это "быстрее" будет иметь значение ? (говорил в п#2837)
2. Опять же требует битовую логику которой нет
Поэтому я предложил шаг назад - лобовой цикл. как легко реализуемый, понятный и я бы посоревновался по скорости с п#2836.
Смысл вопроса п#2844
Если же в каких-то специфических алгоритмах требуется именно битовая логика и именно в ST, то (как временная мера) несложно организовать соотв. ST-функции (and/or/xor/not) для udint. Что бы дождавшись версии 783 просто выкинуть эти эрзацы и поставить чистые битовые логики.
Хотеть не вредно, но зачем же организм насиловать ожиданием, в моём макросе как раз по второму варианту подсчитываются единичные биты, единственное различие - подсчёт начинается не с младшего единичного бита, а со старшего, но это же не принципиально(не имеет значения), с какой стороны начинать подсчёт единичных бит!
Короче, к ПР эти методы, с целью ускорения подсчёта не относятся, здесь уже писали как максимально быстро, в смысле, за один цикл ПР можно все единичные биты пересчитать!
вопрос не в хотелках, тут другое, что хотели Овен сделал, но как всегда не до конца. Еще раз для понимания, FBD в приборе давно, AND, OR, NOT, XOR в нем может работать с целочисленными переменными. Запилили ST - эти же блоки не умеют работать с целочисленными.
Для мозгов ПР все равно на чем ему говорят выполнить AND и далее, соответственно проверка уровнем выше, которая хромает.
Согласен, надо закруглятся с этим, в смысле, попробовали - не получилось, может это не их сильная сторона, в смысле, таланта нет, можно попробовать себя в другом деле, вдруг всё на ура пойдёт, в смысле, тогда это направление и развивать будете, а все вокруг любоваться и завидовать вашим успехам и достижениям!
Здравствуйте! Сетевая переменная в эмуляции..... Если слот мастер - назначается число 1000000. А если слот слейв - назначаю миллион - ограничивается 16960?? Это как?Вложение 65569Вложение 65570
Потому, что
1 000 000(dec) = F4240(hex) = 1111 0100 0010 0100 0000(bin)
в слейве целочисленная сетевая переменная всего 16 бит. Т.е. от 1111 0100 0010 0100 0000(bin)
остается всего 0100 0010 0100 0000(bin) или 4240(hex), остальное обрезается.
4240(hex) = 16960(dec).
В мастере наверно для сетевой переменно выбрано 2 регистра(32 бита), по этому "обрезания" нет
А здесь скрин и описание как 32 битную целочисленную переменную разобрать на две 16 битных, передать по сети и и собрать обратно в 32 битную.
Важно правильно собрать переменную из 2 регистров.
https://owen.ru/forum/showthread.php...&page=280#2795
Странно. Везде сетевые переменные одного типа же ведь. И в слейве и в мастере. Там же нет двух типов целочисленных. До этого я как то и не задумывался над этим.... Только сейчас столкнулся с миллионом:rolleyes:.... Пойду штудировать проблему.
Это просто готовый проект мне дали. Там просто один пр200 передает другому входы выходы. Один мастер, другой слейв. Программы одинаковые. И уже делали два таких шкафа. А я решил проверить. И не сработало. А может в "железе" то и работает все?
Они вот там в проекте умножают 4..20 на 50000, чтобы целое сделать, видимо. Но такое целое как раз и не по зубам пр200 оказалось. Почему на 10 не умножить, или на 100 мне не отвечают. А зачем еще на 16 умножают и 4 прибавляют - тоже?? Переделаю я, наверное по ходу все...Вложение 65574
Это как одного типа?
Вот 16 бит
Вложение 65575
а вот 32 бита
Вложение 65576
Там по ссылке, ещё на 4-5 страниц обсуждений и по поводу Мастера и слейва и по поводу типов переменных.
Умножение на 50 000 видимо перевод 4-20 мА в пределы диапазона датчика.
Умножение на 16 +4 вероятно перевод обратно в шкалу 4-20 мА. На сколько там правильно сделано, надо проверять.
Да. Я понял проблему. Буду вникать. Прочитаю все. Спасибо всем.
Здравствуйте,подскажите как сделать поэтапно работу программы с обращением с 4 выходами:
Условия есть 4 выхода К1,К2,К3,К4 с помощью них различными комбинациями мы задаем те или иные параметры.
Пример: Мне необходимо включить 1 клемму на 5 минут,по окончанию 1 этапа мне необходимо включить уже 1 и 2 клемму на 5 минут ,после 1 и 4 так же на 5 минут.Как мне сделать несколькими условиями обращения к одному и тоже выходу.
Вложение 65630
Знаете как извлекаются биты из маски? Ваша таблица ей полностью соответствует, вот пример Вложение 65633
Входом переключаете счётчик по режимам, в зависимости от режима извлекаются биты из маски.
Всего 16 режимов ( с 0 по 15), на 16 счётчик обнуляется.
Если прикрутить таймер на 5 минут, будут переключаться выходы через 5 минут Вложение 65634
Нет не знаю, попробую разобраться по вашему примеру.
на данный момент я сделал вот так.Вложение 65635
Остался вопрос по составлению последовательных условий.Чтобы за одним условием автоматически включалось другое.
Попробовал, получилось, принцип понял.Вложение 65637
только есть небольшое дополнение в том что нужно.Эти комбинации необходимы не подряд.К примеру за функцией 1 идет функция 4,далее 2 функция.То есть из этих комбинаций мне необходимо составить программу в различных последовательностях функций-т.е еще комбинации этих подпрограмм.
Имеем след.схему.
Имеем 6 различных шп.бабки.
На 1-4 имеем только программы с параметрами FC-00 по FC-07.
На 5-6 имеем только программы с параметрами FC-08 по FC-15.
Сейчас в данном случае нам необходима всего одна программа на шп.бабку №3 т.е нужные нам набор параметров с "FC-00 по FC-07".
Необходима следующая последовательность по порядку:
FC-00 5 мин.
FC-01 5 мин.
FC-02 5 мин.
FC-03 5 мин.
FC-04 5 мин.
FC-05 5 мин.
Приостановка программы на 5 мин.
FC-02 60 мин.
FC-04 10 мин.
FC-05 20 мин.
FC-06 20 мин.
FC-07 70 мин.
Приостановка программы на 8 мин.
Конец программы.
Нв каждом цикле данной этой программы происходит регистрация температуры.
Здесь выкладывал проект с макросом ПЗУ на 257 ячеек: https://owen.ru/forum/showthread.php?t=37112&page=4
В смысле любые комбинации для 32 выходов(включительно)можно задавать, как придумаете нужные комбинации, останется только их "забить" в ПЗУ!
Если первая комбинация имеет 16 вариантов(состояний), то поместится до 16(включительно) подобных комбинаций(с таким же количеством состояний) и в перспективе можно расширить до 32(включительно) выходов!
И, не надо выражаться ребусами, в смысле, загадками, напишите ясно, в смысле, приостановка программы, это нулевой шаг, в смысле, все выхода выключены или сохранение состояния преведущего шага? Если второе - просто продляете время преведущего шага, если все выхода выключены, так и напишите - нулевой шаг!
Короче, для этой бабки(№3) требуется всего 13 шагов из 257 возможных в моём макросе ПЗУ!
В каждом шаге назначается не только комбинация включённых выходов, но и продолжительность шага. Для задания продолжительности шага остаётся 28 бит(32-4), с минимальной ступенькой в 5 минут(судя по ТЗ), максимальная уставка может составить 1*342*177*275 минут(более двух с половиной тысяч лет), в смысле, Вам хватит с избытком и можно упростить, в смысле, прямо в минутах задавать уставку времени шага, надеюсь понятно объяснил?
Похожий алгоритм мы делали для светофора: https://owen.ru/forum/showthread.php?t=26216&page=17
Здесь целочисленные мультиплексоры выкладывал: https://owen.ru/forum/showthread.php?t=26216&page=56
Здесь матрицу памяти выкладывал: https://owen.ru/forum/showthread.php?t=26216&page=57
В смысле, она тоже может пригодится при построении подобных алгоритмов.
Вот ещё проект подобный нашёл "Командоаппарат реального времени с маской недели на 32 команды 8 канальный..."
там тоже для каждой команды задаётся уставка времени и комбинация 8 выходов на которые она действует:
https://owen.ru/forum/showthread.php?t=23201&page=16
Можно и меню посмотреть, в смысле, как это всё назначается, тогда и оперативно их можно будет менять!
И здесь в посте#170 таймер: https://owen.ru/forum/showthread.php?t=33720&page=17
Тогда не правильно расписал помимо этих 4 выходных клемм-клемм набора оборотов есть еще 2 клеммы на выходе которые управляют вращением вперед 1 клемма,а 2 клемма вращение назад.
получается на выходе 6 клемм.
Получается приостановка программы - получается выключение всех данных 6 выходов.
Спасибо за выданные примеры-программ,буду разбираться в них по мере возможности.
Настройка двигателя сделана так что при 0 положении клемм К1-К4 двигатель будет вращать на 100 об.мин.
Тогда ещё один бит придётся использовать для блокировки включения(или разрешения работы, как Вам удобно) этих выходов "вперёд" и "назад"!
В принципе это ничего не меняет, бит хватает, в смысле на уставку времени шага останется 27 бит(32-5), если использовать одну целочисленную переменную(32 бит) для задания уставок времени шагов и комбинаций 5 выходных сигналов!
Добрый день. Кто подскажет. Можно ли через сквозной порт панели Weintek прошивать ПР-200. Если нет то какое решение есть? Для удаленных объектов нужно. Заранее спасибо.
ПР200 шьется через USB, что там у Weintek ?
преобразователь в виде OrangePi, Raspberry но палки в колеса может VPN повставлять...
а так, любой микрокомп с USB портом + запуск пакета socat на нем. Еще вот варик есть это usbhere до 1-но устройства, но не получилось протестить, vpn или что-то мешает.
https://www.virtualhere.com/usb_client_software не удалось пока потестить, что-то мешает прохождению пакетов....
Dimensy если самому шить по удаленке, без передачи проекта, только "удлинение" usb порта по сети.
Так дело в том, что иногда при отладке проекта всё ОК. Ты загружаешь проект в прибор и уезжаешь. Через время, например, вылезает (косяк) или появились новые идеи, замечания и т.д. Приходиться ехать перезаливать проект за 70 км (в одну сторону). Иногда нужно включить онлайн отладку... Здесь мастер тиражирования до одного места. Это проект заказчику можно отдать в таком виде и не более.
У нас ПР200-220.2.2.0 какой таргет выбирать в ОЛ?