PDA

Просмотр полной версии : проблема с МВА8



paa
21.10.2008, 07:01
Здравствуйте!
Помогите разрешить ситуацию: МВА8 соединен с ПЛК150 по Modbus RTU, связь работает. Подключаю датчик (термопреобразователь сопротивления), и его показания я в контроллере вижу. Но стоит только значению стать кратным 0.125 (Например 24.5, 27.125, 26.25) то оно здесь и зависает, т.е. в течение как минимум секунд 30, а то и пары минут, оно совсем не изменяется.:(
Если смотрю МВА8 через конфигуратор, то такого не наблюдается. В чем может быть причина?:confused:

paa
21.10.2008, 07:05
Совсем забыл: работаю с ПЛК150, прошивка 2.03, таргет 2.02.

Ельцов Андрей
21.10.2008, 09:58
А если опрашивать не через конфигуратор, а через протокол modbus. Программкой какой-нибудь.
Какие регистры опрашиваете?

paa
21.10.2008, 10:26
Опрашиваю через Modbus Poll.
Датчик подключен к 1му входу.
Значение в Modbus Poll отображается, но по адресу 0004.
И оно не зависает, когда нужно изменяться - изменяется.

paa
21.10.2008, 13:03
В конфигураторе настроил два входа, 1й и 4й. К обоим подключается термопреобразователь сопротивления. Но на 1м он действительно подключен, а на 4м нет - якобы обрыв.
Так вот, запускаю программу на ПЛК. Когда контроллер "остановлен", 1й вход показывает комнатную температуру, с 5 знаками после запятой; 4й вход равен "0". Показания температуры изменяются - значения правильные. Нажимаю "старт" на контроллере - буквально пару секунд и значение температуры стало равно 27.125, на 4м входе значение стало равно 9.183409е-041. Всё, показания зависли.

P.S. Пока писал сообщение, первый вход тоже принял значение 9.183409е-041.

paa
21.10.2008, 13:23
Это все происходит если использую стандартный модуль подключения к МВА8.
Если использую Universal Modbus Device (добавляю 2 переменные типа Real Input module, даю им адреса 1го и 4го входов МВА (адрес 4 и адрес 22 соответственно)), то в этом случае никакого "зависания" значений не происходит. Но теперь показание датчика "скачет" между переменными - то 1я равна температуре в помещении, то 2я; хотя 2я вообще не должа ничего показывать - на ней обрыв :(

Kirill
21.10.2008, 13:29
Это все происходит если использую стандартный модуль подключения к МВА8.
Если использую Universal Modbus Device (добавляю 2 переменные типа Real Input module, даю им адреса 1го и 4го входов МВА (адрес 4 и адрес 22 соответственно)), то в этом случае никакого "зависания" значений не происходит. Но теперь показание датчика "скачет" между переменными - то 1я равна температуре в помещении, то 2я; хотя 2я вообще не должа ничего показывать - на ней обрыв :(

Выложите, пожалуйста, проект для ПЛК и конфигурационный файл МВА.

paa
22.10.2008, 10:15
С зависанием значений я кажется разобрался: в стандартном модуле неиспользуемые переменные заменил на EmptyMVA[SLOT] и все заработало (не подумал что это может быть так критично).
А вот с "прыгающими" значениями не до конца.
Выкладываю проект, конфигурацию на МВА, и файл архива - там показано что показания скачут с одной переменной на другую.
НО! На данный момент я только разбираюсь с ПЛК и МВА. И в этом проекте, помимо общения с МВА, также изучал архивирование и самостоятельную запись чего-либо в свой файл. Так вот. Если я убираю строчки кода, где открываю свой файл, пишу в него, читаю с него, закрываю его, то никаких скачков не происходит.
Посмотрите пожалуйста проект и скажите, почему при работе с файлом может возникнуть такая проблема.

Филоненко Владислав
22.10.2008, 11:42
Всё просто:
Вы открываете файл, записываете в него данные, закрываете, снова открываете, читаете, закрываете.
И делаете это 1000 раз в секунду. Винда бы, наверное, сдохла от такого обращения.
ПРОСТО НЕ ХВАТАЕТ ПРОИЗВОДИТЕЛЬНОСТИ ПЛК И FLASH ДЛЯ ОБРАБОТКИ ТАКОГО ДИКОГО КОЛИЧЕСТВА ЗАПРОСОВ К ФАЙЛОВОЙ СИСТЕМЕ.
P.S. К тому-же Вы убиваете свой ПЛК, ресурс файловой системы исчерпается за 300000000 записей/(1000х3600)попыток в час=83 часа!
Абсолютный рекорд!

paa
22.10.2008, 12:11
Даже так... тогда я действительно неплохо его понасиловал.
Спасибо за ответ.
Я так понимаю архивирование с помощью модуля также гробит файловую систему, да?

Филоненко Владислав
22.10.2008, 13:38
Одно дело раз в минуту, пусть даже раз в 5 сек. А другое - 1000 раз в секунду.