Страница 2 из 9 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 81

Тема: Функции String

  1. #11
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    Наверняка в ST есть так же готовые функции преобразования из байт во float
    Считав несколько переменных одним запросом вы можете добавить доп переменную в функции для индекса и изменить там на
    BitConverter.ToSingle (mass, index);

    И указывать индекс массива каждой требуемой переменной
    Последний раз редактировалось melky; 07.08.2024 в 13:29.

  2. #12
    Пользователь
    Регистрация
    22.05.2018
    Адрес
    Сочи, Лазаревское
    Сообщений
    91

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Реал состоит из четырех байт. Если это продолжение темы про хекс, то это не тупо байты в строку перевести, а собрать согласно ieee 754

    ЗЫ Вангую что там на приборе сейчас 0.0328
    Да, это из той же оперы, так сказать продолжение. Как отправить разобрался. Теперь надо понять что делать с ответом.
    Число там = 0.0328006. ЗНАЧИТ Я ПРАВИЛЬНЫЕ 4 БАЙТА "ВЫРВАЛ".
    Расскажите подробнее, что значит собрать согласно ieee 754 ?
    Из ответа прибора я выделю эти 4 байта в стринг. А дальше как собрать?
    Последний раз редактировалось Vetal10; 08.08.2024 в 06:09.

  3. #13
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    capzap не просто вангует, он прав.
    Протокол отдает массив запрашиваемых переменных в виде массива 4-х байтнвх значений .
    Единственное если она float, ,то это ieee754, в наборе ещё можно оказаться так же uint32 так как тоже имеет 4 байта и это допустимо для одного запроса

  4. #14
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    Блин, неужели в ST нет аналога в MS4D?

    И неужели там же нет возможности сделать FBD на C# и применять его в ST ?

  5. #15

    По умолчанию

    Можно из 4 байт собрать 2 WORD, а потом с помощью функции собрать REAL
    Код:
     W1:=(Byte1+shl(Byte2,8)); 
     W2:=(Byte3+shl(Byte4,8));
    Функция тут, выложил capzap, REAL из двух WORD_____ https://owen.ru/forum/showthread.php?t=37203&page=10#95

    В ПЛК это делается без проблем через указатели.
    Пробовал собрать сразу DWORD и конвертировать в REAL, получается не правильно.
    Последний раз редактировалось kondor3000; 07.08.2024 в 15:35.

  6. #16
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    https://masteropc.insat.ru/blog/fb-s...v-masterscada/

    Если в мс4д под понятием Вещественный всегда double, то просто потом привести к нему.
    У вас есть средства, а вы е... с кучей преобразований из строк в байты из байтов в Ворды и т.д. Зачем?

  7. #17
    Пользователь
    Регистрация
    22.05.2018
    Адрес
    Сочи, Лазаревское
    Сообщений
    91

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    https://masteropc.insat.ru/blog/fb-s...v-masterscada/

    У вас есть средства, а вы е... с кучей преобразований из строк в байты из байтов в Ворды и т.д. Зачем?
    Я C# не знаю. Не смог понять когда и какие библиотеки подключать. И главное: где их брать и зачем это на простейшем алгоритме? Ни в одном языке такой дури нет.

    Неужели свой ФБ на C# будет проще, чем несколько готовых конвертаций на ST ?
    Последний раз редактировалось Vetal10; 07.08.2024 в 16:19.

  8. #18
    Пользователь
    Регистрация
    22.05.2018
    Адрес
    Сочи, Лазаревское
    Сообщений
    91

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Блин, неужели в ST нет аналога в MS4D?

    И неужели там же нет возможности сделать FBD на C# и применять его в ST ?
    C# не знаю. Но любой ФБ конвертации можно запихнуть в ST.

  9. #19
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,053

    По умолчанию

    Цитата Сообщение от Vetal10 Посмотреть сообщение
    Неужели свой ФБ на C# будет проще, чем несколько готовых конвертаций на ST ?
    Код:
    b AT  %MB0 : ARRAY[1..4] OF BYTE := 234,89,6,61;
    x AT  %MB0 : REAL;
    собсно код:
    Код:
    ; (*это код конвертации*)
    --
    а причем тут был string, непонятно
    Последний раз редактировалось Валенок; 07.08.2024 в 18:15.

  10. #20
    Пользователь
    Регистрация
    22.05.2018
    Адрес
    Сочи, Лазаревское
    Сообщений
    91

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Код:
    b AT  %MB0 : ARRAY[1..4] OF BYTE := 234,89,6,61;
    x AT  %MB0 : REAL;
    собсно код:
    Код:
    ;
    --
    а причем тут был string, непонятно
    STRING получится в самом начале, из ответа прибора будет вырвано 4 байта.
    Как их (все 4) превратить в REAL ?

    ARRAY OF BYTE := 234,89,6,61 уже получил. Что с ним дальше делать? С# не знаю. Как С# применить в ST не знаю.

Страница 2 из 9 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Длинные строки (STRING)
    от rumkin в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 16.05.2022, 13:45
  2. String и Модбас слейв
    от жекон в разделе Сетевые технологии
    Ответов: 11
    Последнее сообщение: 04.11.2013, 16:59
  3. Длинный STRING
    от Nazar в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 08.03.2011, 13:04
  4. String переменные в архиваторе
    от Антон в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 25.12.2007, 10:53

Ваши права

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