This is topic Хочу рассказать о некоторых недоработках in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Уважаемые разработчики Trace Mode. Хочу рассказать о некоторых найденных мною недоработках:
1. Число аргументов строкового типа string для ST-программы может быть не более 8, в противном случае МРВ выдает ошибку и он падает. 2. Длина аргумента для ST программы типа string не может быть больше 4 символов. 3. OPC-клиент TM пишет ошибки в лог-файл в формате имя_узла.txt. В этом файле некоторые сообщения в непонятной кодировке (не Windows –1251, не KOI8, не UTF и не DOS), например: эх яюффхЁцштрхЄё , єёЄрэютых. Как я понял это продолжается еще со времен Trace Mode 5.16 (после замены OPC-шной dll) 4. Тип String не передается через OPC и Net DDE. Читал, что вы это принципиально не поддерживаете. Тем не менее иногда это необходимо, например как в моем случае, при работе с продуктами Rockwell, особенно, когда данные вводятся оператором вручную.
Желаю Вам успеха в разработке и усовершенствованию вашей системы (ведь от этого будет зависеть наш успех в разработке наших систем).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Спасибо за замечания. Мы учтем их в дальнейшей работе над системой.
Posted by stesv (Участник № / Member № 1511) on :
... Еще "глюки" ... 1. Если создавать что-либо по шаблону, а шаблон "пустая строка", то зависает IDE. 2. Если сделать привязку графического элемента к каналу, а потом канал удалить (привязка как бы остается), то зависает профайлер. 3. Создаю два канала TIME (А и Б), привязываю их к двум графическим элементам "дата/время" (чтобы видеть и вводить данные), передаю реальные значения А и Б в ST программу во входные аргументы А_ и Б_ (тип UDINT), там делаю присвоение Б_ = А_, возвращаю А_ и Б_ в реальные значения каналов А и Б через выходные аргументы (тип UDINT), что наверное не совсем корректо, и получаю чудеса .... Возвращаются "прошлые" значения и идет присвоение В ДРУГУЮ СТРОНУ, т.е. как бы А_ = Б_. Если выводить данные во входные значения, все нормально работает...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Опишите, пожалуйста, более точно процедуру "создания чего-либо по шаблону, который представляет собой "пустую строку"", и укажите версию и релиз. 2. Пришлите, пожалуйста, Ваш проект, на котором можно наблюдать "зависание профайлера" после удаления канала (с указанием релиза). 3. "Чудеса" действительно объясняются некорректностью передачи значения в атрибут РЕАЛЬНОЕ.
Posted by stesv (Участник № / Member № 1511) on :
По п.1. Создаю аргумент программы (режим ST)по шаблону "пустая строка" следующим образом: - Выделяю "кликом" существующий последний аргумент в списке аргументов и привязок("самая правая" панель); - перемещаю указатель мыши на пустую строку (сдвинул случайно); - по правой кнопке выбираю создать по шаблону, выбираю кол-во, жму OK - получаю "глюк" (релиз 6.03.1, базовая версия). По п.2. "в лоб" ошибка не воспроизводится,попробую повторить ситуацию... Также "насобирал" еще немного "глюков", объеденю их все в одном проекте и перешлю Вам позднее ...
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
За подробное описание "тиражирования пустой строки" спасибо. Ошибку внесли в базу для исправления.
Ждем проекта с дальнейшими результатами иссследований.
Posted by stesv (Участник № / Member № 1511) on :
Обнаружены следующие "чудеса" на этот раз с массивами (тестовый проект с некоторыми этими "чудесами" отправляю на службу поддержки): 1. Конструкции типа for I=0 to ... do M[I]=M[I + J + ...] + ..., где М - массив, а I J локальные переменные ST программы работают НЕПРЕДСКАЗУЕМО, а именно: а. в зависимости от типа данных I J (Int, Uint, DInt и т.д.) получаются совершенно разные результаты. Хотелось бы знать, какого типа переменные необходимо использовать для индексов в массивах. б. "Перемещение" или "сдвиг" элементов массива в цикле с использованием индексов работает "нестабильно" (данные могут вообще не "сдвигаться", могут "сдвигаться" на ошибочное число позиций) . в. присвоение значений в одни элементы может "затирать" соседние элементы массива. 2. Не рекомендую передавать массивы в функции ST программ через аргументы input/output ("как бы по ссылке") для возможности изменения данных в вызывающей прогамме, а также использовать массивы в пользовательских структурах. Описание возникающих при этом "странностей" займет много времени и места.
... Неплохо бы Вам сделать ПОИСК по форуму, чтобы быстрее искать информацию по "болевым точкам".
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В дальнейшем, пожалуйста, давайте в запросах более определенные ссылки на тему и проблемы. Мне стоило труда найти в форуме именно Ваш запрос для того, чтобы определить проблему и провести анализ.
По Вашему проекту.
Принципиальная ошибка - задавая индекс переменной массива, нельзя использовать ВЫРАЖЕНИЯ типа D[J-1]. Надо вычислять выражение отдельно и затем использовать результат в качестве индекса. //СДВИГ J = I - 1; D[J] = D[I];
При этом применимы любые целочисленные типы переменных. И передача в выходные аргументы из массива тоже осуществляется без проблем.
Кроме того, у меня есть основания предполагать, что в Вашем проекте есть некоторые алгоритмические погрешности, которые искажают результаты сдвига и присвоения результатов.
Я посылаю Вам Ваш проект с добавленной программой, в которой ожидаемые Вами функции реализуются в полной мере.
Готов обсудить дополнительные "странности". Только присылайте их описания сразу вместе с проектом на адрес техподдержки. Так будет быстрее.
В верхней строке каждой страницы форума есть команда "Поиск".