Тема / Topic: Ошибка Неверная привязка в трансляции
vector1980
Junior Member / Новичок
Участник № / Member № 8211
отправлено / posted
Доброго дня. Тестовая программка. В шаблонах программ создал FBD программу с одним блоком PB, использую вход IB0, IB1 и выход O. В аргументах программы создал два входа тип - bool, выход тип - int16. Создал дискретный канал, в настройках канала число бит 16, привязываю (либо руками, либо перетаскиванием из шаблонов) "вызов программы", тут же во вкладке "Аргументы" привязываю аргументы программы (типы данных совпадают). Запускаю "сохранить для МРВ" - ошибка "EMS_ARG_LINK_ATTR,.....,Неверная привязка в трансляции". Причём если перетащить шаблон этой программы в дерево узла, и привязать аргументы созданного канала класса Call вызова этого шаблона также, как и в случае выше, то всё будет работать. Ни в хелпе (ох, больная тема, почему нет хотя бы поиска?), ни в видеоуроках, объяснения не нашёл. Возможно, не внимательно смотрел? В 5-й, в 6-й версии ТМ всё прекрасно работает. У меня 226 каналов после конвертации проекта из ТМ6 с такой ошибкой, трансляция (вызов программы) поломан. ( В чём проблема? Спасибо.
Сообщения / Posts 23 | Из / From: Россия
| IP / IP: IP адрес / IP address |
quote:Отправитель / Originally posted by vector1980: Доброго дня. ... Запускаю "сохранить для МРВ" - ошибка "EMS_ARG_LINK_ATTR,.....,Неверная привязка в трансляции"...
Здравствуйте! Вы не правильно сделали привязку. Ознакомьтесь с описанием Трансляции в Справочной Системе - Каналы - Числовые каналы - Числовые каналы
quote:Отправитель / Originally posted by vector1980: ... Ни в хелпе (ох, больная тема, почему нет хотя бы поиска?), ни в видеоуроках, объяснения не нашёл. Возможно, не внимательно смотрел?
Смотрите. При компиляции сообщение "неверная привязка в трансляции". Открываем канал, у которого проблема (в данном случае discrete) и нажимаем F1. Должна открыться Справочная система на разделе "Канал класса DISCRETE". В нем (аналогично для каналов Analog) есть описание трансляции и ссылка на раздел "Числовые каналы".
quote:Отправитель / Originally posted by vector1980: Спасибо.
vector1980
Junior Member / Новичок
Участник № / Member № 8211
отправлено / posted
Спасибо за скорый ответ. К сожалению, он не помог. Перед тем как написать сюда, я до "мух в глазах" зачитал те разделы что вы советуете. Кстати, они почти точно скопированы с помощи в TM6, раздел "Числовые каналы" полностью. Ответа в них на описанную мной проблему я не нашёл, примеров тоже нет. В ТМ5 и ТМ6 я много лет делал те же операции с трансляцией и привязкой, ни каких проблем не было. Пожалуйста, внимательно прочитайте моё первое сообщение. Я привязываю аргументы в вызове программы так же, как и делает встроенный конвертер из TM6 в TM7, собственно по другому и не сделаешь. И это не работает, ошибки. Создал другую FBD программу, с единственным блоком MOVЕ, два аргумента real, один in, другой out. Подключаю его к этому же каналу в трансляцию, так же привязываю аргументы и всё работает. Почему не работает программа в трансляции с единственным FBD-блоком типа PB? Где я (и встроенный конвертер проектов из ТМ6 в ТМ7) не так делаю? Спасибо.
Сообщения / Posts 23 | Из / From: Россия
| IP / IP: IP адрес / IP address |
vector1980
Junior Member / Новичок
Участник № / Member № 8211
отправлено / posted
Здравствуйте. Прошло три дня, вопрос оказался сложный и ответов у тех.поддержки пока нет... Опишу проблему проще. 1. Создаю новый проект. 2. В шаблонах программ создаю FBD программу с единственным блоком НЕ(!X). 3. Создаю два аргумента, тип bool, один IN, другой OUT. 4. В программе на вход указываю аргумент IN, на выход аргумент OUT. 5. Компилирую программу, ошибок нет. 6. Создаю узел RTM_0 7. Создаю единственный канал Discrete, тип IN, кол-во бит 16. 8. Методом drag-and-drop перетаскиваю программу из шаблонов программ в поле "вызов программы" в окне свойств канала. 9. Во вкладке Аргументы окна свойст канала привязываю аргументы, аргумент IN программы к биту 0 дискретного канала, аргумент OUT к биту 1 этого канала. 10. Сохраняюсь, жму "Сохранить для МРВ", получаю: ERR-LOAD:EMS_ARG_LINK_ATTR,1,Discrete_1,неверная привязка в трансляции CER-FCNV:EMS_ECANCELED,node_0.dbb,операция отменена 11. ????? Менял тип аргументов, уже перебором, для эксперимента, то же самое. Менял направление пердачи с in на out, то же самое. Как это исправить??? Я не знаю как ещё проще и подробнее расписать проблему.
P.S. Заказчик купил ТМ7 (лучше, актуальнее, новее и пр...), нужно переписать программу с ТМ6. Переписал. Теперь в 226 каналах где в трансляции программа в FBD с битовыми привязками, хоровод таких ошибок. И думаю, это ещё не все сюрпризы... Правда, хочу ошибиться.
Сообщения / Posts 23 | Из / From: Россия
| IP / IP: IP адрес / IP address |
quote:Отправитель / Originally posted by vector1980: Спасибо за скорый ответ. К сожалению, он не помог. Перед тем как написать сюда, я до "мух в глазах" зачитал те разделы что вы советуете...
Здравствуйте! В указанный параграфах есть описание какие атрибуты используются "перед" трансляцией, а какие "после". Например, для канала Analog с направлением input в трансляцию необходимо, как вход, передать Аппаратное значение, а, как выход, использовать Реальное значение. Для Вашего случая (какой тип канала и какое направление) проверьте в Справочной Системе какие атрибуты необходимо использовать.
quote:Отправитель / Originally posted by vector1980: ... Создал другую FBD программу, с единственным блоком MOVЕ, два аргумента real, один in, другой out. Подключаю его к этому же каналу в трансляцию, так же привязываю аргументы и всё работает. Почему не работает программа в трансляции с единственным FBD-блоком типа PB? Где я (и встроенный конвертер проектов из ТМ6 в ТМ7) не так делаю? Спасибо.
Потому, что Вы не привязали необходимые атрибуты. Давайте разберем пример. Канал Discrete. Блок PB и так далее, как Вы указали в первом сообщении. Предположим, канал Discrete будет input (атрибут 81, редактирование узла). В справочной системе написано "Аппаратное -> Трансляция -> Реальное". Очевидно, выход программы привязываем к Реальному значению. Привязка двух аргументов к атрибутам 10 и 11 (bit0 и bit1) некорректна, так как нет привязки к Аппаратному значению. Согласно Справочной Системе, один из входов программы трансляции должен быть привязан к Аппаратному значению.
В Вашем случае, в шаблоне программ создайте дополнительный входной аргумент и, в канале Call.Program этот аргумент привяжите к атрибуту Аппаратное значение Вашего канала.
quote:Отправитель / Originally posted by vector1980: ... Как это исправить??? Я не знаю как ещё проще и подробнее расписать проблему.
Спасибо за подробное описание процедуры настройки канала трансляции.
В Trace Mode 7, для корректной работы процедуры трансляции, необходимо использовать указанные в Справке атрибуты как входные и выходные.
Сообщения / Posts 17321 | Из / From: Россия
| IP / IP: IP адрес / IP address |