как засунуть сигналы управления stx, etx в string?

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
andreaswollmann
interested
interested
Сообщения: 1
Зарегистрирован: 05 июн 2008, 22:05
Контактная информация:

как засунуть сигналы управления stx, etx в string?

Сообщение andreaswollmann »

Добрый вечер.
Как говорят, инициатива наказуема ;)
Я программировал до института роботы и когда институт купил нового робота от АББ, я предложил написать новый софт для робота и изменить старую Labview-программу на компьютере.

Старый робот был подсоединён через rs232.
Вначале хотел соединить через DeviceNet, так как он намного лучше поддерживается роботом. Но пришлось отказаться от идеи, так как не смог запустить бус. Искать причину нет ни времени ни желания.

Программу для робота почти написал, соединение с компьютером по rs232.
Схема будет примерно такая:

1. запуск вручную Labview-программы
2. Labview-программа ждёт запрос от робота через rs232
3. запуск вручную робота в автоматическом режиме
4. робот делает запрос/посылает string (stx)Aktion(etx)
5a. если никакого задания нет, то компьютер ждёт 10 секунд и посылает string (stx)000(etx)
5б. если есть одно задание, то компьютер посылает сразу (stx)001(etx) или (stx)099(etx).

Не подскажете, как засунуть сигналы управления stx, etx в string?

Зарание спасибо!
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение Eugen Graf »

String можно представить в HEX-коде. Как я понимаю STX и RTX являются не ASCII-знаками, но их можно выразить в 16-тиричном коде.

Кликни на String-константу правой кнопкой и выбери HEX, а потом вписывай туда байты.
IL@NOT
interested
interested
Сообщения: 6
Зарегистрирован: 09 июл 2008, 16:24
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение IL@NOT »

Вставлю свои 5 копеек. Мой вопрос к знатокам LabVIEW . Вот картинка
Пояснение . Коды служебных сигналов STX и ETX равны 02 и 03 цифры и буквы смещены на 30H в формате ASCII. Контрольная сумма не учитывает символ STX и заканчивается символом ETX. Обрезается до младшего байта и добавляется в конец строки в формате Hexadecimal, все это в порт СОМ. В СИ я могу показать, как это сделать, а как сделать это в LabVIEW?. Неужели проще(?), если да, займусь этим продуктом
Вложения
stx.JPG
stx.JPG (9.29 КБ) 6674 просмотра
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение Eugen Graf »

В LabVIEW наверное так же просто как и в Си. Правда ничего обрезать не там не там не надо. Делаешь байтовый массив и заполняешь его байтами. А в LabVIEW можно даже и без массива, т.к. байтовый массив и является строкой. Хотя и в Си тоже. Может ты имеешь ввиду преобразование между ASCII и Binary?

Т.к. по таблице преобразования получается:

символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h

Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.
IL@NOT
interested
interested
Сообщения: 6
Зарегистрирован: 09 июл 2008, 16:24
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение IL@NOT »

