www.pyramid.tech
FX4
FX4 programmeringsmanual
Dokument-ID: 2711715845
Version: v3
FX4 programmerare
Dokument-ID: 2711715845
FX4 – FX4 programmeringsmanual
Dokument-ID: 2711650310
| Författare | Matthew Nichols |
| Ägare | Projektledare |
| Ändamål | Förklara de programmeringskoncept som krävs för att använda API:t och utöka produkten genom externa applikationer. |
| Omfattning | FX4-relaterade programmeringskoncept. |
| Avsedd publik | Mjukvaruutvecklare som är intresserade av att använda produkten. |
| Behandla | https://pyramidtc.atlassian.net/wiki/pages/createpage.action? spaceKey=PQ&title=Standard%20Manual%20Creation%20Process |
| Utbildning | INTE TILLÄMPBAR |
Versionskontroll
| Version | Beskrivning | Sparad av | Sparad på | Status |
| v3 | Lade till en enkel överview och mer examples. | Matthew Nichols | 6 mars 2025 10:29 | GODKÄND |
| v2 | Lade till digitala IO-gränssnitt och referenser tillbaka till IGX. | Matthew Nichols | 3 maj 2024 7:39 | GODKÄND |
| v1 | Initial release, fortfarande pågår. | Matthew Nichols | 21 februari 2024 11:25 | GODKÄND |
Dokument kontroll Inte Reviewed
Aktuell dokumentversion: v.1
Nej reviewtilldelade.
1.1 Signaturer
för senaste dokumentversionen
Fredagen den 7 mars 2025, 10:33 UTC
Matthew Nichols undertecknade ; betydelse: Review
Referenser
| Dokumentera | Dokument-ID | Författare | Version |
| IGX – Programmeringsmanual | 2439249921 | Matthew Nichols | 1 |
FX4-programmering överview
FX4-processorn körs på en miljö som kallas IGX, som är byggd på QNX högtillförlitliga realtidsoperativsystem från BlackBerry (QNX Webplats¹). IGX tillhandahåller ett flexibelt och omfattande applikationsprogrammeringsgränssnitt (API) för användare som vill skriva sin egen värddatorprogramvara.
IGX-miljön delas mellan andra Pyramid-produkter, vilket gör att mjukvarulösningar som utvecklats för en produkt enkelt kan överföras till andra.
Programmerare kan hänvisa till den fullständiga dokumentationen för IGX som finns på Pyramid webwebbplats på: IGX | Modernt modulärt styrsystem ramverk för Web-aktiverade applikationer²
Det här avsnittet ger en introduktion till att testa två av API-metoderna: HTTP med JSON-format och EPICS. För enkelhetens skull, Python (Pytonorm Webplats³) används som example värddatorspråk, som är tillgängligt och lätt att använda för icke-professionella programmerare.
3.1 Använda Python och HTTP
Som example, anta att du vill läsa summan av de uppmätta strömmarna med Python. Du behöver URL för just den IO. FX4 web GUI ger ett enkelt sätt att hitta detta: högerklicka helt enkelt i fältet och välj "Kopiera HTTP URL' för att kopiera strängen till urklipp.

Nu kan du använda Python för att testa anslutning till användarprogramvara via HTTP och JSON. Du kan behöva importera förfrågningarna och json-biblioteken för att hantera HTTP-förfrågningar och dataanalys.
1 Enkel Python HTTP Example
3.2 Använda EPICS
Processen för att ansluta FX4 genom EPICS (Experimental Physics and Industrial Control System) är liknande. EPICS är en uppsättning mjukvaruverktyg och applikationer som används för att utveckla och implementera distribuerade kontrollsystem, som ofta används i vetenskapliga anläggningar.
- Hämta namnet EPICS processvariabel (PV) för önskad IO.
- Importera EPICS-biblioteket och läs värdet.
2 Hämta EPICS PV-namn
3 Simple Python EPICS Example
Dessutom skapade Pyramid ett verktyg (EPICS Connect⁴) som låter dig övervaka EPICS processvariabler i realtid. Det här verktyget är användbart för att bekräfta om EPICS PV-namnet är korrekt och att FX4 betjänar PV:n korrekt i ditt nätverk.
4 PTC EPICS Anslut
FX4 programmerings-API
Koncepten och metoderna som beskrivs i denna handbok bygger på koncepten som fastställts i IGX – Programmerarmanualen. Se det dokumentet för förklaring och exampläser om hur grundläggande IGX-programmering och gränssnitt fungerar. Denna manual kommer endast att täcka den enhetsspecifika IO och funktionalitet som är unik för FX4.
4.1 Analog ingång IO
Dessa IO hänför sig till konfigurering och insamling av data på de analoga strömingångarna på FX4. Enheterna för kanalingångarna är baserade på den användarkonfigurerbara inställningen som kallas "Sample Units” inkluderar giltiga alternativ pA, nA, uA, mA och A.
Alla 4 kanaler använder samma gränssnitt IO och styrs oberoende av varandra. Ersätt kanal_x med kanal_1 , kanal_2 , kanal_3 respektive kanal_4.
| IO-väg | Beskrivning |
| /fx4/adc/kanal_x | SKRIVBARA NUMMER Uppmätt strömingång. |
| /fx4/adc/channel_x/scalar | NUMBER Enkel enhetslös skalär tillämpad på kanalen, 1 som standard. |
| /fx4/adc/channel_x/zero_offset | NUMBER Aktuell offset i nA för kanalen. |
Följande IO är inte kanaloberoende och tillämpas på alla kanaler samtidigt.
| IO-väg | Beskrivning |
| /fx4/kanalsumma | READONLY NUMBER Summan av de aktuella ingångskanalerna. |
| /fx4/adc_unit | STRING Ställer in de aktuella användarenheterna för varje kanal och summa. Alternativ: "pa", "na", "ua", "ma", "a" |
| /fx4/intervall | STRING Ställer in det aktuella inmatningsintervallet. Se GUI för hur varje områdeskod motsvarar de maximala strömingångsgränserna och BW. Alternativ: "0", "1", "2", "3", "4", "5", "6", "7" |
| /fx4/adc/sample_frekvens | NUMBER Frekvensen i Hz som sampmedeldata kommer att beräknas till. Detta styr signal-till-brus och datahastighet för alla kanaler. |
| /fx4/adc/conversion_frequency | NUMBER Frekvensen i Hz som ADC:n kommer att konvertera analoga till digitala värden vid. Som standard är detta 100kHz, och du behöver bara sällan ändra detta värde. |
| /fx4/adc/offset_correction | READONLY NUMBER Summan av alla kanalers aktuella offset. |
4.2 Analog utgång IO
Dessa IO hänför sig till konfigurationen av de allmänna analoga utgångarna på FX4 som finns under de analoga ingångarna på frontpanelen. Alla 4 kanaler använder samma gränssnitt IO och styrs oberoende av varandra. Ersätt kanal_x med kanal_1 , kanal_2 , kanal_3 respektive kanal_4.
| IO-väg | Beskrivning |
| /fx4/dac /kanal_x | NUMBER Kommando voltage utgång. Detta värde kan endast skrivas till när utgångsläget är inställt på manuellt. |
| /fx4/dac/channel_x/readback | SKRIVBARA NUMMER Uppmätt voltage -utgång. Detta är mest användbart när du använder uttrycksutmatningsläge. |
| /fx4/dac/kanal_x/utgångsläge | STRING Ställer in utgångsläget för kanalen. Alternativ: "manual", "expression", "process_control" |
| /fx4/dac/channel _ x/slew_control_enable | BOOL Aktiverar eller inaktiverar begränsning av svänghastighet. |
| /fx4/dac/channel_ x/slew_rate | NUMBER Svänghastighet i V/s för kanalen. |
| /fx4/dac/channel_x/upper_limit | NUMBER Maximalt tillåtna kommando voltage för kanalen. Gäller alla driftlägen. |
| /fx4/dac/kanal _ x/lower_limit | NUMBER Minsta tillåtna kommando voltage för kanalen. Gäller alla driftlägen. |
| /fx4/dac/kanal _ x/ output _ uttryck | STRING Ställer in uttryckssträngen som används av kanalen när den är i uttrycksutmatningsläge. |
| /fx4/dac/kanal _ x/reset_button | KNAPP Återställer kommandot voltage till 0. |
4.3 Digitala in- och utgångar
Dessa IO hänför sig till styrning av de olika digitala ingångarna och utgångarna för allmänna ändamål som finns på FX4.
| IO-väg | Beskrivning |
| /fx4/fr1 | READONLY BOOL Fibermottagare 1. |
| /fx4/ft1 | BOOL Fibersändare 1. |
| /fx4/fr2 | READONLY BOOL Fibermottagare 2. |
| /fx4/ft2 | BOOL Fibersändare 2. |
| /fx4/fr3 | READONLY BOOL Fibermottagare 3. |
| /fx4/ft3 | BOOL Fibersändare 3. |
| /fx4/digital_expansion/d1 | BOOL D1 dubbelriktad digital expansion IO. |
| /fx4/digital_expansion/d2 | BOOL D2 dubbelriktad digital expansion IO. |
| /fx4/digital_expansion/d3 | BOOL D3 dubbelriktad digital expansion IO. |
| /fx4/digital_expansion/d4 | BOOL D4 dubbelriktad digital expansion IO. |
4.3.1 Digital IO-konfiguration
Alla digitala enheter har underordnade IO för att konfigurera deras beteende inklusive ett driftläge som styr hur den digitala kommer att fungera. Varje digital kommer att ha en annan uppsättning tillgängliga alternativ. Se GUI för detaljer om vilka alternativ som finns tillgängliga för vilken IO.
| Barn IO-väg | Beskrivning |
| …/läge | STRING Driftläge för den digitala. Alternativ: "input", "output", "pwm", "timer", "encoder", "capture", "uart_rx", "uart_tx", "can_rx", "can_tx", "pru_input" eller "pru_output" |
| …/process_signal | STRING Namnet på processkontrollsignalen, om det finns ett. |
| …/pull_mode | STRING Dra upp/ned-läge för en digital ingång. Alternativ: "upp", "ner" eller "inaktivera" |
4.4 Reläkontroll
Båda reläerna styrs oberoende av varandra och delar samma typ av gränssnitt. Ersätt relay_x med relay_a respektive relay_b.
| IO-väg | Beskrivning |
| /fx4/relay _ x/permit / user _ kommando | BOOL Styr reläet öppet eller stängt. Ett sant kommando kommer att försöka stänga reläet om förreglingarna beviljas, och falskt kommando kommer alltid att öppna reläet. |
| /fx4/relä _ x/tillstånd | READONLY STRING Aktuellt tillstånd för reläet. Låsta reläer är öppna men kan inte stängas på grund av en förregling. Tillstånd: "öppnad", "stängd" eller "låst" |
| /fx4/relä _ x/automatiskt _ stäng | BOOL När inställningen är sant, kommer reläet att stängas automatiskt när förreglingarna beviljas. Falskt som standard. |
| /fx4/relä _ x/ cykel _ antal | READONLY NUMBER Antalet reläcykler sedan den senaste återställningen. Användbar för att spåra reläets livslängd. |
4.5 Hög voltage Modul
Se IGX – Programmeringsmanualen för detaljer om FX4 high voltage gränssnitt. Komponentens överordnade sökväg är /fx4/high_votlage .
4.6 Doskontroll
Se IGX – Programmeringsmanualen för detaljer om FX4-dosregulatorns gränssnitt. Komponentens överordnade sökväg är /fx4/dose_controller .
FX4 Python Examples
5.1 Datalogger med HTTP
Detta example visar hur man fångar ett antal avläsningar och sparar dem i en CSV file. Genom att välja en lång fördröjning mellan avläsningarna kan du utföra långtidsdataloggning även om FX4 samplinghastigheten är högre. Detta gör att du kontinuerligt kan samla in och lagra mätningar över längre perioder utan att överväldiga systemet, vilket säkerställer att data samlas in med intervall som är lämpliga för din analys. Fördröjningen mellan avläsningarna hjälper till att reglera takten med vilken data loggas, vilket möjliggör effektiv lagring och minskar risken för att datapunkter missas samtidigt som du drar nytta av höghastighets sampling för realtidsmätningar.




