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

Тема: Общение с прибором с помощью скрипта

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

    По умолчанию

    ну а техподдержка на конкретный SendAndReceiveDataByMask говорит? там же либы подключаются к MS4D и можно пользоваться всем их функционалом?

    Посмотрите тут темы по C# для MS4D были. Просто подключаете эти либы в VisualStudio и смотрите что там есть, какие методы, классы и т.д.
    Насколько понял, документации на либы нет или она в непонятно зачаточном состоянии (или что-то по запросу вам дадут).
    Тут на форуме будете ждать долго.

    table.insert это назначение элементам массива значений, если правильно понимаю.
    Последний раз редактировалось melky; 27.03.2025 в 12:06.

  2. #12

    По умолчанию

    Мне не было нужды, но если бы стояла подобная задача, то использовал:
    "Универсальный протокол COM порта - служит для получения данных через COM-порт устройства, на котором установлена среда исполнения. Используется для работы с ФБ COMPort, COMPortSync, COMPortByte, COMPortByteSync. ФБ COMPortSync и COMPortByteSync используются только в программах данного протокола. COMPort и COMBytePort можно использовать в программах объектов..."

  3. #13
    Пользователь
    Регистрация
    02.11.2012
    Адрес
    г.Челябинск
    Сообщений
    107

    По умолчанию

    Цитата Сообщение от Роман Ж Посмотреть сообщение
    Мне не было нужды, но если бы стояла подобная задача, то использовал:
    "Универсальный протокол COM порта - служит для получения данных через COM-порт устройства, на котором установлена среда исполнения. Используется для работы с ФБ COMPort, COMPortSync, COMPortByte, COMPortByteSync. ФБ COMPortSync и COMPortByteSync используются только в программах данного протокола. COMPort и COMBytePort можно использовать в программах объектов..."
    Как раз пробуем разобраться с данными ФБ

  4. #14
    Пользователь
    Регистрация
    02.11.2012
    Адрес
    г.Челябинск
    Сообщений
    107

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    ну а техподдержка на конкретный SendAndReceiveDataByMask говорит? там же либы подключаются к MS4D и можно пользоваться всем их функционалом?

    Посмотрите тут темы по C# для MS4D были. Просто подключаете эти либы в VisualStudio и смотрите что там есть, какие методы, классы и т.д.
    Насколько понял, документации на либы нет или она в непонятно зачаточном состоянии (или что-то по запросу вам дадут).
    Тут на форуме будете ждать долго.

    table.insert это назначение элементам массива значений, если правильно понимаю.
    Техподдержка от Insat пока молчит. В крайнем случае придется докупить OPC сервер.

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

    По умолчанию

    по поводу данных FB вроде тоже тема была недавно...

    https://owen.ru/forum/showthread.php?t=37147 - документацию хотя бы сжатую можно запросить.
    Еще вариант, загрузить в VS нужные библиотеки и написать небольшой код, который вам вывалит все доступные методы, думаю как либы в объект запихнуть найдете. Тут и свойства посмотреть можно и поля. Плюс то, что получите от Инсат.

    Код:
            #region TraceObject
            void TraceObjectFields(object obj) // выводит список полей, их имена и значения:
            {
                foreach (FieldInfo mi in obj.GetType().GetFields())
                    // Вывод в лог_WriteLine(mi.FieldType.Name + " " + mi.Name + " = " + mi.GetValue(obj) + mi.FieldType.ToString());
            }
            void TraceObjectProperties(object obj) // выводит список свойств объекта:
            {
                foreach (PropertyInfo pi in obj.GetType().GetProperties())
                    // Вывод в лог_WriteLine(pi.PropertyType.Name + " " + pi.Name + " = " + pi.GetValue(obj, null));
            }
            void TraceObjectMethods(object obj)
            {
                foreach (MethodInfo mi in obj.GetType().GetMethods())
                     // Вывод в лог_WriteLine(mi.Name + " " + mi.IsPublic);
    
            }
            #endregion TraceObject
    Последний раз редактировалось melky; 28.03.2025 в 10:53.

  6. #16
    Пользователь
    Регистрация
    02.11.2012
    Адрес
    г.Челябинск
    Сообщений
    107

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    по поводу данных FB вроде тоже тема была недавно...

    https://owen.ru/forum/showthread.php?t=37147 - документацию хотя бы сжатую можно запросить.
    Еще вариант, загрузить в VS нужные библиотеки и написать небольшой код, который вам вывалит все доступные методы, думаю как либы в объект запихнуть найдете. Тут и свойства посмотреть можно и поля. Плюс то, что получите от Инсат.

    Код:
            #region TraceObject
            void TraceObjectFields(object obj) // выводит список полей, их имена и значения:
            {
                foreach (FieldInfo mi in obj.GetType().GetFields())
                    // Вывод в лог_WriteLine(mi.FieldType.Name + " " + mi.Name + " = " + mi.GetValue(obj) + mi.FieldType.ToString());
            }
            void TraceObjectProperties(object obj) // выводит список свойств объекта:
            {
                foreach (PropertyInfo pi in obj.GetType().GetProperties())
                    // Вывод в лог_WriteLine(pi.PropertyType.Name + " " + pi.Name + " = " + pi.GetValue(obj, null));
            }
            void TraceObjectMethods(object obj)
            {
                foreach (MethodInfo mi in obj.GetType().GetMethods())
                     // Вывод в лог_WriteLine(mi.Name + " " + mi.IsPublic);
    
            }
            #endregion TraceObject
    Спасибо! Будем пробовать

  7. #17
    Пользователь
    Регистрация
    02.11.2012
    Адрес
    г.Челябинск
    Сообщений
    107

    По умолчанию

    Снова поднимаю данную тему. Пока остановились на COMPortByteSync, ни как не можем разобраться, как полученное значение на выходе Response передать в Программу для дальнейших действий. Response имеет тип Array[*] byte, в Программе переменную можно создать массив с заданным размером. Компилятор ругается в таком случае. Если использовать Полное имя, компилятор тоже ругается.

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

    По умолчанию

    denprox, если C# то там private(public) byte[] name =
    Вы какое имя пытаетесь использовать и где?

  9. #19
    Пользователь
    Регистрация
    02.11.2012
    Адрес
    г.Челябинск
    Сообщений
    107

    По умолчанию

    С# оказалось мы не можем использовать, лицензия Standart. А с вопросом разобрались. Если создать программу (в нашем случае ST), при создании входящего параметра, необходимо установить флажок "Ось 0" на вкладке Массивы, поставить тип массива Byte. Тогда будет создан параметр типа ARRAY[*] OF BYTE. Что позволяет установить связь с выходным параметром Response в COMPortByteSync. Ну а дальше уже в скрипте можно разобрать посылку. И вот тут появился новый вопрос, как преобразовать например массив из 4 байт в число типа Real ?

    Прибор присылает массив 41 байт.
    [41, 225, 245, 6, 1, 243, 47, 206, 55, 204, 12, 26, 9, 0, 0, 154, 153, 153, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 215, 163, 59, 0, 0, 0, 0, 0, 15]

    5-8 байты - Тепловая энергия. [243, 47, 206, 55]. Формула для преобразования будет такой: B3*(2^24) + B2*(2^16) + B1*(2^8) + B0. Чтобы не изобретать велосипед, какие встроенные функции позволяют сделать это в MS4D ?
    Пытались DWORD_OF_BYTE (OSCAT) затем DWORD_TO_REAL использовать, но результат совсем не тот, что ожидается.

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

    По умолчанию

    denprox на C# BitConverter.ToSingle если не ошибаюсь, найдете. Порядок байт надо будет правильный [ 0, 1, 2, 3 ] по умолчанию. Если прилетает по другому, надо будет переставлять/переворачивать.

    По поводу BitConverter
    ToSingle(Byte[], Int32)
    Возвращает число одинарной точности с плавающей запятой, преобразованное из четырех байтов с указанной позицией в массив байтов.
    Если переставлять байты не требуется, можете забрать число сразу из входного массива.
    Последний раз редактировалось melky; 14.04.2025 в 13:57.

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

Похожие темы

  1. Ответов: 0
    Последнее сообщение: 06.04.2022, 07:51
  2. Ответов: 13
    Последнее сообщение: 05.07.2019, 11:34
  3. Ответов: 4
    Последнее сообщение: 05.06.2017, 20:40
  4. Ответов: 10
    Последнее сообщение: 22.03.2017, 08:57
  5. Общение с монитором Com-порта
    от Makin_Pavel в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 06.03.2017, 10:11

Метки этой темы

Ваши права

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