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

Тема: СПК 107, глючит диалог с переменными в модбасе

  1. #1

    По умолчанию СПК 107, глючит диалог с переменными в модбасе

    Для ручного управления клапанами и насосами прямо с мнемосхемы, я сделал простенький диалог, вызываемый по нажатию на элемент. Он всего лишь, в зависимости от текущего состояния, спрашивает включить или выключить, ну кнопки ОК и Отмена.
    С переменными объявленными в GVL работает нормально - обновляет именно ту, которая сопоставлена со входным-выходным параметром диалога. А с переменными объявленными в модбасе - глючит.
    Какой-бы элемент не вызвал диалог, обновляется на включение всегда только одна буль-переменная - которая прописана на первом бите, а при выключении любой - выключаются сразу все биты в этом модбасе.

    Это глюк девайса Modbus Slave, COM Port ?, или я что-то делаю не правильно?

    А объявить эти буль-переменные в GVL и назначить их на выходы в модбас-девайсе не могу - т.к. на любые операции с ними выдаёт ошибки (дословно не помню) "существующая переменная назначена на выход и не может быть использована".

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

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Для ручного управления клапанами и насосами прямо с мнемосхемы, я сделал простенький диалог, вызываемый по нажатию на элемент. Он всего лишь, в зависимости от текущего состояния, спрашивает включить или выключить, ну кнопки ОК и Отмена.
    С переменными объявленными в GVL работает нормально - обновляет именно ту, которая сопоставлена со входным-выходным параметром диалога. А с переменными объявленными в модбасе - глючит.
    Какой-бы элемент не вызвал диалог, обновляется на включение всегда только одна буль-переменная - которая прописана на первом бите, а при выключении любой - выключаются сразу все биты в этом модбасе.

    Это глюк девайса Modbus Slave, COM Port ?, или я что-то делаю не правильно?

    А объявить эти буль-переменные в GVL и назначить их на выходы в модбас-девайсе не могу - т.к. на любые операции с ними выдаёт ошибки (дословно не помню) "существующая переменная назначена на выход и не может быть использована".
    Добрый день. Можете выложить (или отправить мне на почту) архивы проектов для обоих вариантов?

  3. #3

    По умолчанию

    Отправил на e-mail

  4. #4

    По умолчанию

    Проблему я решил. Но это всё называется "через ж..." (каждый вызывающий диалог элемент пишет в глобальную переменную свой идентификатор, все статусы закрытия отключены, а сам диалог по этому идентификатору пишет нужную переменную).

    Всё более укрепляюсь в мысли что кодесис - тупиковая система. По всему видно (сравнивая вполне нормальную древнюю 2.3 и нынешнюю) - тех программистов, которые его задумывали и начинали делать, там уже нет. А новое поколение - кроме как рисовать кнопочки, вкладочки да финтиклюшки, ни на что не способны. Зря ОВЕН связался с ними. Солидные фирмы должны свою систему программирования иметь.

  5. #5

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    А с переменными объявленными в модбасе - глючит.
    gs_62, объясните, пожалуйста, что по Вашему "переменные, объявленные в модбас"?
    Цитата Сообщение от gs_62 Посмотреть сообщение
    Какой-бы элемент не вызвал диалог, обновляется на включение всегда только одна буль-переменная - которая прописана на первом бите, а при выключении любой - выключаются сразу все биты в этом модбасе.
    Может в этом ошибка: привязывать BOOL (8 бит) к биту (1 бит) - некорректно, либо надо учитывать этот факт.

  6. #6

    По умолчанию

    Цитата Сообщение от vniko Посмотреть сообщение
    gs_62, объясните, пожалуйста, что по Вашему "переменные, объявленные в модбас"?
    Когда в соотнесениях входов/выходов модбаса, для отдельных бит записываемого регистра прописаны имена и стоит значок с жёлтой звёздочкой, означающий "создать новую переменную" - это и есть переменные объявленные в модбасе.

    Цитата Сообщение от vniko Посмотреть сообщение
    Может в этом ошибка: привязывать BOOL (8 бит) к биту (1 бит) - некорректно, либо надо учитывать этот факт.
    BOOL это и есть один бит.
    И я его не привязывал, а просто проименовал бит. Тем самым создалась пременная типа BOOL, и никакой другой тип у бита невозможен.

    Вообще, тут уже всё совершенно очевидно - это баг кодесиса. Один из бесчисленных. И это совсем не удивляет.

  7. #7

    По умолчанию

    Цитата Сообщение от gs_62 Посмотреть сообщение
    Когда в соотнесениях входов/выходов модбаса, для отдельных бит записываемого регистра прописаны имена и стоит значок с жёлтой звёздочкой, означающий "создать новую переменную" - это и есть переменные объявленные в модбасе.

    BOOL это и есть один бит.
    И я его не привязывал, а просто проименовал бит. Тем самым создалась пременная типа BOOL, и никакой другой тип у бита невозможен.

    Вообще, тут уже всё совершенно очевидно - это баг кодесиса. Один из бесчисленных. И это совсем не удивляет.
    А можно цитату из хелпа, где написано, как это работает и в каких случаях это можно делать?
    А то так-то да, защиту от дурака во всех ситуациях сложно предусмотреть даже хорошему программисту.

  8. #8

    По умолчанию

    Цитата Сообщение от Rake Runner Посмотреть сообщение
    А можно цитату из хелпа, где написано, как это работает и в каких случаях это можно делать?
    А то так-то да, защиту от дурака во всех ситуациях сложно предусмотреть даже хорошему программисту.
    Насчёт чего цитату? В каких случаях можно включать значок "создать новую переменную"?
    Не читал.
    Но я уверен, если стоит финтиклюшка и она включается и смысл её очевиден - значит оно должно работать во всех случаях. А если не во всех - на это должна быть блокировка или предупреждение. И это не "защита от дурака". Это нормальная обязанность разработчика системы. А если он все нерабочие ситуации просто описывает в хелпе - вот это и есть дурак, а не программист.

  9. #9

    По умолчанию

    Цитата Сообщение от Rake Runner Посмотреть сообщение
    А можно цитату из хелпа, где написано, как это работает и в каких случаях это можно делать?
    Ну, вот и цитата: "Для соотнесения с новой переменной просто введите нужное имя переменной, например: "bVar1". В столбце Соотнесение будет показана иконка , а переменная будет объявлена как глобальная. Поскольку теперь переменная будет доступна в приложении глобально, то данный диалог может считаться еще одним местом для объявления глобальной переменной."


    Я то думал ваш вопрос с подковыркой, типа хелп надо читать прежде чем что-то делать. А оказыца вы сами его не читали, а я почему-то должен вам оттуда цитаты давать...

  10. #10

    По умолчанию

    В посте #4 вы пишите, что решили свою проблему использованием глобальных переменных.
    Т.е. я верно понял, вы страдаете из-за того, что вместо глобальных переменных, объявляемых в одном месте, вам приходится использовать глобальные переменные, объявляемые в другом месте? Все лучи добра в сторону CODESYS из-за этой вселенской проблемы?

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

Похожие темы

  1. Можно ли открыть диалог из программы?
    от a_gricaj в разделе СПК2хх
    Ответов: 4
    Последнее сообщение: 04.02.2016, 10:10
  2. Как закрыть диалог из программы
    от P_Ilya в разделе СПК2хх
    Ответов: 2
    Последнее сообщение: 21.11.2015, 06:13
  3. ПЛК 150 ГЛЮЧИТ AI RTD sensor
    от Scream в разделе ПЛК1хх
    Ответов: 18
    Последнее сообщение: 09.10.2015, 11:02
  4. Таймер TP что то глючит....
    от kholonkin в разделе СПК1хх
    Ответов: 29
    Последнее сообщение: 12.12.2014, 09:59
  5. Сидят ли у кого-нибудь ПКП1 на модбасе?
    от Slev в разделе Эксплуатация
    Ответов: 0
    Последнее сообщение: 17.03.2012, 13:21

Ваши права

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