В примере показано, как использовать для обмена явные (explicit) сообщения и I/O пакеты.
Контроллеру FX2N-16MR для обмена по сети DeviceNet необходим интерфейсный модуль FX2N-64DNET. Порядок подключения интерфейсного модуля описан в руководстве по эксплуатации "FX2N-64DNET DeviceNet Interface Block. USER’S MANUAL" (файл FX2N-64DNET E.pdf).
Не забудьте поставить терминатор на конец линии CAN (резистор 100-150 Ом), в модуль FX2N-64DNET он не включен.
Кроме физического подключения интерфейсный модуль необходимо сконфигурировать. Установим переключателями скорость обмена 125 Кбод, и MAC ID модуля – 1.
Для того, чтобы контроллер мог обмениваться данными через интерфейсный модуль, модуль нужно активизировать. Пример программы, активизирующей интерфейс DeviceNet, приведен ниже (программа в виде лестничной диаграммы).
В программе-примере при старте контроллера задаются размеры области обмена: 16 байт для explicit сообщений, по 2 байта для приемного и предающего буфера I/O messaging, и активизируется интерфейсный модуль. При работе стадии подключения протокола DeviceNet показываются на выходах 4..6 контроллера. В регистр данных D100 записывается пришедшее значение из I/O пакета, в ответ посылается значение 1122hex. В регистры данных D200..D207 записываются пришедшие по explicit обмену значения, буфер для обратной отправки заполняется значениями 3344hex. Запись программы в контроллер и просмотр содержимого регистров данных осуществляется в программе Mitsubishi MELSEC-FX.
Другие примеры программ (в т.ч. для связи между контроллерами) смотрите в руководстве по эксплуатации интерфейсного модуля - "FX2N-64DNET DeviceNet Interface Block. USER’S MANUAL". Подробное описание синтаксиса лестничных диаграмм дано в руководстве по программированию контроллеров Mitsubishi серии FX.
Заполнение конфигурационного файла для I/O обмена DeviceNet.ini:
; Baudrate constants: ; 0 - 10K ; 1 - 20K ; 2 - 50K ; 3 - 125K ; 4 - 250K ; 5 - 500K ; 6 - 800K ; 7 - 1000K
[CAN_0] OpenConnectionTimeout = 2000 CloseConnectionTimeout = 500 ReadTotalTimeout = 1000 ReadIntervalTimeout = 500 Master_MAC_ID = 0 Baudrate = 3 |
В данном конфигурационном файле заданы настройки
канала с номером 0 интерфейса шины CAN:
скорость – 125 Кбод;
идентификатор master-компьютера в сети – 0;
максимальное время открытия соединения – 2 сек
(2000 мс);
максимальное время закрытия соединения – 500
мс;
максимальное время принятия всего ответа – 1000
мс;
максимальный интервал между пакетами в составном
ответе – 500 мс.
В настройках группы – контроллера DeviceNet зададим параметры по аналогии с ini-файлом, и укажем адрес прибора = 1.
Согласно документации Mitsubishi, для обмена явными (explicit) сообщениями предназначена сборка (Assembly) с номером 66hex (102dec). По стандарту DeviceNet атрибут с данными, содержащимися в сборке, имеет номер 3. В группе создадим 4 канала Input, адресующиеся к полям 3-го атрибута, и затем 4 канала Output для записи в те же поля.
Созданная по перечисленным выше условиям объектная модель представлена на рисунке:
Записывая значение в Output каналы, на следующем цикле пересчета мы получим те же числа в каналах Input, также пришедшие в регистры данных D200..207. Значения можно проверить в программе Mitsubishi MELSEC-FX в режиме монитора.
Для обмена I/O пакетами создадим в базе 5 каналов – 2 Output канала, задающих размеры буфера отправки и приема (на старте МРВ заполним их значением 2); 1 Input канал, обращающийся к буферу приема, к значению типа WORD и смещением 0; 1 аналогичный Output канал для буфера отправки; и 1 канал – инициатор I/O обмена.
После сеанса I/O обмена, мы можем наблюдать посланное WORD значение в регистре D100, в ответ мы получаем от контроллера число 1122hex.