Manwal ta' Istruzzjoni tal-Kontrollur tal-Moviment SERVOSILA

SERVOSILA Motion Controller Instruction Manual

SERVOSILA-logo

Kontrollur tal-Moviment SERVOSILA

SERVOSILA-Motion-Controller-prodott

Dwar Servosila Motion Controller

Servosila Motion Controller huwa softwer inkorporat għall-kontroll tal-moviment ta 'sistemi robotiċi moderni b'ħafna assi. Is-softwer jaħdem fuq Linux, Windows jew bħala firmware fuq MCUs inkorporati.SERVOSILA-Motion-Controller-fig-1

Servosila Motion Controller juża kodiċi G għall-għanijiet li ġejjin:

  • bħala mod biex tiddefinixxi l-ġeometrija ta' movimenti kkoordinati f'format ta' test,
  • bħala protokoll ta' komunikazzjoni ta' livell għoli bejn il-Kontrollur tal-Moviment u applikazzjonijiet tal-utent ta' livell ogħla,
  • bħala lingwa ta' skriptjar sempliċi għall-ipprogrammar ta' sistemi robotiċi b'ħafna assi,
  • bħala lingwa fil-mira għal AI u LLMs ġenerattivi.

Arkitettura tas-Softwer

Servosila Motion Controller, muri bħala kaxxa griża fuq dijagramma ta 'arkitettura hawn taħt, jaħdem bħala proċess ta' sfond fil-Linux jew il-Windows. Il-proċess jikkomunika lil servo drives permezz tan-netwerk CAN jew USB. Il-proċess tal-Kontrollur tal-Moviment jipprovdi interface ta 'memorja kondiviża b'latenza baxxa għal komunikazzjoni bejn il-proċessi bi Proċess ta' Applikazzjoni wieħed, muri bħala kaxxa bajda fuq id-dijagramma. Biex tiġi astratta bogħod kumplessitajiet ta 'l-interface tal-memorja kondiviża, librerija konnessa dinamikament imsejħa Servopilot DLL, hija pprovduta mal-Kontrollur tal-Moviment. Id-DLL "rqiqa" tesponi API ħafna aktar sempliċi (meta mqabbla mal-interface tal-memorja kondiviża) biex tissottometti kmandi tal-kodiċi G lill-Kontrollur tal-Moviment u biex tirċievi informazzjoni dwar it-telemetrija u l-istatus lura. L-API DLL hija deskritta f'dan id-dokument.SERVOSILA-Motion-Controller-fig-2

Internament, il-proċess tal-Kontrollur tal-Moviment għandu Pipeline 0 u Pipeline 1 biex jirċievi kmandi tal-kodiċi G minn Proċess ta 'Applikazzjoni. Il-pipelines huma buffers ċikliċi ta' daqs fiss. Hemm żewġ pipelines sabiex żewġ flussi indipendenti ta 'kmandi tal-kodiċi G jistgħu jiġu esegwiti b'mod parallel jekk meħtieġ. Meta tissottometti kmand G-code ġdid, Proċess ta 'Applikazzjoni jista' jagħżel li jehmeż il-kmand ma' pipeline wieħed jew ieħor jew li jissostitwixxi kmandi f'pipeline b'sett ġdid ta 'kmandi. Il-kmandi tal-kodiċi G huma esegwiti minn Magna Virtwali, komponent intern tal-proċess tal-Kontrollur tal-Moviment. Peress li l-kmandi tal-kodiċi G huma sottomessi minn Proċess ta 'Applikazzjoni f'forma ta' test, hemm Kompilatur intern li jittraduċi t-test f'kodiċi binarju intern mifhum mill-Magni Virtwali. Huwa possibbli li tissottometti kmand tal-kodiċi G b'linja waħda kif ukoll it-test ta 'programm komplut tal-kodiċi G. Il-Kompilatur jipproċessa t-testi linja b'linja u jimbotta l-kmandi f'pipelines għall-eżekuzzjoni mill-Magni Virtwali. Il-Magni Virtwali tipproċessa l-pipelines fuq bażi ta’ “first in, first out” (FIFO). Il-Kontrollur tal-Moviment għandu frekwenza ta' loop ta' kontroll konfigurabbli (eż. 500 Hz) li tirregola l-prestazzjoni tas-sistema kollha ta' kontroll tal-moviment. Proċess ta' Applikazzjoni wieħed jista' jehmeż ma' proċess ta' Kontroll tal-Moviment wieħed biss. Huwa possibbli li tmexxi proċessi multipli ta' Kontroll tal-Moviment billi tassenjahom shared_memory_id's uniċi. Is-Servopilot DLL API mhix ħajta sigura jew re-entrant. Il-programmi tal-applikazzjoni jistgħu jinkitbu fi kwalunkwe lingwa ta' programmar li tappoġġja t-tagħbija ta' libreriji marbuta dinamikament (DLL). L-għażliet tipiċi huma C++, Python, C#, MATLAB, u LabView.

