Страница 121 из 131 ПерваяПервая ... 2171111119120121122123 ... ПоследняяПоследняя
Показано с 1,201 по 1,210 из 1308

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

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

    По умолчанию

    Юрий_66 вас не удивляет, что в ответе CRC в правильной последовательности, а в запросе в неправильной ПРИ ОДИНАКОВОМ КОДЕ РАСЧЕТА?

    я про документацию, которую составляли люди... Адрес устройства у вас 11, что вы мучаете OPC сервер и все остальное?
    Последний раз редактировалось melky; 08.01.2024 в 14:14.

  2. #1202

    По умолчанию

    Теоретически - понятно. А практически пока не получается реализовать.
    С КТР-121 всё получилось нормально стандартными средствами. КТР опрашивается и на СПК выводятся данные.
    Всем спасибо за ответы. Буду разбираться.

  3. #1203

    По умолчанию

    Цитата Сообщение от Юрий_66 Посмотреть сообщение
    Теоретически - понятно. А практически пока не получается реализовать.
    С КТР-121 всё получилось нормально стандартными средствами. КТР опрашивается и на СПК выводятся данные.
    Всем спасибо за ответы. Буду разбираться.
    Пример функции перестановки байт в регистре, точно так же можно например, переставить регистры (байты) в переменной 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 ];
    Последний раз редактировалось kondor3000; 08.01.2024 в 16:49.

  4. #1204

    По умолчанию

    Цитата Сообщение от 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.

  5. #1205

    По умолчанию

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

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

    По умолчанию

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

  7. #1207

    По умолчанию

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

  8. #1208

    По умолчанию

    Здравствуйте.
    Столкнулся с проблемой, которую не понимаю как решать. Суть в следующем: Имеем СПК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.

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

    По умолчанию

    Цитата Сообщение от 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-устройства. Как решить данную проблему? Спасибо заранее.
    Добрый день.
    Выложите простейший проект, в котором я смогу повторить вашу проблему.

  10. #1210

    По умолчанию

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

Страница 121 из 131 ПерваяПервая ... 2171111119120121122123 ... ПоследняяПоследняя

Похожие темы

  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, 14:38

Ваши права

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