Tag Archives: can

Конфигурирование ведомого CANopen-устройства (CANopen Slave)

ПЛК, программируемый с помощью CoDeSys, можно использовать как CANopen Slave-устройство в сети. В дальнейшем будем называть CANopen Slave как CanDevice.

Для этого необходимо определить ПЛК конфигурацию и сохранить ее в EDS-файле. Такой EDS-файл можно в дальнейшем использовать при определении конфигурации CANopen мастера.

Требования для создания CanDevice:

1. Библиотеки

a. 3S_CanDrv.lib

b. 3S_CanOpenManeger.lib

c. 3S_CanOpenDevice.lib

должны быть включены в проект. Они необходимы для того, чтобы ПЛК мог работать как устройство CAN.

2. В конфигурационном файле с расширением *.cfg, который описывает конфигурацию ПЛК, должны быть сделаны соответствующие настройки. Только в этом случае в PLC Configuration появится дополнительный подэлемент “CanDevice”. Этот объект настраивается в дополнительном диалоге с 3 вкладками: Base settings, CAN settings, Default PDO mapping.

Базовые настройки CanDevice

Диалог Base settings

Bus identifier: пока не используется

Name of updatetask: название задачи, из которой будет вызываться CanDevice. В выпадающем списке вы можете выбрать необходимую задачу.

EDS file generation: включите эту опцию, если хотите чтобы текущие настройки были сохранены в EDS-файле, который потом можно использовать для настройки любого CAN-устройства. В поле Name of EDS file введите имя и путь к файлу. Вы можете вручную создать шаблон для EDS и указать к нему путь в поле Template of EDS file. Например, создайте текстовый файл, содержащий элементы EDS- файла, сохраните его как EDS_template.txt и укажите к нему путь в поле Template of EDS file. Теперь, если вы создаете EDS-файл “device_xy.eds” для текущего проекта, то настройки, сделанные в проекте, будут объединены с настройками из шаблона и сохранены в файле “device_xy.eds” (расширение шаблона не должно быть “.eds”). Если настройки текущего проекта уже определены в шаблоне, то они не будут перезаписаны.

Для указания пути к файлам используйте стандартный диалог, который открывается при нажатии кнопки Browse…

CAN-параметры CanDevice

Диалог CAN settings

В этом диалоге вы можете определить Node id и Baud rate. Node id – это идентификатор узла, который используется для адресации к устройству по сети CANopen.

Так же можно настроить Nodeguarding и Emergency Telegram (описание этих механизмов приведено выше). Heartbeat не поддерживается.

Стандартное PDO отображение для CanDevice

Диалог Default PDO mapping

В этом диалоге элементы локального Менеджера параметров могут быть сопоставлены с PDO, которые отправляются и принимаются этим CanDevice. Полученное PDO-отображение будет доступно в любом конфигураторе, в который CanDevice интегрируется. Параметры, описанные в Менеджере параметров, присоединяются к переменным проекта с помощью системы индексов/подиндексов.

List of mappable objects: Здесь вы можете выбрать список параметров, элементы которого будут отображаться в PDO данного CanDevice. В зависимости от целевой платформы, можно создать список параметров типа “Mapping”, который специально предназначен для отображения в PDO CanDevice. В этом случае для настройки отображения PDO будет доступен только этот список параметров. В противном случае будут доступны все списки параметров типа “Variables” и “Instance”.

Элементы выбранного списка появляются в списке Objects. В списке PDO’s настраивается конфигурация PDO. Добавить в список принимаемые и передаваемые PDO можно с помощью кнопок Insert receive PDO и Insert send PDO. Для того чтобы отобразить объект в PDO, выберите объект в левом окне, PDO в правом и нажмите кнопку >>. Параметры PDO настраиваются с помощью диалога, который появляется при нажатии кнопки Properties.

С помощью кнопки Delete выбранное PDO можно удалить из списка.

Пример:

Цель: В первое принимаемое PDO(COB-Id = 512+NodeId) нужно отобразить переменную PLC_PRG.a Для этого в менеджере параметров нужно создать параметр с определенным индексом/подиндексом и связать его с переменной PLC_PRG.a. Менеджер параметров подключается на вкладке “Network functionality” в настройках целевой платформы. Там же определятся диапазоны индексов и подиндексов.

