Страница 4 из 4
Re: Управление ШД по Modbus
Добавлено: 21 авг 2023, 15:25
glazastik
codesys 2.3?
работаете везде с holding register
вот функции в руководстве описаны
сначала в конфигураторе плк добавить устройство slave и добавить необходимые регистры для чтения, потом для записи.
потом можете написать программу для работы с этой информацией
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 11:35
Ворон226
Сегодня есть возможность весь день посвятить этому вопросу. Стенд передо мной.
Что сделал?
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 Сдвиг: ??? (я так понимаю - адрес регистра) и Длина:??? (зависит от типа данных?).
Как расшифровать описание драйвера?
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 11:50
glazastik
вот список переменных которые использовал я
Код: Выделить всё
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
вот адреса
вот привязка
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 14:51
Ворон226
glazastik писал(а): ↑22 авг 2023, 11:50
вот список переменных которые использовал я
вот адреса
вот привязка
А можно объяснить как из описания на EM2RS получились эти адреса?
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:01
glazastik
эти адреса есть у всех параметров (? вроде у всех?).
вот из мануала таблица: параметр - адрес - описание
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:15
Ворон226
glazastik писал(а): ↑22 авг 2023, 15:01
эти адреса есть у всех параметров (? вроде у всех?).
вот из мануала таблица: параметр - адрес - описание
У меня такой мануал:
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:17
Ворон226
А вот всё описание (похоже несколько иное)
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:22
glazastik
ясно....
вот с этим ознакомьтесь
с оф сайта leadshine
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:24
Ворон226
glazastik писал(а): ↑22 авг 2023, 11:50
вот список переменных которые использовал я
Код: Выделить всё
TYPE EM2RS :
STRUCT
PrControl_READ:UINT;
PrControl_WRITE:UINT;
WRITE_RTG_PRctlSett:BOOL;
END_STRUCT
END_TYPE
А эта "структура" прописывается где в CodeSYS? Я вот переменные прописывал в PLC_PRG... без TYPE и STRUCT
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:26
glazastik
я создавал отдельную структуру для удобства, чтобы работать с массивом структур, потому что у меня в системе 3 таких драйвера
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:34
Ворон226
glazastik писал(а): ↑22 авг 2023, 15:26
я создавал отдельную структуру для удобства, чтобы работать с массивом структур, потому что у меня в системе 3 таких драйвера
Ну это я сам попробую разобраться с CodeSYS )
У меня тоже будет 3 драйвера - задача собрать координатный стол на ПЛК. Точность небольшая. Перемещения линейные. Но здорово всё упростится с ПЛК и СП (сенсорной панелью). Большое спасибо за мануал!
Re: Управление ШД по Modbus
Добавлено: 22 авг 2023, 15:51
glazastik
в планах по работе написать библиотеку для codesys 3.5 по заданному перемещению с возвращением назад
потом выложу сюда с примером, правда это уже будет для драйвера cs2rs с энкодером но они идентичны с em2rs
Re: Управление ШД по Modbus
Добавлено: 19 дек 2023, 20:04
test_driver
Здравия всем!
Купил CS2RS-D507 драйвер Leadshine, управление по Modbus.
Купил СПК от Owen, прошёл обучение у них же, понятие имею (Modbus 3.5).
Через RS232 и Motion_Studio компьютером заставляю крутить шаговик с энкодером по пульсам и назад, меняя скорость.
Вижу, что по инструкции группа управляющих регистров имеет Pr9.0
Создал несколько каналов, считал информацию, сверил с параметрами по умолчанию - соответствует, значит Modbus работает.
А вот запустить - никак. Туго у меня с английским. Не врубаюсь какие регистры за что отвечают, там их больше сотни.
Какие то три режима управления двигателем, типа по пульсам, вручную и ещё какоё-то, не врубаюсь.
Понимаю, что принцип разгон - движение - тормоз идёт по рампе.
Кто- нибудь может со мной пообщаться, буду благодарен за посвящение.
Re: Управление ШД по Modbus
Добавлено: 23 дек 2023, 22:58
test_driver
glazastik писал(а): ↑12 апр 2022, 15:57
Проверил:
записал 1 в 0х6200
положение в старших битах записал 10
скорость 100
Здравия Всем!
Будьте добры, а не подскажите, в какой именно Bit нужно записать единицу?
Re: Управление ШД по Modbus
Добавлено: 16 апр 2024, 06:59
ag2651335
glazastik писал(а): ↑11 апр 2022, 15:48
нет не достаточно
туда это куда вы записываете единицу или 3? в 0x6200?
для вашей задачи
PR0 настраивается на движение вперёд в 0x6200 при этом надо записать в 14 бит единицу а в битах 8-13 надо указать PR на который он должен перескочить когда закончит движение
а ещё в регистр 0x6206 надо указать время паузы
в другом PR вы либо указываете задание движение домой либо в позицию старших и младших битах 0 чтобы вернуть его в начало движения
при этом Jump должен быть уже выключен
ну или кстати можно и без jump сделать но просто смысл? каждый раз менять параметры PR0 перед вызовом, ну можно в принципе, просто зачем если можно использовать jump
кстати а вы следите за текущим положение через регистры?
Добрый день.
подскажите пожалуйста как я могу из делфи передать команды по компорту для перемещение в pr0-15
или хотя бы список этих команд в HEX формате
заранее огромное спасибо
Re: Управление ШД по Modbus
Добавлено: 07 май 2024, 10:41
glazastik
test_driver писал(а): ↑23 дек 2023, 22:58
glazastik писал(а): ↑12 апр 2022, 15:57
Проверил:
записал 1 в 0х6200
положение в старших битах записал 10
скорость 100
Здравия Всем!
Будьте добры, а не подскажите, в какой именно Bit нужно записать единицу?
Надеюсь удалось разобраться и запустить, в 0 бит записывать если что
Re: Управление ШД по Modbus
Добавлено: 07 май 2024, 10:46
glazastik
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 формате
заранее огромное спасибо
Ну делайте всё чётко по мануалу, там порядок же есть да и тут выше описывал. В мануале так то вроде все команды в 16-тиричном указаны с этим проблем не должно быть.