Как бы объяснить... Есть число Х, ну скажем 610 (bin 10 0110 0010), как бы отобразить на экране по очереди номера значащих битов в цикле и остановиться ?
то есть надо отобразить 9, 6, 5, 1 применив какие-то процедуры в цикле программы ПР.
Вид для печати
Как бы объяснить... Есть число Х, ну скажем 610 (bin 10 0110 0010), как бы отобразить на экране по очереди номера значащих битов в цикле и остановиться ?
то есть надо отобразить 9, 6, 5, 1 применив какие-то процедуры в цикле программы ПР.
Шутите? Вот, по-моему, если не ошибаюсь, AI делал "триста лет тому назад":
Вложение 42593
Сергей0308 и где здесь цикл ? просто раскладывание значения на биты и только.
была идея применить cd32 и Putbit как в макросе SortBit, но как используя один cd32 и один putbit сделать цикл обработки ? вот тут у меня затык и вышел.
когда-то что-то подобное делал с циклом, но похоже потерял файл, правда там у меня что-то другое было, но сам алгоритм может помог бы...
Вероятно я неправильно выразился.
В общем есть программа в целом - она выполняется ровно один цикл для ПР. Есть небольшие куски программы, вычисления которых надо разбить на несколько шагов, каждый из которых будет выполняться в рамках одного цикла ПР. Но есть неизвестное, количество значащих бит в числе. Если сделать счетчик на 32 бита, то вычисления будут выполняться 32 цикла ПР, а вот как сократить это количество используя тот же cd32 ????
Пока это только наметки, много элементов лишние, просто чтобы было видно результат. При изменении числа Input надо начинать запись с 0 ячейки. На данный момент почему-то пишет с 1-й, что-то не допилил. Ну и потом лишние таймеры и элементы надо будет удалить. Но думаю смысл будет понятен...
Вопрос в догонку, на экран надо выводить время возникновения ошибки (нашел свои наработки по поводу журнала ошибок с циклической перезаписью на 8 последних).
Время записываю в макрос EEPROM в UTC формате при помощи макросов от petera. а вот как это время потом показать на экране ???? лепить 8 макросов преобразования из UTC формата в лоб ???
а нельзя ли обойтись одним макросом преобразования и как-то поиграться с координатами вывода ?
Коды ошибок так же записываются во второй EEPROM и потом тут слепил макрос (из того, что было :) ), которые в цикле вычитывает из EEPROM и фиксирует в 8 переменных коды с защелкой. То же можно сделать и с переменными времени, но тогда однозначно делать 8 макросов, что мне не нравится...
Хотелось бы поработать с экраном в 8 строк (или меньше, если журнал не наполнился) и как-то обойтись одним механизмом для кодов и одним для времени, а не лепить 8 одинаковых последовательностей....
Масок нет, все ручками. Ошибок количество ограничено, но они маскируются, то есть 2,3 или сколько будет и могут появиться вместе. В ПР и ИПП очень не хватает обработки клавиатуры, чтобы выводить одну строку журнала и просто перелистывать их.
Работы со временем штатных нет, в прошивке ПР, хотя бы по UTC, чтобы банально на экран выводить "Метка времени" и подавать на нее время в UTC а ПР сам рисует на экране дату. Только с возможностью выбора формата.
Короче занимаемся всякими извращениями по придумке макросов :). а этот Журнал я еще год назад начинал наверное, только из-за ограничений ПР так и не доделал, да и сейчас наверное вряд ли, пока обработка клавиатуры не появится.
Валенок жертвовать входом это жестко для таких вещей :) переключать по кругу по мне глупо, мне надо четкое понимание и осмысление, еще же битовую маску надо разложить на отдельные ошибки, если их 2 например. Сколько надо на осмысление ? 5 сек? 30 ?
Одна и та же, это если есть автоматический сброс ошибки, если его нет, то и запись одна, но появление при одной ошибке второй может быть, это будет следующая запись.
Для некоторых задач ПЛК часто излишен, и еще момент, например 63-му не достает выходов, что приводит к еще большему удорожанию.
Валенок журнал аварий это не работа, больше хобби :)
ошибок например 5, в журнале будет записана маска + время, Показать маску и время на экране ПР не проблема, а вот без пол холста fbd блоков еще и раскидать маску по отдельным авариям в текстовом виде по каждой ошибке в ПР сложно.. вот это можно было победить при использовании кодов клавиш и возможности разветвленного меню (подменю).
На счет задач, банально - мощности ПР хватает и у него 8 выходов (и нужно 8), ставить ПЛК 63 у которого всего 6 выходов на задачу не тянет (не хватает 2 выходов).
Ставить еще больший ПЛК или добавлять к 63-му модуль вывода ?
В общем сравниваем цену и бюджет....
Если задача не решается на ПР, тут и так понятно, выбираем соответствующий ПЛК и все.
з.ы. с Днем Победы всех!...
Вообще-то всё это, ваши хотелки легко(по моим меркам) разрешаются, примерно так: высчитываете разность и с помощью шифратора преобразуете в номер соответствующего бита! Всегда определение бит будет начинаться со старшего бита! У меня есть подобный макрос ограничения изменения, чтобы за 1 цикл менялось не более 1 бита! Ранее делал по другому, каждый цикл писался 1 бит переменной, короче, чтобы 32 битную переменную изменить требовалось не менее 32 циклов работы программы, теперь это занимает ровно столько циклов работы программы, сколько бит изменилось, всё! Это может уменьшить время выполнения до 32 раз! Больше ничем помочь не могу, и так всё разболтал и боюсь Вас оставил без хобби!