Servopilot DLL API

Konnessjoni mal-Kontrollur tal-Moviment

  • extern "C" bool connect (int shared_memory_id);
  • extern “C” bool skonnettja ();

Il-funzjoni connect() tehmeż Servopilot DLL ma' segment tal-memorja kondiviża użat għall-komunikazzjoni bejn il-proċessi bejn Proċess ta' Applikazzjoni u l-proċess tal-Kontrollur tal-Moviment. Il-proċess tal-Kontrollur tal-Moviment għandu shared_memory_id uniku, numru sħiħ prekonfigurat. Il-funzjoni tieħu din l-ID bħala l-uniku argument. Il-funzjoni tirritorna vera jekk segment tal-memorja kondiviża bl-identifikatur mogħti jkun ġie mwaħħal b'suċċess miegħu. Il-funzjoni skonnettja () tneħħi d-DLL ta' Servopilot mis-segment tal-memorja kondiviża. Is-sejħa ta' din ir-rutina fit-tmiem ta' Proċess ta' Applikazzjoni hija fakultattiva.

Tissottometti kmandi tal-kodiċi G lill-proċess tal-Kontrollur tal-Moviment

  • extern “C” bool gcode (const char* program_test);
  • extern “C” bool gcode_replace (const char* program_text);
  • extern “C” bool execute (const char* program_text);
  • extern “C” bool execute_replace (const char* program_test);

Il-funzjoni gcode() imbuttat kmand G-code jew kmandi multipli lill-pipelines tal-proċess tal-Kontrollur tal-Moviment. Il-kmandi preċedenti kollha tal-G-code li ilhom bilqiegħda fil-pipelines huma ppreservati. Pipeline huwa buffer ċikliku FIFO. Il-kmandi l-ġodda huma mehmuża mal-pipelines li għandhom jiġu eżegwiti wara li l-kmandi kollha preċedenti mill-pipeline ikunu ġew esegwiti. Il-funzjoni ma tistennax li l-kmandi jiġu attwalment eżegwiti; hija biss timbotta l-kmandi għall-pipelines u jirritorna. Il-funzjoni gcode_replace() l-ewwel tneħħi l-pipelines kollha u mbagħad timbotta kmandi ġodda fil-pipelines għall-eżekuzzjoni prijoritarja. Bħala riżultat, il-Kontrollur tal-Moviment jinterrompi l-mozzjonijiet kollha li għaddejjin u immedjatament ikompli b'mozzjonijiet ġodda definiti minn kmandi G-code stabbiliti li għadhom kif waslu. Tali sostituzzjoni tista' ssir bil-veloċità tal-frekwenza tal-linja ta' kontroll, eż. għal kontroll ibbażat fuq it-torque. Il-funzjoni ma tistennax li l-kmandi l-ġodda jiġu attwalment eżegwiti. Il-funzjoni execute() hija l-istess bħal gcode() ħlief li s-sejħa tal-funzjoni tirritorna biss ladarba l-kmandi tal-kodiċi G ġodda jkunu ġew eżegwiti. Innota li l-kmandi preċedenti kollha li diġà ilhom bilqiegħda fil-pipelines jiġu esegwiti l-ewwel. Advantage of execute () fuq gcode () huwa fis-sempliċità tal-fluss tal-kontroll tal-applikazzjoni. Żvantaġġtage hija li sejħa execute() tista' twaqqaf il-Proċess ta' Applikazzjoni għal perjodu estiż, għal kemm hemm bżonn biex tesegwixxi l-kmandi kollha tal-G-code mill-pipelines kollha. Il-funzjoni execute_replace() hija l-istess bħall-funzjoni gcode_replace() ħlief li s-sejħa tal-funzjoni tirritorna biss wara li l-kmandi li għadhom kif ġew sottomessi jkunu ġew esegwiti.

