Jump to content

Считывание диагностических данных по второму каналу с помощью OPC сервера KEPServerEX


AndreyLow

Recommended Posts

AndreyLow

Здравствуйте, столкнулся с проблемой считывания диагностических данных по второму каналу с помощью OPC сервера KEPServerEX на токарном станке со стойкой Fanuc 32I.

Функция cnc_diagnoss:A:B, где A - номер параметра, B- номер оси.

Подскажите направление куда копать?

Link to post
Share on other sites


UnPinned posts
Viktor2004

Дайте кто-нибудь исходник на С++ для коннекта с ЧПУ. У меня есть на С# а нужно на С++ или на С еще лучше

Link to post
Share on other sites
Viktor2004

Вот эта программа коннекта у меня почему-то не компилируется

#include <iostream>
#include "fwlib32.h"
using namespace std;
int main()
{
    const char *IP = "192.168.1.26";
    unsigned short port = 8193;
    long timeout = 10;
    unsigned short FlibHndl = 0;
    short ret;
    bool a;
    cout << "1-ON  0-OFF\n" ;
    cin >>  a;
    if (a==1)
    {
        ret = cnc_allclibhndl3( IP, port, timeout, &FlibHndl );
        if (ret == EW_OK)
        {
            cout << ("Uspeshno podkluchen ! ") << endl;
        }
        else
        {
            cout << ret << " " << endl;
        }
    }
    else
    {
         ret = cnc_freelibhndl(FlibHndl);
                    if (ret == EW_OK)
                    {
                        cout << ("Otklucheno uspeshno ! ") << endl;
                    }
                    else
                    {
                        cout << ret << " " << endl;
                    }
    }
    return 0;
}

 

Link to post
Share on other sites
Soprin
The following program let you connect a CNC where its IP address is
190.190.11.11 and its port number of the Ethernet (TCP) is 8193
and read the status information from it.
Timeout is 10 seconds right now.

#include "fwlib32.h"
void example( void )
{
    unsigned short h;
    short ret;
    ODBST buf;
    ret = cnc_allclibhndl3( "190.190.11.11", 8193, 10, &h ) ;
    if ( !ret ) {
            cnc_statinfo( h, &buf ) ;
            cnc_freelibhndl( h ) ;
    } else {
            printf( "ERROR!(%d)\n", ret ) ;
    }
}
  • Нравится 1
Link to post
Share on other sites
Viktor2004
7 минут назад, gudstartup сказал:

можете воспользоваться вот этой программой

Да меня пока не результат, а процесс интересует. Так что без исходников неинтересно. Да и Линукс у меня на компе, а не винда

Кстати, по Вашему вопросу. У Вас функция по первому каналу работает? Там ведь в параметрах функции нужен только номер оси. Канал не требуется.

Edited by Viktor2004
Link to post
Share on other sites
gudstartup
14 минут назад, Viktor2004 сказал:

Так что без исходников неинтересно.

Вот исходники для mtconnect сервера можете посмотреть

mtconnect-adapter-Version_1.1.0.2-0-g519889c.tar.gz

@Viktor2004 Или этот пример попроще

fanuc nc _aqusion_test.rar

28 минут назад, Viktor2004 сказал:

Кстати, по Вашему вопросу. У Вас функция по первому каналу работает?

Я вроде вам такого вопроса не задавал:smile:

Link to post
Share on other sites
Viktor2004
32 минуты назад, gudstartup сказал:

Я вроде вам такого вопроса не задавал

Извиняюсь. Это автор задавал в 1-м посте

Link to post
Share on other sites
gudstartup
4 часа назад, Soprin сказал:

#include "fwlib32.h" void example( void ) { unsigned short h; short ret; ODBST buf; ret = cnc_allclibhndl3( "190.190.11.11", 8193, 10, &h ) ; if ( !ret ) { cnc_statinfo( h, &buf ) ; cnc_freelibhndl( h ) ; } else { printf( "ERROR!(%d)\n", ret ) ; } }

Эта программа никуда не приконнектится потому что нет функции main  описана только функция example

Link to post
Share on other sites
Viktor2004
34 минуты назад, gudstartup сказал:

Или этот пример попроще

На С-шарп у меня есть примеры. Интересовал С++ или голый С

Link to post
Share on other sites
gudstartup
2 минуты назад, Viktor2004 сказал:

На С-шарп у меня есть примеры. Интересовал С++ или голый С

mtconnect на с++

3 минуты назад, Viktor2004 сказал:

На С-шарп у меня есть примеры. Интересовал С++ или голый С

mtconnect на с++

mtconnect-adapter-Version_1.1.0.2-0-g519889c.tar.gz

