LinuxCNC и modbus

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
aegis
Мастер
Сообщения: 3171
Зарегистрирован: 22 мар 2012, 06:59
Репутация: 1810
Настоящее имя: Михайло
Откуда: Україна, Конотоп=>Запоріжжя=>Харьків

Re: LinuxCNC и modbus

Сообщение aegis »

[quote="Nick"]
нурка нет, этот и то еле нашел, 500р пришлось отдать за него!
уж намного проще и дешевле было в писиай купить переходник. я покупал лпт и 2 комовских за 10уе. была вынужденная мера так как штатного лпт на материнке нет. но это типа оффтоп в данной теме, но есть мысль что с физическим и виртуальным ком портом может все работать совсем по разному
нікому нічого не нав'язую.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

ком на плате есть, нету шнурка нужного COM-COM разнополого :(. поэтому взял переходник... Его если что можно до завтра сдать, если у нас по бухгалтерии его еще не провели :)...
Аватара пользователя
aegis
Мастер
Сообщения: 3171
Зарегистрирован: 22 мар 2012, 06:59
Репутация: 1810
Настоящее имя: Михайло
Откуда: Україна, Конотоп=>Запоріжжя=>Харьків

Re: LinuxCNC и modbus

Сообщение aegis »

Nick, дык спаять делов 3 минуты. там максимум 9 проводков то всего)))
нікому нічого не нав'язую.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

Об этом я чего-то не подумал :). А экран или что-то типа того надо? И где разъемы взять?
Аватара пользователя
aegis
Мастер
Сообщения: 3171
Зарегистрирован: 22 мар 2012, 06:59
Репутация: 1810
Настоящее имя: Михайло
Откуда: Україна, Конотоп=>Запоріжжя=>Харьків

Re: LinuxCNC и modbus

Сообщение aegis »

вместо экрана можно тупо фольгой обвернуть, а разъемы на радиорынке искать надо. спрашивать надо DB9-F DB9-M (фемейл и мейл, тобишь DB9 мама и папа по нашему спроси думаю поймут. штырек это папа, дырочка это мама) цена до 20 рублей на ваших должна быть типа. в чип дипе к примеру http://www.chipdip.ru/catalog/show/d-su ... spx?gq=DB9 и http://www.chipdip.ru/catalog/show/comp ... spx?gq=DB9
нікому нічого не нав'язую.
psha
Опытный
Сообщения: 147
Зарегистрирован: 28 фев 2011, 11:11
Репутация: 1
Контактная информация:

Re: LinuxCNC и modbus

Сообщение psha »

Можно даже не паять, если взять разъемы на шлейф
http://www.brownbear.ru/goods/47.html

На другую сторону можно насживать гребенку, если нет DSUB выхода на плате
root, доделай конвертацию! :)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

Блин и почему я раньше эту тему не поднял, сэкономил бы 500р ... :(
Но ничего, может кому-нибудь продам потом за пол цены :).
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Nick писал(а):Скачал программу http://www.modbusdriver.com/modpoll.html для общения по modbus.
А как ее запускать? Там файл modpoll ,пробовал делать его исполн. - не получается. :wik:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

А чего говорит? У меня вроде запустился...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Протестировал 8 программок для мониротинга передачи по протоколу modbus.Все под вин-но некоторые работают из под wine.Вот остановился на compump
Рабочий стол 1_070.png (6663 просмотра) <a class='original' href='./download/file.php?id=5112&mode=view' target=_blank>Загрузить оригинал (139.61 КБ)</a>
Он "слышит" CL.
cpmsetup.txt
расширение .exe
(702.73 КБ) 1329 скачиваний
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

