Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380
отправлено / posted
Долго собирал в себе, но сил больше нет давление кипящего разума возмущенного сдерживать...
Буду очень рад, если я ошибаюсь, и все написанное далее - голословные измышления, но, боюсь, я прав
Итак, к делу. Краткий перечень глюков, недоработок, багов и прочего, нарытых за месяц написания и неполные две недели отладки проекта:
I. MicroRTM for WinCON v6.06 1. RTM при открытии проекта, имеющего хотя бы один канал Call хотя бы с одним аргументом, падает (при автозапуске) или зависает (при ручном старте). Да, есть обновление, которое этот глюк лечит, и спасибо, что его раздают всем желающим, но почему это обновление не включено в поставку программы, пусть даже на отдельном диске, а его нужно выпрашивать и потом ждать несколько дней (у нас первый запуск происходил 5 января и пришлось ждать неделю до окончания праздников)? Мы покупали программу в конце декабря, а патч датирован 7.11.08, так неужели не было достаточно времени для доработки инсталл-пакета?
2. Не работает передача аргументов от контроллера в компьютер каналом Call.RemArgument по сети RS. Что характерно, никакие признаки ошибки/недостоверности не выставляются, канал просто не отрабатывается. В то же время, при связи по Ethernet передача работает как часы, так что это не ограничение MicroRTM, а глюк протокола M-Link.
3. Не работает обновление проекта по сети RS. При попытке залить новую версию в диалоге-апдейтере долго бегут какие-то цифирьки (кстати, а что, так трудно сделать нормальное отображение процесса в процентах или прогрессбаром?), после чего все замирает на пару минут (опять же непонятно, то ли висит, то ли о чем-то думает) и пишет ОК. Но после рестарта проект оказыается старой версии, т.е. все, что заливалось, идет в пустоту. При попытке разобраться что происходит выяснено: при заливке в контроллер все файлы *.dbb получают имена типа *.rtp.dbb, и, соответственно, с таким именем они никому нафиг не нужны. Вопрос: а вообще эта функция тестировалась, или как всегда - накидаем как можно больше фенечек, а даже если половина не работает, то авось никто не заметит...
4. Для автозапуска проекта при старте контроллера необходима дополнительная утилита ipushboot, которая уже несколько лет с контроллерами wincon не поставляется, и ее пришлось долго искать на ftp icp-das'а (хорошо, есть форум, на котором за час поисков я нашел упоминание об этом, а что делать тем, у кого нет доступа к форуму). Неужели авторы TM об этом не знали, а если знали, то почему не включили в поставку RTM'а, или не написали бы свою маленькую утилитку, выполняющую аналогичную функцию? Что, так трудно в корневом каталоге RTM создать текстовый файл TM_Start.ini с одной строкой "Load=\compactflash\xxx\aa.rtp" (к примеру) и отрабатывать его при старте модуля? Или хотя бы в мануал по инсталляции написать "По ссылке ftp://ftp.icp-das.com/blablabla/" скачать файл "bebebe" и установить куда-нибудь.
II. Общие недоделки RTM и EmbeddedRTM. 1. Call.RemArgument не умеет запрашивать больше, чем 256 аргументов, т.е. если аргументов больше, то передаются только первые 256, остальные - отдыхают.
2. Канал Call.RemLArc работает совсем не так, как описано в мануале, и в таком виде, как есть, даром не нужен. ДОЛЖНО БЫТЬ: при пропадении/восстановлении связи фиксируется соответствующее время и производится запрос данных за этот промежуток у удаленного узла (или принудительно за произвольный интервал). ИМЕЕМ: а) время пропадения связи фиксируется со значительной и непредсказуемой задежкой (от 5 секунд до нескольких минут); б) у удаленного узла запрашиваются данные не за "пропавший" интервал, а тупо копируются первые 256 аргументов канала, играющего роль удаленного архива, т.е. RemLArc - это просто другое название для Call.RemArgument. К тому же, я не проверял, но уверен на 101 %, что и этот канал не работает по RS.
3. При отработке SQL запросов нет возможности проверки результата выполнения на предмет возможных ошибок, что никуда не годится. Типичный пример: таблица с полями X и Y, для каждого X должна быть только одна запись, изначально пустая. Для заполнения такой таблицы необходимо: а) выполнить запрос "update zzz set y=111 where x=222"; б) (при неудаче, т.е записи с х=222 еще нет) выполнить "insert into zzz (x, y) values (111, 222)". И как такую операцию выполнить в трейсмоде при наличии отсутствия результкодов? И не предлагайте заранее забить таблицу записями со всеми возможными иксами - это не всегда допустимо). А выполнять каждый раз два запроса параллельно - тоже не выход из-за двукратно возрастающей нагрузки на ODBC. Можно выйти из ситуации вставив в базу процедуру, выполняющую самостоятельно проверку и обновление, но опять же трейсморд не поддерживает вызов процедур...
4. SQL не поддерживает запросы, принимающие или возвращающие несколько записей. Это вообще ни в какие ворота не лезет и обсуждению не подлежит.
5. Для того, чтобы вставить в экран ActiveX необходимо вручную (!!!!!!) зарегистрировать библиотеку chbase.dll, иначе работать не будет. Покажите мне, где это написано в мануале, и чем тогда занимается инсталлятор? Но и даже после регистрации библиотеки половина проверенных мной компонентов вызывала падение среды при попытке их вставить.
6. Еще немеряное количество всяких недоделок разной степени тяжести - невозможность работы со строками в FBD блоках, даже пользовательских; невозможность запроса канала от слейва к мастеру при работе по m-link; отсутствие поддержки масивов; кривизна операторского интерфейса (к примеру, чего стоит появляющееся при нажатии на кнопку с выставленным обработчиком "ввести и передать" окошко с заголовком "передача значения" и текстом "передать число в my_channel_name" - при первом появлении такого чуда у меня была истерика); невозможность копирования кусков кода/функций/аргументов в редакторе программ; невозможность распечатки структуры проекта или текстов программ (когда имеется бумажный вариант многие ошибки становятся виднее, да и документирование проектов еще никто не отменял); недостаточная документированность в мануале и хелпе; отсутствие примеров; еще далеко не один десяток замечаний, но уже пальцы болят писать...
Поправьте меня, если я неправ и возвожу напраслину, и готов в этом случае съесть распечатку своего проекта (если могу ее сделать), но мой вывод:
ТО, ЧТО НАМ ПРОДАЮТ ЗА НЕМАЛЕНЬКИЕ ДЕНЬГИ ПОД ВИДОМ РЕЛИЗА SCADA-СИСТЕМЫ TRACE MODE ВЕРСИИ 6.06, НА САМОМ ДЕЛЕ ЯВЛЯЕТСЯ АЛЬФА-ВЕРСИЕЙ 0.6.6, В КОТОРОЙ МНОГИЕ ФУНКЦИИ ЕЩЕ ДАЖЕ НЕ ТЕСТИРОВАЛИСЬ.
PS. Извините, если кого обидел, но столько сил, времени и нервов, сколько потрачено на один небольшой проект с использованием ТМ6, у меня не уходило даже на полную перепись прошивки датчика, написанной на ассемблере 8051.
Сообщения / Posts 19 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380
отправлено / posted
И еще гвоздь в крышку... (только что нарыл)
FBD-блок SMTH2. В мануале написано (форумописалка не понимает знаки больше и меньше, поэтому соответствующие знаки заменены):
...Алгоритм сглаживания выглядит следующим образом (i обозначает текущий такт пересчета). IF INPi != INPi-1 THEN N:=1 IF N _меньше_ PT THEN Qi:=IQi+N*(INPi-IQi)/PT; N:=N+1 ELSE Qi:=INPi...
Так вот: первая строчка должна быть: IF INPi != INPi-1 && N == PT THEN N:=1
т.е. если входной сигнал изменяется до того, как блок закончит сглаживание предыдущего изменения, то программа это игнорирует и продолжает ранее начатый цикл (хотя по логике должна бы начать с начала), что приводит к нарушению скорости сглаживания и рывкам выходного сигнала.
Сообщения / Posts 19 | Из / From: Украина
| IP / IP: IP адрес / IP address |
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380
отправлено / posted
Еще добавлю ;((
Сегодня 2 раза падала среда, а, т.к. автосохранения нет и не предвидится, приходится по пол-часа вспоминать что было сделано с момента последнего сейва.
Сообщения / Posts 19 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
Спасибо за интерес к системе Trace Mode и Ваши замечания. Во многом благодаря таким письмам наша SCADA постоянно совершенствуется. Мы всегда открыты для диалога по поводу доработки Trace Mode и исправления недочетов.
Теперь по существу:
I. Основным интерфейсом для работы с контроллером WinCon (WinPac) является сетевой. Многие функции требует передачи данных большого объема, что затруднено при использовании RS интерфейса.
1. Диски создаются в момент выхода релиза, поэтому последующие патчи на диск попасть не могут.
4. Мы не имеем права включать в состав нашей системы программы сторонних разработчиков без их согласия. И не можем отвечать за наличие каких-либо утилит на диске стронних производителей.
II 1) Ваше пожелание мы примем к расмотрению.
2) Технической возможности сделать по-другому пока нет.
3) В ближайшее время планируется глобальная переработка взаимодействия с БД, направленная в том числе и на расширение функций.
4) В релизе 6.06.2 такая возможность есть.
5) Внесем это в документацию.
6) Сформулируйте в конструктивном виде Ваши пожелания, тогда мы сможем их рассмотреть. Кроме того, в некоторых случаях есть объективные причины, по которым ту или иную функцию реализовать невозможно.
7) В основном меню есть вкладка документировать проект.
8) Блок SMTH2 работает так, как требуется нашим пользователям, если он Вас не устраивает, то Вы можете на его основе создать свой FBD блок или его аналог.
9) В случаях падения IDE рекомендуется сообщать нам о проблеме с описанием действий, которые привели к этой ситуации.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Dmitry.niimm
Junior Member / Новичок
Участник № / Member № 3380
отправлено / posted
Спасибо за внимание и понимание проблем пользователей.
Итак, конструктив (по тем же пунктам, нумерация сохранена):
I. Если бы действительно основным транспортом для работы с WinCON был Ethernet, то не было бы смысла в EmbeddedRTM - достаточно стандартной утилитки производства ICP-DAS под названием MBServer, которая дает доступ ко всем функциям контроллера через Modbus/TCP, а уже из RTM'а управлять всеми устройствами, подключенными к винкону, быстродействия сети для этого достаточно. А вот при работе по RS действительно нужно перекладывать большинство функций обработки на ПО в контроллере, а наверх тянуть только результаты/настройки. И если что-то не работает при каких-то условиях (например, по м-линку), то хотя бы укажите это в документации, чтоб не получилось как у нас - писали прогу, отлаживали "на кошках", т.е. по сети, а пришло время запуска на объекте - получили: функция, которая была выбрана в качестве основной, не работает.
1. Проехали
4. Оговорите особо в документации и дайте ссылку где взять и как поставить. А еще лучше - сделайте автозагрузку нужного проекта самостоятельно, через конфигурационный файл РТМа (эта утилитка нужна только для запуска проги с параметрами, а без них - пожалуйста, сколько угодно через WinconUtility).
II. 1. Спасибо. И напишите в мануале допустимые пределы.
2. Нет - так нет. Только _измените_мануал_.
3. Очень ждем, заранее спасибо.
4. Новый релиз не использую (почему-то он у меня не установился, то ли инсталлятор кривой, то ли в реджистри чего-то не то, то ли руки кривые), поэтому прошу прощения.
5. Спасибо. И, пожалуйста, протестируйте варианты вставки различных ActiveX'ов в экраны. При попытке написать свой компонент выявлено: в VC 6.0 компонент не должен быть наследником никаких классов, в т.ч. STATIC, иначе среда гарантированно падает при попытке вставить такой объект. В VC2005 вообще не удалось создать ни одного работающего компонента ни на каких настройках проекта - абсолютно все валили среду. В то же время в ActiveXControlTestContainer те же компоненты работали без проблем.
6.1. (уже писал ранее на форуме) Если FBD блоку передается аргумент типа строка, то канал, обрабатывающий эту программу, не отрабатывается. Т.е. FBD вообще не работает со строками никогда. Проблема понятна, обходибельна, но ни слова в мануале нет, приходится самому шишки набивать. 6.2. Очень хотелось бы нормальной поддержки массивов, а именно: передача массива через аргументы (особенно в экраны), передача их же во внешнюю функцию, работа с массивами в SQL для запросов принимающих/возвращающих несколько записей. 6.3. При создании операторского интерфейса просто необходимо иметь возможность задать текст, который будет отображаться при появлении диалога ручного ввода значения аргумента (например, "Временная уставка работы агрегата № 15/4, мин."). Аналогично в ГЭ "События", "Тренд" и т.п. очень хотелось бы вручную обзывать каждый элемент и выбирать отображаемые колонки. 6.4. При открытии одновременно двух окон свойств каналов нижнее из них с вероятностью 95 % уезжает за пределы экрана; в диалоге привязки аргументов запроса к полям БД в мастере запросов кнопка "привязать" находится за пределами окна при достаточно большом количестве аргументов.
7. Прошу прощения, сразу не нашел. Только что попробовал, работает 8)) (вот только под конец генерации среда упала, чуть-чуть не доработав до конца).
8. Да не то, чтобы не устраивает (хотя и это тоже), но дело в том, что он работает _не_так_как_описано_в_мануале_.
9. Падения за вчера (2 шт.) и сегодня (1 шт.): 9.1. уже не помню. 9.2. при корректировке ST программы, в момент переключения из текста на ее аргументы. 9.3. при корректировке ST программы, после нескольких копипастов блоков текста, в момент очередного нажатия стрл-в.
Еще раз прошу прощения за излишне резкий тон сообщений, но очень обидно когда абсолютно правильно написанная программа при тестировании в условиях приближенных к боевым, не работает из-за того, что некоторые функции, оказывается, не реализованы или реализованы не так, как это написано в документации, и приходится сидя в грязи по уши срочно писать заплатки, которые заставят проект хоть как-то работать, зачастую ценой уменьшения функциональности и с риском внести новые ошибки, а удаленной отладки и изменения проекта нет (хотя и обещано).
Сообщения / Posts 19 | Из / From: Украина
| IP / IP: IP адрес / IP address |
отправлено / posted
1. Ваши замечания по поводу документации и пожелания в расширении некоторых функций будут учтены. 2. Ядро контроллера WinCON/PAC собирается производителем, реальные прошивки и состав библиотек с течением времени меняются. У нас нет возможности включать в состав выпускаемого ПО постоянно изменяющиеся компоненты ПО производителя. Мы даем только рекомендации по его использованию. Покупатель контроллера получает от поставщика контроллера ПО для него и поддержку на сайте производителя. Актуализация ПО может производиться только у производителя (на его сайте). 3. Практика показывает, что даже при наличии сетевого интерфейса к контроллерам, если использовать контроллер только в качестве шлюза к УСО, достаточно динамичного контроля и управления процессом достичь нельзя. В то же время, использование последовательного интерфейса не может обеспечить адекватное отображение процесса на верхнем уровне, архивирование и документирование, а также необходимую реактивность системы при оперативном управлении. 4. О падении ИС при документировании проекта. Если эта ситуация воспроизводима с достаточной вероятностью, перешлите, пожалуйста, Ваш проект в техподдержку для анализа и выявления причин. 5. Одной из возможных причин падения ИС при длительном сеансе, как мы предполагаем, может быть переполнение буферов в редакторах. Пока локализовать это не удалось. Поэтому мы рекомендуем время от времени закрывать редакторы для очистки буферов.
Читать любые топики в форуме могут все его посетители, в том числе и не зарегистрированные в качестве пользователей Trace Mode.
Сообщения / Posts 17316 | Из / From: Россия
| IP / IP: IP адрес / IP address |