Теперь в диалоге “Default PDO-Mapping” можно отобразить этот параметр в принимаемое PDO.

Конфигурирование CANopen-модулей в CoDesys 2.3 (часть 2)

Раздел экстренных телеграмм (Emergency Telegram):

Модуль передает аварийное сообщение с уникальным идентификатором COB-Id, когда происходит внутренняя ошибка. Это сообщение, различное для разных модулей, хранится по диагностическому адресу. Нажав кнопку ‘Инфо’ (Info), вы можете просмотреть содержание EDS или DCF файлов. Информация разбита на 3 раздела: ‘О файле’ (FILE INFO), ‘Об устройстве’ (DEVICE INFO) и “O PDO” (PDO INFO).

Выбор CAN-модулей модульных ведомых устройств

В левой колонке (Available modules) находятся все доступные модули. Выберите нужные вам модули и с помощью кнопки Add добавьте их в правую колонку (Selected Modules). С помощью кнопки Remove модуль можно будет удалить. Настройки PDO и SDO изменяются автоматически.

Отображение PDO в CAN-модулях

Вкладки ‘Отображать приним. PDO’ (Receive PDO mapping) и ‘Отобр. приниающие PDO’ (Send PDO mapping) в диалоге конфигурирования модуля позволяют изменить образ PDO (PDO mapping), описанный в EDS-файле.

Все доступные объекты располагаются в левой части окна и могут быть отображены в PDO (Process Data Object) с помощью кнопки “>>” и удалены из PDO кнопкой Remove. Объекты типа Standard-DataTypes могут быть использованы для заполнения пустых промежутков в PDO.

Конфигурация CAN-модуля, настройка PDO-отображения

 

Кнопка ‘Вставить PDO’ (Insert PDO) используется для создания дополнительного PDO. В новое PDO вы можете отобразить дополнительные объекты. Распределение памяти входов/выходов для этих объектов производится автоматически, и его можно увидеть в конфигурации контроллера. Кроме того, в конфигурации контроллера появляются символьные имена добавленных объектов.

Настройки PDO можно изменить, нажав кнопку ‘Свойства’ (Properties).

Диалог PDO Properties

 

Каждое PDO имеет собственный идентификатор COB-Id (Communication Object Identifier). Настройки PDO, недоступные для данного модуля, неактивны. ‘Задержка’ (Inhibit Time) – это минимальное время между двумя посылками данного PDO. Нужно выбрать это значение так, чтобы PDO не посылалось слишком часто. Это происходит в том случае, когда значения параметров, отображенных в PDO, передаются чаще, чем меняются их значения, что приводит к необоснованному увеличению загрузки сети.

CMS Priority Group — приоритет PDO при его передаче по сети. Может принимать значения от 0 до 7, причем наивысшему приоритету соответствует значение 0.

‘Тип передачи’ (Transmission Type) Доступны следующие режимы:

  • Ацикличный-синхронный (acyclic-synchronous): PDO передается синхронно, но не периодически
  • Цикличный-синхронный (cyclic-synchronous): PDO передается синхронно, через каждые ‘Число синхр.’ (Number of Sync) синхронизирующих сообщений.
  • Синхр.-только RTR (synchronous-RTR only): PDO обновляется после каждого синхронного сообщения, но передается только после специального запроса (Remote Transmission Request)
  • Асинхр.-только RTR (asynchronous-RTR only): PDO обновляется и передается только после специального запроса (Remote Transmission Request)
  • Асиинхр.-специф. устройства (asynchronous-device profile specific) и Асинхр.-специф. изготовителя (asynchronous-manufacturer specific): PDO передается после специального события.
  • Число синхр. (Number of Sync): число синхронизирующих сообщения между передаваемыми

PDO в режиме синхронной передачи.

Время события (Event-Time): период между двумя сообщениями для соответствующего режима передачи.

Сервисные объекты данных (SDO)

На вкладке сервисных объектов данных (Service Data Object) вы найдете список всех объектов, определенных в EDS и DCF файлах, с индексами от 0x2000 до 0x9FFF. Эти объекты доступны для записи.

Диалог настройки SDO

 