При передаче(и приеме) данных modbus использует для проверки crc16.Вот с ним вопросов больше чем ответов хотелось бы :) .
Тем более,что в описании его исчисления используются матерные слова (e.g. " полином " )
Пример
Есть реальные данные,исходящие из CL работающего master
Выделение_076.png
Выделение_076.png (3.98 КБ) 6648 просмотров
Вот структура передаваемых данных
Выделение_077.png (6648 просмотров) <a class='original' href='./download/file.php?id=5118&mode=view' target=_blank>Загрузить оригинал (63.33 КБ)</a>
Хотелось бы вычислять crc самому-вот вроде бы помошник http://www.zorc.breitbandkatze.de/crc.html
Но что то не получается. Мож кто сталкивался с практическим вычислением CRC?
Вот кстати родной сишный алгоритм:
(для просмотра содержимого нажмите на ссылку)
  • /* Table of CRC values for high-order byte */
    const static unsigned char auchCRCHi[] = {
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
    0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
    0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
    0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
    0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
    0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
    0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
    0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
    } ;
    /* Table of CRC values for low-order byte */
    const static char auchCRCLo[] = {
    0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
    0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
    0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
    0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
    0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
    0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
    0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
    0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
    0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
    0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
    0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
    0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
    0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
    0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
    0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
    0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
    0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
    0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
    0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
    0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
    0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
    0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
    0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
    0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
    0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
    0x43, 0x83, 0x41, 0x81, 0x80, 0x40
    } ;
    /* CRC16 calc on frame pointed by puchMsg and usDataLen lenght */
    /* Pre-calc routine taken from http://www.modicon.com/techpubs/crc7.html site */
    unsigned short CRC16(unsigned char *puchMsg, unsigned short usDataLen)
    {
    unsigned char uchCRCHi = 0xFF ; /* high CRC byte initialized */
    unsigned char uchCRCLo = 0xFF ; /* low CRC byte initialized */
    unsigned uIndex ; /* will index into CRC lookup table */
    while (usDataLen--) /* pass through message buffer */
    {
    uIndex = uchCRCHi ^ *puchMsg++ ; /* calculate the CRC */
    uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
    uchCRCLo = auchCRCLo[uIndex] ;
    }
    return (uchCRCHi << 8 | uchCRCLo) ;
    }
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

я так понимаю, что функция считает значение полинома с коэффициентами из таблиц для старшего и младшего байтов, а потом в ответ выдает int из старшего байта "+" младший байт, где "+" это битовая конкатенация. :)
А для чего тебе эту сумму считать?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Чтоб сформировать ответ .
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

А на чем пишешь?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Я не пишу ни на чем :)
Программка -симулятор PLC-можно отправить сформированную команду в порт.Но ее (команду) нужно написать ручками.Вот и пытался воспользоваться http://www.zorc.breitbandkatze.de/crc.html для вычисл CRC16
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Nick »

вот оно как :). Получилось?
Может проще родной код компильнуть?
Mike
Новичок
Сообщения: 1
Зарегистрирован: 27 апр 2012, 17:15
Репутация: 0
Контактная информация:

Re: LinuxCNC и modbus

Сообщение Mike »

Привет всем
Я раньше пользовался Мач3 он нармално но есть много недостатков.
Я решил перейти в линухСИС но чтоби под модбус.
Я делал Мач3 под модбус PIC ПИК-Микрочип, но ето било давно.

возми загрузи Мач3 он для проверки бесрлатно. там есть настройка/проверка любово модбуса/RTU (Я так делал свой самодельный).
Подключи свою плату и проверь как она работает. сначала входи потом виходи и Ты будеш знать что она работает
и Ты будеш знать адресс и все регистри и соили входов и виходов.

Потом подключи к линухСИС и питайся. для вычисления CRC16 кода лутше исползовать табличний подчет а не канкулятор.
----------------------------------------------
posmotri primer ha asm.


;;#
;;# из массива по указателю FSR0 вычисляется контрольная сумма CRC16 для count_bytes
;;#
;;# второй - crc16_round вызывается в цикле столько раз, для скольки байт надо
;;# будет подсчитать эту сумму!
;;# crc16 calculation round going here...
;;# uIndex = uchCRCHi ^ *puchMsg++ ;
;;# uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
;;# uchCRCLo = auchCRCLo[uIndex] ;
;;#---------------------------------------------
;;# сама таблица, располагать ее нужно выравненной по 256
;;####
;
; Таблица для Подсчета CRC
;
org 0x2000
;
CRC16_TABLE_LOCATION
; High
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41
db 0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40

; Low

