This is topic Как задавать привязки программ при импорте через ODBC in forum Работа в MS Windows (ODBC/DDE/OPC/NET) / Working under MS Windows at Форум TRACE MODE: техническая поддержка.
Пытался экспортировать проект, чтобы посмотреть как это пишется, но поля, выделенные под ARG остаются незаполненными
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
А в проекте были FBD, которые действительно привязаны к каналам?
Posted by Sergei (Участник № / Member № 161) on :
Конечно были. Причем имена программ экспортируются, а аргументы нет. Реально ли всю базу каналов создать, допустим, в Экселе и потом импортировать, или некоторые параметры (настройки каналов) придется делать вручную? Знаю, что Зебра пользуется подобной технологией, но подробности мне не известны.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Какой релиз ТМ? Я пробовал в 5.12 - отлично работает.
Вполне возможно, что и все 100% проекта можно в Excel'е сделать (кроме самих FBD конечно), но все будет зависеть от того, какие именно параметры Вы хотите таким образом "подкачать" - ведь все равно через данный механизм не все абсолютно параметры базы каналов доступны.
Posted by Sergei (Участник № / Member № 161) on :
У меня тоже 5.12. Делаю так:
создаю файловый DSN на файл экселя В экселе первой строкой задаю имена столбцов латинскими буквами без пробелов В ТМ захожу в узел, Импорт ODBC, пишу "INSERT INTO `LIST1$`" Задаю соответствие именам столбцов, в том числе "трансляция/управление" и несколько ARG После ОК в экселе оказывается список, где есть всё, кроме аргументов.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Проверил как с MS Access, так и с MS Excel из MS Office2000 - все прошло нормально! Может это особенности Вашего проекта или настроек соответствий полей при экспорте? Я проверял на демо-проекте YPN.CTM из директории SAMPLE инструментальной системы. При экспорте использовал Имя канала, Управление/Трансляция и 6 первых аргументов привязок. Попробуйте - если сработает нормально, тогда нам необходимо Ваш проект и описание Ваших настроек соответствий полей при экспорте.
Posted by Sergei (Участник № / Member № 161) on :
На прошлой неделе отправил Вам проект. Как у Вас проходит экспорт? Сейчас я пытаюсь импортировать узел. Не знаю как задать тип представления HEX. Например, я импортирую канал типа ДИСКРЕТ дополнение DI RWH. При этом создаются каналы с видом F. А если задавать параметр Подтип(Auto) в ввиде DO (DI), то создаются каналы подтипа Виртуальное УСО, не смотря на то, что задан подтип. Короче говоря, в справке не написано, как задавать вид канала. Путем экспериментов удалось получить требуемый результат следующим способом: сначала импортируем с указанием поля Подтип(Auto)- при этом получаем каналы вида Н с подтипом Виртуальное УСО, а затем импотрируем то же самое, но без поля Подтип(Auto) - в этом случае вид не меняется (Н), а подтип канала берется из таблицы. Может я все чересур усложняю и для этой цели есть специальный атрибут канала, который можно назначить полю БД? И еще хотелось бы прояснить:в списке атрибутов канала (для связи с полями БД) есть Адрес, Ch, Mux и Команда (для Команды нет описания в справке), но для разных типов и подтипов канала эти атрибуты будут другими, как их задавать? Просто по порядку? Например, как создать канал КАНАЛ КОПИРОВАТЬ с указанием, например Bit1 какого-то дискретного канала?
PS: КАНАЛ КОПИРОВАТЬ я сделал (подсмотрев как экспортируется) Кажется команды действительно надо задавать попорядку, но это все нигде не описано, и откуда я мог узнать, что Mux должен быть b?. Да, а канал опять создался с видом F. И хотя в атрибутах там и стоит копировать бит2, но сам канал DI RWH (откуда копирую) создался вида F и, естественно, такого атрибута у него нет.
Возможно Вы думаете: вот человеку делать нечего, есть же графическая оболочка. Но, частенько возникают случаи, когда с виду нормальный проект начинает чудесить - взять хотя бы мой последний случай, когда на выходе цепочки rTrig и fTrig при запуске появлялась 1. Вы предположили, что это "какие-то нарушения МЭПирования после редактирования FBD." и предложили "отвязать FBD от канала и привязать снова". Но у этой программы 18 привязок, а сама она привязана к 30 каналам. Хотя в данном случае мне не пришлось все это проделывать (я просто заменил второй триггер на LTN - он мне нужен был только для задержки), но где гарантии что подобного не произойдет в будущем? Да и пример Зебры меня заинтересовал - они создают такие большие проекты в сжатые сроки, и это еще и работает!
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По Вашему проекту обнаружены следующие ситуации: 1) При экспорте с привязками программ с процедуры Трансляция привязки не экспортируются. Это действительно пока так - данную функцию будем дорабатывать в следующие релизы. 2) ### Почему-то именно в Вашем проекте для каналов у которых есть программа на Управлении редактор при экспорте ее вообще не находит! С этой ситуацией будем еще разбираться и о результатах сообщим позже.
В явном виде тип канала импортировать нельзя. Он применяется системой автоматически в двух случаях: 1. когда в базе Вы указываете AVI, AVO, DVI, DVO - приставка V указывает на тип Виртуальное УСО. 2. когда указывается конкретный тип: AI, AO, DI, DO, но импорт производится не для узла АРМ, а для узла контроллера.
Первый случай предназначен для создания проекта, когда итоговое "железо" для системы заранее неизвестно и в дальнейшем проект может быть быстро на него мэпирован. Второй - когда известно реальное "железо" и на него необходимо произвести импорт.
Относительно справочной информации - мы постараемся добавить Ваши пожелания по информативности справочной информации. Пока - принцип приблизительно следующий: канал имеет настройки, параметры: Адрес, Ch, Mux и Команда, при импорте/экспорте как раз и управляют этими настроками. Функция импорта/экспорта нами постоянно дополняется, поэтому справочная система немного может отставать от реальных функций данного раздела.
Относительно триггеров rTrig и fTrig - желательно проверить состояние входных аргументов для этих блоков, вполне возможно, что это не баг, а реальная отработка входного сигнала. Если же это действительно самопроизвольное включение, то необходимо прислать нам проект для анализа и исправления данной ситуации.
Posted by Sergei (Участник № / Member № 161) on :
А каким образом осуществляется "мэпирование"? Вручную? Насчет вида канала я не совсем понял. Мне нужно создать контроллер (будет работать под Double Force Mrv). Сам контроллер работает под Win2000 и содержит платы аналогового и дискретного ввода вывода. Какой тип узла мне выбрать? По-моему, здесь должны подойти Контроллер-произвольный или DDL. Видимо придется создавать каналы для обмена с платами вручную, а отдельные биты дискретного канала попытаться копировать импортируемыми каналами (это у меня получается ). А проект я Вам высылал. Это ОЧЕНЬ напоминало глюк: я смотрел входы и выходы триггеров. При этом вход и выход первого триггера не менялся, а на выходе второго была 1 до следующего цикла пересчета. Причем сначала у меня эта процедура работала (работает и специально собранная такая же цепочка в другой программе, кажется, я даже привязки пробовал такие же ставить) а потом перестала, я полез разбираться и нашел эту причину.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
"Мэпирование" описано в разделе АВТОПРОСТРОЕНИЕ БАЗ КАНАЛОВ/КОМБИНИРОВАНИЕ МЕХАНИЗМОВ. Вид канала (F/H) задается его типом (AI/AO - F, DI/DO - H) и не может при импорте задаваться в явном виде. Если УСО Вам известно и оно поддерживается в Трейс Моуд, то можно использовать имеющиеся механизмы автопостроения на уровне узлов и/или объектов. Если Ваше УСО не поддерживается, то придется создавать каналы вручную. Если решение тиражируемое (постоянная конфигурация), можно использовать узлы DDL. По поводу "глюка" в FBD с триггерами. Действительно, при некоторых (трудно систематизируемых) ситуациях редактирования FBD, использующих блоки раздела ТРИГГЕРЫ И СЧЕТЧИКИ, возникает ошибка функционирования ранее привязанной FBD. К сожалению, исправить эту ошибку в настоящее время не представляется возможным. Единственное надежное решение в этом случае - перепривязка FBD.
Posted by Sergei (Участник № / Member № 161) on :
Спасибо, ситуация вроде прояснилась. (Эх я балбес, не смог найти этого в справке сам).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Успехов!
Posted by Sergei (Участник № / Member № 161) on :
Что-то успех мне не очень-то сопутствует Хочу довести до Вашего сведения некоторые "особенности", выявленные при попытке импорта: 1. Имена импортируемых каналов должны различаться. Если существуют каналы с одинаковыми именами, то вместо второго канала создается копия первого, даже если каналы лежат в разных объектах. Может быть это и правильно. 2. Импортирую несколько дискретных каналов и несколько каналов типа Канал Копировать бит1...бит8. При этом привязка канала (откуда копировать бит) у всех каналов устанавливается на первый в списке дискретный канал. 3. В каналах Копировать чтобы установить атрибут копировать бит7 или бит8 (номер 10 и 11 соотв) нужно перед номером ставить одинарную кавычку. Не помню, чтобы это было в справке. (почти случайно заметил).
Второй пункт меня волнует больше всего. Если нужно могу выслать таблицу и файл соответствия привязок.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
При импорте каналов, ссылающихся на какой-либо еще несуществующий в базе (до импорта!) канал, ссылка приравнивается нулю, поэтому устанавливается нулевой канал. Если Вы проведете ту же операцию импорта повторно, настройка изменится на тот канал, который указан в исходной базе. По поводу "одинарной кавычки" перед индексами 10 и 11 - это определяется, видимо, особенностями формата запроса в конкретной базе данных. Я пробовал в MS Access, ничего не потребовалось.
Posted by Sergei (Участник № / Member № 161) on :
Ничего подобного! У меня при повторном импорте каналы привязок не меняют, зато почему-то создаются новые каналы (было до импорта 35 каналов - стало 43). Может у Вас есть рабочий пример, чтобы я уже наконец успокоился?
ps: оказывается это связано с тем, что не устанавливается атрибут канала ch. Ни у дискретных каналов, ни соответствующий атрибут у каналов типа Канал Копировать.
ps: кажется нашел - опять кавычки (их в таблице не видно)
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Я послал Вам проект, в котором продемонстрирован импорт каналов из базы MS Access (база приложена).
В узле NetLink1 точной адресации каналов подтипа КАНАЛ не происходит. Этот узел записан в "нулевой" логической строке файла addr.ind. К сожалению, сейчас мы это исправить не можем. Мы внесли это в базу ошибок. Но появления дополнительных каналов после повторного импорта в этом узле не наблюдается.
В узле NetLink2 импорт с повторением дал точную адресацию.
Вы можете создать новый узел, например, МРВ(сеть), и провести импорт в него самостоятельно. Я перепроверял.
Posted by Sergei (Участник № / Member № 161) on :
После переноса таблицы из excell в Access импорт стабильно вылетает с ошибкой "команда ... обратилась по адресу 0х0000000". Ваша таблица импортируется нормально. Таблицу выслал. Еще хотелось бы уточнить насчет атрибута Команда. В справке для экспорта/импорта через ODBC напротив него пустое место, а для импорта из текстового файла написано Команда – для каналов подтипа АНАЛОГ и ДИСКРЕТ этот параметр задает значение настройки MUX Но у нас уже есть MUX! Для чего он нужен в данном случае?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Документация отстает от реальности. Правильно в документации будет так: Команда - настройка SLOT для каналов DCS или TYPE для каналов MODBUS или C2 для каналов ПУСТОЙ GAIN/REG для каналов АНАЛОГ ATTR для каналов СВЯЗЬ BIT для каналов БЫСТРЫЙ C для каналов DDE соответственно.
А "таблицу" ждем.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В Вашей таблице имеются ошибки по 3 принципиальным позициям.
1. Имена каналов содержат точки. ("В имени канала можно использовать любые символы. Однако, не рекомендуется использовать символы математических операций, знаки препинания и пробелы. Это важно если на канал организуются внешние ссылки из других приложений и метапрограмм.") 2. Имена объектов превышают 20 символов. ("Имя объекта представляет собой текстовую строку длиной до 20 любых символов.") 3. Тексты комментариев превышают 38 символов. ("Для каждого канала можно задать комментарий: текстовую строку длиной до 38 символов.")
По первым двум пунктам требования при импорте оказались критериальными. Комментарии при импорте обрезаны.
Посылаю Вам откорректированную таблицу, на которой я провел окончательную проверку.
Posted by Sergei (Участник № / Member № 161) on :
Странно, при импорте из Excel-я лишнее просто обрезалось, а тут.... Теперь все импортируется и даже привязки каналов со второго раза устанавливаются, НО после второго импорта добавляется еще 13 каналов! В ПМУ1 - 8 каналов ПМУ2 - 3 Арбитр - 2 И еще такая мелочь, не знаю как у Вас, у меня если после импорта при закрытии РБК отказаться от сохранения РБК закрывается, видимо, с ошибкой и не удаляет файл work.cfg
PS: прошу прощения, но привязки на каналы устанавливаются правильно уже при ПЕРВОМ импорте.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Все перечисленные Вами каналы имеют в таблице имена длиной более 13 символов. При импорте имена обрезаются до 13 символов. При повторном импорте сравнивается исходное имя канала с уже имеющимся в базе: совпадения нет, вставляется новый канал с обрезанным именем. Сократите имена каналов в таблице до 13 символов. По поводу нештатного сохранения файла work.cfg - будем разбираться.
Posted by Sergei (Участник № / Member № 161) on :
БОЛЬШОЕ СПАСИБО за помощь! На данный момент вопросы кончились
Posted by Sergei (Участник № / Member № 161) on :
После десятка неудачных попыток пришел к выводу, что атрибут Команда (тот, который соответствует GAIN для каналов типа Аналог) не импортируется и не экспортируется. Проверьте пожалуйста.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Этот параметр - действительно пока не работает.
Posted by Sergei (Участник № / Member № 161) on :
Не могу импортировать/экспортировать привязки программ для каналов не УПРАВЛЕНИЕ-управление (для них все работает). Для пустых каналов при импорте устанавливается только имя привязываемой программы (устанавливается в трансляцию). Ни один аргумент не привязывается. При экспорте пустых каналов, независимо от того куда привязана программа (в трансляцию или управление)экспортируется только имя программы. Кроме того не работает экспорт в ACCESS - в логах пишет "не хватает ";" в конце".
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Эта ошибка уже была замечена нашими пользователями и сейчас находится в нащей базе исправлений на доработку в следующий релиз.