Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 28

Тема: Прошу дать вразумительные ответы касательно программирования ПЛК304 в CoDeSyS v3!

  1. #1
    Пользователь
    Регистрация
    07.12.2011
    Адрес
    г. Полтава, Украина
    Сообщений
    18

    Thumbs down Прошу дать вразумительные ответы касательно программирования ПЛК304 в CoDeSyS v3!

    Здравствуйте! Возвращаюсь к теме программирования ПЛК 304 в CoDeSyS v3 (предыдущая моя тема "заглохла", ответа специалиста ОВЕН жду вторую неделю).

    Начну с того, что все проблемы привык решать сам, но в случае ПЛК 304 + CoDeSyS v3 опускаю руки - документации по программированию попросту нет, а той, что имеется, абсолютно недостаточно. Я не имею ввиду сам CDS - там все понятно (о минусах все же упомяну ниже).

    Далеко ходить не надо: связываю с контроллером по Modbus RTU девять модулей дискретного/аналогового ввода/вывода; скачал с сайта библиотеки, примеры, сделал - при чтении каналов модулей МВ110-8А в конце операции чтения не устанавливается флаг завершения операции, в связи с чем возникают неудобства в программировании, а главное - отсутствует понимание, почему при чтении каналов модуля МВ110-224.2А флаг устанавливается, даже при наличии обрывов датчиков на входах. Неделя поисков и решений - проблема в скачанной с сайта ОВЕН библиотеке (внутри библиотеки после чтения второго канала происходит переход обратно к первому каналу, а не к третьему и т.д.). Если уж скопировали внутренности ФБ для МВ110-224.2А в ФБ для МВ110-8А, так хоть проверьте перед тем, как выкладывать на главный сайт. Это просто недопустимо.

    Вопрос следующий: существует ли возможность обращения по протоколу Modbus TCP/IP к отдельным битам в памяти ПЛК? Связываю со SCADA Movicon 11.1 (Progea), передавать WORDами получается, а вот биты упорно как не пишет, так и не читает. На SCADA не грешу, так как её же связывал с ПЛК110 - все нормально работает.

    Также интересует вопрос, почему в конфигурации slave в CDS в переменные входа/выхода нельзя добавить больше чем по 40 штук? (т.е. максимум 80 байт на вход и 80 байт на выход? и это всё?)

    И вообще, с CoDeSyS v3, как по мне, немного перемудрили: в целом, интерфейс стал более удобным и приятным, но куда делись макросы в CFC (зато в SFC макросы добавили), куда делась возможность добавления EN/ENO в LD и т.д. и т.п.

    Пожалуйста, отреагируйте на вопрос о TCP/IP, т.к. проект "горящий" и довольно сложный (при планировании я даже подумать не мог что ПЛК110+CDSv2 и ПЛК304+CDSv3 - это как небо и земля; то, что в первом случае делалось за два дня. во втором случае занимает неделю ).

    Заранее благодарю.

  2. #2

    По умолчанию

    Павел здравствуйте.
    Сам недавно стал опробовать русифицированную CoDeSys v3.4 SP4. По мере изучения "Help" (раздела "Помощь") наткнулся на описание Стандартных типов данных и там вот что (цитирую): "bool
    Логический тип данных. Переменная может принимать 2 значения: TRUE (1) или FALSE (0). Занимает 8 бит памяти.

    См. также: BOOL константы (операнды)
    Copyright © 3S - Smart Software Solutions GmbH - CoDeSys V
    "

    Битовая переменная занимает 8 бит памяти (т.е. целый байт)? Может быть шутка, а может трудности перевода или опечатка?
    Попробуйте...

    А с другой стороны если у Вас получалось с ПЛК 110 то функции записи/чтения в SCADA, в части записи/чтения битов, работают, то в Вашей ситуации наверно нужно смотреть на адресацию переменных, а также на распределение и выравнивание адресов в области памяти ПЛК3хх.

  3. #3
    Пользователь
    Регистрация
    07.12.2011
    Адрес
    г. Полтава, Украина
    Сообщений
    18

    По умолчанию

    вот в адресации памяти ПЛК и вся проблема где она описана? где она задается? - не понятно. В случае ПЛК110 переменные разных типов просто добавлялись в конфигураторе ПЛК, неудобство состояло лишь в выравнивании адресации. Но все же можно было добавить переменную типа BYTE, которая состояла из восьми битов, к каждому из которых можно было обратиться по определённому адресу - необходимо было лишь высчитать номер этого бита, начиная с нулевого бита первой переменной в конфигурации связи по Modbus TCP/IP.

    В CDSv3 же память ПЛК разбита на две области - ввода и вывода (максимум по 40 байт), области разбиты на переменные типа WORD (максимум по 40 переменных). Обращение происходит по адресам от 0 до 39 (как для области ввода, так и для области вывода). В принципе, каждая переменная разбита на 16 битов, даже указаны какие-то адреса этих битов, но по этим адресам обратиться не получается.

    Пробовал создавать список глобальных переменных типа BOOL, и назначать битам WORDов из памяти ввода/вывода (чтобы не делать распаковку полученных регистров) - но происходит следующее: например, мы читаем регистр #0 со значением 1, так вот если не назначать нулевому биту регистра переменную, то CDS покажет, что этот бит = 1, а если назначить, то бит останется = 0.

    В результате, всё равно приходится распаковывать регистры ввода и упаковывать регистры вывода.

    Я бы с этим смирился, но, например, на SCADA нет возможности упаковывать/распаковывать регистры - что делать?

    В общем, я хочу, чтобы мне кто-либо из техподдержки сказал, например, что обращаться к отдельным битам в памяти ПЛК нельзя - я тогда оставлю все попытки и сосредоточусь на альтернативных методах решения данной задачи; или можно - тогда пускай объяснят как.

  4. #4

    По умолчанию

    Цитата Сообщение от Pashtet Посмотреть сообщение
    Сам недавно стал опробовать русифицированную CoDeSys v3.4 SP4.
    Скажите, пожалуйста, а где можно эту версию CoDeSys скачать?

  5. #5
    Пользователь
    Регистрация
    07.12.2011
    Адрес
    г. Полтава, Украина
    Сообщений
    18

  6. #6

    По умолчанию

    Вот некоторые выдержки из "AT-Declaration" раздела "Help".
    Если Вы сделали и учли то, что описано ниже (особенно выделенное красным шрифтом), то тогда описанная Вами проблема скорее всего ориентирована на аппаратную возможность Вашего ПЛК, а это уже- тех. поддержка "Овен".

    При указании адреса распределение памяти и размер задаются с помощью специальных последовательностей символов.
    Синтаксис:
    %<префикс области памяти><префикс размера><число|.число|.число....>
    Поддерживаются следующие префиксы области памяти:
    I Входы (физические входы, "sensors")
    Q Выходы (физические выходы, "actors" )
    M Память данных

    Префиксы размера:
    X Один бит
    None Один бит
    B Байт (8 бит)
    W Слово (16 бит)
    D Двойное слово (32 бит)

    Примеры:
    %QX7.5 и %Q7.5 бит 7.5 в области выходов
    %IW215 215е слово в области входов
    %QB7 байт 7 в области выходов
    %MD48 двойное слово в позиции памяти 48
    %IW2.5.7.1 зависит от конфигурации ПЛК
    ivar AT %IW0 : WORD; пример объявления переменной с адресом

    Убедитесь, что используется подходящий адрес:
    Для задания адреса в приложении в первую очередь необходимо знать используемую область памяти. После этого задается нужный размер: бит,байт, word, dword (см. выше: X, B, W, D)

    Решающую роль играет текущая конфигурация устройства и установки (аппаратная структура, описание устройства,параметры входов\выходов). Обратите особое внимание на различия адресов у устройств, использующих "режим байта-дресации", и тех, что применяют "режим word-адресации".
    Таким образом, в зависимости от размера и режима адресации, к разным ячейкам памяти можно обращаться по одному и тому же адресу.

    Обратите внимание, что для битовых адресов режим МЭК-адресации всегда word-ориентирован. Это значит, что перед точкой должно стоять количество word, а после имени - количество битов.


    Перекрытие диапазонов памяти для байтового режима адресации:
    D0 включает B0 - B3, W0 включает B0 и B1, W1 включает B1 и B2, W2 включает B2 и B3

    Замечание: По умолчанию логические переменные занимают один байт, если в объявлении не указан прямой битовый адрес. Пример: изменение значения переменной varbool1 AT %QW0 влияет на область памяти QX0.0 - QX0.7.

    Замечание: При онлайн-изменении адреса переменных могут измениться. Не забывайте о такой вероятности, используя указатели.

  7. #7
    Пользователь
    Регистрация
    07.12.2011
    Адрес
    г. Полтава, Украина
    Сообщений
    18

    По умолчанию

    Спасибо. Завтра попробую ещё раз - отпишусь по результату.

  8. #8

    По умолчанию

    Цитата Сообщение от Pashtet Посмотреть сообщение
    Битовая переменная занимает 8 бит памяти (т.е. целый байт)? Может быть шутка, а может трудности перевода или опечатка?
    Константа 3 типа INT займет аж целых 16 бит. 14 не используются. В программах для 64 бит компьютеров под BOOL выделяют 64 бит. Что в этом нового?

    Процессор за один такт может взять байт. Затем микропрограмма выделяет из него 1 бит. Машинный код будет больше и медленнее. Поэтому в CoDeSys сделано гибко. Если явно задан битовый адрес, то BOOL займет 1 бит, иначе целый байт.

    В хелпе шуток нет, они идут отдельным файлом

  9. #9
    Пользователь
    Регистрация
    07.12.2011
    Адрес
    г. Полтава, Украина
    Сообщений
    18

    По умолчанию

    Что касается битов в составе регистра: использовать для этого закладку IO Mapping в конфигурации Slave все же не получилось. Решил все-таки вручную прописать адреса и регистров и битов в таблице глобальных переменных. Работает.

    Вылезла другая проблема, с которой разобраться не получилось (звонил и в московский отдел техподдержки, и в харьковский): невозможно прочитать с контроллера регистры с адресом, выше %QW12. Сказали, что проблема все-таки в CoDeSyS+ПЛК, и что на данный момент эта проблема решается. Будем ждать.

    Спасибо работникам отдела техподдержки за понимание

  10. #10

    По умолчанию

    Добрый день.
    Не стал делать новую тему, решил написать сюда.
    Занялся переносом программ с ПЛК 1хх на ПЛК 304 и обнаружил неприятную вещь:
    -математические функции в ПЛК304 не работают.
    В Control Win V3 работают, а в ПЛК304 ошибку не выдают, но возвращают или 0 или infinity или неправильные значения.
    Версия Codesys 3.4 sp4.

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

Похожие темы

  1. Языки программирования CoDeSys
    от mogikanin в разделе ПЛК3хх
    Ответов: 24
    Последнее сообщение: 23.03.2014, 16:58
  2. Два вопроса кас. программирования ПЛК304
    от Грушецкий Павел в разделе ПЛК3хх
    Ответов: 7
    Последнее сообщение: 24.02.2012, 11:24
  3. Ответов: 3
    Последнее сообщение: 07.12.2011, 20:06
  4. среда программирования CoDeSys.
    от dron в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 25.07.2009, 15:31
  5. среда программирования CoDeSys.
    от dron в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 24.07.2009, 10:32

Ваши права

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