Показано с 1 по 5 из 5

Тема: Перестали опрашиваться модули ввода (СПК, Modbus_slave_COM_port). Прошу помощи!

  1. #1

    По умолчанию Перестали опрашиваться модули ввода (СПК, Modbus_slave_COM_port). Прошу помощи!

    Есть СПК207. CODESYS v3.5 SP5 Patch 5. На одном из портов висят модули: мв110-8а (2 шт) + мв110-8ас (1 шт) + 16ДН + 8ДФ + МУ110-8Р + МУ110-8И. Модули подключены как Modbus_slave_COM_port. (отказался от драйверов ОВЕН) и все каналы настроены руками:
    Вложение 25765

    Мапятся каналы на экземпляр getATemp функционального блока :
    Код:
    FUNCTION_BLOCK getAnalogTemp_t
    VAR_OUTPUT
    	BK5_int : INT;
    	BK6_int : INT;
    	BK7_int : INT;
    	BK8_int : INT;
    	BK9_int : INT;
    	BK31_int: INT; 
    	BK24_int : INT;
    	OC_valve_boiler1_int : INT; //положение клапана рециркуляции котла
    	OC_valve_boiler2_int : INT;
    	OC_valve_boiler3_int : INT;
    	OC_valve_boiler4_int : INT;
    	OC_valve_dilute_int : INT;
    	
    	A8_1_BP2 : convertion_t;
    	A8_2_BP3 : convertion_t;
    	A8_3_BP4 : convertion_t;
    	A8_4_BP9 : convertion_t;
    	A6_1_BP1 : convertion_t;
    	A6_2_BP8 : convertion_t;
    	A6_3_BK3 : convertion_t;
    	A6_4_BK4 : convertion_t;
    	A6_6_BK29 : convertion_t;
    	A6_7_BK25 : convertion_t;
    	A6_8_BK26 : convertion_t;
    	
    	A9_1_BK1 : convertion_t;
    	A9_2_BK2 : convertion_t;
    	A9_3_BK12 : convertion_t;
    	A9_4_BK15 : convertion_t;
    	A9_5_BK18 : convertion_t;
    	A9_6_BK21 : convertion_t;
    	A9_7_BK23 : convertion_t;
    	A9_8_BK22 : convertion_t;
    	
    END_VAR
    
    TYPE convertion_t :
    UNION
    	wModbus : ARRAY [0..1] OF WORD;
    	rReal : REAL;
    END_UNION
    END_TYPE
    ----------------
    ВСЁ РАБОТАЕТ - я вижу данные в отладке, я виду данные на визуализации.
    Теперь я вношу изменения в экземпляр setATemp функционального блока:
    Код:
    FUNCTION_BLOCK setAnalogTemp_t
    VAR_INPUT
    	chan5 : w2_t;   //это пользовательский тип array [0..1] of WORD
    	chan6 : w2_t;
    	chan7 : w2_t;
    	chan8 : WORD;
    
    END_VAR
    Экземпляру этого блока присваивается значение и более он нигде не используется
    setA(setAnalogTemp => setATemp);
    Ни setA, ни setATemp никак не связаны ни с сетевым обменом, ни с блоком getATemp на который мапятся каналы модулей.

    Проблема в том, что при изменении типа переменных в блоке setAnalogTemp_t с array [0..1] of WORD на WORD у меня фантастическим образом прекращается обмен с модулями ввода. Выглядит это так: в окне I/O Mapping в online в колонке Current values замирают последние значения и отображаются серым цветом.( это если вносить изменения через Online mode, если через Download all - то серые нули (говорим про аналоговые модули ввода)). Статус Modbus_slave_COM_port - работает, ошибок ни на уровне модбас, ни на уровне порта нет, модули моргают светодиодами связи.

    Если только что поломаный код изменить как было - обмен с модулями восстанавливается. Но, если после поломки просто закоментировать весь код в PLC_PRG, поудалять половину глобальных объявлений - данных с модулей нет.
    -----
    Возможно (ну это единственное что приходит на ум), при изменении типа переменных в экземпляре setAnalogTemp_t изменяется объём ОЗУ под него выделяемый, смещаются в ОЗУ и остальные функциональные блоки в том числе и те, на который мапятся каналы модулей. Но Modbus_slave_COM_port почему-то продолжает писать в ОЗУ по старым адресам! (???). Звучит как бред, но другого объяснения я не придумал. Clean All + Rebuild не помогают!!! Тоесть, я после "поломки" комментирую весь исполняемый код, оставляю только конфигурацию. Делаю Clean All + Rebuild, перегружаю модули на всякий случай - ничего! Данные с каналов Modbus_slave_COM_port не пишутся в переменные. После этого, я оставляю один модуль ввода, разрываю связи (Reset mapping), создаю новые связи каналов с новыми переменными (устанавливаю колонку Mapping в Create new variable) - ничего!!! Загружаю сохранённый проект до внесения изменений - всё работает.

    Что это за хрень?
    Господа, прошу помочь, потому как проект не тестовый. В codesys я не большой специалист (есть опыт работы с AVR, ARM (C++) + прикладное ПО на С#)

    Во вложении проект в состоянии "одна строчка до краха"... стоит изменить тип всех переменных в setATemp на WORD и всё!
    Вложения Вложения

  2. #2
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Скорее всего дело в выравнивании памяти.

  3. #3

    По умолчанию

    Попутный вопрос к знатокам: как заставить codesys перекомпилировать и пересобрать всё заново? Есть ощущение, что Clean All + Rebuild не приводит к желаемому эффекту. (после "поломки", удаление кода и пересборка не помогает! А если взять "рабочую прошивку и удалить тот же код - работает)

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

    По умолчанию

    У меня на выложенном проекте в слейвах в принципе отображаются только нули серым цветом, индикаторы связи при этом зеленые.

    Но причина этого мне понятна - на вкладке Соотнесение входов/выходов у параметра Всегда обновлять переменные стоит значение Установка родительского устройства. Как только я ставлю значение Включено 2 (всегда в задаче цикла шины), в слэйвах начинают отображаться корректные значения.

    11-08-2016 14-50-22.png

    Изменение типа переменных ФБ setAnalogTemp_t никак на это не влияет.

  5. #5

    По умолчанию

    Евгений, я абсолютно упустил этот параметр из виду. Потому как обмен и так шёл, даже не обратил внимание. Чёрт...
    Спасибо, сегодня на объекте протестирую. Скорее всего - вы нашли корень моих бед

Похожие темы

  1. Прошу помощи)))
    от rustam_m в разделе Сетевые технологии
    Ответов: 18
    Последнее сообщение: 05.04.2013, 17:17
  2. Прошу помощи
    от Сергей1987 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 11.03.2012, 19:56
  3. Ответов: 13
    Последнее сообщение: 25.10.2011, 22:11
  4. Ответов: 6
    Последнее сообщение: 28.06.2011, 23:17
  5. прошу помощи!
    от Владимир Верхоломов в разделе Эксплуатация
    Ответов: 8
    Последнее сообщение: 30.11.2010, 09:59

Ваши права

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