Зарегистрирован: Mar 14, 2006 Сообщения: 128 Рейтинг: +2/-0 Откуда: Липецк
Добавлено: Вт 26 Сен, 2006 12:26:05 Заголовок сообщения: ControlLogix и строковые теги
Здравствуйте, коллеги!
Никто не сталкивался с проблемой записи в строковые теги ControlLogix и чтения из них строк на русском языке? Есть такая необходимость, чтобы одно приложение по OPC записало в контроллер строку на русском языке, другое - прочитало.
Я так понимаю, что стандартный тип String в Logix не катит по причине того, что каждый символ в строке имеет тип ShortInt (SINT). Но есть якобы вариант с использованием массива INTов, к которым нужно лишь своеобразно обратиться: например, из RSView32 указать примерно следующее [LINX_TOPIC]int_str[0],SCxx. В этом случае получается забрать символы в латинской кодировке (опять с кодом от 0 до 127 десятичн.), но с кодом от 128 до 255 никак, точнее они отображаются не по-русски в любом случае.
Добрый день!
RSView32 отлично пишет и читает String в SoftLogix на русском языке.
За исключением того-что в RSLogix 5000 не прочитать текст, т.к. приведены коды.
Правильно. Так и нужно делать. Одна программа пишет, другая читает, но в контроллере эти данные в ненаглядном (закодированном) виде. А все потому, что русские буквы имеют ASCII кода больше 127.
Спасибо, конечно, за ответы, но я так и не понял: можно ли как-нибудь записать в ControlLogix именно РУССКУЮ строку, а затем ее прочитать?
Я знаю, что коды русских букв выходят за пределы стандартной ASCII таблицы и имеют значение большее 127 (десятичное), даже более того: если создать самому массив INTов и попытаться записать в него русские символы, то коды символов правильно раскладываются в шестнадцетиричном коде. Однако никто не может их считать: ни RSView32, ни OPCTestClient (RSLinx Tools), ни другие клиенты.
Неужели придется этот массив на ВАСИКе разбирать? Типа загружаем нулевой элемент массива: старший байт преобразуем, записываем в первый символ строки, младший байт преобразуем - записываем во второй символ строки; затем берем следующий INT и т.д. Честно говоря, по ощущениям выглядит не очень...
1. Процессор Logix5561
2. Пакет RSLogix5000, создан тег типа STRING
3. С помощью клиентов OPC Test Cliet (RSLinx Tools) или OPC Scout (Simatic Net) или RSView32 пытаюсь занести в строку значение.
4. Проверяю результат в RSView32.
Русскую строку удается увидеть только в OPC Scout.
В Monitor Tags самого RSLogix5000 вижу, что значения символов в шестнадцатеричном коде соответсвуют мною введенным, однако никто из клиентов Rockwell их не видит.
OPC Scout от Simatic Net видит русские буквы в значении строковой переменной только в случае того, если записано оно с помощью самого OPC Scout. OPC Scout похоже работает с 16-ти ричными кодами символов.
Если попытаться записать значение строковой переменной из RSView32, то оно преобразуется не понятно по какому алгоритму и Scout это значение уже не воспринимает.
Если же вручную записать в RSLogix5000 ASCII коды русских символов в 16-ти ричной кодировке, то Scout их обновляет, а все остальные нет.
У меня все работает, RSView32 пишет и читает, аналогично и для RSView SE.
RSI OPC Test показывает только понятные ему символы, т.е. до кода 127. Но русский текст при этом записывает и RSView32 правильно отображает.
Условия моей проверки:
- SoftLogix5860 ver. 13.26
- RSView32 ver. 7.20
- RSView SE ver. 3.20
- RSLinx ver. 2.50
Вспоминая старое - обмен по OPC между RSView32 - русские символы были корявые, но RSView32 были ver. 6.30.16 и 6.30.17.
У меня RSView32 ver 7.00 упорно не хочет отображать русские строки и пишет их тоже в контроллер непонятно. При попадании в PLC они преобразовываются к символам с кодом от 0 до 127. С другими клиентами такого не происходит: после записи из RSI - OPC Test Client или SimaticNet OPC Scout записываются в PLC символы, в десятичном виде представляющие собой значения дополнительного кода до полного байта: т.е. код русского символа - 256 = отрицательное число (которое записано и отображается в PLC).
Может, немного не в тему, но мы на Дельфях делали ввод/вывод на форму стринги, в том числе и кириллицу. Тип данных в каонтроллере - String. L32E, RSLogix5000 v.15, RSLinxPro 2.5. Без проблем.
Может, немного не в тему, но мы на Дельфях делали ввод/вывод на форму стринги, в том числе и кириллицу. Тип данных в каонтроллере - String. L32E, RSLogix5000 v.15, RSLinxPro 2.5. Без проблем.
У меня такое подозрение, что некорректно работает RSView32 v.7.00. Она не только не умеет прочитать записанные в ControlLogix строковые теги, но и пишет их туда неправильно. RSLinx у меня версии 2.42.
Если использовать практически любого другого OPC клиента к RSLinx, то получается и записать, и прочитать. Строка кладется с нормальными 16-ти ричными кодами русских символов и без проблем считывается в этот же клиент. А нужно именно использовать в качестве клиента RSView32.
Если использовать практически любого другого OPC клиента к RSLinx, то получается и записать, и прочитать.
У нас вообще мысля есть свой OPC писать. Возможно, ближе к зиме и приступим. Хотя в Делфях использовался стандартный OPC. Будем думать . При использовании других клиентов, действительно все вроде нормально. Скорее, очередная заморочка вьюшки (и скоко их еще будет ).
Цитата:
А нужно именно использовать в качестве клиента RSView32.
Если необходимо RSView32, то скорее придется там делать обходным путем, т.е в окне RSView32 вызывать другое приложение и работать с ним. Сейчас пробовал средсвами RSView32 без VBA, ничего не получилось. Может у кого есть свой способ решения проблемы инструментами RSView32?
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.129 секунды