Страница 3 из 22
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 11:58
aftaev
nkp писал(а):в емс дуина работает через CL (ладдер)
через МодБас ?
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 11:59
nkp
ну да))
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 12:08
aftaev
покаж картинку Ладдера как там регистры указываются

Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 12:13
nkp
у меня в дуине порт /dev/ttyACM0
если ты хочешь попробовать ладдер - напиши "свой" порт - я тебе настроенный ладдер кину...
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 12:20
aftaev
хочу картинку посмотреть как выглядит этот ладдер

Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 12:24
nkp
вот , но

Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 12:36
nkp
вот ,думаю :
в чем разница - с одним устройством работает , с другим нет...
1. мастер команды отсылает правильно (иначе ничего бы не работало))
2. мастер ответы от slave получает и обрабатывает правильно (опять же -если бы нет - то ошибка)
остаются только таймауты - какие в платке с реле нам не узнать (хотя там было где то описание),
а вот с ардуиной все прозрачно в этом отношении...
зы
таймауты ожидания ответа
Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 13:18
aftaev
если в ладдере все работает то от туды выдрать настройки для ардуины

Re: Arduino -> ModBus -> LCNC
Добавлено: 22 окт 2013, 14:14
solo
извиняюсь за то что не в тему но может кому то будет полезными ссылка, про ардуино ЧПУ под винду
http://www.engineeringforless.com/grbl_controller.html
https://www.youtube.com/watch?v=e0A9BLPatVY
еще раз извиняюсь если сильно помешал
Re: Arduino -> ModBus -> LCNC
Добавлено: 23 окт 2013, 21:12
nkp
направление поиска причины загвоздки оказались правильными
но если бы не тормозить , то все нашлось бы оперативней - в скрипте встроена идентификация ошибки кодом
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
/* Protocol exceptions */
#define ILLEGAL_FUNCTION -0x01
#define ILLEGAL_DATA_ADDRESS -0x02
#define ILLEGAL_DATA_VALUE -0x03
#define SLAVE_DEVICE_FAILURE -0x04
#define SERVER_FAILURE -0x04
#define ACKNOWLEDGE -0x05
#define SLAVE_DEVICE_BUSY -0x06
#define SERVER_BUSY -0x06
#define NEGATIVE_ACKNOWLEDGE -0x07
#define MEMORY_PARITY_ERROR -0x08
#define GATEWAY_PROBLEM_PATH -0x0A
#define GATEWAY_PROBLEM_TARGET -0x0B
/* Local */
#define COMM_TIME_OUT -0x0C
#define PORT_SOCKET_FAILURE -0x0D
#define SELECT_FAILURE -0x0E
#define TOO_MANY_DATAS -0x0F
#define INVALID_CRC -0x10
#define INVALID_EXCEPTION_CODE -0x11
увеличил таймаут в два раза - и все ожило))
но вот как правильно выставить его (таймаут) - еще вопрос открытый...
Re: Arduino -> ModBus -> LCNC
Добавлено: 28 окт 2013, 09:27
nkp
в ардуине по идее должны подтягиваться аналоговые входы :
http://arduino.ru/Tutorial/AnalogInputPins
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
Подтягивающие резисторы
Выводы аналоговые входов имеют подтягивающие резисторы работающие как на цифровых выводах. Включение резисторов производится командой
digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0
пока вывод работает как порт ввода.
Подключение резистора повлияет на величину сообщаемую функцией analogRead() при использовании некоторых датчиков. Большинство пользователей использует подтягивающий резистор при применении вывода аналогового входа в его цифровом режиме.
и вроде бы код соответствующий есть:
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
for(int Bit = 0; Bit < 16; Bit++) // Cycle throuh all Analog pins
{
if(bitRead(Register[ANIOMap_Register],Bit)==0) // If I/O Pin
{
if(Bit == 0) // If Output
{
pinMode(A0,~bitRead(Register[IO_Config_Register+4],Bit)); // Set Pin Mode to Input or Output
digitalWrite(A0,bitRead(Register[IO_Config_Register+4],Bit)); // Turns on Internal Pull-Up Resistor if Input
}
if(Bit == 1)
{
pinMode(A1,~bitRead(Register[IO_Config_Register+4],Bit));
digitalWrite(A1,bitRead(Register[IO_Config_Register+4],Bit));
}
if(Bit == 2)
{
pinMode(A2,~bitRead(Register[IO_Config_Register+4],Bit));
digitalWrite(A2,bitRead(Register[IO_Config_Register+4],Bit));
но вот значения пинов неприсоедененных входов меняются произвольно ...
разве с подтяжкой такое возможно??
Re: Arduino -> ModBus -> LCNC
Добавлено: 28 окт 2013, 10:23
aftaev
nkp писал(а):разве с подтяжкой такое возможно??
у меня тоже прыгали и разбирался с digitalWrite, потом взял и припаял резисторы в наглую

Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 12:10
nkp
вот вариант для попробовать Arduino -> ModBus -> LCNC ...
сразу несколько слов о скрипте приводимом
выше:
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
void setup() {
Serial.begin(9600);
}
void loop() {
for(int i=0; i<6; i++) {
uint16_t v = analogRead(i) | (i << 10); //добавляем идентификатор номера регистра
Serial.print((v >> 7) | 0x80, BYTE); // выделяем идентификатор и первые 3 бита значения
Serial.print(v & 0x7f, BYTE); //выделяем последние 7 бит значения
}
}
Nick писал(а):А зачем modbus???
скрипт не проверяет полученые данные - а потому и вероятность ошибки больше,а ошибка тут наподобие - включили не то реле(со всеми вытекающими)
у mdbus несколько видов контроля ошибок (crc,контроль четности , таймауты)...
========================
плата arduino Mega , прошивка :
Arduino IDE 1.5.4
убунту 10.04 Linuxcnc 2.6 RIP
------------------
сам скрипт:
заменяем ним оригинальный в
папка_с_lcnc/src/hal/user_comps
в терминале :
cd
папка_с_lcnc/src
make
-----------------------------
конфиг :
ложим в
папка_с_lcnc/src/configs
запускаем с подключенной платкой)
должна быть такая панелька:
а на платке должны активно моргать леды приема-передачи
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 12:18
aftaev
nkp писал(а):включили не то реле(со всеми вытекающими)

Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 12:39
NightV
ТУТ наткнулся на интересную плату, только не нашел какой протокол у нее
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 12:43
Baha
NightV писал(а):ТУТ наткнулся на интересную плату, только не нашел какой протокол у нее
в название же написано, RS232 RS485, да и по разъемам можно предположить что это похоже на нее.
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 13:02
NightV
Baha писал(а):в название же написано, RS232 RS485, да и по разъемам можно предположить что это похоже на нее.
ты в курсе какой зоопарк протоколов которые можно пропихнуть через RS232 RS485 ?
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 13:10
Baha
NightV писал(а):ты в курсе какой зоопарк протоколов которые можно пропихнуть через RS232 RS485 ?
RS232 и RS485 это и есть протоколы, если ты под словом "через" подразумеваешь тип разъема, основной тип разъема под этот протокол называется D-sub, и его там на плате нет. На плате разъем 3-мя концами, как я думаю это TX, RX и земля, или А, В и земля. В той же ссылке где ты дал написано, the support 232 and 485 two forms of communication .
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 13:22
NightV
Baha писал(а):RS232 и RS485 это и есть протоколы
'а слова:
MODBUS
CAN
ProfiBUS
и т. д.
тебе о чем-то говорят? и все это через RS232 и RS485
Re: Arduino -> ModBus -> LCNC
Добавлено: 29 окт 2013, 13:48
Serg
Baha - великий мастер передёргиваний.
Или только он не осилил сообразить, что тут все говорят про протокол управления, описывающий такие команды как "включить реле №5".
А то, что эта плата использует в качестве протокола физической среды передачи RS232 и RS485 все тут заметили самостоятельно.
Baha писал(а):основной тип разъема под этот протокол называется D-sub, и его там на плате нет.
Стандарты на RS232 и RS485 не регламентируют тип разъёмов. Однако на плате всётаки имеется разъём D-sub для RS232.
Baha писал(а):На плате разъем 3-мя концами, как я думаю это TX, RX и земля.
И здесь "мимо тазика". На плате все разъёмы с тремя концами - это оконечные входы и выходы. А вот для RS485 есть два двухконтактных разъёма.
Почему их два и они двухконтактные и как промаркированы - пусть будет загадкой.
