Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Codesys адресация

 Ответить Ответить
Автор
Сообщение
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Codesys адресация
    Опубликовано: 30 Июль 2013 07:40
Доброго времени суток всем.

Начал изучать PLC. Пилотный проект на Codesys 2.3.9.35 + PLC Wago 881+ панель Weitek 8100

Подскажите новичку, как в глобальных переменных создать/объявить в нотации Codesys (что-то вроде AT %QX4.0) переменные и как их объявить/прочитать из панели.

Методом тыка удалось в ПЛК объявить  вход AT %QX4.0, а в панели прописать (в билдере проекта для панели) что-то типа диапазон 0x и адрес 001.

Панель стала реагировать на вход(соединение по Modbus TCP, ПЛК slave).
Но непонятно как такая адресация ( AT %QX4.0) перекликается со стандартом Modbus, где указаны диапазоны  регистров 1-9999, 10000-29999, 30000-39999, 40000-....  Через которые(регистры) и происходит обмен по Modbus-протоколу.

Могу предположить, что объявление в проекте панели адреса (0x 001) - это мол значит из диапазона 1-9999 первый бит. Или я не прав? 
Подскажите, может есть ссылки на доки, где прояснен этот вопрос?

Заранее всем спасибо.
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 30 Июль 2013 12:01

Когда то в контроллерах память физически разделялась для входов, выходов и хранения переменных.  И адреса разделялись по областям  0x0x-0x3x - однобитные входа-выхода, от 0x4x- регистры памяти (хранения).  Со временем всё это сгладилось и щас для функций чтения записи регистров (0x3, 0x4) использут в основном область  0x4x.. То-есть регистр памяти по физическому адресу  0x0  будет иметь логический адрес 0x40001.

Наверх
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 31 Июль 2013 00:18
Спасибо большое, вроде разобрался. Все заработало. Но есть нюансы.

Объявил две переменные в ПЛК:
tmp1  AT %QW270:WORD;
tmp2 AT %IW260:WORD;

В панели (она мастер через Modbus TCP) прописал ввод числа  в tmp2 через ( 0x4x  261) , а также  чтение tmp1  и tmp2   через ( 0x4x  261) ( 0x4x  271)

В коде PRG_PLC есть строка:
tmp1:=tmp2;

Результат такой - панель успешно пишет в tmp2. В коде ПЛК значение tmp2 успешно переписывается в tmp1 и далее панель успешно читает данные из tmp1.

Но вот попытка напрямую прочитать из tmp2 не работает. Хотя в стандарте написано, что адресация через AT %IW позволяет со стороны Modbus и писать и читать. А вот адресация через AT %QW только читать. 

Почему же тогда tmp2 не читается? Или я опять запутался?
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 01 Август 2013 13:26

Не совсем понятно   ..попытка напрямую прочитать из tmp2 не работает..   Но пока можно сказать одну важную вещь:  в  CoDeSys  есть одна каверзная настройка - байтовая адресация данных, она находится в настройках целевой платформы (Target settings) на вкладке  General (общие).  Там есть галочка  Byte addressing mode  (режим байтовой адресации) - её надо всегда ставить, без неё все данные будут считаться 32-х битными и накладываться друг на друга и портиться

С уважением, SAN

Наверх
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Август 2013 19:03
Разобрался. В Wago нашлась прямоадресуемая область (MW0...MW12287) , которая и читается и пишется и ПЛК и панелью.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz