===== Работа с расширителями портов Modbus фирмы Wellpro через Hardware PLC ===== Посылка и прием команд по протоколу Modbus возможна в контроллерах myCNC через запись в выделеные регистры из [[mycnc:global_variables|массива глобальных переменных]]. Перечень регистров для работы с Modbus показан в таблице ниже. ^ Variable Address ^ Description ^ | 60010 | **Ид. номер устройства**. Изменить Идентификационный номер устройства на шине Modbus с которым ведется работа. | | 60011 | **Переключение протокола ASCII/RTU**. Изменить протокол Modbus. "0" - Modbus/RTU "1" - Modbus/ASCII | | 60012 | **Скорость передачи**. Запись в этот регистр изменит скорость передачи по последовательному каналу RS485. Доступные скорости 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 | | 60013 | **Communication parameters**. Change UART connection parameters: number of bits (8 or 7), parity (none, odd, even), number of stop bits (1, 2). Data comes in 3 low nibbles. The lowest is stop bits, then parity, then number of bits. Example: 0x801=8,N,1 0x712=7,O,2 0x822=8,E,2 | | 60019 | **Значение для записи**. Записанное в этот регистр значение будет запомнено в скрытом регистре. При записи в регистр записи значение из скрытого регистра будет послано в удаленное устройство | | 60030 | **Старт записи**. Запись в этот регистр инициирует посылку сообщения в удаленный контроллер по шине Modbus. Значение, записанное в этот регистр будет адресом, по которому осуществляется запись. Значение для записи будет взято из скрытого регистра | | 60020 | **Адрес для операции чтения**. Записанное в регистр значение будет защелкнуто в регистре **Адрес для чтения**. При операции | | 60031 | **Чтение Регистра**. При чтении с этого регистра инициируется посылка в удаленное устройство команды чтения регистра с адреса, запомненным при записи в регистр 60020. PLC контроллер зачыпает на время ожидания ответной посылки из удаленного устройства. | | 60035 | **Запись битового поля**. При записи в этот регистр осуществляется операция записи в устройство Modbus с помощью команды WRITE_MULTIPLE_COILS (0xf). Адрес регистра для записи задается в младших 16 битах (младшее слово) записываемого значения. Количество бит, которые надо записать задаются в старшем байте. \\ Например - 0x080000FF - включить 8 бит регистра \\ 0x080000F0 - включить старшие 4 бит регистра и выключить младшие 4 бит 8-битного регистра. | | 60036 | **Чтение Битового поля**. При чтении с этого регистра инициируется посылка в удаленное устройство команды чтения входных бит с адреса, запомненного при записи в регистр 60020. PLC контроллер засыпает на время ожидания ответной посылки из удаленного устройства. | | 60037 | **Запись регистра**. При записи в этот регистр осуществляется операция записи в устройство Modbus с помощью команды WRITE_SINGLE_REGISTER (0x6). В параметре задается адрес регистра. Ид. номер устройства и записываемое значение хранится в регистрах 60010, 60019. | Примеры PLC программ для управления Modbus расширителями портов 1. Задание параметров соединения через PLC gvarset(60011,0); //Выставить режим Modbus RTU gvarset(60012,9600); //Выставить скорость передачи 9600 2. Начальная инициализация расширителей Modbus Wellpro. Для того, чтобы запрограммировать идентификационный номер устройства у расширителя Wellpro, надо послать соответствующий номер в регистр по адресу 0x64 устройства с Ид. номером "0". Пример кода показан ниже gvarset(60010,0); //Установить Ид. удаленного устройства (0) gvarset(60019,1); //Установить значение регистра (1) gvarset(60037,0x64);//Установить адрес регистра (0x64) и послать Modbus кманду 3. Запись в дискретные выходы. gvarset(60010,1); //Задание Ид. номера устройства gvarset(60019,0xff); //Записываемое значение x=(8<<24)+0xFF; //Записываем 8 бит, включить все 8 выходов. gvarset(60035,x); //Послать команду ===== Автоматический опрос Modbus расширителей. ===== В myCNC имеется возможность включить автоматический опрос Mosbus устройств. Для этого необходимо задать соответствующие параметры в окне настроек "I/O Expand cards mapping" 1) Необходимо запомнить что опрашивать - Modbus Input Holding Register - Группу входных регистров (2, 4, 6 или 8 регистров) - Modbus/Coil Input expansion - Входные дискретные выходы - Modbus/Coil Output expansion - Выходные дискретные выходы 2) Ид. номер устройства Modbus 3) Порт источника - В случае Modbus устройства это адрес регистра для чтения/записи 4) Порт назначения - В случае Mapping Modbus портов - это номер 8-битного порта. Например, если это **выходы** и Порт назначения =0, то при записи в порты 0..7 все значения будут параллельно транслироваться и на выходные пины Modbus устройства, если это **входы** и Порт назначения =2, то состояние входных пинов Modbus устройства бубут транслироваться на входы 16...23 контроллера myCNC. Обращение с оттранслированными входными и выходными пинами будет такое же, как и с обычными входами-выходами контроллера myCNC. Надо только иметь ввиду задержку, возникающую при опросы Modbus устройств. Цикл обращения к Modbus устройству (1 строка Mapping в настройках) составляет около 30мс. {{mycnc:mycnc-io-mapping-001.png}}