«Учи поддержку еще раз!»
—Сегодня ZMotion Technology делится разработкой приложения для карты управления движением в VC6.0—

Эта статья отредактирована ZMOTION, вот, поделитесь с вами, давайте учиться вместе. ZMOTION: СДЕЛАЙТЕ ЛУЧШЕЕ ИСПОЛЬЗОВАНИЕ ДВИЖЕНИЯ.

Примечание: авторские права принадлежат ZMotion Technology, если есть репродукция, укажите источник статьи. Спасибо.

ZMOTION Technology привлекла опытных специалистов из известных компаний или учреждений, таких как Huawei, ZET, Huazhong University of Science and Technology и т. д. ZMOTION настаивает на самоинновациях и сотрудничестве с обширными университетами для изучения базовых знаний об управлении движением. Благодаря своей концентрации и напряженной работе в области технологии управления движением, ZMOTION уже стала одной из самых быстрорастущих компаний по управлению промышленным движением в Китае, а также редкой компанией, которая полностью управляет основными технологиями управления движением и программным обеспечением для промышленного управления в реальном времени.

ZMotion Technology предлагает карту управления движением, контроллер движения, контроллер движения зрения, модуль расширения и ЧМИ. (дополнительные ключевые слова для ZMOTION: карта управления движением EtherCAT, контроллер движения EtherCAT, система управления движением, контроллер технического зрения, ПЛК управления движением, контроллер робота, позиционирование изображения…)


I: Процесс разработки карты управления движением VC6.0

  1. Откройте VC++6.0, создайте один новый проект.

  2. Выберите «MFC APPWizard (exe)» и выберите позицию, в которой будет сохранен проект, задайте имя проекта и нажмите «ОК» (确认).

  3. Для типа прикладной программы выберите «базовый диалог», затем завершите новый проект.

Описание изображения 

  1. Скопируйте динамическую библиотеку «zmotion.dll», «zauxdll.dll», «head file» и «zauxdll2.h» из «..\function library\dll» и «zauxdll.lib» из файла lib в папку проекта. (папка — Э: zlm@zmotion.com.cn)

Описание изображения

  1. Выберите «Проект» — «Настройки…».

  2. Перейдите на страницу «Ссылка» и введите имя файла библиотеки «zauxdll.lib» в строке «Объект\модули библиотеки».

Описание изображения

  1. Добавьте объявление головного файла библиотеки функций в файл прикладной программы, например, «#include «zauxdll2.h».

Описание изображения

  1. В это время пользователи могут вызывать все функции библиотеки функций в VC6.0 и могут начать редактировать прикладную программу. Примечание: подробные сведения об использовании функций см. в Руководстве по программе ZMotion PC Function Library.

  2. Согласно руководству ZMotion для ПК — описание функции «Link to Controller». В частности, добавьте код контроллера ссылки «ZAux_OpenEth(«192.168.0.11″,&g_handle)» в функцию «ECIDlg:OnInitDialog()», после чего можно будет связать контроллер.

Описание изображения

Описание изображения

  1. Контроллер управления выполняет интерполяционное движение с помощью кнопки MOVE.

(1) щелкните правой кнопкой мыши кнопку MOVE, выберите свойство и установите идентификатор кнопки.

Описание изображения

(2) щелкните правой кнопкой мыши кнопку MOVE и выберите событие.

Описание изображения

(3) относительное событие новой сборки.

Описание изображения

(4) добавить функцию интерполяции движения в функцию обработки событий

Описание изображения

Описание изображения

  1. Скомпилируйте и запустите, после чего контроллером можно будет управлять через ПК.

Если компиляция сообщает об ошибке «предварительно скомпилированный головной файл не может быть открыт», «нет существующего файла или содержимого».

Пожалуйста, выберите «Проект» — «Настройки…» — C/C++, затем выполните приведенную ниже настройку.

Описание изображения