Link to post
Share on other sites
Viktor2004
Только что, gudstartup сказал:

mtconnect на с++

Я видел этот проект раньше. Он слишком большой для меня

 

Link to post
Share on other sites
Soprin
3 часа назад, gudstartup сказал:

Эта программа никуда не приконнектится потому что нет функции main  описана только функция example

Так про программу никто не говорил. Ему вроде нужен был код для соединения с чпу.

3 часа назад, Viktor2004 сказал:

На С-шарп у меня есть примеры. Интересовал С++ или голый С

На GitHub есть прога по focas с исходниками на c++, практически все функции реализованы

3 часа назад, gudstartup сказал:

И зачем эта ненужная пракладка, если она также по focas общается?

Link to post
Share on other sites
Viktor2004
16 минут назад, Soprin сказал:

На GitHub есть прога по focas с исходниками на c++, практически все функции реализованы

Если ее текст больше страницы, я не разберусь. Мой уровень Hello word

Link to post
Share on other sites
Soprin
5 минут назад, Viktor2004 сказал:

Если ее текст больше страницы, я не разберусь. Мой уровень Hello word

Это проект и открывается в visual studio. Или скомпилированный открываешь как уже готовое приложение

8 минут назад, Viktor2004 сказал:

Если ее текст больше страницы, я не разберусь. Мой уровень Hello word

А тебе в чем разобраться то нужно? Как на плюсах приложения писать? 

Link to post
Share on other sites
Viktor2004
50 минут назад, Soprin сказал:

А тебе в чем разобраться то нужно? Как на плюсах приложения писать? 

Вначале просто законнектиться

Мне иногда приходится написать какую-то программку, но нет у меня мышления программиста. Не могу я думать языком программирования, вот и приходится вымучивать каждую строчку.

Edited by Viktor2004
Link to post
Share on other sites
Viktor2004
10 часов назад, Soprin сказал:

The following program let you connect a CNC where its IP address is 190.190.11.11 and its port number of the Ethernet (TCP) is 8193 and read the status information from it. Timeout is 10 seconds right now.

Нет. Не компилирует у меня и эту программу коннекта

На виртуальной машине с XP проверил

 

HDCPY000.JPG

Link to post
Share on other sites
gudstartup
9 минут назад, Viktor2004 сказал:

Нет. Не компилирует у меня и эту программу коннекта

Необходимо добавить Fwlib32.lib в ресурсы и все скомпилируется!:smile:

image.png

image.png

Link to post
Share on other sites
Viktor2004
4 минуты назад, gudstartup сказал:

Необходимо добавить Fwlib32.lib в ресурсы и все скомпилируется!

Добавил

 

HDCPY000.JPG

Link to post
Share on other sites
gudstartup

Это Ваш первый пример

18 часов назад, Viktor2004 сказал:

#include <iostream>
#include "fwlib32.h"
using namespace std;
int main()
{
    const char *IP = "192.168.1.26";
    unsigned short port = 8193;
    long timeout = 10;
    unsigned short FlibHndl = 0;
    short ret;
    bool a;
    cout << "1-ON  0-OFF\n" ;
    cin >>  a;
    if (a==1)
    {
        ret = cnc_allclibhndl3( IP, port, timeout, &FlibHndl );
        if (ret == EW_OK)
        {
            cout << ("Uspeshno podkluchen ! ") << endl;
        }
        else
        {
            cout << ret << " " << endl;
        }
    }
    else
    {
         ret = cnc_freelibhndl(FlibHndl);
                    if (ret == EW_OK)
                    {
                        cout << ("Otklucheno uspeshno ! ") << endl;
                    }
                    else
                    {
                        cout << ret << " " << endl;
                    }
    }
    return 0;
}

 

 

Link to post
Share on other sites
Viktor2004
Только что, gudstartup сказал:

Это Ваш первый пример

Я пытаюсь компилировать тот вариант что мне здесь предложили.

Свой вариант я год назад мучил, так и закинул.

Мне его даже профессиональный программист не смог скомпиллировать.

Link to post
Share on other sites
gudstartup

Я вам написал добавить его в проект 

image.png

2 минуты назад, Viktor2004 сказал:

Свой вариант я год назад мучил, так и закинул.

Ваш первый вариант прекрасно компилируется как вы можете видеть!

Могу скинуть вам проект но он VS2019 Community

Link to post
Share on other sites
Viktor2004
2 минуты назад, gudstartup сказал:

Я вам написал добавить его в проект 

чего добавить в проект? Fwlib32.lib я в ресурсы добавил. Исходник у меня Connect.cpp

Link to post
Share on other sites
gudstartup
1 минуту назад, Viktor2004 сказал:

чего добавить в проект?

