Управление ШД по Modbus
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
codesys 2.3?
работаете везде с holding register
вот функции в руководстве описаны сначала в конфигураторе плк добавить устройство slave и добавить необходимые регистры для чтения, потом для записи.
потом можете написать программу для работы с этой информацией
работаете везде с holding register
вот функции в руководстве описаны сначала в конфигураторе плк добавить устройство slave и добавить необходимые регистры для чтения, потом для записи.
потом можете написать программу для работы с этой информацией
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Управление ШД по Modbus
Сегодня есть возможность весь день посвятить этому вопросу. Стенд передо мной.
Что сделал?
1. Переключателями на EM2RS выставил ID = 5, скорость обмена - 9600. В инструкции на EM2RS прочитал, что по умолчанию настройки RS485: число бит - 8, стоп бит - 1, проверки на четность - нет.
2. В CodeSYS 3.5:
2.1. Объявил переменные:
// Переменные для записи в драйвер
xCW: BOOL;
xGOHOME: BOOL;
wADRES1: WORD;
wADRES2: WORD;
xWriteCommand: BOOL;
// Переменные для чтения из драйвера
wStatus: WORD;
wRunning: WORD;
(сразу появился вопрос - а в каком формате записываются и считываются данные драйвера? WORD или REAL?)
Но сделал в WORD.
2.2. Прописал в CodeSYS Modbus COM, в нём прописал номер СОМ-порта и параметры связи.
2.3. В Modbus COM добавил устройство Modbus Master COM, а в нём Modbus Slave COM с адресом слэйв-драйвера 5.
И встал я на создании каналов Modbus Slave для чтения и записи в/из драйвера...
Например, я хочу считать состояние драйвера.
В описании на дравер написано:
"Адрес регистра 0х1901 Наименование STATUS Операция Чтение Единица /
Параметры состояния 0х5555 сохранение параметра выполнено, 0хАААА Сохранение параметра не выполнено"
А мне нужно прописать в CodeSYS при создании канала обмена:
Тип доступа: ???
Регистр READ Сдвиг: ??? (я так понимаю - адрес регистра) и Длина:??? (зависит от типа данных?).
Как расшифровать описание драйвера?
Что сделал?
1. Переключателями на EM2RS выставил ID = 5, скорость обмена - 9600. В инструкции на EM2RS прочитал, что по умолчанию настройки RS485: число бит - 8, стоп бит - 1, проверки на четность - нет.
2. В CodeSYS 3.5:
2.1. Объявил переменные:
// Переменные для записи в драйвер
xCW: BOOL;
xGOHOME: BOOL;
wADRES1: WORD;
wADRES2: WORD;
xWriteCommand: BOOL;
// Переменные для чтения из драйвера
wStatus: WORD;
wRunning: WORD;
(сразу появился вопрос - а в каком формате записываются и считываются данные драйвера? WORD или REAL?)
Но сделал в WORD.
2.2. Прописал в CodeSYS Modbus COM, в нём прописал номер СОМ-порта и параметры связи.
2.3. В Modbus COM добавил устройство Modbus Master COM, а в нём Modbus Slave COM с адресом слэйв-драйвера 5.
И встал я на создании каналов Modbus Slave для чтения и записи в/из драйвера...
Например, я хочу считать состояние драйвера.
В описании на дравер написано:
"Адрес регистра 0х1901 Наименование STATUS Операция Чтение Единица /
Параметры состояния 0х5555 сохранение параметра выполнено, 0хАААА Сохранение параметра не выполнено"
А мне нужно прописать в CodeSYS при создании канала обмена:
Тип доступа: ???
Регистр READ Сдвиг: ??? (я так понимаю - адрес регистра) и Длина:??? (зависит от типа данных?).
Как расшифровать описание драйвера?
Хочешь быть счастливым? Будь им!
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
вот список переменных которые использовал я
вот адреса
вот привязка
Код: Выделить всё
TYPE EM2RS :
STRUCT
PrControl_READ:UINT;
PrControl_WRITE:UINT;
WRITE_RTG_PRctlSett:BOOL;
TrigerReg_READ:UINT;
TrigerReg_WRITE:UINT;
WRITE_RTG1:BOOL;
Path1_READ:UINT;
PositionH_READ:UINT;
PositionL_READ:UINT;
Speed_READ:UINT;
Acc_READ:UINT;
Dec_READ:UINT;
SuspendTime_READ:UINT;
SpecialParam_READ:UINT;
Path1_WRITE:UINT;
PositionH_WRITE:UINT;
PositionL_WRITE:UINT;
Speed_WRITE:UINT;
Acc_WRITE:UINT;
Dec_WRITE:UINT;
SuspendTime_WRITE:UINT;
SpecialParam_WRITE:UINT;
WRITE_RTG2:BOOL;
WRITE_RTG3:BOOL;
ControlWord:UINT;
Direction_READ:UINT;
Direction_WRITE:UINT;
ActualPositionH_READ:UINT;
ActualPositionL_READ:UINT;
LimitPositiveH_READ:UINT;
LimitPositiveL_READ:UINT;
LimitNegativeH_READ:UINT;
LimitNegativeL_READ:UINT;
LimitPositiveH_Write:UINT;
LimitPositiveL_Write:UINT;
LimitNegativeH_Write:UINT;
LimitNegativeL_Write:UINT;
HomingSpeedHigh_READ:UINT;
HomingSpeedLow_READ:UINT;
HomingSpeedACC_READ:UINT;
HomingSpeedDEC_READ:UINT;
HomingSpeedHigh_Write:UINT;
HomingSpeedLow_Write:UINT;
HomingSpeedACC_Write:UINT;
HomingSpeedDEC_Write:UINT;
DI1:BOOL;
DI2:BOOL;
DI3:BOOL;
DI4:BOOL;
DI5:BOOL;
DI6:BOOL;
END_STRUCT
END_TYPE
вот адреса
вот привязка
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Управление ШД по Modbus
А можно объяснить как из описания на EM2RS получились эти адреса?
Хочешь быть счастливым? Будь им!
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
эти адреса есть у всех параметров (? вроде у всех?).
вот из мануала таблица: параметр - адрес - описание- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Управление ШД по Modbus
А вот всё описание (похоже несколько иное)
- Вложения
-
- drivery_SHD_Leadshine_seriya_EM2RS_instruction.pdf
- (7.4 МБ) 188 скачиваний
Хочешь быть счастливым? Будь им!
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
ясно....
вот с этим ознакомьтесь
с оф сайта leadshine
вот с этим ознакомьтесь
с оф сайта leadshine
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Управление ШД по Modbus
А эта "структура" прописывается где в CodeSYS? Я вот переменные прописывал в PLC_PRG... без TYPE и STRUCTglazastik писал(а): ↑22 авг 2023, 11:50 вот список переменных которые использовал яКод: Выделить всё
TYPE EM2RS : STRUCT PrControl_READ:UINT; PrControl_WRITE:UINT; WRITE_RTG_PRctlSett:BOOL; END_STRUCT END_TYPE
Хочешь быть счастливым? Будь им!
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
я создавал отдельную структуру для удобства, чтобы работать с массивом структур, потому что у меня в системе 3 таких драйвера
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Управление ШД по Modbus
Ну это я сам попробую разобраться с CodeSYS )
У меня тоже будет 3 драйвера - задача собрать координатный стол на ПЛК. Точность небольшая. Перемещения линейные. Но здорово всё упростится с ПЛК и СП (сенсорной панелью). Большое спасибо за мануал!
Хочешь быть счастливым? Будь им!
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
в планах по работе написать библиотеку для codesys 3.5 по заданному перемещению с возвращением назад
потом выложу сюда с примером, правда это уже будет для драйвера cs2rs с энкодером но они идентичны с em2rs
потом выложу сюда с примером, правда это уже будет для драйвера cs2rs с энкодером но они идентичны с em2rs
-
- Новичок
- Сообщения: 2
- Зарегистрирован: 19 дек 2023, 19:42
- Репутация: 0
- Контактная информация:
Re: Управление ШД по Modbus
Здравия всем!
Купил CS2RS-D507 драйвер Leadshine, управление по Modbus.
Купил СПК от Owen, прошёл обучение у них же, понятие имею (Modbus 3.5).
Через RS232 и Motion_Studio компьютером заставляю крутить шаговик с энкодером по пульсам и назад, меняя скорость.
Вижу, что по инструкции группа управляющих регистров имеет Pr9.0
Создал несколько каналов, считал информацию, сверил с параметрами по умолчанию - соответствует, значит Modbus работает.
А вот запустить - никак. Туго у меня с английским. Не врубаюсь какие регистры за что отвечают, там их больше сотни.
Какие то три режима управления двигателем, типа по пульсам, вручную и ещё какоё-то, не врубаюсь.
Понимаю, что принцип разгон - движение - тормоз идёт по рампе.
Кто- нибудь может со мной пообщаться, буду благодарен за посвящение.
Купил CS2RS-D507 драйвер Leadshine, управление по Modbus.
Купил СПК от Owen, прошёл обучение у них же, понятие имею (Modbus 3.5).
Через RS232 и Motion_Studio компьютером заставляю крутить шаговик с энкодером по пульсам и назад, меняя скорость.
Вижу, что по инструкции группа управляющих регистров имеет Pr9.0
Создал несколько каналов, считал информацию, сверил с параметрами по умолчанию - соответствует, значит Modbus работает.
А вот запустить - никак. Туго у меня с английским. Не врубаюсь какие регистры за что отвечают, там их больше сотни.
Какие то три режима управления двигателем, типа по пульсам, вручную и ещё какоё-то, не врубаюсь.
Понимаю, что принцип разгон - движение - тормоз идёт по рампе.
Кто- нибудь может со мной пообщаться, буду благодарен за посвящение.
- Вложения
-
- CS2RS_Series_User_Manual_V1.5.pdf
- Мануал с официального сайта
- (3.49 МБ) 4758 скачиваний
-
- Новичок
- Сообщения: 2
- Зарегистрирован: 19 дек 2023, 19:42
- Репутация: 0
- Контактная информация:
Re: Управление ШД по Modbus
Здравия Всем!
Будьте добры, а не подскажите, в какой именно Bit нужно записать единицу?
-
- Новичок
- Сообщения: 1
- Зарегистрирован: 16 апр 2024, 06:54
- Репутация: 0
- Настоящее имя: Александр
- Контактная информация:
Re: Управление ШД по Modbus
Добрый день.glazastik писал(а): ↑11 апр 2022, 15:48 нет не достаточно
туда это куда вы записываете единицу или 3? в 0x6200?
для вашей задачи
PR0 настраивается на движение вперёд в 0x6200 при этом надо записать в 14 бит единицу а в битах 8-13 надо указать PR на который он должен перескочить когда закончит движение
а ещё в регистр 0x6206 надо указать время паузы
в другом PR вы либо указываете задание движение домой либо в позицию старших и младших битах 0 чтобы вернуть его в начало движения
при этом Jump должен быть уже выключен
ну или кстати можно и без jump сделать но просто смысл? каждый раз менять параметры PR0 перед вызовом, ну можно в принципе, просто зачем если можно использовать jump
кстати а вы следите за текущим положение через регистры?
подскажите пожалуйста как я могу из делфи передать команды по компорту для перемещение в pr0-15
или хотя бы список этих команд в HEX формате
заранее огромное спасибо
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
Надеюсь удалось разобраться и запустить, в 0 бит записывать если чтоtest_driver писал(а): ↑23 дек 2023, 22:58Здравия Всем!
Будьте добры, а не подскажите, в какой именно Bit нужно записать единицу?
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 21 фев 2022, 11:16
- Репутация: 6
- Контактная информация:
Re: Управление ШД по Modbus
Ну делайте всё чётко по мануалу, там порядок же есть да и тут выше описывал. В мануале так то вроде все команды в 16-тиричном указаны с этим проблем не должно быть.ag2651335 писал(а): ↑16 апр 2024, 06:59Добрый день.glazastik писал(а): ↑11 апр 2022, 15:48 нет не достаточно
туда это куда вы записываете единицу или 3? в 0x6200?
для вашей задачи
PR0 настраивается на движение вперёд в 0x6200 при этом надо записать в 14 бит единицу а в битах 8-13 надо указать PR на который он должен перескочить когда закончит движение
а ещё в регистр 0x6206 надо указать время паузы
в другом PR вы либо указываете задание движение домой либо в позицию старших и младших битах 0 чтобы вернуть его в начало движения
при этом Jump должен быть уже выключен
ну или кстати можно и без jump сделать но просто смысл? каждый раз менять параметры PR0 перед вызовом, ну можно в принципе, просто зачем если можно использовать jump
кстати а вы следите за текущим положение через регистры?
подскажите пожалуйста как я могу из делфи передать команды по компорту для перемещение в pr0-15
или хотя бы список этих команд в HEX формате
заранее огромное спасибо