Каждый объект имеет свойства ‘Индекс’ (Index), ‘Имя’ (Name), ‘Значение’ (Value) и ‘По умолчанию’ (Default). Значения этих свойств можно изменять. Выделите нужное вам значение и нажмите <Пробел>. После этого внесите необходимые изменения и для подтверждения нажмите <Enter>, а для отмены — <Esc>. Эти значения передаются в виде SDO (Service Data Object) при инициализации сети.

Конфигурирование CANopen-модулей в CoDesys 2.3 (часть1)

CoDeSys поддерживает настройку оборудования в соответствии со спецификацией CANopen Draft Standart 301. Конфигурирование контроллера производиться практически так же, как описано выше для обычного аппаратно-зависимого конфигурирования ПЛК.

Все файлы электронной спецификации EDS (Electronic Data Sheet) и DCF (Device Configuration File), которые находятся в директории конфигурационных файлов (обычно PLCCONF), интегрируются в CoDeSys. Их содержание можно просмотреть и изменить с помощью ПЛК конфигурации. В EDS описываются параметры CAN-модуля, которые можно настраивать. Если вы добавите модуль, описанный с помощью DCF, можно будет настраивать только МЭК-адреса, а все остальные параметры модуля будут зафиксированы.

Модули CAN настраиваются удаленно с помощью обмена сетевыми сообщениями. Необходимые значения параметров задаются в диалоге ‘CAN параметры’ (CAN Parameters). Затем прием и передача данных модулей происходит через PDO (Process Data Objects), что определяется в диалогах ‘Отобр. принимаемый PDO’ (Receive PDO) и ‘Отобр. перед. PDO’ (Send PDO-Mapping). Значения доступных SDO (Service Data Objects) задаются в диалоге Service Data Objects. Дополнительные параметры CAN модулей, определенные в файлах описания устройств, настраиваются в диалоге ‘Параметры модуля’ (Module parameters). Если программируемый в CoDeSys контрроллер должен быть включен в сеть CANopen как ведомый (“CAN device”), то он настраивается с помощью конфигуратора ПЛК. Его конфигурация записывается в EDS-файл, который может затем может быть использован с любым CANopen мастером.

Ниже описан процесс конфигурирования устройств CANopen.

Базовые параметры CAN-мастера

Настройка таких параметров, как Идент. модуля (Module-Id), Адреса входов/выходов (input/output addresses), Адрес диагностики (Diagnostic address), описана в разделе 0.

Параметры сети CAN можно настраивать сразу после добавления модуля либо после вызова команды “Дополнения” “Свойства” (“Extras” “Properties”).

CAN-параметры CAN-мастера

Выберите скорость передачи данных из списка ‘Скорость’ (Baud rate).

PDO (Process Data Object) может передаваться в синхронном и асинхронном режимах. Синхронизирующее сообщение, имеющее уникальный идентификатор ‘Синхр. COB-ID’ (Sync. COB-ID) (Communication Object Identifier), передается с периодом, указанным в поле ‘Общее время цикла’ (Communication Cycle Period). Для передачи PDO выделяется временной интервал ‘Ширина окна синхронизации’ (Sync. Window Length) сразу после передачи синхронизирующего сообщения. Величина этого интервала указывается в микросекундах. Синхронизирующее сообщение не посылается, если ‘Общее время цикла’ (Communication Cycle Period) и ‘Ширина окна визуализации’ (Sync. Window Length) равны 0. Флажок ‘Активация’ (activate): разрешает передачу синхронизирующего сообщения.

‘Идент. узла’ (Node-Id): уникальный идентификатор CAN-устройства (узла). Принимает значения от 1 до 127. Это значение должно быть уникальным для каждого устройства в сети и задается в десятичном виде. (Не путайте поля Node-Id и Node number.)

Сеть CAN будет автоматически инициализироваться и включаться в работу сразу после загрузки программы, если активна опция ‘Автостарт’ (Automatic startup). Если эта опция не активна, то сеть нужно запускать непосредственно из программы.

