Страница 111 из 152 ПерваяПервая ... 1161101109110111112113121 ... ПоследняяПоследняя
Показано с 1,101 по 1,110 из 1670

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Пример функции перестановки байт в регистре, точно так же можно например, переставить регистры (байты) в переменной FLOAT (только тип переменных поменять)
    Код:
    FUNCTION Sw_Byte : WORD   //выход функции с переставленными Byte 
    VAR_INPUT
    	wIn : WORD ;       //входная переменная типа Word
    END_VAR
    VAR
            pInput   : POINTER TO ARRAY[0..1] OF BYTE;     // вспомогательные переменные
    	pOutput  : POINTER TO ARRAY[0..1] OF BYTE;
    END_VAR
    ____________________________________________________________________________
    
    pInput :=ADR(wIn);
    pOutput := ADR( Sw_Byte);                      
    
    pOutput^[ 0 ] := pInput^[ 1 ];       // Перестановка  BYTE местами
    pOutput^[ 1 ] := pInput^[ 0 ];
    Так у него проблема не в том, что данные перевернуты, а в то, что перевернуты данные в самом протоколе в CRC. А это внутренний механизм самого протокола, и ТС просит показать, где в настройках это перевернуть, если это есть. А вы ему предлагаете функцию для переворачивания данных в слове. Как он её воткнет во внутренний протокол кодесиса?

    Существует вероятность, что это опечатка или ТС ошибся, но тут 50 на 50.

  2. #2

    По умолчанию

    Перевёрнутые байты в CRC стали Китайцы часто делать! Несколько раз уже это встречал: обычный Modbus, но CRC перевёрнуто!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

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

    По умолчанию

    Да ничего там на перевёрнуто, простая ошибка документации, все должно быть ровно.

  4. #4

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Да ничего там на перевёрнуто, простая ошибка документации, все должно быть ровно.
    Вполне возможно что он просто не задал адрес устройству... 11, как уже писали...
    По крайней мере можно было б проверить простым не модбас парсером, геркулесом, например.

  5. #5

    По умолчанию

    Здравствуйте.
    Столкнулся с проблемой, которую не понимаю как решать. Суть в следующем: Имеем СПК107 m01 + переферия из разных внешних модулей. Для организации обмена с SCADA добавил ModbusTCP_Slave_Device. Чтобы holding регистры и coils стали доступны для изменения из программы контроллера, устанавливаю галочку "Запись" в настройках компонента Modbus TCP Slave Device. При компиляции возникает ошибка -
    "[ERROR] Internal error:System.IndexOutOfRangeException: Индекс находился вне границ массива. в _3S.CoDeSys.DeviceObject.DoubleAddressChecker.Chec kByte(Int64 lStartBit)................
    Компиляция завершена -- 1 ошибок, 95 предупреждений : загрузка невозможна"
    галочку "Запись" убираю, компиляция проходит без ошибок, но теряю возможность записыватьть в регистры со стороны slave-устройства. Как решить данную проблему? Спасибо заранее.
    Последний раз редактировалось ShivA; 13.01.2024 в 18:39.

  6. #6
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,714

    По умолчанию

    Цитата Сообщение от ShivA Посмотреть сообщение
    Здравствуйте.
    Столкнулся с проблемой, которую не понимаю как решать. Суть в следующем: Имеем СПК107 m01 + переферия из разных внешних модулей. Для организации обмена с SCADA добавил ModbusTCP_Slave_Device. Чтобы holding регистры и coils стали доступны для изменения из программы контроллера, устанавливаю галочку "Запись" в настройках компонента Modbus TCP Slave Device. При компиляции возникает ошибка -
    "[ERROR] Internal error:System.IndexOutOfRangeException: Индекс находился вне границ массива. в _3S.CoDeSys.DeviceObject.DoubleAddressChecker.Chec kByte(Int64 lStartBit)................
    Компиляция завершена -- 1 ошибок, 95 предупреждений : загрузка невозможна"
    галочку "Запись" убираю, компиляция проходит без ошибок, но теряю возможность записыватьть в регистры со стороны slave-устройства. Как решить данную проблему? Спасибо заранее.
    Добрый день.
    Выложите простейший проект, в котором я смогу повторить вашу проблему.

  7. #7

    По умолчанию

    Простой вопрос к опытным программистам.
    Поменять "слова", типа xSwapWord, можно только через "Функция SWAP_DATA" (раздел 5.8.5 "CODESYS V3.5 Настройка обмена по протоколу Modbus", версия 3.2) ?
    Или есть другие инструменты?

  8. #8
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,714

    По умолчанию

    Цитата Сообщение от Test_driver Посмотреть сообщение
    Простой вопрос к опытным программистам.
    Поменять "слова", типа xSwapWord, можно только через "Функция SWAP_DATA" (раздел 5.8.5 "CODESYS V3.5 Настройка обмена по протоколу Modbus", версия 3.2) ?
    Или есть другие инструменты?
    Как минимум есть еще варианты с использованием указателей (собственно, этот вариант и используется внутри SWAP_DATA) и объединений.

  9. #9

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Как минимум есть еще варианты с использованием указателей (собственно, этот вариант и используется внутри SWAP_DATA) и объединений.
    Благодарю за оперативность!
    То есть, с помощью Указателей можно "вырвать" 1 байт (по необходимости) из 4-х и его использовать.
    Ну, Указатели для меня ещё пока "тёмный лес". Направление "пинка" понял, будем самообразоввываться.
    Слышал про указатели в С,С++, говорят если поймёшь - сдал сопромат.
    Последний раз редактировалось Test_driver; 15.01.2024 в 11:27.

  10. #10
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,714

    По умолчанию

    Добрый день. У вас, видимо, при установке CODESYS не установились некоторые плагины.
    Для начала предлагаю удалить его и установить заново по инструкции:
    https://youtu.be/3KcJWZEVXCg?si=htMczkACHTd9JxOX

Страница 111 из 152 ПерваяПервая ... 1161101109110111112113121 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 13:38

Ваши права

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