Просмотр полной версии : Codesys2.3 на выходе был ШИМ сигнал
Codesys2.3 как можно написать программу на языке CFC чтобы на выходе был ШИМ сигнал у меня контроллер ПЛК63 выходы релейные кто что знает подскажите
ШИМ на реле — варварство.
http://images.devs-on.net/Image/oDyH2opD3HQEYtgv-CoDeSysUntitled.png
Пример не будет работать, так как все выходы на ПЛК63 - тип REAL.
В свойствах выхода задайте период ШИМ, а значение VALUE (как в примере) необходимо подавать непосредственно на выход.
ЗЫ: Зачем темы плодить? В документации вроде всё написано.
Как в свойствах задавать период ШИМ какие параметры нужны
Не совсем понятен вопрос.... Вообще в конфигурации, в свойствах соответствующего выхода. Параметр так и называется - Период ШИМ. Задается в миллисекундах.
ЗЫ: Терзает любопытство - зачем всё это? То есть зачем ШИМ через электромеханическое реле?
потому что у меня все выходы релейные вообще возможно ШИМ сигнал через релейный выход
Terrano1992
07.02.2013, 13:51
вообще возможно ШИМ сигнал через релейный выход
Если период модуляции исчисляется секундами или десятками секунд (такой вот "медленный и печальный" ШИМ), то технически это возможно. Но непрактично - электромеханическое реле довольно быстро исчерпает свой ресурс в 200-400 тысяч срабатываний и сдохнет...
Ну пристали к человеку.
200..400т.раз при периоде в секунд 20..30, и с учетом того что сам объект может эксплуатироватся не круглые сутки, и с учетом что выход ШИМа может быть и 0.0 и 1.0 - может означать и год и двадцать.
Михаил Иванович
08.02.2013, 15:07
потому что у меня все выходы релейные вообще возможно ШИМ сигнал через релейный выход
Я сделал на основе блока "BLINK". Работает, проверено на практике. Если бы знал, как прикрепить проект - прикрепил бы. Заодно МЭТРЫ меня бы покритиковали. На словах - там есть два момента, которые следует участь: поскольку входной аналоговый сигнал у меня в формате REAL, то и период задается в нем же. Следовательно, требуется преобразование в TIME. Стандартный оператор преобразования в системе есть, но при отрицательных и при превышающих диапазон значениях ведет себя, на мой взгляд, плохо. (Здесь это обсуждалось, Мне объяснили, почему это так, но я говорю не о том, почему, а о том, что это неправильно). Значит,надо ограничивать сигнал. Стандартный блок ограничения, на мой взгляд, странный. Его описания в документации нет, экспериментально удалось установить, что нижнее значение у него почему-то вверху, а верхнее, наоборот. Доверия не внушает. Лучше использовать комбинацию MIN и MAX. Кроме того, если хотите вывести коэффициент заполнения или скважность, то лучше выводить коэффициент заполнения - нет деления на ноль.
Теперь к вопросу о выходах с ШИМ. На ПЛК 63, если использовать программный блок с ШИМ, то надо просто преобразовать выходную BOOL в REAL стандартным оператором. На ПЛК 150 при его дискретных входах есть их настройка в конфигурации как ШИМ выходов, но единицы измерения там довольно странные, надо привыкнуть. Смотреть надо в документе PLC_configuration п. 2.2.2, стр 27 (Для 150).
Если вы от LIMIT - то в хелпе ясно: min, x, max (ST)
min,
x,
max (СFC) Тоже самое - очевидно ж :)
А ШИМ смастерить можно из чего угодно.
Михаил Иванович
08.02.2013, 17:11
Если вы от LIMIT - то в хелпе ясно: min, x, max (ST)
min,
x,
max (СFC) Тоже самое - очевидно ж :)
Если Вы это знаете, то конечно, очевидно. Но человек обычно строит шкалу снизу вверх. Пример - традиционные координатные оси, градусник (термометр). Я навскидку не берусь назвать общепринятые примеры построения положительной оси сверху вниз, а отрицательной снизу вверх.
А ШИМ смастерить можно из чего угодно.
Ну это Вы с высоты своей квалификации. Кроме того, как я уже писал, не все гладко с преобразованием типов, если на вход REAL_TO_TIME попадает отрицательное значение, то на выходе получается предельно возможное для TIME число. Но, скорее всего, Вы это где-то учитываете, только я не понял, где, как Вы уже, наверное, догадались, я не очень хорошо в этом разбираюсь. Я написал, как сам делал. За это могу ручаться, практически проверил работоспособность в разных ситуациях
Если Вы это знаете, то конечно, очевидно. Но человек обычно строит шкалу снизу вверх. Пример - традиционные координатные оси, градусник (термометр)..
Ну хэлп же есть. Последовательность есть. Все что слева направо в ST - сверху вниз в квадратиках. Графические поу это не имитаторы чего-либо :)
Кроме того, как я уже писал, не все гладко с преобразованием типов, если на вход REAL_TO_TIME попадает отрицательное значение, то на выходе получается предельно возможное для TIME число...
Причем тут программирование :confused: Это простая алгебра. Класс так 5й
Михаил Иванович
09.02.2013, 14:55
Ну хэлп же есть. Последовательность есть. Все что слева направо в ST - сверху вниз в квадратиках. Графические поу это не имитаторы чего-либо :)
Ну вот пусть замеряем 4-20 на ПЛК63. Сигнал 0-100, по факту может быть ..-3-103.. наверно где-то так. Чтоб не лохануться и вставляем вышеуказанный ограничитель с преобразованием
BLINK.TIMEHIGH := REAL_TO_TIME(TIME_TO_REAL(tmPeriod)*LIMIT(0,X,100)/100);
BLINK(IN:=TRUE,TIMELOW:=tmPeriod-BLINK.TIMEHIGH, Q=>ШИМ);
Пусть вход -100..+100
..(LIMIT(-100,X,100)+100)/200..
LIN_TRAFO есть опять же
LIN(IN:=LIMIT(-100,X,100),IN_MIN:=-100,IN_MAX:=100,OUT_MIN:=0,OUT_MAX:=1);
...LIN.OUT...
Причем тут программирование :confused: Это простая алгебра. Класс так 5й
Так и я ведь не о программировании, а о правильности работы преобразования. Наличие двух разрывов в функции преобразования - это неверно.
Так значит можно сделать на выходе с реле ШИМ сигнал
..Наличие двух разрывов в функции преобразования - это неверно.
А зачем тогда
использовать комбинацию MIN и MAX.
?
Так значит можно сделать на выходе с реле ШИМ сигнал
сделать нельзя несделать
Михаил Иванович
09.02.2013, 20:36
Так значит можно сделать на выходе с реле ШИМ сигнал
Можно, конечно. Причем стандартный библиотечный блок "BLINK" почти он и есть. Осталось пережде вычислить необходимую скважность сигнала и длительности импульса и паузы - это из соотношения имеющегося аналогового сигнала и его диапазона. Потом подать значения на входы указанного блока. По пути возникнут трудности с преобразованием типов данных, мы их как раз обсуждали. Суть можно уловить из переписки и необходимость в это вникнуть - тоже.
Михаил Иванович
09.02.2013, 20:54
А зачем тогда
?
Как раз затем, чтобы обойти эту неверность. Понимаете, у меня создается впечатление, что нас постоянно вынуждают выкручиваться из всяких ситуаций, которые являются порождением чьей-то недобросовестности, отсутствием контроля. Когда я вижу такие вещи, я об этом пишу. В ответ мне сразу начинают пояснять, почему так получилось. Вроде бы так и должно быть. А я говорю о том, что такого быть не должно, что это ошибка, не счетная, а идеологическая и хорошо бы было, чтобы ее исправили. Но никто ничего не исправляет. Вы, видимо, уже к этому привыкли, а я еще нет. Вот и кричу: "Льву не додают мяса ... и тд" - думаю, Вы помните - у Хазанова такая интермедия была. Вот и в данном случае, боюсь, мы немного не понимаем друг друга: я говорю о факте наличия этих разрывов по краям диапазонов значений, о том, что в документации об этом ни слова, о том, что именно из-за этого приходится немного усложнять и если вы этого не знаете, то влипаете не по своей вине. А Вы говорите, что ввести ограничение диапазона просто. Так я и не говорю, что сложно, я говорю о том, что наличие разрывов при преобразовании типов данных - это неправильно. Вот что было содержанием моего высказывания.
Как раз затем, чтобы обойти эту неверность
Для этого и я LIMIT внедряю, если знаю что он нужен. Только это не неверность. Это нормальное преобразование отрицательного значения в время. Даже иногда использую конструкции типа int_to_time(-1). Время же - кольцеобразно а не линейно.
И что должно быть в документации ? Правила целочисленного исчисления ? :confused:
Михаил Иванович
10.02.2013, 06:18
Для этого и я LIMIT внедряю, если знаю что он нужен. Только это не неверность. Это нормальное преобразование отрицательного значения в время. Даже иногда использую конструкции типа int_to_time(-1). Время же - кольцеобразно а не линейно.
И что должно быть в документации ? Правила целочисленного исчисления ? :confused:
Что же в этом нормального? Смотрите сами - область определения этой функции непрерывна (отвлечемся от дискретности задания, говорим об аналитическом виде). А область значений - разрывна. Ужель Вы считаете это нормальным?
Нормально, на мой взгляд, было бы, если бы разрывов не было. А их сделали. Зачем? Ведь используя ограничение вы как раз и ликвидируете это явление.
А в документации, на мой взгляд, должно было бы быть указание на то, что у этого преобразования есть такое свойство. Уж коль его таким сделали.
Михаил Иванович
10.02.2013, 06:31
Время же - кольцеобразно а не линейно.
Сильное утверждение. Думаю, что неверное. Закольцованность диапазона значений ничего не говорит о времени.
Время - в смысле TIME и TIME()
А другое - говорят вообще спираль :)
PS
Самолет через 4 часа. А сейчас 23:30 :confused: А будет ли самолет :eek:
А другое - говорят вообще спираль :)
т :eek:
А я по наивности думал ,что развитие идет по спирали ,а время течет линейно от прошлого через настоящее в будущее .:)
Михаил Иванович
10.02.2013, 18:39
Я бы не стал смешивать филосовские категории с типами данных, их областями определений и форматами. Да и вообще, начинали совсем с другого, но надо же, куда пришли! Кроме того, строго говоря, речь-то шла не о времени, а об интервале времени. У них даже тип шкалы измерений разный.
Я бы не стал смешивать филосовские категории с типами данных, их областями определений и форматами. Да и вообще, начинали совсем с другого, но надо же, куда пришли! Кроме того, строго говоря, речь-то шла не о времени, а об интервале времени. У них даже тип шкалы измерений разный.
От оно ! Жалкое ограниченное подобие Времени - это DATE. А TIME это действительно измеритель интервала на прямой Времени.Поэтому и циклично.
..а время течет линейно от прошлого через настоящее в будущее
А тут я вообще не рискнул бы чего-либо утверждать :) Или, максимум - на данный момент считается что это так
Откатываясь назад. А что нужно-то от REAL_TO_TIME ?
Так значит можно сделать на выходе с реле ШИМ сигнал
Проблема то в чём? Вроде всё разжевали.... Даже от темы начали отклонятся....
Можно сделать используя аппаратные возможности ПЛК63 либо программным методом (считаю аппаратный лучше)
Реле только долго не проживёт и всё - ресурс то не резиновый
Если уж сейчас не понятно - то ШИМ на ПЛК63 сделать действительно нельзя
Если уж сейчас не понятно - то ШИМ на ПЛК63 сделать действительно нельзя
А может заменим на слово -НЕ целесообразно , при периодах менее 1минуты ,например) :rolleyes:
Михаил Иванович
11.02.2013, 09:55
измеритель интервала на прямой Времени.Поэтому и циклично.
Не вижу логической связи. Сам по себе измеритель - с какой стати? Люди могут закольцевать, это уже вопрос его конструкции, концепции построения.
Откатываясь назад. А что нужно-то от REAL_TO_TIME ?
Логичности работы, а именно отсутствия разрывов на концах диапазона значений. Или информирование о такого рода явлении в документации. Но, понятно, что не от самого преобразования, а от людей, которые его делали. Все-таки это - не явление природы, а рукотоворно.
Михаил Иванович
11.02.2013, 10:00
А может заменим на слово -НЕ целесообразно , при периодах менее 1минуты ,например) :rolleyes:
То, что слово надо заменить - это, думаю, верно. А вот при каких периодах - это уже от человека зависит. Для одного - целсообразно одно, для другого - другое. Кого-то, может и секунда устроит. Может, ему жизненно важно, чтобы неделю проработало, а дальше можно выбросить, жизненная задача решена. Все зависит от того, за какое время человек планирует выработать ресурс и от скоростных особенностей реле. Но если говорить о нормальных ситуациях, то, наверное, надо согласиться.
Логичности работы, а именно отсутствия разрывов на концах диапазона значений. Или информирование о такого рода явлении в документации. Но, понятно, что не от самого преобразования, а от людей, которые его делали. Все-таки это - не явление природы, а рукотоворно.
Где разрывы ? На пальцах покажите. Есть, например -3.7, -12.8 ?
Не вижу логической связи. Сам по себе измеритель - с какой стати? Люди могут закольцевать, это уже вопрос его конструкции, концепции построения.
Необходимо закольцовывать. Затрудняюсь представить себе средство измерения чего-либо с полным диапазоном этой величины
Бесконечную рулетку для измерения длины даже китайцы не сделают.
PS
Самолет все-таки неприлетит
Михаил Иванович
11.02.2013, 12:35
Где разрывы ? На пальцах покажите. Есть, например -3.7, -12.8 ?
Не понимаю, почему Вы такие значения взяли. И для того и для другого будет максимальное значение области значений тип TIME.
Разрывы происходят в нуле и в максимальном значении. Предположим, на входе этого преобразования есть последовательность положительных значений, снижающихся к нулю. Например, 100, 50, 10, 3, 2, 1, 0. На выходе, Вы соответственно получаете тоже 100, 50, 10, 3, 2, 1, 0. При дробных значениях будет округление. То есть, функция преобразования - прямая, снижается к нулю. Чего логично ждать, если на вход после нуля попадет, предположим, минус 1? Думаю, что логичным будет ноль, поскольку область значений с этой стороны ограничена нулем. Ну и уперлись в него и все. А что имеем на деле? Имеем дикий скачок в максимальное значение. А зачем? Аналогичная вещь происходит при превышении максимального значения. Попробуйте задать какое-нибудь превышающее значение. Только не берите значения в миллисекундах из документации. Похоже, что там очередная ошибка. И что имеем на деле? Почему-то имеем ноль. Только не надо мне объяснять, КАК он получается. Вы попробуйте с позиций обычного человека объяснить, ПОЧЕМУ сделана такая разрывная функция. А если уж сделана, то почему в документации об этом ни слова. И опять мы вернулись к ней, родимой.
Михаил Иванович
11.02.2013, 12:38
Необходимо закольцовывать. Затрудняюсь представить себе средство измерения чего-либо с полным диапазоном этой величины
Бесконечную рулетку для измерения длины даже китайцы не сделают.
PS
Самолет все-таки неприлетит
И не нужно. Вы забываете о том, что количество диапазонов тоже считается. Просто происходит переход в новй разряд. Нет никакого закольцовывания.
Не понимаю, почему Вы такие значения взяли. И для того и для другого будет максимальное значение области значений тип TIME.
Разрывы происходят в нуле и в максимальном значении. Предположим, на входе этого преобразования есть последовательность положительных значений, снижающихся к нулю. Например, 100, 50, 10, 3, 2, 1, 0. На выходе, Вы соответственно получаете тоже 100, 50, 10, 3, 2, 1, 0. При дробных значениях будет округление. То есть, функция преобразования - прямая, снижается к нулю. Чего логично ждать, если на вход после нуля попадет, предположим, минус 1? Думаю, что логичным будет ноль, поскольку область значений с этой стороны ограничена нулем. Ну и уперлись в него и все. А что имеем на деле? Имеем дикий скачок в максимальное значение. А зачем? Аналогичная вещь происходит при превышении максимального значения. Попробуйте задать какое-нибудь превышающее значение. Только не берите значения в миллисекундах из документации. Похоже, что там очередная ошибка. И что имеем на деле? Почему-то имеем ноль. Только не надо мне объяснять, КАК он получается. Вы попробуйте с позиций обычного человека объяснить, ПОЧЕМУ сделана такая разрывная функция. А если уж сделана, то почему в документации об этом ни слова. И опять мы вернулись к ней, родимой.
Просто интересно, Вас не раздражает что в одном разряде может быть только два значения, единичка или нолик
Нормально, на мой взгляд, было бы, если бы разрывов не было. А их сделали. Зачем? Ведь используя ограничение вы как раз и ликвидируете это явление.Никто эти разрывы специально не вводил. Кроме того, в алгоритмах управления чаще нужна дельта времени, нежели его абсолютное значение. Без переполнения считать дельту в «разрывах» гораздо сложнее, чем с ним.
А в документации, на мой взгляд, должно было бы быть указание на то, что у этого преобразования есть такое свойство. Уж коль его таким сделали.Документация на кодесис вызывается нажатием F1. Про диапазоны временных типов там сказано.
Чего логично ждать, если на вход после нуля попадет, предположим, минус 1? Думаю, что логичным будет ноль, поскольку область значений с этой стороны ограничена нулем.
A + B - C = A - C + B ?
T#5h + T#3h - T#6h => T#2h
По Вашему T#5h - T#6h + T#3h => T#3h :confused: Новое слово
Михаил Иванович
11.02.2013, 14:23
A + B - C = A - C + B ?
T#5h + T#3h - T#6h => T#2h
По Вашему T#5h - T#6h + T#3h => T#3h :confused: Новое слово
При чем здесь это? Прошу меня извинить, видимо, я утерял способность объяснять.
Михаил Иванович
11.02.2013, 14:28
Просто интересно, Вас не раздражает что в одном разряде может быть только два значения, единичка или нолик
1. Не раздражает.
2. Первая часть высказывания неверна. Именно, что ИЛИ. В одном разряде может быть только одно значение. Что же касается количества возможных состояний, то это зависит от системы счисления.
При чем здесь это? Прошу меня извинить, видимо, я утерял способность объяснять.
T#5h-T#6h <> T#5h + T#6h*(-1)
По Вашему
Михаил Иванович
11.02.2013, 14:32
Никто эти разрывы специально не вводил.
Наверное. Но они есть. Думаю, что те кто это делал, просто не проверили, что у них получилось.
Про диапазоны временных типов там сказано.
О диапазонах - да , хотя, как мне кажется, есть ошибки. А об этом явлении - нет.
О диапазонах - да , хотя, как мне кажется, есть ошибки
Ну хоть одним глазком ?
Что же касается количества возможных состояний, то это зависит от системы счисления.
Значит ли это, что Вы не возражаете о наличии до Вас созданных систем исчисления, тогда зачем продолжаете спорить да еще и утверждаете что есть ошибки
Михаил Иванович
11.02.2013, 16:10
Ну хоть одним глазком ?
Попробуйте подставить в преобразование типов TIME_TO_REAL
значение 4194967295 ms, названное в документации максимальным значением для типа TIME. Может это и так, только что Вы получите на выходе? У меня, например, получается совсем не это число. Ограничения в преобразовании не указано, значит что-то не так с реальным диапазоном.
Можете поэкспериментировать с обратными преобразованиями из REAL. Там Вы получите тоже странные, на мой взгляд результаты. Уверен, что Вы этого не пробовали делать.
Михаил Иванович
11.02.2013, 16:18
Значит ли это, что Вы не возражаете о наличии до Вас созданных систем исчисления, тогда зачем продолжаете спорить да еще и утверждаете что есть ошибки
1. Ошибок в документации тьма.
2. Я изложил свои наблюдения. Не был понят. Попытался разъяснить. В процессе дискуссии понял, что у меня это не получится.
Поскольку мы давно отклонилась от первоначального предмета, давайте на этом заканчивать. Будем надеяться, что когда-нибудь мы начнем понимать друг друга.
тут скорее надо не друг друга понимать, а как работает процессор, ему бы кто объяснил что в шине данных переменная типа тайм и надо округлять так как хочет пользователь
тут скорее надо не друг друга понимать, а как работает процессор, ему бы кто объяснил что в шине данных переменная типа тайм и надо округлять так как хочет пользователь
Ну это не хорошо ,процессор с типами не работает :cool:(не передергивать) ,он работает с кодом .А уж как там сделали программисты (разработчики) языка ,то это другое дело .Сколько копьев было сломано с обратными связями(споров с разработчиками) ,пока разработчики не ввели явные обратные связи в ОЛ.
Пользователь не обязан вникать в трудности разработчиков ,а разработчик должен думать о пользователе ,причем разной квалификации .Лично мне это напоминает наш спор в теме ПР ,о делении на ноль .Сказать пользователю -Сам дурак- это не от большого ума и неуважение пользователя .
Извините ,что встрял
Ну это не хорошо ,процессор с типами не работает :cool:(не передергивать) ,он работает с кодом .А уж как там сделали программисты (разработчики) языка ,то это другое дело .Сколько копьев было сломано с обратными связями(споров с разработчиками) ,пока разработчики не ввели явные обратные связи в ОЛ.
Пользователь не обязан вникать в трудности разработчиков ,а разработчик должен думать о пользователе ,причем разной квалификации .Лично мне это напоминает наш спор в теме ПР ,о делении на ноль .Сказать пользователю -Сам дурак- это не от большого ума и неуважение пользователя .
Извините ,что встрял
так вот и я говорю, имеется 32 разряда шины данных, есть набор микрокоманд которые крутятся в процессоре и о типах переменных действительно знают языки высокого уровня, но как бы не компания овен разработчик стандарта МЭК, IEEE754 (другими не интересовался), даже среда разработки в которой мы что то ваяем и то принадлежит немцам, компании пролог.
Спрашивается, зачем здесь разводить эти споры, потому что форум самый активный?
Так если не чего нельзя изменить ,то нужно описать фичу(инструкцию то не в германии пишут) -об этом и речь ,не все ж с таким опытом работы.Я все сказал ,покидаю тему.
Попробуйте подставить в преобразование типов TIME_TO_REAL
значение 4194967295 ms, названное в документации максимальным значением для типа TIME. Может это и так, только что Вы получите на выходе? У меня, например, получается совсем не это число. Ограничения в преобразовании не указано, значит что-то не так с реальным диапазоном.
Можете поэкспериментировать с обратными преобразованиями из REAL. Там Вы получите тоже странные, на мой взгляд результаты. Уверен, что Вы этого не пробовали делать.
T:time R1,R2:real;
R1:=-1;
T:=real_to_time(R1);
R2:=time_to_real(T) => -1 Чего тут не это ?
Михаил Иванович
12.02.2013, 09:43
T:time R1,R2:real;
R1:=-1;
T:=real_to_time(R1);
R2:=time_to_real(T) => -1 Чего тут не это ?
Все не так.
1. Указанное мною в предыдущем сообщении число принадлежит по документации диапазону значений TIME. Следовательно, на выходе должно получиться это же число. Этого не происходит. Но Вы почему-то этого не видите.
2. Вы не поэкспериментировали. Потому что если бы провели такие экспермиенты, то полученные результаты заставили бы Вас задуматься.
3. Я стараюсь как можно более доходчиво разъяснить свою позицию. Вы стараетесь писать как можно непонятнее, небрежно бросая пару строк. Не строя гипотез о причинах этого, могу лишь сказать, что подобный стиль не ведет к решению проблем и, следовательно, неконструктивен.
Вывод:
Продолжать диалог в этой ситуации бессмысленно.
1. Указанное мною в предыдущем сообщении число принадлежит по документации диапазону значений TIME. Следовательно, на выходе должно получиться это же число. Этого не происходит. Но Вы почему-то этого не видите.
.
T1:= T#49d17h2m47s295ms (копи пасте прям из хэлпа)
RR:=TIME_TO_REAL(T1);
T2:=REAL_TO_TIME(RR);
Что не вижу ? T1 = T2. Должно быть как-то иначе ?
Ах, вырезали вторую цифирь – а она 4194967295ms
А в голову не приходит- почему первая и вторая цифирь в хелпе разные ?
Что простая опечатка 4194967295ms ? Девочка 1 вместо 2 нажала. Нет же. Всё неправильно. Всё нет так. Катастрофа. Из опечатки сделали вселенскую проблему. Мне такое даже в голову не приходит.
Вы видели какую-то документацию в таком объеме АБСОЛЮТНО без опечаток ?
Знаете за что у меня взгляд зацепился когда копипасте того числа сделал ? За чётность при обратном преобразовании. Мне хватило чтоб найти трабл.
Вы не подумали, почему я даже не пытаюсь вспомнить кол-во дней/часов в максимальном TIME а пишу просто INT_TO_TIME(-1) ?
3…Вы стараетесь писать как можно непонятнее, небрежно бросая пару строк.
Так эти строки – из той же песни. И если взаимосвязь невидна, хотя бы направление, то это нужно основы изучать - но форум вроде не тот.
2. Вы не поэкспериментировали. Потому что если бы провели такие экспермиенты, то полученные результаты заставили бы Вас задуматься.
А зачем мне экспериментировать ?
Выяснять почему-же все таки с тем числом нет отката назад при преобразовании ?
А Вас не удивляет что REAL_TO_WORD(2.7) = 3 ? Примерно отсюда же. Курим по IEEE – если интересно. Направление – представление отрицательных чисел. Оно не аналогично целочисленным. То число в нормализованном виде для мантиссы требует 27 бит. А сколько дают ? А -1 требует 1 бита. (знак – отдельно в обоих случаях) Вот и делайте выводы
И действительно -
Продолжать диалог в этой ситуации бессмысленно.
PAVEL_EKB
12.05.2015, 08:37
Добрый день, подскажите, пожалуйста. Можно ли программно изменять период ШИМ сигнала, ПЛК63? Поясню, один из выходов настроен на выдачу ШИМ сигнала с переменной длительностью( мощностью,управлять очень просто), но мне надо еще менять период, а как до него добраться не знаю. Нужно добраться именно до аппаратной настройки ШИМ, которая, судя по описанию, может изменяться по Modbus (регистр 295), либо по протоколу ОВЕН (thpd индекс 4). Я бы воспользовался каким-нибудь BLINK, но у него большая погрешность (у меня команды от 10мс до 5 с, период от 1с до 60с)
Добрый день, подскажите, пожалуйста. Можно ли программно изменять период ШИМ сигнала, ПЛК63? Поясню, один из выходов настроен на выдачу ШИМ сигнала с переменной длительностью( мощностью,управлять очень просто), но мне надо еще менять период, а как до него добраться не знаю. Нужно добраться именно до аппаратной настройки ШИМ, которая, судя по описанию, может изменяться по Modbus (регистр 295), либо по протоколу ОВЕН (thpd индекс 4). Я бы воспользовался каким-нибудь BLINK, но у него большая погрешность (у меня команды от 10мс до 5 с, период от 1с до 60с)
А какие проблемы с BLINK ?
Добрый день, подскажите, пожалуйста. Можно ли программно изменять период ШИМ сигнала, ПЛК63? Поясню, один из выходов настроен на выдачу ШИМ сигнала с переменной длительностью( мощностью,управлять очень просто), но мне надо еще менять период, а как до него добраться не знаю. Нужно добраться именно до аппаратной настройки ШИМ, которая, судя по описанию, может изменяться по Modbus (регистр 295), либо по протоколу ОВЕН (thpd индекс 4). Я бы воспользовался каким-нибудь BLINK, но у него большая погрешность (у меня команды от 10мс до 5 с, период от 1с до 60с)
Вам нужно использовать библиотеку "arm7_specific".
Посмотрите "Save_parameter.pro" из примеров работы с библиотекой arm7_specific - получение/редактирование параметров и их атрибутов здесь http://www.owen.ru/forum/showthread.php?t=13573 или не диске ПЛК.
PAVEL_EKB
12.05.2015, 13:43
А какие проблемы с BLINK ?
С BLINK проблема следующая, при маленькой длительности импульсов (около 15мс) у него большая погрешность 1-3 мс, смотрел на осциллографе.
PAVEL_EKB
12.05.2015, 13:46
Вам нужно использовать библиотеку "arm7_specific".
Посмотрите "Save_parameter.pro" из примеров работы с библиотекой arm7_specific - получение/редактирование параметров и их атрибутов здесь http://www.owen.ru/forum/showthread.php?t=13573 или не диске ПЛК.
Сейчас сажусь изучать данную библиотеку. Еще вопрос, есть ли какая-нибудь карта системных регистров, к которым можно обращаться напрямую из программы?
PAVEL_EKB
13.05.2015, 09:09
C библиотекой "arm7_specific". вроде бы разобрался, спасибо! Теперь возникает второй вопрос, а сколько раз можно перезаписывать один конфигурационный параметр, ведь насколько я понимаю вся конфигурация находится во Flash-памяти, а у нее ограниченное кол-во циклов перезаписи?
Филоненко Владислав
13.05.2015, 13:24
ресурс Flash 10000 перезаписей, однако:
1. Следует учесть, что загрузка программы это тоже перезапись
2. Flash-память разбита на страницы и при записи 1 параметра перезаписывается вся страница, а на ней могут быть десятки разных параметров.
3. Т.о. не рекомендуется записывать более 1000 параметров или программ в год (с учётом срока эксплуатации)
PAVEL_EKB
13.05.2015, 16:42
ресурс Flash 10000 перезаписей, однако:
1. Следует учесть, что загрузка программы это тоже перезапись
2. Flash-память разбита на страницы и при записи 1 параметра перезаписывается вся страница, а на ней могут быть десятки разных параметров.
3. Т.о. не рекомендуется записывать более 1000 параметров или программ в год (с учётом срока эксплуатации)
Спасибо, за ответ. Но он меня мягко говоря расстроил, теперь и не знаю что делать. Может кто-нибудь подскажет.
Задача следующая: Имеется ПЛК63 с транзисторными выходами. Необходимо управлять одним клапаном(клапан дозирования). Длительность команд от 20-1000мс, период от 5-200с. Возможно ли такое сделать на данном контроллере? Я перепробывал: Blink, таймеры, счетчик милисекунд. Они работают, но с большой погрешностью, причем 5-6 импульсов нормальных , а затем 1-2 плохих(большая погрешность).
Василий Кашуба
13.05.2015, 18:48
Спасибо, за ответ. Но он меня мягко говоря расстроил, теперь и не знаю что делать. Может кто-нибудь подскажет.
Задача следующая: Имеется ПЛК63 с транзисторными выходами. Необходимо управлять одним клапаном(клапан дозирования). Длительность команд от 20-1000мс, период от 5-200с. Возможно ли такое сделать на данном контроллере? Я перепробывал: Blink, таймеры, счетчик милисекунд. Они работают, но с большой погрешностью, причем 5-6 импульсов нормальных , а затем 1-2 плохих(большая погрешность).
Вы приложите свою программу, специалисты посмотрят и может, что нибудь подскажут.
Вот мой проект для ПЛК73 для 63 все тоже самое. В программе выводится значение периода ШИМа на экран и с помощью кнопок его можно изменят. Все с пояснениями думаю разберетесь. А более подробно рассказывать как это все работает это долгая история. Ни в одном мануале от ОВЕНа про это ничерта не написасно и про то как работать с библиотекой arm7 тоже. Ключевой момент с 15 по 20 строку кода!!!
Спасибо, за ответ. Но он меня мягко говоря расстроил, теперь и не знаю что делать. Может кто-нибудь подскажет.
Задача следующая: Имеется ПЛК63 с транзисторными выходами. Необходимо управлять одним клапаном(клапан дозирования). Длительность команд от 20-1000мс, период от 5-200с. Возможно ли такое сделать на данном контроллере? Я перепробывал: Blink, таймеры, счетчик милисекунд. Они работают, но с большой погрешностью, причем 5-6 импульсов нормальных , а затем 1-2 плохих(большая погрешность).
Дай ссылку на описание клапана. Очень интересно что за клапан такой.
Филоненко Владислав
14.05.2015, 12:07
Спасибо, за ответ. Но он меня мягко говоря расстроил, теперь и не знаю что делать. Может кто-нибудь подскажет.
Задача следующая: Имеется ПЛК63 с транзисторными выходами. Необходимо управлять одним клапаном(клапан дозирования). Длительность команд от 20-1000мс, период от 5-200с. Возможно ли такое сделать на данном контроллере? Я перепробывал: Blink, таймеры, счетчик милисекунд. Они работают, но с большой погрешностью, причем 5-6 импульсов нормальных , а затем 1-2 плохих(большая погрешность).
ПЛК63 для прямого управления с такими требованиями к точности и быстродействию не подходит. А вот если к нему подключить модуль расширения (МХ или ПР) - всё будет работать хорошо.
2-й вариант если модификацияс аналоговыми выходами - либо использовать клапан с управлением аналоговым сигналом, либо простой преобразователь напряжение->скважность на 555 таймере.
3-й - если есть навыки программирования микроконтроллеров - можно сделать плату расширения для управления клапаном. Реализовывал такие устройства для управления ШД.
PAVEL_EKB
14.05.2015, 17:02
Спасибо, всем за ответы, но не один из них мне не подходит. Что касается ответа aRRma99 , то изначально я так и хотел сделать, но оказалось, что нельзя, т.к. параметр "Период ШИМ" находится во флеш-памяти, а у нее ограниченный ресурс перезаписи. Что касается ответа Владислава, тут наверно все работоспособно, но требует дополнительных устройств, чего тоже не хотелось бы. Зато поломав голову еще целый день, у меня кое-что получилось, хотя и с некоторыми ограничениями, которые для меня не критичны. Мой генератор выдает импульсы от 10 мс до 900мс с погрешностью 1мс с любым периодом кратным 1000мс, а импульсы от 900мс с погрешностью в несколько мс( для >900мс использовал Blink), с любым периодом. Если кому-нибудь такой пригодится вот мой генератор. Если с ним еще немного позаниматься, то я думаю можно улучшить характеристики.
PAVEL_EKB
14.05.2015, 17:11
Для своего генератора в предыдущем посте, я физически(проводом) соединял выход ШИМ со одним из входов, а кто подскажет, как это можно сделать программно. Проблема в том, что на выход ШИМ подается дробное число, а когда начинается и заканчивается импульс неизвестно.
Спасибо, всем за ответы, но не один из них мне не подходит. Что касается ответа aRRma99 , то изначально я так и хотел сделать, но оказалось, что нельзя, т.к. параметр "Период ШИМ" находится во флеш-памяти, а у нее ограниченный ресурс перезаписи. Что касается ответа Владислава, тут наверно все работоспособно, но требует дополнительных устройств, чего тоже не хотелось бы. Зато поломав голову еще целый день, у меня кое-что получилось, хотя и с некоторыми ограничениями, которые для меня не критичны. Мой генератор выдает импульсы от 10 мс до 900мс с погрешностью 1мс с любым периодом кратным 1000мс, а импульсы от 900мс с погрешностью в несколько мс( для >900мс использовал Blink), с любым периодом. Если кому-нибудь такой пригодится вот мой генератор. Если с ним еще немного позаниматься, то я думаю можно улучшить характеристики. 18155
А какой у памяти ресурс? Я думаю от перезаписи парочки байт она не помрет у вас за пару месяцев. как к примеру не помирают SSD накопители. В перезаписях какой ресурс у нее?
PAVEL_EKB
15.05.2015, 14:49
А какой у памяти ресурс? Я думаю от перезаписи парочки байт она не помрет у вас за пару месяцев. как к примеру не помирают SSD накопители. В перезаписях какой ресурс у нее?
Посмотрите на предыдущей странице, пост #58.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot