 | |
Предыдущие результаты
Здравствуйте, уважаемые коллеги!
Вот уже неделя прошла с того момента, как в мариупольском офисе VDT-Automation закончила обучение [u:553c713b35][b:553c713b35]первая[/b:553c713b35][/u:553c713b35] в этом учебном центре группа сотрудников комбината "Азовсталь" по курсу ControlLogix.
А на сайте тишина... Иначе как огромной занятостью и скромностью я это объяснить не могу :D.
Хотя все было на должном уровне: и техническое обеспечение, и уровень преподавателей, и учебный класс, и организационная сторона.
Наши ребята жалели лишь о том, что курс очень быстро закончился :cry: . Но мы уверены, что это только начало нашего тесного и плодотворного сотрудничества :wink:.
[b:553c713b35][i:553c713b35]Отдельно[/i:553c713b35][/b:553c713b35]: Рррроммма, ждем фотографии с неофициальной части :D.
|
[color=blue:76382ce10c]Еще RSLinx имеет "DDE/OPC predefined items", некоторые из них:
- @Mode returns the current mode of the processor as a string (Run, Program, Remote Run, or Remote Program).
- @Status returns the current status of the processor as a string (Ok or Faulted).
- @StatusNumber returns the current status of the processor as a number.
- @IsPresent allows you to check if your ControlLogix processor is available prior to performing reads or writes. [/color:76382ce10c]
А можно поподробней насчет механизма использования этих item-ов из RSView32? Никогда этого не использовал, а штука может быть полезной в случае ее реальной возможности применения.
С уважением,
Vitaliy D. Burtsev
|
[quote:99c51288ed]А в RSView если связи нету то вид объектов не изменяется...[/quote:99c51288ed]
Верно только для случая, когда к этому объекту не привязан тег устройства.
[quote:99c51288ed]Для диагностики можно, например, назначить какие-нибудь действия (Event), основываясь на бите коммуникаций
system\ComErrorValue1 или system\ComErrorValueOPC [/quote:99c51288ed]
Не удачный совет, контроллеров может быть более одного...
В RSView32 есть замечательная функция - "comm_err(TagName)".
Еще RSLinx имеет "DDE/OPC predefined items", некоторые из них:
[list:99c51288ed] - @Mode returns the current mode of the processor as a string (Run, Program, Remote Run, or Remote Program).
- @Status returns the current status of the processor as a string (Ok or Faulted).
- @StatusNumber returns the current status of the processor as a number.
- @IsPresent allows you to check if your ControlLogix processor is available prior to performing reads or writes.
[/list:u:99c51288ed]
|
Проблема: Allen-Bradley -> Profibus -> Siemens?
Я программирую передачу данных в контроллеры Allen-Bardley
(серия ControlLogix) из контроллеров Siemens (серия S7-300) и
обратно по протоколу Profibus. Со cтороны Allen-Bradley для связи
по Profibus используется модуль 1756-MVI56-PDPMV1,
т.е. Profibus DPV1 Master Communication Module (в сети он Master),
со стороны Siemens - CP 3425 DP (в сети он Slave).
Со стороны Siemens все хорошо. Gsd-файл модуля нормально
загружается в 1756-MVI56-PDPMV1, параметры передачи (кол-во передаваемых,
получаемых байт) заданы одинакого и со стороны Siemens,
и со стороны Allen-Bradley. При просмотре сети Profibus в On-line режиме
с помощью утилиты Prosoft Configuration Builder 2.0.2 (PCB) тоже все нормально
(On-Line параметры диагностики модуля Siemens в PCP говорят Slave Ok).
Сеть выстроена правильно и по данным и по индикации как со стороны Allen-Bradley,
так и состороны Siemens.
Теперь самое главное - передача данных в циклическом режиме в RSLogix
осуществляется с помощью структур:
MVI56PDPMV1.Input[0..1535] - для входных данных.
MVI56PDPMV1.Output[0..1535] - для выходных данных.
При передачи через MVI56PDPMV1.Output Siemens получает данные.
Но при посылке данных Siemens-ом массив MVI56PDPMV1.Input
остается заполнен нулями, несмотря на то, что в PCB приходящие данные видны
(в выделенных им структурах). Т.е. модуль 1756-MVI56-PDPMV1 данные получает.
Это также видно и в On-Line параметрах master-a из PCB.
Но буфер MVI56PDPMV1.Input[0..1535] остается пуст
(длина его задана нормально в конфигурации PCB).
Программа логики Allen-Bradley скачана с официального сайта Prosoft.
Входной буфер можно просматривать и из PCB через Diagnostics модуля,
но там тоже нули. Анализ приходящих данных в контроллере показывает,
что ошибок нет, обмен идет нормально. #-ра блоков тоже отлично передаются
модулю и принимаются. Но при чтении регистров (#блоков 1-3) они остаются
заполнены нулями. Не понимаю, почему приходящие данные отлично отображаются
в PCB (Prosoft Configuration Builder), но в структуры RSLogix-a (MVI56PDPMV1.Input)
передаваться упорно не хотят?
Буду очень признателен за помощь.
[/b]
|
И еще интересная информация на тему записи строк.
Испытания записи русских строк продолжили с изменениями в полигоне: вместо RSView32 использована среда RSView Studio версии 3.20. Результаты таковы:
Если использовать прямое подключение к контроллеру ControlLogix с использованием RSLinx Enterprise, то проблема остается нерешенной, также идет некорректная запись символов и считывания не происходит. Но, если в качестве связи с PLC использовать RSLinx OPC Server (RSLinx Professional), то и запись и чтение тэгов происходит успешно, т.е. в контроллер попадают символы русской кодировки (можно их проанализировать в 16-ти ричном коде). Вот такая чушь...
Хотя я так подозреваю, что преимущественней в случае RSView Studio использовать коммуникации через RSLinx Enterprise, а RSLinx классик совсем не устанавливать?
С уважением,
Vitaliy D. Burtsev
|
Проблема: Allen-Bradley -> Profibus -> Siemens?
Я программирую передачу данных в контроллеры Allen-Bardley
(серия ControlLogix) из контроллеров Siemens (серия S7-300) и
обратно по протоколу Profibus. Со cтороны Allen-Bradley для связи
по Profibus используется модуль 1756-MVI56-PDPMV1, т.е. Profibus
DPV1 Master Communication Module (в сети он Master), со стороны
Siemens - CP 3425 DP (в сети он Slave). Со стороны Siemens все
хорошо. Gsd-файл модуля нормально загружается в 1756-MVI56-
PDPMV1, параметры передачи (кол-во передаваемых, получаемых
байт и шинные параметры) заданы одинакого и со стороны Siemens,
и со стороны Allen-Bradley. При просмотре сети Profibus в On-line
режиме с помощью утилиты Prosoft Configuration Builder 2.0.2 (PCB)
тоже все нормально (On-Line параметры диагностики модуля Siemens
в PCP говорят Slave Ok). Сеть выстроена правильно и по данным и
по индикации как со стороны Allen-Bradley, так и состороны Siemens.
Теперь самое главное - передача данных в циклическом режиме в
RSLogix осуществляется с помощью структур:
MVI56PDPMV1.Input[0..1535] - для входных данных.
MVI56PDPMV1.Output[0..1535] - для выходных данных.
При передачи через MVI56PDPMV1.Output Siemens получает данные.
Но при посылке данных Siemens-ом массив MVI56PDPMV1.Input
остается заполнен нулями, несмотря на то, что в Prosoft Configuration
Builder, приходящие данные видны в выделенных им структурах.
Т.е. модуль 1756-MVI56-PDPMV1 данные получает. Это также видно и
в On-Line параметрах master-a и slave-a из PCB. Но буфер
MVI56PDPMV1.Input[0..1535] остается пуст (длина его задана
нормально в конфигурации PCB). Программа логики для контроллера
Allen-Bradley скачана с официального сайта. Входной буфер (Input)
можно просматривать и из PCB через Diagnostics модуля, но там тоже
нули.
Не понимаю, почему приходящие данные отлично отображаются в
PCB (Prosoft Configuration Builder), но в структуры RSLogix-a
(MVI56PDPMV1.Input) передаваться упорно не хотят?
Буду очень признателен за помощь...
|
[color=blue:3b0ea881a3]Может, немного не в тему, но мы на Дельфях делали ввод/вывод на форму стринги, в том числе и кириллицу. Тип данных в каонтроллере - String. L32E, RSLogix5000 v.15, RSLinxPro 2.5. Без проблем.[/color:3b0ea881a3]
У меня такое подозрение, что некорректно работает RSView32 v.7.00. Она не только не умеет прочитать записанные в ControlLogix строковые теги, но и пишет их туда неправильно. RSLinx у меня версии 2.42.
Если использовать практически любого другого OPC клиента к RSLinx, то получается и записать, и прочитать. Строка кладется с нормальными 16-ти ричными кодами русских символов и без проблем считывается в этот же клиент. А нужно именно использовать в качестве клиента RSView32.
С уважением,
Vitaliy D. Burtsev
|
[quote:48d8f9f4f7="Mr_Wasp"]Спасибо, конечно, за ответы, но я так и не понял: можно ли как-нибудь записать в ControlLogix именно РУССКУЮ строку, а затем ее прочитать?
Skip
[/quote:48d8f9f4f7]
Можно. И никаких "Васиков" не надо.
Описываешь в RSLogix 5K тег как String, например имя "Text"
В RSView32 в поле Adress также пишешь "Text", тип данных String.
Не используй "Text.data[*]".
|
Спасибо, конечно, за ответы, но я так и не понял: можно ли как-нибудь записать в ControlLogix именно РУССКУЮ строку, а затем ее прочитать?
Я знаю, что коды русских букв выходят за пределы стандартной ASCII таблицы и имеют значение большее 127 (десятичное), даже более того: если создать самому массив INTов и попытаться записать в него русские символы, то коды символов правильно раскладываются в шестнадцетиричном коде. Однако никто не может их считать: ни RSView32, ни OPCTestClient (RSLinx Tools), ни другие клиенты.
Неужели придется этот массив на ВАСИКе разбирать? Типа загружаем нулевой элемент массива: старший байт преобразуем, записываем в первый символ строки, младший байт преобразуем - записываем во второй символ строки; затем берем следующий INT и т.д. Честно говоря, по ощущениям выглядит не очень...
Vitaliy D. Burtsev
|
Здравствуйте, коллеги!
Никто не сталкивался с проблемой записи в строковые теги ControlLogix и чтения из них строк на русском языке? Есть такая необходимость, чтобы одно приложение по OPC записало в контроллер строку на русском языке, другое - прочитало.
Я так понимаю, что стандартный тип String в Logix не катит по причине того, что каждый символ в строке имеет тип ShortInt (SINT). Но есть якобы вариант с использованием массива INTов, к которым нужно лишь своеобразно обратиться: например, из RSView32 указать примерно следующее [LINX_TOPIC]int_str[0],SCxx. В этом случае получается забрать символы в латинской кодировке (опять с кодом от 0 до 127 десятичн.), но с кодом от 128 до 255 никак, точнее они отображаются не по-русски в любом случае.
Если есть решение, то буду рад за помощь.
С уважением,
Vitaliy D. Burtsev
|
Предыдущие результаты
Ещё результаты |
|
| |
|