Стандартные сервосистемы нового поколения ASD-B3. Руководство пользователя - часть 50

 

  Главная      Книги - Разные     Стандартные сервосистемы нового поколения ASD-B3. Руководство пользователя

 

поиск по сайту            правообладателям  

 

 

 

 

 

 

 

 

 

 

 

содержание      ..     48      49      50      51     ..

 

 

 

Стандартные сервосистемы нового поколения ASD-B3. Руководство пользователя - часть 50

 

 

Глава 9. Связь по MODBUS
В этой главе описывается связь по протоколу MODBUS, которую можно использовать для установки,
чтения и записи общих параметров. Информацию о сети управления движением см. в соответствующей
документации на DMCNET, CANopen и EtherCAT. Также в этой Главе представлена подробная
информация о режимах ASCII и RTU.
9.1 Интерфейс связи RS-485 (аппаратный)
Сервопривод серии ASDA-B3 поддерживает последовательную связь через порт RS-485, которую вы
можете использовать для доступа и изменения параметров сервопривода. См. описание подключений:
ПЛК
Панель оператора
Примечания:
1. Длина кабеля может составлять до 100 метров, если сервопривод установлен в месте, свободном
489
от помех. Если требуемая скорость передачи данных превышает 38 400 бит/с, для обеспечения
точности передачи данных рекомендуется использовать 15-метровый кабель.
2. Цифры 4 и 5 на рисунке выше представляют номер контакта каждого разъема.
3. Используйте источник питания 12 В постоянного тока.
4. При использовании связи RS-485 вы можете подключить до 32 сервоприводов. Установите
повторитель для подключения дополнительных сервоприводов (максимум 127 станций).
5.
5. См. подключение коммуникационного разъема CN3 в Главе 3.
9.2 Настройка параметров связи RS-485
Необходимые параметры для подключения одного сервопривода: P3.000 (адрес), P3.001 (скорость
передачи) и P3.002 (протокол связи). P3.003 (обработка ошибок связи), P3.004 (задержка связи), P3.006
(переключатель управления дискретным входом (DI)) и P3.007 (время задержки ответа связи) являются
дополнительными настройками. См. Главу 8 для информации по соответствующим параметрам.
9.3 Протокол связи MODBUS
Существует два режима сетевой связи MODBUS: ASCII (американский стандартный код для обмена
информацией) и RTU (удаленный терминал). Вы можете установить протокол связи (ASCII или RTU) с
помощью P3.002 в соответствии с необходимостью. Сервопривод ASDA-B3 также поддерживает
следующие функции: чтение нескольких слов (03H), запись одного слова (06H) и запись нескольких
слов (10H). См. описания ниже.
Описания кодов
Режим ASCII:
В режиме ASCII данные передаются в формате ASCII. Например, при передаче «64H» между ведущим
и ведомым устройством, ведущее отправляет 36H для представления «6» и 34H для представления
«4». Коды ASCII для цифр от 0 до 9 и символов от A до F следующие:
Цифра/знак
‘0’
‘1’
‘2’
‘3’
‘4’
‘5’
‘6’
‘7’
Код ASCII
30H
31H
32H
33H
34H
35H
36H
37H
Цифра/знак
‘8’
‘9’
‘A’
‘B’
‘C’
‘D’
‘E’
‘F’
Код ASCII
38H
39H
41H
42H
43H
44H
45H
46H
Режим RTU:
Каждый фрейм данных состоит из 8-битных шестнадцатеричных символов, что более эффективно, чем
режим ASCII для передачи данных, потому что передача проходит без обмена кодом. Например, при
передаче «64H» между ведущим и ведомым просто отправьте «64H». Символы кодируются в
следующие фреймы и передаются последовательно. Метод проверки каждого типа фрейма
следующий. 10-битный символьный фрейм (для 7-битного символа)
490
11-битный формат фрейма (для 8-битных данных)
Структура данных связи
Описание данных для фреймов обоих режимов:
Режим ASCII:
Старт
Стартовые символы ‘:’ (3AH)
Адрес ведомого
Адрес связи: 1 байт состоит из 2 кодов ASCII
491
Функция
Функциональный код: 1 байт состоит из 2 кодов ASCII
Данные (n-1)
««.
Содержимое данных: n слов = 2n-байт, состоящих из 4n кодов ASCII, n ” 10
Data (0)
LRC
Проверка ошибок: 1 байт состоит из 2 кодов ASCII
Конец 1
Конечный код 1: (0DH) (CR)
Конец 0
Конечный код 0: (0AH) (LF)
Режим RTU:
Старт
Пауза более 10 мс
Адрес ведомого
Адрес связи: 1 байт
Функция
Функциональный код: 1 байт
Данные (n-1)
««.
Содержимое данных: n-слов = 2n-байт, n ” 10
Data (0)
CRC
Проверка ошибок: 1 байт
Конец 1
Пауза более 10 мс
Пример 1: функциональный код 03H, чтение нескольких слов
Когда ведущий выдает команду чтения первому ведомому:
Ведомое устройство считывает два непрерывных слова, начиная с адреса начальных данных 0200H. В
ответном сообщении от ведомого устройства содержание адреса 0200H начальных данных равно
00B1H, а содержание второго адреса данных 0201H равно 1F40H. Максимально допустимое количество
данных при одном сеансе - 10.
Режим ASCII:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Старт
‘:’
Старт
‘:’
‘0’
‘0’
Адрес ведомого
Адрес ведомого
‘1’
‘1’
‘0’
‘0’
Функция
Функция
‘3’
‘3’
‘0’
Количество данных
‘0’
(байты)
Стартовый адрес
‘2’
‘4'
данных
‘0’
‘0’
Содержимое
‘0’
первого стартового
‘0’
адреса данных
‘0’
‘B’
0200H
Количество данных
‘0’
‘1’
(слова)
‘0’
‘1’
Содержимое
‘2’
второго стартового
‘F’
адреса данных
‘F’
‘4’
LRC
0201H
‘8’
‘0’
Конец 1
(0DH) (CR)
LRC
‘E’
492
Конец 0
(0AH) (LF)
‘8’
Конец 1
(0DH) (CR)
Конец 0
(0AH) (LF)
Режим RTU:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Адрес ведомого
01H
Адрес ведомого
01H
Функция
03H
Функция
03H
02H (старш.)
Количество данных
Стартовый адрес данных
04H
(байты)
00H (младш.)
00H
Содержимое первого
00H (старш.)
Количество данных
(слова)
стартового адреса
02H
B1H (младш.)
данных 0200H
Содержимое второго
CRC (проверка старш.)
C5H (младш.)
1FH (старш.)
стартового адреса
данных 0201H
CRC (проверка младш.)
B3H (старш.)
40H (младш.)
CRC (проверка младш.)
A3H (младш.)
CRC (проверка старш.)
D4H (старш.)
Примечание: до и после каждой передачи в режиме RTU требуется пауза 10 мс.
Пример 2: функциональный код 06H, запись одного слова
Когда ведущий выдает команду записи первому ведомому:
Ведомое устройство записывает данные 0064H на адрес начальных данных 0200H и отправляет
ответное сообщение ведущему после завершения записи.
Режим ASCII:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Старт
‘:’
Старт
‘:’
‘0’
‘0’
Адрес ведомого
Адрес ведомого
‘1’
‘1’
‘0’
‘0’
Функция
Функция
‘6’
‘6’
‘0’
‘0’
‘2’
‘2'
Стартовый адрес
Стартовый адрес
данных
‘0’
данных
‘0’
‘0’
‘0’
‘0’
‘0’
‘0’
‘0’
Содержимое данных
Содержимое данных
‘6’
‘6’
‘4’
‘4’
‘9’
‘9’
LRC
LRC
‘3’
‘3’
493
Конец 1
(0DH) (CR)
Конец 1
(0DH) (CR)
Конец 0
(0AH) (LF)
Конец 0
(0AH) (LF)
Режим RTU:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Адрес
01H
Address
01H
Функция ведомого
06H
Slave Function
06H
02H (старш.)
02H (старш.)
Стартовый адрес да
Start Data Address
00H (младш.)
00H (младш.)
00H (старш.)
00H (старш.)
Data Content
Data Content
64H (младш.)
64H (младш.)
CRC (Check Low)
89H (младш.)
CRC (Check Low)
89H (младш.)
CRC (Check High)
99H (старш.)
CRC (Check High)
99H (старш.)
Примечание: до и после каждой передачи в режиме RTU требуется пауза 10 мс.
Пример 3: функциональный код 10H, запись нескольких слов
Когда ведущий выдает команду записи первому ведомому:
Ведомое устройство записывает два слова 0BB8H и 0000H, начиная с начального адреса 0112H.
Другими словами, 0BB8H записывается в 0112H, а 0000H записывается в 0113H. Максимально
допустимое количество данных за один сеанс - 8. Ведомое устройство отправляет ответное сообщение
ведущему после завершения записи.
Режим ASCII:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Старт
‘:’
Старт
‘:’
‘0’
‘0’
Адрес ведомого
Адрес ведомого
‘1’
‘1’
‘1’
‘1’
Функция
Функция
‘0’
‘0’
‘0’
‘0’
‘1’
‘1'
Стартовый адрес
Стартовый адрес
данных
‘1’
данных
‘1’
‘2’
‘2’
‘0’
‘0’
‘0’
‘0’
Количество данных
Количество данных
(слова)
‘0’
‘0’
‘2’
‘2’
‘0’
‘D’
Количество данных
LRC
(байты)
‘4’
‘A’
‘0’
Конец 1
(0DH) (CR)
Содержимое 1-го
фрейма данных
‘B’
Конец 0
(0AH) (LF)
494
‘B’
‘8’
‘0’
‘0’
Содержимое 2-го
фрейма данных
‘0’
‘0’
‘1’
LRC
‘3’
Конец 1
(0DH) (CR)
Конец 0
(0AH) (LF)
РежимRTU:
Командное сообщение (Ведущий): Ответное сообщение (Ведомый):
Адрес ведомого
01H
Адрес ведомого
01H
Функция
10H
Функция
10H
01H (старш.)
01H (старш.)
Стартовый адрес данных
Стартовый адрес данных
12H (младш.)
12H (младш.)
Количество данных
00H (старш.)
Количество данных
00H (старш.)
(слова)
(слова)
02H (младш.)
02H (младш.)
Количество данных
CRC (проверка младш.)
E0H (младш.)
04H
(байты)
CRC (проверка старш.)
31H (старш.)
Содержимое 1-го фрейма
0BH (старш.)
данных
B8H (младш.)
Содержимое 2-го фрейма
00H (старш.)
данных
00H (младш.)
CRC (проверка младш.)
FCH (младш.)
CRC (проверка старш.)
EBH (старш.)
Примечание: до и после каждой передачи в режиме RTU требуется пауза 10 мс.
Проверка ошибок передачи LRC и CRC
Проверка ошибок, используемая в режиме ASCII, называется LRC (продольная проверка
избыточности), а в режиме RTU - CRC (циклическая проверка избыточности). См. подробности ниже.
LRC (режим ASCII):
Старт
‘:’
‘7’
Адрес ведомого
‘F’
‘0’
Функция
‘3’
‘0’
Стартовый адрес данных
‘5’
495
‘C’
‘4’
‘0’
‘0’
Количество данных
‘0’
‘1’
‘B’
LRC
‘4’
Конец 1
(0DH) (CR)
Конец 0
(0AH) (LF)
Чтобы вычислить значение LRC: сложите все байты, округлите перенос в меньшую сторону и возьмите
второе дополнение.
Например: 7FH + 03H + 05H + C4H + 00H + 01H = 14CH, округлите результат до 1 и получите 4CH.
Второе дополнение для 4CH равно B4H.
CRC (режим RTU):
Расчет значения CRC:
Шаг 1: загрузите 16-битный регистр содержимым FFFFH, который называется регистром «CRC».
Шаг 2: (младший байт регистра CRC) XOR (первый байт команды) и сохранение результата в регистре
CRC.
Шаг 3: проверьте младший значащий бит (LSB) регистра CRC. Если бит равен 0, сдвиньте регистр на
один бит вправо. Если бит равен 1, сдвиньте регистр на один бит вправо и выполните (регистр
CRC) XOR (A001H). Повторите этот шаг 8 раз.
Шаг 4: повторяйте шаги 2 и 3, пока не будут обработаны все байты. Содержимое регистра CRC - это
значение CRC.
После вычисления значения CRC введите младшее слово значения CRC в командном сообщении, а
затем старшее слово. Например, если результатом вычисления CRC является 3794H, поместите 94H в
младшее слово и 37H в старшее слово, как показано в таблице ниже.
ARD
01H
CMD
03H
01H (старш.)
Стартовый адрес данных
01H (младш.)
00H (старш.)
Количество данных
(слова)
02H (младш.)
CRC (проверка младш.)
94H (младш.)
CRC (проверка старш.)
37H (старш.)
496
Пример программы CRC:
Эта функция вычисляет значение CRC на языке C. Требуется два параметра:
unsigned char* data;
unsigned char length
//The function returns the CRC value as a type of unsigned integer.
unsigned int crc_chk(unsigned char* data, unsigned char length) {
int j;
unsigned int reg_crc=0xFFFF;
while( length-- ) {
reg_crc^= *data++;
for (j=0; j<8; j++ ) {
if( reg_crc & 0x01 ) { /*LSB(bit 0 ) = 1 */
reg_crc = (reg_crc >> 1)^0xA001;
} else {
reg_crc = (reg_crc>>1);
}
}
}
return reg_crc;
}
Пример в программе связи ПК:
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<process.h>
#define PORT 0x03F8
/* the address of COM 1
*/
#define THR 0x0000
#define RDR 0x0000
#define BRDL 0x0000
#define IER 0x0001
#define BRDH 0x0001
#define LCR 0x0003
#define MCR 0x0004
#define LSR 0x0005
#define MSR 0x0006
unsigned char rdat[60];
/* read 2 data from address 0200H of ASD with address 1 */
unsigned char
tdat[60]={‘ś’,’0’,’1’,’0’,’3’,’0’,’2’,’0’,’0’,’0’,’0’,’0’,’2’,’F’,’8’,’\r’,’\n’ƈ;
void main() {
int I;
outportb(PORT+MCR,0x08);
/* Interruption enable
*/
outportb(PORT+IER,0x01);
/* Interruption as data in
*/
outportb(PORT+LCR,( inportb(PORT+LCR) | 0x80 ) );
/* the BRDL/BRDH can be access as LCR.b7 == 1
*/
outportb(PORT+BRDL,12);
497
outportb(PORT+BRDH,0x00);
outportb(PORT+LCR,0x06);
/* set prorocol
<7,E,1> = 1AH,
<7,O,1> = 0AH
<8,N,2> = 07H
<8,E,1> = 1BH
<8,O,1> = 0BH
*/
for( I = 0; I<=16; I++ ) {
while( !(inportb(PORT+LSR) & 0x20) );
/* wait until THR empty
*/
outportb(PORT+THR,tdat[I]);
/* send data to THR
*/
}
I = 0;
while( !kbhit() ) {
if( inportb(PORT+LSR)&0x01 ) {
/* b0==1, data is read
*/
rdat[I++] = inportb(PORT+RDR); /* read data from RDR
*/
}
}
}
9.4 Запись и чтение параметров посредством связи
Обратитесь к Главе 8 за описанием параметров, которые вы можете записывать или считывать через
интерфейс связи. Параметры сервопривода ASDA-B3 разделены на восемь групп: группа 0 (параметры
мониторинга), группа 1 (основные параметры), группа 2 (параметры расширения), группа 3 (параметры
связи), группа 4 (параметры диагностики), группа 5. (Параметры управления движением), а также
Группа 6 и Группа 7 (параметры PR).
Запись параметров посредством связи
Вы можете настроить эти параметры посредством связи:
Группа 0, кроме параметров P0.000 - P0.001, P0.008 - P0.013 и P0.046.
Группа 1
Группа 2
Группа 3
Группа 4, кроме параметров P4.000 - P4.004 и P4.008 - P4.009.
Группа 5, кроме параметров P5.010, P5.016 и P5.076.
Группа 6
Группа 7
Обратите внимание на следующие дополнительные сведения:
P3.001: при изменении скорости передачи следующие данные записываются с новой скоростью
передачи после установки новой скорости.
P3.002: при изменении настройки протокола связи следующие данные записываются с новой
настройкой протокола связи после установки новых значений.
P4.005: Управление скачковым режимом JOG. См. подробное описание в Главе 8.
498

 

 

 

 

 

 

 

содержание      ..     48      49      50      51     ..