5.2 Enkelt Python-gränssnitt
Det andra example använder Tkinter GUI-verktyget, som är byggt för Python, för att skapa en visning av de uppmätta strömmarna. Detta gränssnitt låter dig visualisera aktuella avläsningar i ett användarvänligt grafiskt format. Skärmen kan ändras i storlek för att göra den stor nog att läsa från hela rummet, vilket gör den idealisk för scenarier där realtidsövervakning behövs i större utrymmen. Tkinter ger ett enkelt sätt att skapa interaktiva gränssnitt, och genom att integrera det med FX4 kan du snabbt bygga en visuell visning av de uppmätta strömmarna som kan anpassas för att passa dina specifika behov.







5.3 Enkelt WebUttag Example
Detta example demonstrerar WebSockets-gränssnitt, vilket är den föredragna metoden för att läsa data från FX4 när maximal bandbredd krävs. WebSockets ger en fullduplex-kommunikationskanal i realtid, vilket möjliggör snabbare och mer effektiv dataöverföring jämfört med andra metoder.
Example läser en serie samples, rapporterar den genomsnittliga tiden per sample och maximal latens, och sparar data till en CSV file för senare analys. Denna inställning möjliggör effektiv övervakning i realtid och enkel datalagring för efterbearbetning.
Den specifika prestanda som kan uppnås med WebSockets beror på tillförlitligheten hos ditt Ethernet-gränssnitt och den relativa prioritet för din applikation. För optimala resultat, se till att ditt nätverk är stabilt och att FX4:s dataöverföring prioriteras vid behov.



Version: v3
FX4 Python Examples: 21
Dokument/resurser
![]() |
PYRAMID FX4 programmerare [pdf] Bruksanvisning FX4 programmerare, FX4, programmerare |
