Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Прошу помощи. Ошибки в области ввода/вывода

  1. #1

    По умолчанию Прошу помощи. Ошибки в области ввода/вывода

    Добрый день, коллеги!

    Использую Овен ПЛК110-220.32.Р-L.
    "PLCInfo
    PLC model MODEL PLC 110-32
    Binary VERSION 2.07.3
    Need Target version 2.06
    Compiled: 15:08:23 Feb 13 2009
    MAC 6A:77:00:21:40:6F
    IP 192.168.0.200
    GATE 192.168.0.1
    MASK 255.255.255.0
    PIC upper version is 13
    Licence limited to 360 bytes"

    При вводе новых переменных в модуле Modbas (Slave) столкнулся с таким сообщением:

    Error 3729: (0): Invalid type 'REAL' at address: '%QD8.34.0'

    которое среда CoDeSys выдала при компиляции проекта. Ошибка относится к переменной стоящей в конце списка модуля Owen (Master), стоящим в самом конце списка 'PLC Cinfiguration', который опрашивает внутреннюю сеть RS485 из измерительных устройств и СМИ1.

    Надо заметить, что если добавить в любое место (модуль, порядок переменных в модулях) еще переменные, скажем типа REAL (или любого другого), то среда начнет ругаться аналогичным образом (указывая на собственный тип переменных) на следующие переменные вверх по списку от последней.

    Ограничение на память ввода/вывода 360 байт. Никаких сообщений об его превышении не выводит. При моем подсчете переполнения тоже нет. Может я не так считаю? Или память не эффективно заполняется?
    Вот количество и порядок переменных, заложенных в область ввода/вывода:
    2х Fast discrete inputs BIT
    2х Discrete inputs BYTE
    4x Fast discrete outputs BIT
    2x Discrete outputs BYTE
    1x Special input BIT
    1x Special output BIT
    Archiver
    4x Float Variables REAL
    Modbus (slave)
    9x Float Variables REAL
    Owen (Master)
    3x Support variables WORD
    1x BYTE
    35x Float Variables REAL
    8x WORD

    С уважением.

  2. #2

    По умолчанию

    Цитата Сообщение от Fallensky Посмотреть сообщение
    Или память не эффективно заполняется?
    Я могу ошибаться, но кажется, у вас ошибка в связи с неправильным выравниванием переменных. Почитайте про это понятие, разберётесь легко
    Железяка должна быть такой: нажал кнопку — работает

  3. #3

    По умолчанию

    Цитата Сообщение от Вова Посмотреть сообщение
    Я могу ошибаться, но кажется, у вас ошибка в связи с неправильным выравниванием переменных. Почитайте про это понятие, разберётесь легко
    О выравнивании переменных, или суть упорядоченного размещения переменных в области памяти говорит пункт 3.1.4.1 руководства "PLC_Configuration_OWEN.pdf" на странице 51-52 (или я пропустил еще литературу?).
    Суть в том, что переменные занимают кратные их длине адреса. От чего появляются не занятые пространства памяти.

    Пусть все выше переменные объявлены типом REAL (4 байта), что позволит нивелировать "недостаток" системы выравнивания. Тогда:

    72 переменные х 4 байта = 288 байт. Это ведь тоже не предел?

    Складывается такое ощущение, что добавляя новую переменную, она как бы "выталкивает" последнюю в область памяти не предназначенную для переменных области ввода/вывода. Как это можно объяснить? И возможно ли такое?

  4. #4

    По умолчанию

    Выталкивание не возможно. У Вас контроллер с лицензией L?

  5. #5

    По умолчанию

    Да, именно лицензия L.

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

    По умолчанию

    пробовали компилить проект, постепенно убирая по одной переменной, ошибка остается?

    PS: если волнуетесь, что потом придется все восстанавливать, то компиляция не есть запись проекта, просто в конце экспиремента закройте КДС не сохраняя и при последующем открытии проект откроется в первоначальном виде
    Последний раз редактировалось capzap; 05.07.2011 в 09:41.

  7. #7

    По умолчанию

    Скорее всего у Вас закончилась память, ограничение на которую лицензия L и накладывает (область памяти ввода вывода).
    Ограничивает она 360 байтами. Но они поделены на область входа и область выхода...
    На сколько я понял - Вы 280 пытаетесь в одну уместить.

    Варианта 2:
    1. Сменить лицензию на М
    2. Я так понял на этом добавление переменных не остановится? Если переменных много - рекомендую для настройки обмена работать на в PLC Configuration, а программно, используя библиотеки Owen.lib и ModBus.lib Первый раз разобраться сложно, но плюсы неоспоримы: сами налаживаете обмен, сами опрашиваете нужные Вам параметры с нужным интервалом, да и при большем количестве переменных - такой путь дает более стабильную работу программы в ПЛК.

  8. #8

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    рекомендую для настройки обмена работать на в PLC Configuration, а программно, используя библиотеки Owen.lib и ModBus.lib Первый раз разобраться сложно, но плюсы неоспоримы: сами налаживаете обмен, сами опрашиваете нужные Вам параметры с нужным интервалом, да и при большем количестве переменных - такой путь дает более стабильную работу программы в ПЛК.
    Андрей, скажите пожалуйста, а где можно как можно подробнее почитать про эти библиотеки, желательно с примерами?
    upd
    Отбой, нашёл, нужно было внимательнее диск смотреть
    Последний раз редактировалось Вова; 05.07.2011 в 10:02.
    Железяка должна быть такой: нажал кнопку — работает

  9. #9

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Скорее всего у Вас закончилась память, ограничение на которую лицензия L и накладывает (область памяти ввода вывода).
    Ограничивает она 360 байтами. Но они поделены на область входа и область выхода...
    На сколько я понял - Вы 280 пытаетесь в одну уместить.

    Варианта 2:
    1. Сменить лицензию на М
    2. Я так понял на этом добавление переменных не остановится? Если переменных много - рекомендую для настройки обмена работать на в PLC Configuration, а программно, используя библиотеки Owen.lib и ModBus.lib Первый раз разобраться сложно, но плюсы неоспоримы: сами налаживаете обмен, сами опрашиваете нужные Вам параметры с нужным интервалом, да и при большем количестве переменных - такой путь дает более стабильную работу программы в ПЛК.
    Ок, тогда такой вопрос. Можно ли сменить лицензию на М без покупки нового контроллера? И как это можно сделать?

    пробовали компилить проект, постепенно убирая по одной переменной, ошибка остается?

    PS: если волнуетесь, что потом придется все восстанавливать, то компиляция не есть запись проекта, просто в конце экспиремента закройте КДС не сохраняя и при последующем открытии проект откроется в первоначальном виде
    Ошибка уходит.

  10. #10

    По умолчанию

    1. Только в Московском СЦ за денюжку (разница в стоимости контроллеров + работа).
    2. Значит причина действительно в ограничении памяти.

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

Ваши права

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