Ну хоть одним глазком ?
Вид для печати
Попробуйте подставить в преобразование типов TIME_TO_REAL
значение 4194967295 ms, названное в документации максимальным значением для типа TIME. Может это и так, только что Вы получите на выходе? У меня, например, получается совсем не это число. Ограничения в преобразовании не указано, значит что-то не так с реальным диапазоном.
Можете поэкспериментировать с обратными преобразованиями из REAL. Там Вы получите тоже странные, на мой взгляд результаты. Уверен, что Вы этого не пробовали делать.
1. Ошибок в документации тьма.
2. Я изложил свои наблюдения. Не был понят. Попытался разъяснить. В процессе дискуссии понял, что у меня это не получится.
Поскольку мы давно отклонилась от первоначального предмета, давайте на этом заканчивать. Будем надеяться, что когда-нибудь мы начнем понимать друг друга.
тут скорее надо не друг друга понимать, а как работает процессор, ему бы кто объяснил что в шине данных переменная типа тайм и надо округлять так как хочет пользователь
Ну это не хорошо ,процессор с типами не работает :cool:(не передергивать) ,он работает с кодом .А уж как там сделали программисты (разработчики) языка ,то это другое дело .Сколько копьев было сломано с обратными связями(споров с разработчиками) ,пока разработчики не ввели явные обратные связи в ОЛ.
Пользователь не обязан вникать в трудности разработчиков ,а разработчик должен думать о пользователе ,причем разной квалификации .Лично мне это напоминает наш спор в теме ПР ,о делении на ноль .Сказать пользователю -Сам дурак- это не от большого ума и неуважение пользователя .
Извините ,что встрял
так вот и я говорю, имеется 32 разряда шины данных, есть набор микрокоманд которые крутятся в процессоре и о типах переменных действительно знают языки высокого уровня, но как бы не компания овен разработчик стандарта МЭК, IEEE754 (другими не интересовался), даже среда разработки в которой мы что то ваяем и то принадлежит немцам, компании пролог.
Спрашивается, зачем здесь разводить эти споры, потому что форум самый активный?
Так если не чего нельзя изменить ,то нужно описать фичу(инструкцию то не в германии пишут) -об этом и речь ,не все ж с таким опытом работы.Я все сказал ,покидаю тему.
Все не так.
1. Указанное мною в предыдущем сообщении число принадлежит по документации диапазону значений TIME. Следовательно, на выходе должно получиться это же число. Этого не происходит. Но Вы почему-то этого не видите.
2. Вы не поэкспериментировали. Потому что если бы провели такие экспермиенты, то полученные результаты заставили бы Вас задуматься.
3. Я стараюсь как можно более доходчиво разъяснить свою позицию. Вы стараетесь писать как можно непонятнее, небрежно бросая пару строк. Не строя гипотез о причинах этого, могу лишь сказать, что подобный стиль не ведет к решению проблем и, следовательно, неконструктивен.
Вывод:
Продолжать диалог в этой ситуации бессмысленно.
T1:= T#49d17h2m47s295ms (копи пасте прям из хэлпа)
RR:=TIME_TO_REAL(T1);
T2:=REAL_TO_TIME(RR);
Что не вижу ? T1 = T2. Должно быть как-то иначе ?
Ах, вырезали вторую цифирь – а она 4194967295ms
А в голову не приходит- почему первая и вторая цифирь в хелпе разные ?
Что простая опечатка 4194967295ms ? Девочка 1 вместо 2 нажала. Нет же. Всё неправильно. Всё нет так. Катастрофа. Из опечатки сделали вселенскую проблему. Мне такое даже в голову не приходит.
Вы видели какую-то документацию в таком объеме АБСОЛЮТНО без опечаток ?
Знаете за что у меня взгляд зацепился когда копипасте того числа сделал ? За чётность при обратном преобразовании. Мне хватило чтоб найти трабл.
Вы не подумали, почему я даже не пытаюсь вспомнить кол-во дней/часов в максимальном TIME а пишу просто INT_TO_TIME(-1) ?
Так эти строки – из той же песни. И если взаимосвязь невидна, хотя бы направление, то это нужно основы изучать - но форум вроде не тот.
А зачем мне экспериментировать ?
Выяснять почему-же все таки с тем числом нет отката назад при преобразовании ?
А Вас не удивляет что REAL_TO_WORD(2.7) = 3 ? Примерно отсюда же. Курим по IEEE – если интересно. Направление – представление отрицательных чисел. Оно не аналогично целочисленным. То число в нормализованном виде для мантиссы требует 27 бит. А сколько дают ? А -1 требует 1 бита. (знак – отдельно в обоих случаях) Вот и делайте выводы
И действительно -
Добрый день, подскажите, пожалуйста. Можно ли программно изменять период ШИМ сигнала, ПЛК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 или не диске ПЛК.
C библиотекой "arm7_specific". вроде бы разобрался, спасибо! Теперь возникает второй вопрос, а сколько раз можно перезаписывать один конфигурационный параметр, ведь насколько я понимаю вся конфигурация находится во Flash-памяти, а у нее ограниченное кол-во циклов перезаписи?
ресурс Flash 10000 перезаписей, однако:
1. Следует учесть, что загрузка программы это тоже перезапись
2. Flash-память разбита на страницы и при записи 1 параметра перезаписывается вся страница, а на ней могут быть десятки разных параметров.
3. Т.о. не рекомендуется записывать более 1000 параметров или программ в год (с учётом срока эксплуатации)
Спасибо, за ответ. Но он меня мягко говоря расстроил, теперь и не знаю что делать. Может кто-нибудь подскажет.
Задача следующая: Имеется ПЛК63 с транзисторными выходами. Необходимо управлять одним клапаном(клапан дозирования). Длительность команд от 20-1000мс, период от 5-200с. Возможно ли такое сделать на данном контроллере? Я перепробывал: Blink, таймеры, счетчик милисекунд. Они работают, но с большой погрешностью, причем 5-6 импульсов нормальных , а затем 1-2 плохих(большая погрешность).
Вот мой проект для ПЛК73 для 63 все тоже самое. В программе выводится значение периода ШИМа на экран и с помощью кнопок его можно изменят. Все с пояснениями думаю разберетесь. А более подробно рассказывать как это все работает это долгая история. Ни в одном мануале от ОВЕНа про это ничерта не написасно и про то как работать с библиотекой arm7 тоже. Ключевой момент с 15 по 20 строку кода!!!
ПЛК63 для прямого управления с такими требованиями к точности и быстродействию не подходит. А вот если к нему подключить модуль расширения (МХ или ПР) - всё будет работать хорошо.
2-й вариант если модификацияс аналоговыми выходами - либо использовать клапан с управлением аналоговым сигналом, либо простой преобразователь напряжение->скважность на 555 таймере.
3-й - если есть навыки программирования микроконтроллеров - можно сделать плату расширения для управления клапаном. Реализовывал такие устройства для управления ШД.
Спасибо, всем за ответы, но не один из них мне не подходит. Что касается ответа aRRma99 , то изначально я так и хотел сделать, но оказалось, что нельзя, т.к. параметр "Период ШИМ" находится во флеш-памяти, а у нее ограниченный ресурс перезаписи. Что касается ответа Владислава, тут наверно все работоспособно, но требует дополнительных устройств, чего тоже не хотелось бы. Зато поломав голову еще целый день, у меня кое-что получилось, хотя и с некоторыми ограничениями, которые для меня не критичны. Мой генератор выдает импульсы от 10 мс до 900мс с погрешностью 1мс с любым периодом кратным 1000мс, а импульсы от 900мс с погрешностью в несколько мс( для >900мс использовал Blink), с любым периодом. Если кому-нибудь такой пригодится вот мой генератор. Если с ним еще немного позаниматься, то я думаю можно улучшить характеристики.
Для своего генератора в предыдущем посте, я физически(проводом) соединял выход ШИМ со одним из входов, а кто подскажет, как это можно сделать программно. Проблема в том, что на выход ШИМ подается дробное число, а когда начинается и заканчивается импульс неизвестно.