PDA

Просмотр полной версии : СПК-207 vs. CANopen FESTO CPV14-GE-CO2-8



starletovod
28.06.2016, 13:09
Добрый день!

Использую СПК-207 для управления тремя сетями: две сетки Modbus ("быстрая" и "медленная", быстрая обрабатывает импульсные выхода с расходомеров) подключены к различным модулям ОВЕН МВ и МУ, и одна сетка CANopen, по ней успешно управляю пневмоостровами Camozzi.

С пневмоостровами Camozzi CANopen заработал сразу, без танцев с бубнами, но сами пневомоострова отказались со временем работать. Было принято решение перейти на Festo.

С настройкой Festo всё оказалось сложнее...

Вообще у Festo серии CPV три типа "голов" для канопена, для этого три различных eds-файла, на все случаи жизни. Мой вариант CO2. На деле не оказалось никакой разницы: использовать CO3 или CO2 (CO3 оказалась удобнее тем, что при создании устройства уже сконфигурированы PDO с выходами и входами, в СО2 надо ручками всё создавать). В обоих вариантах нет обмена с пневмоостровом по заготовленным регистрам (в CANopen это - PDO). Изменения в битах регистров, предназначенных для выходов, не изменяют состояние острова (выхода не срабатывают). Кроме регистров записи, предусмотрено несколько регистров для чтения: состояние входов на дополнительном модуле (он не приобретался), Error register, Manuifacturer status register и состояние выходов. Так вот все выходные регистры всегда в нуле. Я даже инициировал ошибку (поставил переключатели в острове так, как будто подключен модуль расширения, которого нет). Остров свалился в ошибку, регистры ошибок остаются в нуле (тут недочёт от фесто, у них регистры в нулях если ошибок нет, то есть одно и тоже состояние: регистр не считывается или всё ок). Далее в документации на остров указан алгоритм реакции на ошибки: сначала формируется код ошибки в регистре 1001 "Error register", затем в регистре 1002 "Manuifacturer status register", потом сдвиг в регистре № 1003 с номером ошибки (похоже на буфер ошибок), а затем "Send Emergency Message". В онлайне я вижу только последнее действие, а именно: во вкладке "состояние" вижу "Diag String: 'EMCY Code:FF30; Register:81; Field: 00 00 00 02 11'. При этом в устройствах на пневмоострове появляется воскл-знак.
Судя по всему значение регистра 1002 должно поменяться с нуля на FF30, но этого не происходит.

Из этого можно сделать вывод, что CANopen функционирует. Недоступен только обмен по регистрам.

Как этот обмен наладить?

25170

25171

starletovod
05.07.2016, 08:03
"виновник" бед работы с пневмоостровом выявлен.

В проекте присутствуют устройства ОВЕН (добавлены как устройства ОВЕН, а не как универсальное Modbus-устройство), которые перед заливкой проекта в СПК автоматически распределяют адреса соотнесения входов и выходов (какие адреса занимаются "Овнами" невидно, и перераспределить их нет возможности), и "втихаря" какое-то из устройств занимает те-же адреса , что и пневмоостров не выдавая ошибок.

На первом этапе, методом подбора, нашел незанимаемые адреса для пневмоострова, в дальнейшем буду переходить к универсальным Modbus-устройствам при работе с устройствами ОВЕН.

Техподдержка на мой запрос не среагировала, либо им некогда, либо стыдно за такую реализацию своего железа, либо не знают чего натворили.