Страница 5 из 22

Re: Arduino -> ModBus -> LCNC

Добавлено: 31 окт 2013, 08:48
nkp
здесь тестируют компонент mb2hal,
будет работать с устройствами через модбас в емс ...
в примерах - работа с Arduino Mega 2560
при компиляции требует libmodbus3 , поставлю - попробую , что за зверь ...
первое впечатление - наверно в силу универсальности применения скрипта все раздуто ...
может и оправдано , но мое мнение - инструмент, заточеный под одну конкретную задачу лучше универсального))

Re: Arduino -> ModBus -> LCNC

Добавлено: 31 окт 2013, 22:24
nkp
вот еще один проект arduino-modbus-slave
https://www.youtube.com/watch?v=PCaEYBh8ubs
final_2.ino.rar
(6.38 КБ) 538 скачиваний
https://sites.google.com/site/jpmzometa ... dbus-slave

Re: Arduino -> ModBus -> LCNC

Добавлено: 02 ноя 2013, 01:48
nkp
надо бы в строку загрузки компонента добавить аргумент, устанавливающий режимы регистров (in or out)...
например loadusr gs2_vfd -v 1101 устанавливает : in,in,out,in
зы
не устанавливает конечно непосредственно(это мы прописываем в прошивке) - но формирует в зависимости от аргумента соответствующие пины Hal

Re: Arduino -> ModBus -> LCNC

Добавлено: 02 ноя 2013, 23:43
nkp
попробовал добавить
nkp писал(а):loadusr gs2_vfd -v 1101 устанавливает : in,in,out,in
на одном регистре - из-за этой универсальности весь код будет в if-ах ;)
----
вопрос : нужен ли шим в рассматриваемой связке?

Re: Arduino -> ModBus -> LCNC

Добавлено: 03 ноя 2013, 09:54
aftaev
nkp писал(а):вопрос : нужен ли шим в рассматриваемой связке?
вдруг кто то захочет частотником по +-10в управлять.

Re: Arduino -> ModBus -> LCNC

Добавлено: 03 ноя 2013, 10:07
nkp
aftaev писал(а):частотником по +-10в управлять.
наверно оптимальней по тому же модбасу непосредственно управлять...
из ардуины шимом слишком грубо получится (хотя там конечно требования к частоте вращения и не такие уж жесткие)

Re: Arduino -> ModBus -> LCNC

Добавлено: 03 ноя 2013, 11:45
aftaev
nkp писал(а):наверно оптимальней по тому же модбасу непосредственно управлять...
тема но форуме про модбас+частотник показывает что не все частотники так просто можно подключить к модбасу :)

Re: Arduino -> ModBus -> LCNC

Добавлено: 13 ноя 2013, 23:37
Nick
nkp писал(а):например loadusr gs2_vfd -v 1101 устанавливает : in,in,out,in
Лучше число писать десятичное, но брать от него битовое представление.

Т.е. будет например cfg= 107, это побитово равно 01101011

В коде надо что-то вроде

Код: Выделить всё

for i in range(...):
  if cfg%2 :
    in
  else:
    out
  cfg = cfg>>1
Или лучше даже так:

Код: Выделить всё

for i in range(...):
  if cfg & 1<<i :
    in
  else:
    out

Re: Arduino -> ModBus -> LCNC

Добавлено: 13 ноя 2013, 23:45
nkp
Nick писал(а):Лучше число писать десятичное, но брать от него битовое представление
хмм...а как люди далекие от программирования будут настраивать регистры? :)
а так - прям как тумблеры переключаются... ;)

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 10:21
aftaev
nkp писал(а):а так - прям как тумблеры переключаются...
правильно, нужно думать за простых людей :) LCNC кто делал видать думали как Nick вот LCNC не шибко популярен :)

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 10:36
nkp
aftaev писал(а):LCNC кто делал видать думали как Nick вот LCNC не шибко популярен
к его популярности нужно прибавить все вышедшее из его алгоритмов и исходников ;)
в коде некоторых "других" программ просматриваются куски емс :)

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 10:48
aftaev
nkp писал(а):к его популярности нужно прибавить все вышедшее из его алгоритмов и исходников
в коде некоторых "других" программ просматриваются куски емс
если бы ЕМС был бы заточен под обычного пользователя, а не для программеров то мож других и не появилось, просто надобности не было бы

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 11:45
Nick
Ну записать 0b1010110, а потом уже парсить это как число в двоичном коде...
Так правильнее, и в 1 int можно запихать 32 бита, вместо 9 знаков в деситичной записи...

PS на каком языке компонент написан?

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 11:47
nkp
C

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 13:00
NightV
Nick писал(а):Ну записать 0b1010110, а потом уже парсить это как число в двоичном коде...
Так правильнее, и в 1 int можно запихать 32 бита, вместо 9 знаков в деситичной записи...
:wtf: :wtf: :wtf: программисты :hehehe: :hehehe: :hehehe:

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 13:25
nkp
Nick писал(а):в 1 int можно запихать 32 бита, вместо 9 знаков в деситичной записи
может в общем случае это и оптимальней - но здесь исходя из принципа минимальной достаточности хватит и этого - просто напросто регистров больше нет))

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 16:13
Serg
aftaev писал(а):если бы ЕМС был бы заточен под обычного пользователя, а не для программеров то мож других и не появилось, просто надобности не было бы
А не всё-ли равно популярно оно или нет? По мне так главное, чтоб работало как мне надо.

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 16:25
Nick
А в си работает запись 0b101010?

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 16:38
nkp
вроде бы такая запись не нужна...
просто пишешь 42 и делаешь битовые операции ,а компилятор и так представляет это число в памяти как 101010 (ну там еще много нулей впереди)))
инт насколько я знаю можно писать в трех видах:
десятичном, восьмиричном , и 16-ом (лень писать))) , и всё...
зы может ошибаюсь ;)

Re: Arduino -> ModBus -> LCNC

Добавлено: 14 ноя 2013, 16:41
aftaev
Nick писал(а):А в си работает запись 0b101010?
в Ардуине так:
//################ Инициализация I/O ################# // 0 => Выход, 1 => Input, напротив нормальной Arduino, но моя привычка с других платформ, 0 выглядит как O и 1 выглядит как я
Register[IO_Config_Register] = 0b1111111111111111; // UNO and MEGA PIN 00-15
Register[IO_Config_Register+1] = 0b1111111111111111; // MEGA PIN 16-31
Register[IO_Config_Register+2] = 0b1111111111111111; // MEGA PIN 32-47 делаем как входы
Register[IO_Config_Register+3] = 0b1111111111111111; // MEGA PIN 48-64
Register[IO_Config_Register+4] = 0b1111111111111111; // AN Digital PIN A0-A16