Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: Как из REAL сделать 2 * WORD (для Modbus)?

  1. #1

    Exclamation Как из REAL сделать 2 * WORD (для Modbus)?

    Добрый вечер!

    ПЛК 150 используется как модуль ввода-вывода для СПК 110 (зачем, не спрашивайте, рак мозга у одного товарища-погроммиста).

    Протокол обмена - Modbus-RTU через RS485.

    Модбас передает максимум переменные типа WORD. Аналоговые входы\выходы имеют тип REAL (по длине - 2хWORD).

    Вопрос - как сделать в Codesys 2.3 из REAL два WORD.

    MEMCPY, насколько я понял, оно не умеет.

    Как еще?

    Заранее спасибо!

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

    По умолчанию

    модбас передает все
    4 байта
    8 байт
    флоат
    файл
    и т.д.
    плк 150 тоже

  3. #3
    Пользователь Аватар для _Mikhail
    Регистрация
    25.07.2013
    Адрес
    Ярославль
    Сообщений
    510

    По умолчанию

    Для передачи REAL между ПЛК и СПК не надо его разбивать. нужно считывать оба регистра и составлять обратно REAL.Все это описано http://www.owen.ru/forum/showthread.php?t=23897

  4. #4
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от SokolovA Посмотреть сообщение
    (зачем, не спрашивайте, рак мозга у одного товарища-погроммиста)
    вполне нормальное решение, чтоб не закупать модули по отдельности

    а вот по Вам
    1) выше уже написано что конфигуратор плк150 позволяет иметь в слейве и реалы в том числе
    2) memcpy может и не работает, только она для КДС3.5, а в КДС2.3 используется sysmemcpy
    3) вариантов как еще масса

  5. #5

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вполне нормальное решение, чтоб не закупать модули по отдельности

    а вот по Вам
    1) выше уже написано что конфигуратор плк150 позволяет иметь в слейве и реалы в том числе
    2) memcpy может и не работает, только она для КДС3.5, а в КДС2.3 используется sysmemcpy
    3) вариантов как еще масса
    Неа, не нормальное, ни по деньгам - экономии в данном конкретном случае в минус рубль, ни по технологичности - вместо разработки я трачу время на разбивку\склеивание переменных.

    ПЛК 150 передает REAL. А вот на стороне 3.6 у меня такая http://i.piccy.info/i9/08796125136446202e0ae4ae0143f4ac/1468439960/201414/1051572/150.jpg.
    Модбас больше чем WORD не принимает, тип сменить нельзя, он зависит от команды, а они только для BOOL (Функция 01), BYTE (02), WORD (03, 04).

    2. За sysmemcpy спасибо.

    3. А какой вариант наилучший, напишите плиз!

  6. #6
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    преобразовывает в ворд
    2байта тупо улетели
    опять берете исходное
    сдвигаете в право(могу путать право-лево) на 16
    и преобразовываете в ворд.
    получаете второй ворд

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

    у меня раз попадалась обратная задача с расходомера данные прочесть
    создал фб. потребуется кину в личку.

  7. #7
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

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

    ПЛК 150 передает REAL. А вот на стороне 3.6 у меня такая http://i.piccy.info/i9/08796125136446202e0ae4ae0143f4ac/1468439960/201414/1051572/150.jpg.
    Модбас больше чем WORD не принимает, тип сменить нельзя, он зависит от команды, а они только для BOOL (Функция 01), BYTE (02), WORD (03, 04).

    2. За sysmemcpy спасибо.

    3. А какой вариант наилучший, напишите плиз!
    Т.е. у Вас нет сложностей опрашивать несколько устройств в сети, вместо одного?
    У Вас нет проблем с габаритами шкафа для этой мини-задачи?
    Из модуля аналоговых входов, Вам тоже пришлось бы "выуживать" РЕАЛ по модбас, не вижу разницы с текущим вариантом комплектации. Если Вы планировали забирать ИНТ-ы, то кто мешает делать это в плк?

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Нормальное решение программиста который не занимается хренью в виде разбивки/склеивания мифических регистров, а пересылает целиком структуры и пьет пиво пока вы пытаетесь "экономить рубль".

    Модбас вообще не работает c BOOL, BYTE, WORD.
    Функции 1,2 - атавизм. Функции 3,4 позволяют прочитать объем абстрактных данных от 2 до 250 байт куда можно пихнуть практически все что угодно с точки зрения автоматизации.
    Рубль тут никто не экономит, написал, чтобы не спрашивали про финансовую составляющую.

    Ок, и как же их переслать, эти структуры, со стороны 2.3, если аналоговый вход имеетр тип REAL, а в 3.6 я не могу задать произвольный тип переменной, которая мне приходит по модбасу, она только WORD или меньше. То есть 250 байт он может и могет, но они будут разбиты на N переменных типа WORD. Которые нужно резать на источнике (ПЛК 150) и склеивать на приемнике (СПК 110).

    Еще раз, скрин (http://i.piccy.info/i9/0879612513644...051572/150.jpg).

    Тип WORD в переменной не меняется.

    Цитата Сообщение от capzap Посмотреть сообщение
    Т.е. у Вас нет сложностей опрашивать несколько устройств в сети, вместо одного?
    У Вас нет проблем с габаритами шкафа для этой мини-задачи?
    Из модуля аналоговых входов, Вам тоже пришлось бы "выуживать" РЕАЛ по модбас, не вижу разницы с текущим вариантом комплектации. Если Вы планировали забирать ИНТ-ы, то кто мешает делать это в плк?
    А в чем проблема опрашивать 5 модулей? Они это сами делают, мне ни строчки кода писать не надо, только раздать адреса и настройки залить в модули.
    Проблемы, наверное, будут, когда один из модулей отвалится, но тогда и вся система станет неработоспособной.

    Габариты - это не мои проблемы, в данной задаче. Но, в общем и целом, шкафы производства РФ пока еще есть и они стоят копейки.

    Из модулей мне ничего выуживать не надо, есть готовое решение от Овена - шаблоны модулей. Вопросы взаимодействия с шиной от меня экранированы в данном случае, что упрощает и ускоряет разработку.

    Либо у меня не тот кодесис, либо я что-то делаю не так. Еще раз, тип аналогового входа на ПЛК 150 - REAL. В модбас-слейв на ПЛК я могу сделать переменную REAL. Но на 3.6 мой канал имеет тип ARRAY [0...4] OF WORD, и изменить ни тип канала, ни, соответственно, тип переменных в канале я не могу руками.
    В этом-то вся и проблема.
    Значит, нужно на ПЛК запихивать REAL в два WORD, а на СПК наоборот их склеивать.

    Что не так?

  9. #9
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от SokolovA Посмотреть сообщение
    Что не так?
    да много чего не так, не ликбез же проводить

    переходите в тему http://www.owen.ru/forum/showthread.php?t=23897 скачивайте документ SPK_Modbus_v.0.ХХ до страницы 120 раздел 6.4.2. Описание реализации на языке ST ну и дальше по описанию

  10. #10

    По умолчанию

    //==========
    //==========
    Последний раз редактировалось bogd67; 20.02.2026 в 14:44. Причина: поправил ошибку при которой некорректно обрабатывались малые числа

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Как передать значения REAL по modbus?
    от kat в разделе СПК1xx (архив)
    Ответов: 22
    Последнее сообщение: 29.08.2020, 22:34
  2. Перевод WORD в REAL в CFC.
    от Newcomer в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 16.01.2016, 10:11
  3. Упаковка переменных BOOL, INT, REAL в Modbus String
    от ПРОЕКТ-П в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 20.04.2015, 22:09
  4. Из двух WORD один REAL?
    от kholonkin в разделе СПК2xx (архив)
    Ответов: 1
    Последнее сообщение: 06.09.2013, 10:17
  5. modbus RTU, real, swap (перестановка слов)
    от vitiali в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 18.07.2011, 16:52

Ваши права

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