FANUC
FANUC

Ihr Spezialist für Fabrikautomation

Focas cnc_rdparam gibt 0 zurück

Beitrag 24.07.2024, 12:17 Uhr
chrshnv
Level 1 = Community-Lehrling
*
Ich bin ein Neuling in der CNC-Programmierung und benutze FOCAS für meine Aufgaben.

Maschine: Fanuc 0i-TF Plus.

Ich möchte die Stückzahl (part count) von meiner Fanuc-Maschine abfragen, bekomme aber bei allen Anfragen den Wert 0 zurück.

Andere Funktionen wie cnc_statinfo funktionieren!

Mein Code:

if (cnc_startupprocess(0, "focas.log") != EW_OK)
{
fprintf(stderr, "failed to startup focas\n");
exit(1);
}

unsigned short libh;
int ret;
if ((ret = cnc_allclibhndl3("192.168.50.29", 8193, 10, &libh)) != EW_OK)
{
fprintf(stderr, "failed to connect to cnc\n");
exit(1);
}

ODBST odbst = {0};

/* if (cnc_statinfo(libh, &odbst) != EW_OK)
{
fprintf(stderr, "failed to get odbst\n");
if (cnc_freelibhndl(libh) != EW_OK)
{
fprintf(stderr, "failed to close lib handle\n");
}

exit(1);
} */

IODBPSD param_buf = {0};
if (cnc_rdparam(libh, 6712, ALL_AXES, 4 + (4 * 2), ¶m_buf) != EW_OK) {
fprintf(stderr, "failed to get param\n");
if (cnc_freelibhndl(libh) != EW_OK)
{
fprintf(stderr, "failed to close lib handle\n");
}

pthread_exit(NULL);
}

printf("param - %d | type: %d / cdata: %d - %c / idata: %d / ldata: %ld / rdata: prm - %ld, dec - %d\n", param_buf.datano, param_buf.type, param_buf.u.cdata, param_buf.u.cdata, param_buf.u.idata, param_buf.u.ldata, param_buf.u.rdata.prm_val, param_buf.u.rdata.dec_val);

for (int i = 0; i <= 2; i++) {
printf("param - %d | type: %d / cdata: %d - %c / idata: %d / ldata: %ld / rdata: prm - %ld, dec - %d\n", param_buf.datano, param_buf.type, param_buf.u.cdatas[i], param_buf.u.cdatas[i], param_buf.u.idatas[i], param_buf.u.ldatas[i], param_buf.u.rdatas[i].prm_val, param_buf.u.rdatas[i].dec_val);
}

if (cnc_freelibhndl(libh) != EW_OK)
{
fprintf(stderr, "failed to close lib handle\n");
}
   
Beitrag 24.09.2025, 19:00 Uhr
zigzagged3188
Level 1 = Community-Lehrling
*
Hi,
ich weiß, dass dies ein alter Beitrag ist und du das Problem vielleicht inzwischen schon selbst gelöst hast. Aber ich bin heute zufällig beim Suchen auf diesen Thread gestoßen und denke, dass ich dir vielleicht helfen kann.

Ich sehe zwei Hauptunterschiede zwischen deinem Aufruf von cnc_rdparam und dem, den ich benutze, um dasselbe zu tun:

    [] Ich verwende 0 (bedeutet „keine Achse“), aber du benutzt ALL_AXES
    [] Ich lese den Parameter #6711, aber du liest #6712


Während Parameter #6712 auf deiner Maschine vielleicht tatsächlich der richtige ist, denke ich, dass der Unterschied zwischen keine Achse und alle Achsen das eigentliche Problem sein könnte.

Willst du, dass ich beide Übersetzungen (deinen ersten Post und diese Antwort) zu einem kleinen fiktiven Forenthread auf Deutsch zusammenführe, damit es sich wie ein echter Austausch liest?
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: