Страница 348 из 361 ПерваяПервая ... 248298338346347348349350358 ... ПоследняяПоследняя
Показано с 3,471 по 3,480 из 3601

Тема: разные вопросы новичка

  1. #3471

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Откуда там 64 бита? Все регистры у WirenBoard в 16 или 32 бита, обычные (кроме накопленных). Он же напряжения читает 32-юитными регистрами нормально. И на его картинке написано u32 или s32 - 32 бита.
    Вот карта: https://wirenboard.com/wiki/WB-MAP3E_Data_Registers_v.2
    Умножать 3 регистр на 2^32 степени и 4 регистр на 2^48 степени вы чем будете? Посмотрите мой скрин или свою ссылку до конца.
    Кроме того, читать надо все 4 регистра разом, а ПР даже этого не может.

    0x2200
    младшая часть — значение оставляем «как есть» : 0хb4df hex = 46303 dec
    0x2201
    значение умножаем на 2^16 : 0x0dff hex = 3583 dec, 3583 * 65536 = 234815488
    0x2202
    значение умножаем на 2^32 : 0 * 4294967296 = 0
    0x2203
    значение умножаем на 2^48 : 0 * 281474976710656 = 0
    Суммируем результаты : 46303 + 234815488 + 0 + 0 = 234861791. Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).
    В итоге получаем 2348.61791 КВт /час
    Последний раз редактировалось kondor3000; 12.03.2024 в 15:41.

  2. #3472

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Умножать 3 регистр на 2^32 степени и 4 регистр на 2^48 степени вы чем будете?
    Ааа!! Точно же! Но у него читается из регистра 0, поэтому я занимался только этой задачей.
    А вот WirenBoard я обожаю пламенной любовью как раз в этом ужасном стиле отображения данных. Там вон для модуля измерения 2 каналов 4..20 мА даже масштабирования нет, и чтобы получить миллиамперы, надо умножать значение из регистра на 3.125*10^-2. Это ЖЕСТЬ. Я иногда хочу убить их за такие скрытые сюрпризы, как и здесь.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  3. #3473

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра
    Я бы решал задачу вывода 64 разрядного числа на экран методами длинной арифметики. На ST это совсем не составит труда.
    Пусть имеется 4 регистра по 16 разрядов. Их можно для упрощения перенести в 4 32 разрядных - повысив ёмкость.
    Далее, алгоритм вывода числа на экран на псевдокоде
    Код:
    uint x=123456;
    char digits[30]; //или сколько разрядов будет занимать число
    uint count=0;
    do
    {
      digits[count++] = (x % 10); //остаток от деления на 10
      x = x / 10;  //целочисленное деление на 10;
    }while(x>0);
    
    //теперь в массиве digits цифры выводимого числа в обратном порядке
    //вывод массива
    for(int i=count; i>0; i--)
      putchar(digits[i-1]);
    Для длинной арифметики делить можно вычитанием или имитацией деления в столбик - как раз и пригодится свойство превышения разрядности переменных над разрядностью реального содержимого.
    Можно и деление на 10 заменить делением на 10^5, что ускорит получение групп цифр для вывода, а последний остаток - выводить отдельно вместе с элементом текст, содержащим символ "точка". Выводить со значащими нулями.
    Т.е. вместо одного числа будет выведено 5 при помощи 6 элементов (5 вывод int, 1 вывод text).

    Может я чуть сумбурно описал, но алгоритмы длинной арифметики часто используются.

    2 в 64 степени = 18 446 744 073 709 551 616, т.е. всего 20 цифр.
    Последний раз редактировалось FPavel; 12.03.2024 в 18:19.

  4. #3474

    По умолчанию

    Если вопрос только в выводе на экран, а не синхронном получении всех разрядов, то задача элементарна.
    Сложение и вычитание длинных чисел - тоже очень простое.

    Попробуйте реализовать длиннку. Если не получится - в воскресенье могу попробовать сделать вывод значения на экран.

  5. #3475

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Если вопрос только в выводе на экран, а не синхронном получении всех разрядов, то задача элементарна.
    Сложение и вычитание длинных чисел - тоже очень простое.

    Попробуйте реализовать длиннку. Если не получится - в воскресенье могу попробовать сделать вывод значения на экран.
    Прежде чем что то писать, вы тему по ссылке хотя бы прочитайте и мои посты выше. Когда поймёте о чём речь, тогда и поговорим.
    На Лоджике нет языка С, если выкладываете программу, то пишите на ST тогда.
    Как считать на ПР200 4 регистра разом?
    Последний раз редактировалось kondor3000; 12.03.2024 в 19:49.

  6. #3476

    По умолчанию

    Хорошо, я сейчас сделаю демку на ПР205 для вывода 64 разрядного числа из 4 регистров (переменных) по 16 разрядов. Это не очень трудно.

    А как его принять в ПР - не знаю. Если только в этом проблема, то это неразрешимо до исправления разработчиками.

  7. #3477

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Хорошо, я сейчас сделаю демку на ПР205 для вывода 64 разрядного числа из 4 регистров (переменных) по 16 разрядов. Это не очень трудно.

    А как его принять в ПР - не знаю. Если только в этом проблема, то это неразрешимо до исправления разработчиками.
    Нужен не только вывод на экран, нужна программа для сложения и умножения больших чисел из 20-30 знаков.
    И даже это не решит проблему, так ка нельзя прочитать 4 регистра сразу.
    Последний раз редактировалось kondor3000; 12.03.2024 в 20:05.

  8. #3478

    По умолчанию

    ...но у него в 32-битном регистре 0. Почему он не читается? Вот куда смотреть надо пока что, а не как его обработать.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  9. #3479

    По умолчанию

    Вот просто вывод 64 разрядного числа из 4 регистров (переменных) по 16 разрядов каждый.

    Брать делитель 10^5 не получится, т.к. возможно переполнение при переносе остатка от деления в следующий разряд.
    Но для данного конкретного случая - дробная часть содержит 5 десятичных разрядов можно немного усложнить алгоритм и добиться желаемого.

    Перестановку принятых регистров можно делать.

    Кроме приёма 4 регистров - проблем не вижу.

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Нужен не только вывод на экран, нужна программа для сложения и умножения больших чисел из 20-30 знаков.
    И даже это не решит проблему, так ка нельзя прочитать 4 регистра сразу.
    Сложение, вычитание больших чисел - это ещё меньшая проблема, чем вывод на экран.

    Вот про связь - да, ничего не поделать.
    Вложения Вложения
    Последний раз редактировалось FPavel; 12.03.2024 в 20:08.

  10. #3480

    По умолчанию

    И ещё один тестовый вывод - число с фиксированной десятичной точкой (15+5).
    Просто добавил ещё одно деление на 10 и потом собрал 5-разрядное число для показа десятичной дроби

    Если нужно сложение-вычитание-умножение длинных чисел - могу сделать, только алгоритм Карацубы реализовывать не буду (не умею).

    Я прочитал тему по ссылке, но не уяснил проблемы. Там перемещают какие-то байты для получения правильной последовательности байт в принятом 64 разрядном слове. Но это не проблема.

    Если сложность в чём-то другом - лучше прямо напишите, не отсылайте к водянистой многостраничной теме.
    Вложения Вложения
    Последний раз редактировалось FPavel; 12.03.2024 в 20:37.

Страница 348 из 361 ПерваяПервая ... 248298338346347348349350358 ... ПоследняяПоследняя

Похожие темы

  1. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  2. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 15:39
  3. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 06.09.2011, 15:12
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 10:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •