
www.piramide.tech
FX4
FX4 Programmeur Handleiding
Document-ID: 2711715845
Versie: v3
FX4-programmeur
Document-ID: 2711715845
FX4 – FX4 Programmeur Handleiding
Document-ID: 2711650310
| Auteur | Mattheus Nichols |
| Eigenaar | Projectleider |
| Doel | Leg de programmeerconcepten uit die nodig zijn om de API te gebruiken en het product uit te breiden via externe applicaties. |
| Domein | FX4-gerelateerde programmeerconcepten. |
| Beoogd publiek | Softwareontwikkelaars die geïnteresseerd zijn in het gebruik van het product. |
| Proces | https://pyramidtc.atlassian.net/wiki/pages/createpage.action? spaceKey=PQ&title=Standaard%20Handmatig%20Creatie%20Proces |
| Opleiding | NIET TOEPASBAAR |
Versiebeheer
| Versie | Beschrijving | Gered door | Opgeslagen op | Staat |
| v3 | Een eenvoudige over toegevoegdview en meer examples. | Mattheus Nichols | 6 mrt. 2025 10:29 uur | GOEDGEKEURD |
| v2 | Digitale IO-interfaces en verwijzingen terug naar IGX toegevoegd. | Mattheus Nichols | 3 mei 2024 7:39 uur | GOEDGEKEURD |
| v1 | Eerste release, nog in ontwikkeling. | Mattheus Nichols | 21 feb. 2024 11:25 uur | GOEDGEKEURD |
Document controle Niet Reviewed
Huidige documentversie: versie 1
Nee reviewers toegewezen.
1.1 Handtekeningen
voor de meest recente documentversie
Vrijdag 7 mrt. 2025, 10:33 UTC
Matthew Nichols ondertekende; betekenis: Review
Referenties
| Document | Document-ID | Auteur | Versie |
| IGX – Programmeerhandleiding | 2439249921 | Mattheus Nichols | 1 |
FX4-programmering voorbijview
De FX4-processor draait op een omgeving genaamd IGX, die is gebouwd op het QNX realtime besturingssysteem met hoge betrouwbaarheid van BlackBerry (QNX Webplaats¹). IGX biedt een flexibele en uitgebreide Application Programming Interface (API) voor gebruikers die hun eigen hostcomputersoftware willen schrijven.
De IGX-omgeving wordt gedeeld met andere Pyramid-producten, waardoor softwareoplossingen die voor het ene product zijn ontwikkeld, eenvoudig naar andere producten kunnen worden overgedragen.
Programmeurs kunnen de volledige documentatie voor IGX raadplegen die beschikbaar is op de Pyramid webwebsite op: IGX | Modern modulair controlesysteemframework voor Web-enabled toepassingen²
Deze sectie biedt een introductie tot het testen van twee API-methoden: HTTP met JSON-formaat en EPICS. Voor de eenvoud, Python (Python Webplaats³) wordt gebruikt als een example hostcomputertaal, die toegankelijk en eenvoudig te gebruiken is voor niet-professionele programmeurs.
3.1 Python en HTTP gebruiken
Als example, neem aan dat je de som van de gemeten stromen met Python wilt lezen. Je hebt de URL voor die specifieke IO. De FX4 web De GUI biedt een eenvoudige manier om dit te vinden: klik met de rechtermuisknop in het veld en selecteer 'HTTP kopiëren'. URL' om de tekenreeks naar het klembord te kopiëren.

Nu kunt u Python gebruiken om de connectiviteit met gebruikerssoftware te testen via HTTP en JSON. Mogelijk moet u de verzoeken en json-bibliotheken importeren om de HTTP-verzoeken en dataparsing te verwerken.
1 Eenvoudige Python HTTP Example
3.2 EPICS gebruiken
Het proces voor het verbinden van de FX4 via EPICS (Experimental Physics and Industrial Control System) is vergelijkbaar. EPICS is een set softwaretools en applicaties die worden gebruikt om gedistribueerde controlesystemen te ontwikkelen en implementeren, die veel worden gebruikt in wetenschappelijke faciliteiten.
- Haal de naam van de EPICS-procesvariabele (PV) op voor de gewenste I/O.
- Importeer de EPICS-bibliotheek en lees de waarde.
2 EPICS PV-naam ophalen
3 eenvoudige Python EPICS-voorbeeldenample
Bovendien heeft Pyramid een hulpprogramma ontwikkeld (EPICS verbinden⁴) waarmee u EPICS-procesvariabelen in realtime kunt bewaken. Deze tool is handig om te bevestigen of de EPICS PV-naam correct is en of de FX4 de PV correct op uw netwerk bedient.
4 PTC EPICS verbinden
FX4-programmeer-API
De concepten en methoden die in deze handleiding worden beschreven, bouwen voort op de concepten die zijn vastgelegd in de IGX – Programmer Manual. Zie dat document voor uitleg en bijvamples over hoe basis IGX-programmering en interfaces werken. Deze handleiding behandelt alleen de apparaatspecifieke IO en functionaliteit die uniek is voor de FX4.
4.1 Analoge ingang IO
Deze IO hebben betrekking op het configureren en verzamelen van gegevens op de analoge stroomingangen van de FX4. De eenheden van de kanaalingangen zijn gebaseerd op de door de gebruiker configureerbare instelling genaamd “Sample Units” zijn geldige opties pA, nA, uA, mA en A.
Alle 4 kanalen gebruiken dezelfde interface IO en worden onafhankelijk bestuurd. Vervang kanaal_x door respectievelijk kanaal_1, kanaal_2, kanaal_3 of kanaal_4.
| IO-pad | Beschrijving |
| /fx4/adc/kanaal_x | ALLEEN-LEZEN NUMMER Gemeten stroomingang. |
| /fx4/adc/channel_x/scalair | NUMMER Eenvoudige scalair zonder eenheid toegepast op het kanaal, standaard 1. |
| /fx4/adc/kanaal_x/nul_offset | NUMMER Huidige offset in nA voor het kanaal. |
De volgende IO zijn niet kanaalonafhankelijk en worden tegelijkertijd op alle kanalen toegepast.
| IO-pad | Beschrijving |
| /fx4/kanaal_som | ALLEEN-LEZEN NUMMER Som van de huidige invoerkanalen. |
| /fx4/adc_unit | STRING Stelt de huidige gebruikerseenheden voor elk kanaal en de som in. Opties: “pa”, “na”, “ua”, “ma”, “een” |
| /fx4/bereik | STRING Stelt het huidige invoerbereik in. Zie GUI voor hoe elke bereikcode overeenkomt met de maximale stroominvoerlimieten en BW. Opties: “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7” |
| /fx4/adc/sample_frequentie | NUMMER De frequentie in Hz die sampDe gegevens worden gemiddeld. Dit regelt de signaal-ruisverhouding en de datasnelheid voor alle kanalen. |
| /fx4/adc/conversie_frequentie | NUMBER De frequentie in Hz waarmee de ADC analoge waarden naar digitale waarden converteert. Standaard is dit 100 kHz en u hoeft deze waarde slechts zelden te wijzigen. |
| /fx4/adc/offset_correctie | ALLEEN-LEZEN NUMMER Som van alle huidige offsets van het kanaal. |
4.2 Analoge uitgang IO
Deze IO hebben betrekking op de configuratie van de algemene analoge uitgangen van de FX4, te vinden onder de analoge ingangen op het voorpaneel. Alle 4 kanalen gebruiken dezelfde interface IO en worden onafhankelijk bestuurd. Vervang kanaal_x door respectievelijk kanaal_1, kanaal_2, kanaal_3 of kanaal_4.
| IO-pad | Beschrijving |
| /fx4/dac /kanaal_x | NUMMER Commando voltage-uitvoer. Er kan alleen naar deze waarde worden geschreven als de uitvoermodus is ingesteld op handmatig. |
| /fx4/dac/channel_x/readback | ALLEEN-LEZEN NUMMER Gemeten volumetage uitgang. Dit is vooral handig als u de expressie-uitvoermodus gebruikt. |
| /fx4/dac/channel_x/output_mode | STRING Stelt de uitvoermodus voor het kanaal in. Opties: “handmatig”, “expressie”, “process_control” |
| /fx4/dac/kanaal_x/slew_control_enable | BOOL Hiermee schakelt u de slew rate-beperking in of uit. |
| /fx4/dac/kanaal_x/slew_rate | NUMMER Slew rate in V/s voor het kanaal. |
| /fx4/dac/channel_x/upper_limit | NUMMER Het maximaal toegestane commando voltage voor het kanaal. Geldt voor alle bedrijfsmodi. |
| /fx4/dac/kanaal _ x/ondergrens | NUMMER Het minimaal toegestane commando voltage voor het kanaal. Geldt voor alle bedrijfsmodi. |
| /fx4/dac/kanaal _ x/ uitvoer _ expressie | STRING Hiermee stelt u de expressiereeks in die door het kanaal wordt gebruikt wanneer het zich in de expressie-uitvoermodus bevindt. |
| /fx4/dac/kanaal _ x/reset_knop | KNOP Reset de opdracht voltage naar 0. |
4.3 Digitale in- en uitgangen
Deze IO hebben betrekking op het aansturen van de diverse algemene digitale ingangen en uitgangen op de FX4.
| IO-pad | Beschrijving |
| /fx4/fr1 | READONLY BOOL Glasvezelontvanger 1. |
| /fx4/ft1 | BOOL Vezelzender 1. |
| /fx4/fr2 | READONLY BOOL Glasvezelontvanger 2. |
| /fx4/ft2 | BOOL Vezelzender 2. |
| /fx4/fr3 | READONLY BOOL Glasvezelontvanger 3. |
| /fx4/ft3 | BOOL Vezelzender 3. |
| /fx4/digitale_uitbreiding/d1 | BOOL D1 bidirectionele digitale uitbreiding IO. |
| /fx4/digitale_uitbreiding/d2 | BOOL D2 bidirectionele digitale uitbreiding IO. |
| /fx4/digitale_uitbreiding/d3 | BOOL D3 bidirectionele digitale uitbreiding IO. |
| /fx4/digitale_uitbreiding/d4 | BOOL D4 bidirectionele digitale uitbreiding IO. |
4.3.1 Digitale I/O-configuratie
Alle digitals hebben child IO voor het configureren van hun gedrag, inclusief een werkingsmodus die bepaalt hoe die digital zal werken. Elke digital heeft een andere set beschikbare opties. Zie de GUI voor details over welke opties beschikbaar zijn voor welke IO.
| Kind IO-pad | Beschrijving |
| …/modus | STRING Werkingsmodus voor de digitale. Opties: “input”, “output”, “pwm”, “timer”, “encoder”, “capture”, “uart_rx”, “uart_tx”, “can_rx”, “can_tx”, “pru_input” of “pru_output” |
| …/proces_signaal | STRING De naam van het procesbesturingssignaal, indien aanwezig. |
| …/trekmodus | STRING Pull up/down-modus voor een digitale ingang. Opties: “omhoog”, “omlaag” of “uitschakelen” |
4.4 Relaisbesturing
Beide relais worden onafhankelijk aangestuurd en delen hetzelfde type interface. Vervang relay_x met relay_a of relay_b.
| IO-pad | Beschrijving |
| /fx4/relay _ x/permit / gebruiker _ opdracht | BOOL Geeft het relais commando open of dicht. Een true commando zal proberen het relais te sluiten als de interlocks zijn verleend, en false commando zal altijd het relais openen. |
| /fx4/relay_x/status | READONLY STRING De huidige status van het relais. Geblokkeerde relais zijn open, maar kunnen vanwege een vergrendeling niet worden gesloten. Staten: “geopend”, “gesloten” of “vergrendeld” |
| /fx4/relay _ x/automatisch _ sluiten | BOOL Wanneer ingesteld op true, zal het relais automatisch sluiten wanneer de interlocks worden verleend. Standaard False. |
| /fx4/relay _ x/ cyclus _ aantal | READONLY NUMBER Het aantal relaiscycli sinds de laatste reset. Handig voor het bijhouden van de levensduur van het relais. |
4.5 Hoog volumetage-module
Zie de IGX – Programmer Manual voor details over de FX4 high voltage-interface. Het ouderpad van de component is /fx4/high_votlage .
4.6 Dosisregelaar
Zie de IGX – Programmer Manual voor details over de FX4 dose controller interface. Het component parent path is /fx4/dose_controller .
FX4 Python-voorbeeldampde
5.1 Datalogger met behulp van HTTP
Deze example laat zien hoe je een aantal metingen kunt vastleggen en opslaan in een CSV-bestand fileDoor een lange vertraging tussen de metingen te kiezen, kunt u langdurige datalogging uitvoeren, zelfs als de FX4 sampling rate is hoger ingesteld. Hierdoor kunt u continu metingen verzamelen en opslaan gedurende langere perioden zonder het systeem te overbelasten, zodat gegevens worden vastgelegd met intervallen die geschikt zijn voor uw analyse. De vertraging tussen metingen helpt bij het reguleren van het tempo waarin gegevens worden geregistreerd, wat zorgt voor efficiënte opslag en het risico op ontbrekende datapunten vermindert, terwijl u nog steeds profiteert van hogesnelheids-sampvoor real-time metingen.




