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

Тема: не могу вывести данные на сп270. потеря связи с плк

  1. #1

    По умолчанию не могу вывести данные на сп270. потеря связи с плк

    печальная Предыстория:
    пять дней назад мне достался незапущенный объект на котором просроченны сроки по запуску (как я понял год назад, но до этого
    момента всем было наплевать) и очень злая эксплуатация которая не то, чтобы стоит над душой, а просто рвет и мечет.
    человек я в этой конторе новый (2 недели как) и тех людей что проектировали уже как я понял тут нету я начал работу с нуля.

    вообщем имеем следующую КОнфигурацию

    СП270
    ПЛК150-220.И-М
    МВА8
    МДВВ
    МДВВ
    МВА8
    МДВВ

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

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

    кароче, суть проблемы. аналоговых значений у меня не так уж и много, аж целых 13 штук.
    раскидав все по регистрам получилось что у меня в подэлементе (Modbus (slave) 13 подэлементов Float занимающих регистры 0, 4, 8, 12.... 48
    вывожу данные используя элемент "цифровой дисплей" в конфигураторе панели, через порт PLC (адрес 1) по команде 4х
    (тут я не знаю че это значит, в инструкции на конфигуратор панели ничего не написано или я не увидел) вывожу последовательно указанные выше регистры. начиная с 28 регистра при выводе на панель последняя теряет связь с контроллером.

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


    thank's in advance как гриццо...
    з.ы.завтра первый рабочий день и чуствую моя попэска будет надрана
    з.з.ы. себе я уже тыщу раз пообещал не вписываться в такие авантюры. но сделать очень хочецца
    Вложения Вложения

  2. #2

    По умолчанию

    1. Real переменные занимают номера не по 4, а по 2.
    То есть 0, 2, 4, 6, 8 и т.д...
    2. Рекомендую, если точность не нужна и числа не огромные передавать Word-ом со смещением. Во первых меньше время опроса (быстрее время реакции), да и памяти меньше отъедает.
    То есть чтобы вывести температуру на панель с одним знаком:
    В конфигурации добавляете переменную word t_na_panel, в программе пишете: t_na_panel := real_to_int(t*10);
    В панели указываете регистр, команду 4 (команды ModBus описаны в стандарте. Для начала достаточно знать, что она 4), количество знаков после запятой указываете 1.
    Если нужно 2 знака, то в программе умножаете на 100, а в панели знаков - два.
    Да и еще - перед тем как оперировать температурами обязательно проверьте достоверность данных с датчиков, используя блок Decoad из библиотеки Pid_function. Да и фильтр от туда же не плохо сразу ввести...

  3. #3

    По умолчанию

    спс. не понимаю как я с регистрами напутал наверное не в себе был.

    по поводу библиотеки Вы скорее всего имели ввиду блок DECODE_FLOAT из библиотеки PID_Regulators.lib
    че то не могу разобраться с его вызовом.
    скопировал саму библиотеку в папку C:\Program Files\3S Software\CoDeSys V2.3\Library как сказано в мане.
    в менеджере библиотек я ее добавил.
    пытаюсь вызвать ее в основной программе (PLC_PRG которая) выдает ошибку: "Ошибка 4051 'DECODE_FLOAT' не является функцией."
    F1 по ошибке говорит: "4051 <имя> не является функцией.Вместо <Name> используйте функцию, определенную в проекте или библиотеках."

    бррррр... я ж ее подключил библиотеку же. щас полезу в мануал конечно же... вот что нашел не отходя от браузера:
    1. По умолчанию доступен только стандартный набор библиотек. Для каждого нового проекта проводится присоединение новых
    библиотек индивидуально, по мере необходимости.
    2. У функциональных блоков разработанных для контроллеров фирмы ОВЕН
    режим симуляции (Simulation Mode) не предусмотрен. Отладка программы в режиме визуализации
    проводится при подключенном контроллере – функциональные блоки работают только в самом контроллере.

    ошибку выдает при отладке проги на контролле естессно.

    господа, где у меня ошибка? тока не говорите что в ДНК )))))

    вызываю ее просто по имени, т.е. строчка в редакторе ST

    DECODE_FLOAT(VALUE:=T_Posl_AVO , DEF_VALUE:=AI_Dummy , _ERR=>_ErrorCode , OUT_VALUE=>T_Posl_AVO_Tru );

    з.ы. респект за помогание )

  4. #4

    По умолчанию

    Тип программного модуля Decoad float какой?
    Да и в общем то функцию не правильно вызываете...
    otfiltr:=decoad_float........

  5. #5

    По умолчанию

    тип программного модуля ?? "фунциональный блок декодирования ошибки возвращаемой аналоговым входом прибора" или что вы имели ввиду?

    где взять функцию о которой идет речь?

  6. #6

    По умолчанию

    f:decode_float;

    f(...);
    Часто задаваемые вопросы по кодесис
    1) Почему программа не работает - Следует выполнить "Онлайн ->Старт"
    2) Где скачать CoDeSys, таргеты, прошивки, библиотеки - http://www.owen.ru/catalog/codesys_v3/opisanie

  7. #7

    По умолчанию

    эээх...
    в кодесис есть возможность создавать разные типы программных модулей (pou)...
    и, соответственно правила вызова разных поу - разные...
    в примеры программ и полезности - там выложен пример для всех типов...
    блок декодирования ошибки - програмный модуль типа функциональный блок.

Ваши права

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