Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 14 из 14

Тема: Сетевые переменные между CoDeSys v2 и v3

  1. #11

    По умолчанию

    Цитата Сообщение от Солнечный заяц Посмотреть сообщение
    Спасибо за Ваши ответы.
    Если не забуду - отпишусь о результате попыток создания сетевых переменных, между CoDeSys v2 и CoDeSys v3.
    Здравствуйте остро возник вопрос по по данной теме, как сейчас обстоят дела с совместимостью сетевых переменных V2 и V3?
    как вы решили проблему?

  2. #12
    Пользователь Аватар для Солнечный заяц
    Регистрация
    16.08.2009
    Адрес
    г. Рыбинск, Яр.обл.
    Сообщений
    209

    Lightbulb

    Сетевые переменные переменные между CDSv2 и CDSv3 в штатной конфигурации не работают (во всяком случае в версии 3.4). Но передавать данные по MB_TCP можено довольно просто. В одном из проектов я связывал СПК207 и 10хПЛК154:
    Все нижеописанное относится к CDSv3.4

    1. Создаете Ethernet соединение (рис.1 п.1)
    2. Создаете структуру для записи и для чтения (если никогда не использовали структуры, почитайте о них в справке). Почему именно структуру? А вот почему:
    а) Если Вы будете одновременно записывать и читать данные из контроллера, и Вам понадобится добавить еще переменных, то вся таблица связей, в конфигурации слейва, будет очищена. При использовании же структуры, вы просто добавляете эти переменные в структуру, меняете количество принимаемых слов данных и корректируете адрес структуды (если у вас больше одного слейва).
    б) При использовании переменных типа Real вам не придется их преобразовывать из 2хWord.

    3. Объявляете структуры приема и передачи данных в глобальных переменных (рис.2 п.3),
    4. Присваивая им (структурам) адреса первого слова данных передаваемого (принимаемого) на (от) устройство(а) (обратите внимание, что принимаемые и передаваемые адреса имеют разную кодировку (%QW и %IW) и оба начинаются с нуля). Соответственно, если у Вас одно слейв устройство - присваиваете %QW0 структуре записи и %IW0 структуре чтения.
    5. Ах да, еще нужно сделать сдвиг адресов (в моем случае чтения), при конфигурации слейва (рис.2 п.5). Сдвиг равен количеству слов данных, которые Вы принимаете/передаете в первой строке (в моем случае 36=16#24).

    Примечания:
    a) Желательно давать каждому слейву уникальный Unit-ID (рис.4), т.к. при определенной конфигурации локальной сети, не смотря на уникальный IP каждого устройства, при одинаковом Unit-ID, я иногда получал отсутствие связи.
    b) Если вы пользуетесь CDSv3.5, то обязательно включите автопереподключение (рис.5), иначе после сбоя сети вы потеряете связь. В CDSv3.4 нужно городить подпрограмму переподключения.
    c) В CDSv2 просто создаете MB_TCP слейв и прописываете подряд все переменные, что будут оттуда/туда читаться/писаться, в том же порядке, что и в CDSv3. Не забудьте указать в поле адреса Unit-ID (рис.3)
    d) Передавать можно только типы данных из 2-х и 4-х байт, соответственно, если вы передаете переменную Real(Float), то при конфигурации в CDSv3 считайте ее как 2 слова данных.
    Изображения Изображения
    Последний раз редактировалось Солнечный заяц; 02.07.2013 в 15:27.

  3. #13

    По умолчанию

    Спасибо за такой подробный ответ! Это мне очень помогло.

  4. #14

    По умолчанию

    Добрый день.
    Как мне записать регистр (25, вроде) следующий за всеми, которые в таблице. Не могу нащупать ни сдвиг ни запись. Либо не записывается, либо шина падает.
    Регистры.png
    Спасибо

Страница 2 из 2 ПерваяПервая 12

Ваши права

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