FANUC
Ihr Spezialist für Fabrikautomation
Focas cnc_rdparam gibt 0 zurück
24.07.2024, 12:17 Uhr
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");
}
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");
}
24.09.2025, 19:00 Uhr
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:
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?
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:


