Страница 4 из 7 ПерваяПервая ... 23456 ... ПоследняяПоследняя
Показано с 31 по 40 из 81

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,285

    По умолчанию

    На C# будет одна рабочая строчка, остальные это оформительство C# функции для МастерСкада по их правилам, чтобы MS4 поняла, что куда будет подаваться и откуда будет выводиться.

    У функции должно быть два входа.
    1. Подаваемый массив байт, полученный от прибора
    2. Номер индекса - указатель на первый байт из 4-х для конвертации во float
    И выход - собственно значение, которое вы получите.

    Если кто знает ms пусть оформит. Я беспонятия, как там писать и оформлять функции, ибо МастерСкада не использую. И лет сто использовать не буду
    Когда у пЕсателей на первом месте интерфейс, а потом логика и удобство работы, так оно и будет.

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

    По умолчанию

    Там не ПЛК, там готовый прибор, который в пакете данных отдает 4-х байтные данные, либо float либо uint32 в зависимости от типа переменной в канале.

    https://support.mps-soft.ru/Help-web...b_c_sharp.html

    Справка как всегда на высоте

    В дереве объектов создадим программу C#. Добавим в нее три параметра типов :

    •Mass_Array_Of_Byte и IndexInt на клеммник входов - Как они там правильно в MS4D называются ищите, первый вход должен быть массив байт, второй просто INT число

    •Znachenie на клеммник выходов - тут нужно REAL тип

    public override void Execute()
    {
    Znachenie = BitConverter.ToSingle(Mass_Array_Of_Byte, IndexInt);
    }

    Ну и далее по справке создать блок или как-то там.
    И вишенка на торте -

    Важно! Для возможности работы С# программ в исполнительную систему должна входить опция MSRT4D-C#. Данная опция включена в базовый функционал лицензий Professional и Enterprise.

    тьфу в очередной раз в это поделие.
    я конечно тоже не ангел и делаю платные реализации, только не за такие суммы.
    Последний раз редактировалось melky; 07.08.2024 в 22:04.

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

    По умолчанию

    Вот много всяко разных советов. Но давайте поступим проще. Никакого ПЛК нет. Он не нужен. C# - не нужен.
    Есть 4 байта вырванных из ответа прибора в виде STRING. Могу из них сделать ARRAY OF BYTE.
    Есть язык ST. Простым языком скажите, что надо сделать с этими четырьмя байтами чтоб из всех четырёх получился один REAL?
    Сложить? Умножить? Разделить? Поменять местами?
    Вот тут "capzap" ванговал - он 100 пудов прав! Но как он это сделал? Он же ни C# не использовал, ни ФБ. Просто в калькуляторе сосчитал и получил правильный ответ.
    Что с чем надо сделать чтоб был REAL ? Могу по битам разложить.

    4 байта: 234,89,6,61. Само число известно: 0.0328006.
    Последний раз редактировалось Vetal10; 08.08.2024 в 06:34.

  4. #4

    По умолчанию

    Цитата Сообщение от Vetal10 Посмотреть сообщение
    Вот много всяко разных советов. Но давайте поступим проще. Никакого ПЛК нет. Он не нужен. C# - не нужен.
    Есть 4 байта вырванных из ответа прибора в виде STRING. Могу из них сделать ARRAY OF BYTE.
    Есть язык ST. Простым языком скажите, что надо сделать с этими четырьмя байтами чтоб из всех четырёх получился один REAL?
    Сложить? Умножить? Разделить? Поменять местами?
    Вот тут "capzap" ванговал - он 100 пудов прав! Но как он это сделал? Он же ни C# не использовал, ни ФБ. Просто в калькуляторе сосчитал и получил правильный ответ.
    Что с чем надо сделать чтоб был REAL ? Могу по битам разложить.

    4 байта: 234,89,6,61. Само число известно: 0.0328006.
    Да говорят же вам, ДЕЛАТЬ - ничего не надо:
    Вот переменные rReal и byByte0...byByte3 которые занимают ОДНО И ТО-ЖЕ место в памяти.
    Если вы смотрите на это место как на 4 байта, то там лежат 234,89,6,61.
    Но если вы посмотрите на это место, как на 4-байтовый REAL - то там будет 0.03280059...
    изображение_2024-08-08_104820084.png

    Снимок экрана 2024-08-08 103548.png
    Программа даже не запущена.

    Вам надо разобраться, как сделать это в ST MS4

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

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Да говорят же вам, ДЕЛАТЬ - ничего не надо:
    Вам надо разобраться, как сделать это в ST MS4
    Ну нет в ST такого. Там есть VAR := ЛЮБОЕ_TO_OBJECT. Из области ANY. ЛЮБОЕ - это INT, REAL ... Какую переменную VAR задашь для результата - такое OBJECT тебе и сделает.
    Но OBJECT может быть только OBJECT_TO_STRING();

  6. #6

    По умолчанию

    Цитата Сообщение от Vetal10 Посмотреть сообщение
    Ну нет в ST такого. Там есть VAR := ЛЮБОЕ_TO_OBJECT. Из области ANY. ЛЮБОЕ - это INT, REAL ... Какую переменную VAR задашь для результата - такое OBJECT тебе и сделает.
    Но OBJECT может быть только OBJECT_TO_STRING();
    Ещё один реальный вариант дал в 17 сообщении, только вы даже не смотрели его.

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

    По умолчанию

    https://support.mps-soft.ru/Help-web...?dword_to.html

    Вроде как есть готовые функции конвертации.

    Опять же, работая с массивами байт и вообще с байтами - зачем строки в принципе? по два лишних преобразования всегда - зачем?
    Последний раз редактировалось melky; 08.08.2024 в 11:22.

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

    По умолчанию

    Получил ответ от Insat:
    Был задан вопрос:
    Здравствуйте!

    У меня есть число: 0.0328006.

    Оно записано в формате IEEE 754.

    HEX: [EA 59 06 3D]

    или

    DEC: [234,89,6,61]

    Подскажите пожалуйста, как мне конвертировать HEX или DEC в REAL чтоб получить это число ?

    MasterScada 4D
    ---------------------------------
    Ответ:
    Стандартных функций для конвертации нет в MS4D. Поэтому вы можете написать свой функциональный блок для конвертировании из HEX в REAL. Хочу сразу заметить, что очередность байт обратная.

    Вот пример ФБ:
    79d4f3ca26095aa5fe678c3b47d12fbe6f81d6b0.png

    Проверил, работает.
    -----------------------------------
    HEX = 3D0659EA (STRING)

    VAR
    sign,exponent: INT;
    mantissa: REAL;
    END_VAR

    sign := SHR(IN := (HEX_TO_DWORD(HEX) AND 2147483648), N := 31);
    exponent := SHR(IN := (HEX_TO_DWORD(HEX) AND 2139095040), N := 23) - 127;
    mantissa := 1+DWORD_TO_REAL((HEX_TO_DWORD(HEX) AND 8388607)) / (2**23);
    Value_Real :=((-1)**sign) * mantissa * (2**exponent);
    -----------------------------------------------------------------

    Как и говорил "capzap" - легко не будет. Он прав 100 пудов !!!
    --------------------------------------------------
    Вывод: Покупаешь Пульсар - покупаешь головняк. Больше никогда не буду покупать Пульсар.
    Я им писал, ну сделайте вы Mod-Bus и ваши продажи увеличатся. Ну фиг с ним, не хотите делать Mod-Bus, то сделайте для своих счётчиков OPC сервер, программисты же есть! Им по фигу.

    НИКОГДА не покупайте Пульсар !!!

    СПАСИБО "capzap" !!! ОГРОМНОЕ !!! Если бы не он, то я бы ............. охренел !!!!!!!!!
    -------------------------------------------------
    Купил китайский счётчик воды ультразвуковой. Он в два раза дешевле и у него и M-Bus и Mod-Bas. Выбирай какой хочешь. ТРИ секунды подцепил, проверил. Отправил на объект и НЕТ ГОЛОВНЯКА !!!

    А Пульсар теперь будет валяться, пока не впарю кому-нить.
    И, что прикольно, я им отписал, что мне такой товар не подходит. Возьмите назад. В ответ - тишина !!!
    Последний раз редактировалось Vetal10; 21.09.2024 в 14:20.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,649

    По умолчанию

    Цитата Сообщение от Vetal10 Посмотреть сообщение
    Был задан вопрос:
    Здравствуйте!

    У меня есть число: 0.0328006.
    Вы им указывали что работаете с пульсаром, возможно они бы удивились что не обращаете внимание на эту ссылку https://support.mps-soft.ru/Help-web...la_pulsar.html, мне кажется есть легкий вариант, вероятно платный
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

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

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Вы им указывали что работаете с пульсаром, возможно они бы удивились что не обращаете внимание на эту ссылку https://support.mps-soft.ru/Help-web...la_pulsar.html, мне кажется есть легкий вариант, вероятно платный
    В другом месте (MasterSCADA4D + Ethernet + произвольный 16-тиричный код (HEX)) я уже писал. Дублирую!

    С MAsterScada 4D я работаю давно. И никакой ссылки там не было пока ...

    Я запросил в INSAT протокол для Пульсара с RS-485. Они содрали с меня 20 000 р. и попросили доступ. Две недели ковырялись, Сделали. И сделали его же в мультипротокол OPC сервер. Теперь при обновлении СКАДА с меня просят за обновление 10 000 и 20 000 за обновление протокола. Вот такой бизнес.

    И только после этого у них есть ссылка на Пульсар. Поверь, я это контролирую.
    Но в данном случае - это протокол пульсара по RS-485. Это ни разу не M-Bus. Та вся инфа в регистрах, как в Mod-Bus, единственная проблема того протокола, что в отличие от Mod-Bus у Пульсара самые первые не 2, а 4 байта адреса, поэтому в СКАДА оно не работает. Но я тогда и не разобрался как запустить ComPort. Спешил, поэтому предпочёл заплатить.
    Последний раз редактировалось Vetal10; 09.08.2024 в 11:48.

Страница 4 из 7 ПерваяПервая ... 23456 ... ПоследняяПоследняя

Похожие темы

  1. Длинные строки (STRING)
    от rumkin в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 25.02.2026, 17:11
  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

Ваши права

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