Необходимо добавить его FWLIB32.LIB еще и в папку Resource files в solution explorer  а у вас как я вижу  в ней  ничего нет.

image.png

Link to post
Share on other sites
Viktor2004
1 минуту назад, gudstartup сказал:

а у вас как я вижу  в ней  ничего нет.

посмотрите прикрепленную фотографию где я написал "Добавил"

Link to post
Share on other sites
gudstartup

И компилируйте ваш первый пример во втором нет даже функции main():smile:

Только что, Viktor2004 сказал:

посмотрите прикрепленную фотографию где я написал "Добавил"

А вы посмотрите мою где у вас в папке resource files ничего не видно! Там должен появится файл как и в случае с вашим файлом заголовка fwlib32.h и он должен называться fwlib32.lib

image.png

Link to post
Share on other sites
Viktor2004
4 минуты назад, gudstartup сказал:

А вы посмотрите мою где у вас в папке resource files ничего не видно!

После того как я добавил в проект файл FWLIB32.LIB он отобразился у меня в проекте и я выложил второй скрин на форум. В Вашем фото он не появился потому что для этого надо скачать прикрепленный мной второй скрин и увеличить его.

Link to post
Share on other sites
gudstartup
10 минут назад, Viktor2004 сказал:

посмотрите прикрепленную фотографию где я написал "Добавил"

На ваших фото очень плохое разрешение теперь рассмотрел на втором снимке

Теперь вам необходимо добавить функцию main() в ваш проект и вызвать вашу функцию example  в теле main() поэтому я и советую вам компилировать вашу первую программу а не приведенный пример ибо она имеет правильную структуру

Edited by gudstartup
Link to post
Share on other sites
Viktor2004
1 минуту назад, gudstartup сказал:

поэтому я и советую вам компилировать вашу первую программу а не приведенный пример

Ну, у меня Visual Studio зависла.

Вероятно надо ей создать виртуальную машину помощнее

Link to post
Share on other sites
gudstartup
1 минуту назад, Viktor2004 сказал:

Ну, у меня Visual Studio зависла.

Поставьте на host новую MVS на виртуалке у меня тоже сильно тормозит

Вот ваш скомпилированный файл

Focas.exe

Link to post
Share on other sites
Viktor2004
12 минут назад, gudstartup сказал:

Вот ваш скомпилированный файл

спасибо. Работает

Буду искать новое железо для компиллятора

Почему же профессиональные программисты которым я свой исходник отправлял, не могли скомпиллировать? Я им и все библиотеки давал. 

Зять мой в их числе. Позиционирует себя программистом

Edited by Viktor2004
Link to post
Share on other sites
Viktor2004
5 минут назад, gudstartup сказал:

:smile:

Объясните мне пожалуйста для понимания.

Я читал что .lib это статическая библиотека, а .dll динамическая.

В чем их суть? Моя программа имеет функции которые описаны в библиотеке. Статической или динамической?

Вроде ссылки на функции дает заголовочный файл. И для чего в фануковской папке Fwlib целая куча библиотек .dll ? Они все нужны или частично? Чем они отличаются например fwlib30i.dll и fwlib32.dll?

Link to post
Share on other sites
AndreyLow

Отвечаю на вопрос по версии: KepServerEx v6.9

Функция cnc_diagnoss:A:B по первому каналу работает. А вот как организовать доступ к диагностическим данным второго канала не ясно.

Link to post
Share on other sites
Viktor2004
5 минут назад, AndreyLow сказал:

Отвечаю на вопрос по версии: KepServerEx v6.9

Вы уж извините что я вашу тему зафлудил. Больше не буду

Link to post
Share on other sites
gudstartup
4 минуты назад, Viktor2004 сказал:

В чем их суть? Моя программа имеет функции которые описаны в библиотеке. Статической или динамической?

В вашем случае в статической!

По повод разницы привожу цитату с хабра

Статическая библиотека это фактически архив объектных файлов, который используется в процессе статической линковки. В результате статической линковки из многих объектных файлов получается один исполняемый, запускается статическая линковка в момент создания исполняемого файла.

Динамическая библиотека это фактически исполняемый файл (т.е. DLL и EXE в Windows имеют одинаковый формат). Динамическая линковка запускается в момент создания процесса (когда вы запускаете исполняемый файл на выполнение), линкуются между собой несколько исполняемых файлов каждый раз, когда создается новый процесс. Так же возможна динамическая линковка уже после запуска, т.е. новая библиотека может быть подгружена в адресное пространство ужа работающего процесса.

Сделать из статической библиотеки динамическую в принципе можно - необходимо ее (статически) слинковать в динамическую библиотеку, при этом будет создана динамическая библиотека и статическая стаб-библиотека, которую можно использовать в проекте вместо статической библиотеки, чтобы вызывать функции из динамической библиотеки.