Я извиняюсь за назойливость, но меня интересовало не значение символов цифр (они показаны на рисунке), а как просто переслать на выход ( например СОМ порт) строку состоящую из управляющих символов + данных + контрольной суммы. Пожалуйста проанализируй картинку! Поясняю, первый символ проходит на выход и не подсчитывается в сумме, но он дает начало для подсчета. Далее подсчитывается сумма значений символов цифр данных и символа ETX. Заметь, его значение не 32H а 02H и оно присутствует в сумме. После этого символа добавляется два символа значений младшего байта. Если не обрезать, то в сумме учавствует два байта. Кстати, символы STX , ETX и другие, находятся в таблице ASCII кодов в самом начале до адресов символов цифр. Поэтому можно поставить опцию
Backslash ('\') Codes Display в String To Write control. Тогда строка будет проходить вместе с управляющими символами.
Все это только начало для протокола управления драйвером MELSERVO-J2-Super.
Комманд много и в зависимости от этого в драйвер поступают 5 форматов посылок. В ответ из него назад получаю 4 формата отклика драйвера. В каждом из них могут быть 8 пар сообщений. Хочу поробовать это сделать в LabVIEW. С драйвером я уже связался но пока в рукопашном варианте. Теперь надо постепенно автоматизировать процесс.
IL@NOT
interested
interested
Сообщения: 6
Зарегистрирован: 09 июл 2008, 16:24
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение IL@NOT »

Опечатка, код упр. символа ETX 03H
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение Eugen Graf »

Ну вот, всё просто.
Вложения
HexString.png
IL@NOT
interested
interested
Сообщения: 6
Зарегистрирован: 09 июл 2008, 16:24
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение IL@NOT »

Уважаемый supermoderator " eg " если Вы взялись отвечать на вопросы по этой теме, то я хотел бы внести ясность в ваши ответы: Не понятнно, - но здорово. Видимо человеку, который открыл эту тему, так же стало не понятно, поэтому он и замолчал.
Я еще раз прочитал Ваши ответы и хочу Вас покритиковать за них.
Ваш ответ.
В LabVIEW наверное так же просто как и в Си. Правда ничего обрезать не там не там не надо. Делаешь байтовый массив и заполняешь его байтами. А в LabVIEW можно даже и без массива, т.к. байтовый массив и является строкой. Хотя и в Си тоже. Может ты имеешь ввиду преобразование между ASCII и Binary?
Т.к. по таблице преобразования получается:
символ 3 имеет значение 33h
символ 2 имеет значение 32h
символ а имеет значение 61h
Не надо путать символы с их значениями. Можно сразу писать значения, например для STX пишешь 02h и отправляешь на порт.

Мой ответ на Ваш ответ таков:
Неточность 1: "т.к. байтовый массив и является строкой" - Байтовый массив не является строкой. Строку можно уложить в байтовый массив, поскольку размерность позволяет.
Неточность 2: "преобразование между ASCII и Binary"- в природе не существует. Есть представление одного числа в разных форматах или системах. Преобразование необходимо, когда одна сторона не понимает другую. Тогда нужна перекодировка.
Неточность 3: "Не надо путать символы с их значениями"- требут пояснения. Что такое значение?
Это его адресс в таблице ASCII : 4 бита – номер строки , 4 старших бита – номер столбца . В пересечении этих величин находится символ.
Человек, который открыл эту тему, видимо хотел узнать, как передать служебные символы в строке, если коды самих символов больше кодов служебных сигналов.
Поясняю : непонятно, как послать код символа STX в строке, если '0' (символ нуля) имеет код 30H, а это больше "значения " служебного символа STX[001] ? В моем случае STX [02].
В LabVIEW, если в строке есть символ '\' ,то следующая за ним цифра интерпретируется как HEX значение , а не символ . Т.е. \1 будет транслировано как 01H, а не символа '1' с кодом 31H.
Необходимо только выбрать правой кнопкой опцию Backslash ('\') Codes Display.

Последний пример с элементом Concatenate Strings мне не подходит в таком использовании, т.к. надо добавить сумму, которую надо пересчитывать автоматически. Меняются комманды, параметры комманды, данные, используемых регистров .
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение Eugen Graf »

IL@NOT писал(а): Мой ответ на Ваш ответ таков:
Неточность 1: "т.к. байтовый массив и является строкой" - Байтовый массив не является строкой. Строку можно уложить в байтовый массив, поскольку размерность позволяет.
Строку можно уложить в байтовый массив, а так же байтовый массив можно преобразовать в строку добавив к нему нулевой байт. Я имею ввиду что это почти одно и то же и преобразовывается из одного в другое без каких либо проблем.
IL@NOT писал(а): Неточность 2: "преобразование между ASCII и Binary"- в природе не существует. Есть представление одного числа в разных форматах или системах. Преобразование необходимо, когда одна сторона не понимает другую. Тогда нужна перекодировка.
Это точно. Преобразования на самом деле нет, но есть интерпретация.
http://ru.wikipedia.org/wiki/ASCII
Через таблицу символов ASCII можно представить какое либо значение в виде символа (буква, цифра и т.д.)
IL@NOT писал(а): Неточность 3: "Не надо путать символы с их значениями"- требут пояснения. Что такое значение?
Это его адресс в таблице ASCII : 4 бита – номер строки , 4 старших бита – номер столбца . В пересечении этих величин находится символ.
Человек, который открыл эту тему, видимо хотел узнать, как передать служебные символы в строке, если коды самих символов больше кодов служебных сигналов.
Поясняю : непонятно, как послать код символа STX в строке, если '0' (символ нуля) имеет код 30H, а это больше "значения " служебного символа STX[001] ? В моем случае STX [02].
В LabVIEW, если в строке есть символ '\' ,то следующая за ним цифра интерпретируется как HEX значение , а не символ . Т.е. \1 будет транслировано как 01H, а не символа '1' с кодом 31H.
Необходимо только выбрать правой кнопкой опцию Backslash ('\') Codes Display.
Да, можно выбрать опцию визуализации (Display). Я в верхнем примере выбрал 16-тиричное представление и вписал туда значение символа STX и ETX, т.к. этих символов на клавиатуре не существует.
IL@NOT писал(а): Последний пример с элементом Concatenate Strings мне не подходит в таком использовании, т.к. надо добавить сумму, которую надо пересчитывать автоматически. Меняются комманды, параметры комманды, данные, используемых регистров .
Да как сделать контрольную сумму я в примере не показал, т.к. хотел наиболее просто обьяснить как создать пакет.


Большое спасибо за критику. Я тоже не всё знаю на 100% и иногда могу ошибится в своих обьяснениях. Хотя не считаю что именно в ответах в этой теме я где то ошибся. Может не точно выразился, может и непонятно.

Кстати если ты непротив, то можно в форуме общатся на "ты" независимо от возраста.
IL@NOT
interested
interested
Сообщения: 6
Зарегистрирован: 09 июл 2008, 16:24
Контактная информация:

Re: как засунуть сигналы управления stx, etx в string?

Сообщение IL@NOT »

Вот и отлично! Я очень рад, что мы поняли друг друга. Все делается для того чтобы расширить границы познания.
Вспомнился афоризм: " В то время, когда разум, с боем расширяет свои границы, для глупости вообще не существует преград"
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»