Iċċara l-pipeline ta 'kmandi G-code preċedenti Jistenna sakemm il-kmandi l-ġodda huma attwalment eżegwiti u b'hekk iwaqqfu l- Proċess ta' Applikazzjoni
gcode() Nru Nru
gcode_replace() Iva Nru
tesegwixxi () Nru Iva
execute_replace() Iva Iva

Il-funzjonijiet kollha jirritornaw vera jekk il-kmandi ġodda tal-kodiċi G ġew sottomessi b'suċċess lill-pipelines tal-proċess tal-Kontrollur tal-Mozzjoni għall-eżekuzzjoni.

Sinkronizzazzjoni tal-Proċess

  • extern “C” int synchronize();

Il-funzjoni synchronize() tippermetti lill-Proċess tal-Applikazzjoni jistenna sakemm il-proċess tal-Kontroll tal-Moviment jispiċċa jwettaq il-kmandi kollha tal-G-code sottomessi qabel. Is-sejħa tal-funzjoni tieqaf sakemm il-pipelines kollha jkunu vojta. Din is-sejħa tista' twaqqaf il-Proċess ta' Applikazzjoni għal perjodu estiż, għal kemm hemm bżonn biex tesegwixxi l-kmandi kollha tal-G-code mill-pipelines kollha.

Ġestjoni tal-Istat tal-Proċess

  • extern “C” bool pause();
  • extern “C” bool jerġa ();
  • extern “C” bool reset();
  • extern "C" int get_mode ();

Dawn il-funzjonijiet jimmaniġġjaw l-istat tal-proċess tal-Kontrollur tal-Moviment. Il-funzjoni pause() tissospendi temporanjament l-eżekuzzjoni tal-kmandi tal-kodiċi G mill-proċess tal-Kontrollur tal-Moviment. Din il-funzjoni tintuża biex twaqqaf it-tħaddim ta' sistema robotika. L-operazzjoni terġa' tinbeda billi tuża sejħa mill-ġdid ().

Riżultat ta' a get_mode() ċempel Mod ta 'tħaddim korrispondenti tal-Kontrollur tal-Moviment
0 OFF
1 PAWŻA
2 ĦTIJIET
3 ĠEJR

Telemetrija tal-Assi

  • extern “C” double get_axis_cursor(int axis_number);
  • extern “C” double get_axis_position (int axis_number);
  • extern “C” int get_axis_work_zone_count (int axis_number);
  • extern “C” int get_axis_fault_bits (int axis_number);
  • extern “C” bool is_axis_online(int axis_number);

Il-funzjoni get_axis_cursor() tirritorna pożizzjoni ta 'referenza rotatorja jew angolari li l-Kontrollur tal-Moviment jittrasmetti bħala pożizzjoni kmandata lill-assi f'mument partikolari. B'kuntrast, get_axis_position() jirritorna pożizzjoni tat-telemetrija attwali tal-assi, fejn l-assi fiżikament jinsab f'mument partikolari. Peress li l-assi għandhom inerzja fiżika, il-pożizzjoni virtwali tal-assi "cursor" tal-programm G-code hija ġeneralment qabel il-pożizzjoni attwali tal-assi fiżiku. Ir-riżultati kemm ta' get_axis_cursor() kif ukoll ta' get_axis_position() jintbagħtu lura f'millimetri jew gradi skont it-tip tal-assi (lineari jew rotatorju). Il-funzjoni get_axis_work_zone_count() tirritorna l-pożizzjoni tal-assi tat-telemetrija fl-għadd tal-encoder. Il-funzjoni get_axis_fault_bits() tirritorna dejta tal-Fault Bits riċevuta mill-assi permezz tat-telemetrija. Irreferi għar-Referenza tal-Apparat tas-servo drive tiegħek għal informazzjoni dwar kif tinterpreta l-valur ritornat. Żero (0) tfisser "L-ebda Ħtija". Mhux Żero (!=0) tfisser xi tip ta' ħsara fl-assi. Il-funzjoni is_axis_online() tgħid jekk il-kontrollur tas-servo tal-assi hux qed ixandar telemetrija fuq in-netwerk CAN jew USB.

Example Applikazzjoni f'Python

SERVOSILA-Motion-Controller-fig-3

Dokumenti / Riżorsi

PDF thumbnailKontrollur tal-Moviment
Instruction Manual · Motion Controller, Controller

Referenzi

Staqsi Mistoqsija

Use this section to ask about setup, compatibility, troubleshooting, or anything missing from this manual.

Staqsi Mistoqsija

Ask about setup, compatibility, troubleshooting, or anything missing from this manual. Name and email are optional.