db 0x00,0xc0,0xc1,0x01,0xc3,0x03,0x02,0xc2
db 0xc6,0x06,0x07,0xc7,0x05,0xc5,0xc4,0x04
db 0xcc,0x0c,0x0d,0xcd,0x0f,0xcf,0xce,0x0e
db 0x0a,0xca,0xcb,0x0b,0xc9,0x09,0x08,0xc8
db 0xd8,0x18,0x19,0xd9,0x1b,0xdb,0xda,0x1a
db 0x1e,0xde,0xdf,0x1f,0xdd,0x1d,0x1c,0xdc
db 0x14,0xd4,0xd5,0x15,0xd7,0x17,0x16,0xd6
db 0xd2,0x12,0x13,0xd3,0x11,0xd1,0xd0,0x10
db 0xf0,0x30,0x31,0xf1,0x33,0xf3,0xf2,0x32
db 0x36,0xf6,0xf7,0x37,0xf5,0x35,0x34,0xf4
db 0x3c,0xfc,0xfd,0x3d,0xff,0x3f,0x3e,0xfe
db 0xfa,0x3a,0x3b,0xfb,0x39,0xf9,0xf8,0x38
db 0x28,0xe8,0xe9,0x29,0xeb,0x2b,0x2a,0xea
db 0xee,0x2e,0x2f,0xef,0x2d,0xed,0xec,0x2c
db 0xe4,0x24,0x25,0xe5,0x27,0xe7,0xe6,0x26
db 0x22,0xe2,0xe3,0x23,0xe1,0x21,0x20,0xe0
db 0xa0,0x60,0x61,0xa1,0x63,0xa3,0xa2,0x62
db 0x66,0xa6,0xa7,0x67,0xa5,0x65,0x64,0xa4
db 0x6c,0xac,0xad,0x6d,0xaf,0x6f,0x6e,0xae
db 0xaa,0x6a,0x6b,0xab,0x69,0xa9,0xa8,0x68
db 0x78,0xb8,0xb9,0x79,0xbb,0x7b,0x7a,0xba
db 0xbe,0x7e,0x7f,0xbf,0x7d,0xbd,0xbc,0x7c
db 0xb4,0x74,0x75,0xb5,0x77,0xb7,0xb6,0x76
db 0x72,0xb2,0xb3,0x73,0xb1,0x71,0x70,0xb0
db 0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92
db 0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54
db 0x9c,0x5c,0x5d,0x9d,0x5f,0x9f,0x9e,0x5e
db 0x5a,0x9a,0x9b,0x5b,0x99,0x59,0x58,0x98
db 0x88,0x48,0x49,0x89,0x4b,0x8b,0x8a,0x4a
db 0x4e,0x8e,0x8f,0x4f,0x8d,0x4d,0x4c,0x8c
db 0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86
db 0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40

;;#################################################################################################
interrupt_work
;
nop
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

По платке пурелоджика
Выделение(001).png (6494 просмотра) <a class='original' href='./download/file.php?id=5655&mode=view' target=_blank>Загрузить оригинал (297.9 КБ)</a>
Поуправляем ею из ладдера напрямую.Делаем такую схемку: Вот файл:
pur1.clprj.tar.gz
(1.27 КБ) 1236 скачиваний
То есть замыкая какой либо контакт мы устанавливаем значение в нужный нам регистр.(приваиванием переменной %QW нужного нам значения)
Настройки порта:
(для просмотра содержимого нажмите на ссылку)
наименование порта у вас может быть другим (6494 просмотра) <a class='original' href='./download/file.php?id=5658&mode=view' target=_blank>Загрузить оригинал (75.83 КБ)</a>
наименование порта у вас может быть другим
Дальнейшие настройки: Втыкаем платку в порт,подаем питание 12V (можно от компа черный и желтый-полярность не имеет значения.)
Запускаем ладдер,пробуем замыкать контакты %Inn.
Срабатывает то(те) или иное(иные) реле и соответственно загораются светодиоды.
Фото позже.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Комбинация включенных реле зависит от значения ,переданного в регистр.А логика здесь такая-
передаваемое число выраженное в двоичной форме задает последовательность активных-неактивных реле.Например:
передаем "17" -это в BIN- 10001. Значит ряд будет выглядеть так-00010001 -где "0"-это выкл ,а "1"-это вкл
То есть будут включены 1-е и 5-е реле (остальные выкл).И так любая комбинация.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: LinuxCNC и modbus

Сообщение nkp »

Для просмотра данных,отсылаемых в com порт из множества программок мне понравилась ComPump:
pump.tar.gz
(680.18 КБ) 1262 скачивания
Она работает под wine.
Настройки под нашу платку: Открываем порт ,запускаем ладдер с нашей схемкой,замыкаем например 15-й контакт: (то есть переменная %QW0 теперь равна 15) Смотрим-что же на самом деле ладдер передал в порт:
(для просмотра содержимого нажмите на ссылку)
Выделение(005).png
Выделение(005).png (11.59 КБ) 6468 просмотров
Итак,вся строка выглядит как: 01 06 00 00 00 0F C9 CE
вот назначение каждого байта (в hex) в нашей команде:
Выделение(006).png (6468 просмотров) <a class='original' href='./download/file.php?id=5667&mode=view' target=_blank>Загрузить оригинал (20.72 КБ)</a>
Наши данные :
00 0F (hex) (это то,что мы видим в COMPump)=> 15(dec)(это то,что мы записали в ладдере) =>1111(bin)(это то,что отправилось в порт*) или 00001111 что для нашей платки эта команда значит :"замкнуть первые 4 реле")
* в порт конечно отправилась вся команда , 1111 -только данные из неё
Ответить

Вернуться в «LinuxCNC»