Если активна опция ‘Поддержка DSP301, V3.01 и DSP306’ (Support DSP301, V3.01 and DSP306), то будут поддерживаться модульные CAN-Slave устройства, а также еще некоторые возможности, описанные в стандарте DSP301, V3.01 и DSP306, в том числе и сердцебиение. В этом случае CAN устройство будет передавать специальные сообщения, сообщающие о том, что оно работает, с периодом, указанном в поле ‘Сердцебиение’ (Heartbeat Master[ms]). Такой механизм называется сердцебиение (Heartbeat) и является альтернативой механизма Защита узла (Node guarding), но отличается тем, что может работать как на Master, так и на Slave-устройствах. Обычно этот механизм запускается на CAN-мастере.

Параметры модуля CAN-мастера

Диалог настройки параметров модуля CAN мастера такой же, как и для других модулей (см. 0). Дополнительные параметры CAN-мастера, описанные в конфигурационном файле, также доступны пользователю, и их можно редактировать.

Базовые CAN параметры

МЭК-адреса для обращения к PDO из проекта, вводятся в полях ‘Адрес выходов’ (output address) и ‘Адрес входов’ (input address) в зависимости от направления передачи данных, которая осуществляется PDO. В поле ‘Адрес диагностики’ (diagnostic address) нужно ввести МЭК-адрес маркированной памяти (M). По этому адресу будет размещена диагностическая информация о модуле.

CAN-параметры CAN-модуля

Диалог CAN параметров CAN-модуля

Раздел General ID узла (Node-Id): идентификатор CAN-устройства (узла). Принимает значения от 1 до 127. Это значение должно быть уникальным для каждого устройства в сети и задается в десятичном виде. Если активна опция ‘Записать DCF’ (Write DCF), то при компиляции проекта создается файл с расширением DCF, имя которого состоит из имени соответствующего EDS файла и идентификатора узла, для которого создавался этот файл. Если активна опция ‘Создавать все SDO’ (Create All SDO’s), то SDO создаются для всех объектов, а не только для тех, которые изменены. Если активна опция ‘Сброс узла’ (Reset node) (ее наличие зависит от содержимого файла описания устройства), то ведомое устройство сбрасывается перед загрузкой конфигурации. Опция ‘Опц. устройство’ (Optional device) (ее наличие зависит от специфики целевой платформы) приводит к тому, что мастер будет выполнять только одну попытку чтения из данного узла. Отсутствие ответа игнорируется, то есть мастер продолжит нормальное функционирование. Опция ‘Без иниц.’ (No initialization) указывает мастеру немедленно активировать данный узел без посылки конфигурационного SDO. (Данные SDO будут созданы и сохранены в контроллере в любом случае.) Если поддерживается целевой системой, то создание SDO может быть ограничено по трем уровням. Это может потребоваться при недостаточной памяти:

  • CreateCommSDOs: SDO коммуникационных параметров
  • CreateMappingSDOs: конфигурационные SDO
  • CreateBasicSDOs: SDO базовых параметров (Nodeguarding, Sync и др.)

Будут создаваться только SDO разрешенного типа. Вышеописанная опция ‘Создавать все SDO’ (Create All SDO’s) влияет только на активированные здесь типы. Раздел охрана узла (Node guard альтернатива механизму Сердцебиение — Heartbeat). Если активна опция ‘Защита узла’ (NodeGuarding), то модулю посылается сообщение с периодом (Guard Time) (указывается в миллисекундах). В ответ модуль должен послать сообщение с идентификатором “Защитный COB-ID” (Guard COB-ID) (Communication Object Identifier). Если этого не происходит, то он получает статус “timeout”. Если модуль не отвечает на ‘Фактор работоспособности’ (Life Time Factor) сообщений, то он получает статус “not OK”. Статус модуля можно определить, обратившись по диагностическому адресу. Контроль состояния модуля не производится, если переменные ‘Период’ (Guard Time) и ‘Фактор работоспособности’ (Life Time Factor) равны 0.

Раздел сердцебиение (Heartbeat Settings альтернатива механизму Защита узла — Node

guarding): если опция ‘Активировать генерацию сердцебиения’ (Activate Heartbeat generation) активна, то модуль посылает специальные сообщения сердцебиения с периодом ‘Время потребителя’ (Heartbeat Consumer Time) (указывается в миллисекундах). Если активна опция ‘Активация потребителя’ (Activate Heartbeat Consumer), то модуль слушает сообщения сердцебиения, посылаемые мастером. Если эти сообщения до него не доходят, то модуль выключает свои входы/выходы.