II: Программа VC6.0

  1. Существует множество подпрограмм VC6.0, которые упрощают управление движением контроллера движения ZMotion, например, подпрограммы одноосевого движения, возврат в исходное положение, чтение конфигурации ввода-вывода, линейная, круговая и непрерывная интерполяция, ручное движение, управление движением по шине, настраиваемые инкапсуляция инструкций и т. д. — Нужно? — Электронная почта: zlm@zmotion.com.cn

  2. процедура одноосного движения
    а. связь с контроллером назначенного IP через Ethernet.
    б. установить параметры оси движения.
    в. выберите объект для осей движения
    д. выберите метод движения, достигните непрерывного движения и толчкового движения.

Описание изображения

  1. Шаги реализации

(1) поиск IP, ссылка на контроллер.

A. перетащите соответствующие виджеты в интерфейс пользовательского интерфейса и установите соответствующую функцию обработки событий.

B. раскрывающееся окно функции обработки событий для реализации автоматического поиска IP-адресов.

В соответствии с руководством ZMotion для ПК добавьте функцию поиска IP-адреса контроллера «ZAux_SearchEthlist()» в функцию обработки событий, затем разрешите полученную строку символов IP (точный метод разрешения, см. процедуру).

 

//automatically search IP
 void CECIDlg::OnDropdownIPList()
 {
 /*search IP address automatically*/
 char buffer[10240];
 int32 iresult;
 /*search IP address in current net segment. For details: please refer to ZMotion PC Program Manual*/
 iresult = ZAux_SearchEthlist(buffer, 10230, 100);
 if(ERR_OK != iresult)
 {
 return;
 }
 CComboBox *m_pEthList;
 m_pEthList = (CComboBox *)GetDlgItem(IDC_IPList);
 if(NULL == m_pEthList)
 {
 return;
 }
 /*convert character tring to IP*/
 int ipos =0;
 const char * pstring;
 pstring = buffer;


 for(int j= 0; j< 20;j++)

 {
 char buffer2[256];
 buffer2[0] = '\0';
 /*jump over blank space*/
 while(' ' == pstring[0])
 {
 pstring++;
 }
 ipos = sscanf(pstring , "%s", &buffer2);
 if(EOF == ipos)
 {
 break;
 }
 /*jump over character string*/
 while((' ' != pstring[0]) && ('\t' != pstring[0]) && ('\0' != pstring[0]))
 {
 pstring++;
 }
 if(CB_ERR != m_pEthList->FindString(0, buffer2))
 {
 continue;
 }
 if('\0' == buffer2)
 {
 return;
 }
 /*join in*/
 m_pEthList->AddString(buffer2);
 }
 return;
 }
  `

C. click "link" button to connect to controller.

According to ZMotion PC Manual, add the function "ZAux_OpenEth()" for connecting with controller through net port into event processing function when pressing "link" button, then linking controller function can be achieved.   

![Image description](

D. click "disconnect" button to break controller connection.

According to ZMotion PC Manual, add the function "ZAux_Close()" for disconnecting with controller into event processing function when pressing "disconnect" button, then controller disconnection function can be achieved.  

![Image description](

(2) select axis, and watch selected DPOS, current speed and motion status.

A. drag relative widgets to UI interface, and set corresponding event processing function.  

![Image description](

B. select axis through event processing function of X, Y, Z, R 4 radio buttons.

![Image description](

C. update axis status in real time through timer.

![Image description](
 
(2)  read the state of in0-in7, out0-out7. 

![Image description](

Get IO status by using ZAux_GetModbusIn() and ZAux_GetModbusOut() interfaces. And encapsulate as one subprogram, then add that function into timeout processing function of timer for upgrading IO status.    

        //IO watch

        void CECIDlg::IOGet()

        {

          uint8 in, out, i=0,j=0,k=0;

          char  buff[128]={0};

          /*read input status*/

          ZAux_GetModbusIn (g_handle, 0, 7, &in);  //read the status of in0-in7

          /*from decimalism to binary system*/

          itoa(in, buff, 2);

          j=0;

          for( i=0; i<8; i++)

          {

            if((48 == buff[i])||(49 == buff[i]))

            {

              j++;  

            }  

          }

          for(i=0 ; i<(8-j); i++)

          {

            for(k=7; k>0; k--)

            {

              buff[k] = buff[k-1];

            }

            buff[0]=48;

          }

          sprintf(buff, "status of IN0-7 :%c %c %c %c %c %c %c %c", buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

          GetDlgItem( IDC_IN )->SetWindowText( buff );

          /*get outputs status*/

          ZAux_GetModbusOut (g_handle, 0, 7, &out);//get status of out0-7

          /* from decimalism to binary system*/

          itoa(out, buff, 2);

          j=0;

          for( i=0; i<8; i++)

          {

            if((48 == buff[i])||(49 == buff[i]))

            {

              j++;  

            }  

          }

          for(i=0 ; i<(8-j); i++)

          {

            for(k=7; k>0; k--)

            {

              buff[k] = buff[k-1];

            }

            buff[0]=48;

          }

          sprintf(buff, "status of OUT0-7:%c %c %c %c %c %c %c %c",buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

          GetDlgItem( IDC_OUT )->SetWindowText( buff );  

        }
Войти в полноэкранный режим

Выйти из полноэкранного режима

 

(4) установить параметры контроллера

A. перетащите соответствующие виджеты в интерфейс пользовательского интерфейса и установите функцию обработки событий кнопки подтверждения параметра.

Описание изображения

B. установите переменные-члены каждого поля редактирования, сначала щелкните правой кнопкой мыши поле редактирования, чтобы выбрать «установить ориентацию класса».

Описание изображения

C. добавить функциональный интерфейс, относящийся к конфигурации параметров, в функцию обработки событий кнопки подтверждения параметра.

Описание изображения

(5) Управление движением контроллера

A. Добавьте две группы переключателей, поле редактирования расстояния в дюймах и 2 кнопки в интерфейсе пользовательского интерфейса.

Описание изображения

B. Две радиокнопки используются для установки направления движения и метода движения, а также для установки пометки битовых переменных m_moveatype и m_movedir с помощью их функции обработки событий.

Описание изображения

C. открыть контроллер для перехода через функцию обработки событий кнопки «открыть».

Описание изображения
  
D. остановить движение контроллера с помощью функции обработки событий кнопки «закрыть».

(6) Скомпилируйте и запустите

A. компилировать и запускать программу обучения.

Описание изображения

B. подключитесь к тому же одному контроллеру через ZDevelop и наблюдайте за эффектом управления движением.

Ниже показаны параметры осей и IN/OP, а на осциллографе отображаются DPOS, MPSEED.

Описание изображения

«Наконец, одна особенная вещь, которую вы должны знать»
Компания ZMOTION разработала два типа карт управления движением, ECI2418 и ECI2618.

Описание изображения

→ ECI2418 поддерживает импульсные входы по 4 осям и обратную связь от энкодера, а на плате имеется 24 входа, 16 выходов, 2AD и 2DA. Кроме того, интерфейс штурвала также действителен. Некоторые специальные выходы поддерживают высокоскоростное ШИМ-управление.

Описание изображения

→ ECI2618 поддерживает импульсные входы по 6 осям и обратную связь от энкодера, а на плате имеется 24 входа, 16 выходов, 2AD и 2DA. Кроме того, интерфейс штурвала также действителен. Некоторые специальные выходы поддерживают высокоскоростное ШИМ-управление.

Описание изображения

ECI2418 и ECI2618 используют один и тот же набор функций API и поддерживают C, C++, C#, LabView, Python, Delphi и другие языки разработки. И допустимо несколько платформ, таких как VC6.0, VB6.0, Qt, .Net и т. д., включая Windows, Linux, WinCE, iMac и все виды операционных систем.

Вот и все, спасибо за внимание — Учебное пособие по разработке приложений — Карта управления движением и CV6.0