5.2 Eenvoudige Python-GUI
de tweede example gebruikt de Tkinter GUI-tool, die is gebouwd voor Python, om een weergave van de gemeten stromen te maken. Met deze interface kunt u de huidige metingen visualiseren in een gebruiksvriendelijk grafisch formaat. Het scherm kan worden aangepast om het groot genoeg te maken om vanuit de hele kamer te lezen, waardoor het ideaal is voor scenario's waarbij realtime monitoring nodig is in grotere ruimtes. Tkinter biedt een eenvoudige manier om interactieve interfaces te maken en door het te integreren met de FX4, kunt u snel een visuele weergave van de gemeten stromen maken die kan worden aangepast aan uw specifieke behoeften.







5.3 Eenvoudig WebStopcontacten Example
Deze example demonstreert de WebSockets-interface, de voorkeursmethode voor het lezen van gegevens van de FX4 wanneer maximale bandbreedte vereist is. WebSockets bieden een realtime, full-duplex communicatiekanaal, waardoor gegevensoverdracht sneller en efficiënter verloopt dan bij andere methoden.
De example leest een reeks samples, rapporteert de gemiddelde tijd per sample en maximale latentie, en slaat de gegevens op in een CSV file voor latere analyse. Deze opstelling zorgt voor efficiënte realtime monitoring en eenvoudige dataopslag voor nabewerking.
De specifieke prestatie die kan worden bereikt met WebSockets is afhankelijk van de betrouwbaarheid van uw Ethernet-interface en de relatieve prioriteit van uw applicatie. Voor optimale resultaten moet u ervoor zorgen dat uw netwerk stabiel is en dat de gegevensoverdracht van de FX4 indien nodig prioriteit krijgt.



Versie: v3
FX4 Python-voorbeeldamples: 21
Documenten / Bronnen
![]() | FX4-programmeur |
Referenties
- QNX Hoogwaardige embedded oplossingenblackberry.qnx.com
- ptcusa.com/products/ptcepicsconnectptcusa.com
- pyramid.tech/products/igxpyramid.tech
- Log in met Atlassian-accountpiramidetc.atlassian.net
- Welkom bij Python.orgwww.python.org
- Gebruiksaanwijzingmanual.tools
