Страница 516 из 893 ПерваяПервая ... 16416466506514515516517518526566616 ... ПоследняяПоследняя
Показано с 5,151 по 5,160 из 8921

Тема: CODESYS V3.5. Вопросы и ответы

  1. #5151

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Нет, не надо. И пользователи не возникают сами по себе - они всегда кем-то создаются.
    Тогда:
    Попробуйте в папке C:\ProgramData\CODESYS\CODESYSControlWinV3\<какие-то символы>\ удалить все файлы формата .csv.
    Да, когда удалил все csv в данной папке, всё загрузилось. Спасибо!
    Только вот проблема из-за которой я с эмулятора на виртуальный ПЛК решил перейти не решилась - контроллер так же уходит в стоп (и порт по библиотеке ComService перестал открываться). Выяснил, что эмулятор (и виртуальный контроллер) ругаются на методы (M) и действия (A) в некоторых FB (даже если удалить из них весь код). Причём реальный СПК их выполняет как надо. Когда заменил методы и действия на обычные FUN программа на эмуляторе заработала как надо (на реальном СПК думаю проблем тоже не возникнет).
    Подскажите, есть ли какие-либо ограничения в использовании действий и методов? (все проекты конвертировал из Codesys SP16 в Codesys SP17 с обновлением всех компонентов (в связи с выходом новых СПК). На Codesys SP16 таких проблем не возникало
    Последний раз редактировалось DmitriiAnyushin; 10.02.2023 в 15:14.

  2. #5152

    По умолчанию

    Цитата Сообщение от DmitriiAnyushin Посмотреть сообщение
    Да, когда удалил все csv в данной папке, всё загрузилось. Спасибо!
    Только вот проблема из-за которой я с эмулятора на виртуальный ПЛК решил перейти не решилась - контроллер так же уходит в стоп (и порт по библиотеке ComService перестал открываться). Выяснил, что эмулятор (и виртуальный контроллер) ругаются на методы (M) и действия (A) в некоторых FB (даже если удалить из них весь код). Причём реальный СПК их выполняет как надо. Когда заменил методы и действия на обычные FUN программа на эмуляторе заработала как надо (на реальном СПК думаю проблем тоже не возникнет).
    Подскажите, есть ли какие-либо ограничения в использовании действий и методов? (все проекты конвертировал из Codesys SP16 в Codesys SP17 с обновлением всех компонентов (в связи с выходом новых СПК). На Codesys SP16 таких проблем не возникало
    Нет, никаких ограничений нет.
    Выложите, пожалуйста, простейший проект, на котором я смогу повторить вашу проблему.

    Что касается ComService - то при запуске на виртуальном контроллере нужно было указать номер виртуального COM-порта ПК.
    Вообще, это устаревшая библиотека - рекомендую вместо нее использовать ФБ COM_Control из библиотеки OwenCommunication.

  3. #5153

    По умолчанию

    Цитата Сообщение от DenisV Посмотреть сообщение
    Здравствуйте, решил попробовать использовать библиотеку Owen Communication для настройки ПЛК210 в качестве Modbus Slave устройства и столкнулся с непривычным для себя поведением. Например, у меня есть INPUT_REGISTER с адресом 0 и HOLDING_REGISTER c адресом 0, каждый содержит переменную типа real, при использовании стандартного шаблона это будут два разных real-а, один который можно просто прочитать, второй прочитать/записать при этом при записи HOLDING_REGISTER-а, INPUT_REGISTER не изменится. Теперь не совсем понятно как добиться аналогично поведения при использовании Owen Communication, если я, например, создам два экземпляра функционального блока MB_TcpSlave и подам в них разные массивы данных, то при записи HOLDING_REGISTER_а будет меняться INPUT_REGISTER, в соответствии с этим вопрос как добиться аналогичного с шаблоном поведения? То есть иными словами, если я правильно понял, то отключить в библиотеке наложение области данных?
    Добрый день.
    В рамках библиотеки мы осознанно реализовали модель памяти с наложением всех областей Modbus друг на друга.
    Т.е. у нас все регистры сразу и HOLDING (доступны для чтения функцией 0x03 и записи функциями 0x06/0x10) и INPUT (доступны для чтения функцией 0x03).
    Если вам нужно, чтобы некоторые регистры были доступны только для чтения - то это можно сделать через запрет запросов (ForbiddenRequests).
    Подробнее см. в документации.

  4. #5154

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Какой именно модуль вы опрашиваете? МВ210-101?
    По-моему, проще использовать готовую функцию ANALOG_SENSOR_ERROR_TO_WSTRING из библиотеки Mx210 Assistant - она заменит большую часть кода на скриншоте.
    Евгений, по Вашему совету все заработало. Но появился другой вопрос - можно ли получать и текст и код ошибки.
    Задача в том, что когда вход не равен "0" (NO_ERRORS) - у меня происходит запись сообщения в переменную для телеграмма. И отправляется.
    Получается, если я использую тип переменной - Mx210Assistant.ANALOG_SENSOR_ERRORS; - на выходе будет текст.
    Если тип REAL, то он одаст число - код ошибки.
    И его надо сравнивать с текстом-константой NO_ERRORS или можно как то получить его числом - "0" и использовать блок EQ?

  5. #5155

    По умолчанию

    Если тип REAL, то он одаст число - код ошибки.
    "Он" - это кто? Покажите скриншотом, что именно у вас происходит.

  6. #5156

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    "Он" - это кто? Покажите скриншотом, что именно у вас происходит.
    По Вашему совету присвоил тип переменной:

    sendMessageToTlg-3.png

    назначил её входу:

    sendMessageToTlg-1.png

    А функцию хотел реализовать такую:

    sendMessageToTlg-2.png

    То есть, как только значение входа меняется с 0 (NO_ERRORS) на любое другое - происходит отправка сообщения.

    И теперь не понимаю как правильно - преобразовать NO_ERRORS в 0 и сравнивать уже нулём или можно получить числовое значение со входа одновременно с текстовым?

  7. #5157

    По умолчанию

    И теперь не понимаю как правильно - преобразовать NO_ERRORS в 0 и сравнивать уже нулём или можно получить числовое значение со входа одновременно с текстовым?
    NO_ERROR - это просто символьное представление значения "0".
    Можете оставить, как у вас есть сейчас, но для повышения читабельности - лучше заменить 0 на Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERROR.

  8. #5158

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    NO_ERRORS - это просто символьное представление значения "0".
    Можете оставить, как у вас есть сейчас, но для повышения читабельности - лучше заменить 0 на Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS.
    Евгений, спасибо. действительно с 0 работает. но вот Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS куда только не вписывал - так и не заработало. и как тип переменной и как саму переменную с которой сравниваем. компилятор ругается.

    Не могу разобраться почему в одном месте не работает блок AND. Ни в симуляторе ни в железе. В остальных местах кода работаеют нормально. Даже пробовал ставить блинк между переменной и блоком AND (типа аналог Sample&Hold) на 1 секунду. всё равно на выходе блока не появляется TRUE

    ФТВ.png

    Поздравляю с наступающим 10 000)
    Изображения Изображения
    Последний раз редактировалось beatitas; 12.02.2023 в 12:45.

  9. #5159

    По умолчанию

    но вот Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS куда только не вписывал - так и не заработало. и как тип переменной и как саму переменную с которой сравниваем. компилятор ругается.
    Мы с вами немного ошиблись - код ошибки называется NO_ERROR (без S на конец).

    Вот пример (eAiStatus имеет тип Mx210Assistant.ANALOG_SENSOR_ERRORS):

    12-02-2023 12-47-56.png

    Теперь не могу понять почему эта конструкция не работает. И в симуляторе и на железе. При этом в других местах кода блоки AND работают как и должны. Пробовал даже блинк в симуляторе добавлять, чтобы каждую секунду слал - не работает.
    По скрину складывается ощущение, что этот фрагмент кода у вас не вызывается (например, он добавлен в программу, не привязанную к задачу).
    Выложите, пожалуйста, простейший проект, в котором я смогу это повторить - тогда смогу назвать точную причину.

    Поздравляю с наступающим 10 000)
    Спасибо. =)

  10. #5160

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Мы с вами немного ошиблись - код ошибки называется NO_ERROR (без S на конец).
    По скрину складывается ощущение, что этот фрагмент кода у вас не вызывается (например, он добавлен в программу, не привязанную к задачу).
    Выложите, пожалуйста, простейший проект, в котором я смогу это повторить - тогда смогу назвать точную причину.
    Надеюсь правильно упаковал в архив. Этот блок находится в POU poolMain. Программа вызывается через таск менеджер. Более того она работает сейчас на реальном контроллере. А вот когда у нас пропадает сигнал на poolFlowStatus - PoolCommonAlarm должна уйти в 1 и остановить всё. Но ничего не останавливается в железе.


    https://www.icloud.com/iclouddrive/0...D0%9B%D0%9A200

    Извиняюсь за размер архива, просто в остальных местах блоки AND работают как и ожидалось

Страница 516 из 893 ПерваяПервая ... 16416466506514515516517518526566616 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4209
    Последнее сообщение: 26.08.2026, 16:07
  2. Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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