Подразумевается, что динамическая библиотека - уже есть в системе, и при запуске вашей программы библиотеку не нужно копировать вместе с вашей программой - необходимая (или совместимая) версия библиотеки уже будет доступна в системе.

Статическая линковка - вы линкуетесь с конкретным файлом, и если копируете программу на другую машину, копируете и эту библиотеку вместе с исполняемым. С одной стороны у вас более надежно - точно заработает. С другой стороны - размер инсталлятора больше, если понадобилась статическая линковка - значит вы используете нестабильную/устаревшую библиотеку (это если мы говорим о системных библиотеках. Свои кастомные библиотеки можно линковать как вам удобно)

Link to post
Share on other sites
Viktor2004
15 часов назад, AndreyLow сказал:

Отвечаю на вопрос по версии: KepServerEx v6.9

Функция cnc_diagnoss:A:B по первому каналу работает. А вот как организовать доступ к диагностическим данным второго канала не ясно.

Так ведь в функцию не передается номер канала. Только номер оси и параметр.

Что происходит когда Вы задаете ось относящуюся к второму каналу?

Link to post
Share on other sites
Viktor2004

Или может надо предварительно установить номер канала с которым работаете

функцией cnc_sdtsetchnl

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • museok
      я в таких случаях пылил вакуумный стол и также забывал о перепадах , а 3 точки погоды не сыграют так так толщина листа может плавать по всей площади ,я видел что есть на стойках где строиться сетка высот , но к CAMу это никакого отношения не имеет 
    • maxems
      Плавает тут на форуме одна амеба в перьях. Твой вопрос ее уровня. На слух он примерно звучит так: тщмшукшщтмостыжщжффщшфузЩЦХЙЗЦВЙ.   Ну как, хорошо тебя откомпетентили комментарием типа  
    • Вили
      модель в личном сообщении отправил
    • gudstartup
      Что касается квитирования то управляющее слово соотносится с параметром SINAMICS  p0480 []  Вот что пишет SIOS по этому поводу только для датчика 0
    • boomeeeer
      Значит производитель не прописывал квитирование в логику. Проблема со считыванием позиции может быть из-за чего угодно, как из-за аппаратных проблем, так и из за помех каких нибудь  
    • Jesse
      @Han_solo , в настройках симулейшна у вас так:?
    • Viktor2004
      нет не квитируется. Квитируется только перезагрузкой. И снова выскочить может в любой момент. Иногда часами не появляются
    • boomeeeer
      Первая ошибка говорит Вам: 232137 <location>Encoder 2: Internal error when determining the position Message value: Fault cause: %1 bin Drive object: SERVO_COMBI, SERVO_SINUMERIK828 Reaction: OFF1 (IASC/DCBRAKE, NONE, OFF2, OFF3) Acknowledge: PULSE INHIBIT Cause: The DRIVE-CLiQ encoder fault word supplies fault bits that have been set. Fault value (r0949, interpret binary): Only for internal SIEMENS use. Remedy: Replace encoder Проверить статус параметра r0949 Вторая говорит: 207566 <location>Drive: Encoder error in PROFIdrive encoder interface 2 Message value: %1 Drive object: SERVO_COMBI, SERVO_SINUMERIK828 Reaction: NONE Acknowledge: NONE Cause: An encoder error was signaled for encoder 2 via the PROFIdrive encoder interface (G2_ZSW.15). Alarm value (r2124, interpret decimal): Error code from G2_XIST2, refer to the description regarding r0483. Note: This alarm is only output if p0480[1] is not equal to zero. Remedy: Acknowledge the encoder error using the encoder control word (G2_STW.15 = 1). Проверять статус параметра r2124 Со всеми данными в Сименс. Глядишь что дельное подскажут.   Проблема кроется скорее всего в одном из датчиков, подключенных по профинету, либо кабеле, либо каких то модулях датчиков, типа SMI, а может и в неправильной конфигурации, либо несоответствии конфигурации профинет узлов и реальному подключению. Тут надо всё проверять, но в сименс бы я написал первым делом   О того, что вы её квитируете проблема не исчезнет. Квитируется из логики ПЛК и я думаю производитель станка уже прописал квитирование и завязал это действие на кнопку reset, например.
    • Viktor2004
      Вы не знаете как квитировать ошибку через слово G2_STW.15 = 1  ?
    • boomeeeer
      Бит, байт, слово, двойное слово - это же всё форматы данных в любом ПЛК. Обращать нужно. Там вам насоветовали уже, а я просто забыл про что речь, так как не поднимался по теме выше  
×
×
  • Create New...