www.pyramid.tech
FX4
FX4 programmeringsmanual
Dokument-id: 2711715845
Version: v3
FX4 programmør
Dokument-id: 2711715845
FX4 – FX4 Programmeringsmanual
Dokument-id: 2711650310
Forfatter | Matthew Nichols |
Ejer | Projektleder |
Formål | Forklar de programmeringskoncepter, der er nødvendige for at bruge API'et og udvide produktet gennem eksterne applikationer. |
Omfang | FX4 relaterede programmeringskoncepter. |
Tilsigtet publikum | Softwareudviklere, der er interesserede i at bruge produktet. |
Behandle | https://pyramidtc.atlassian.net/wiki/pages/createpage.action? spaceKey=PQ&title=Standard%20Manual%20Creation%20Process |
Uddannelse | IKKE ANVENDELIG |
Versionskontrol
Version | Beskrivelse | Gemt af | Gemt på | Status |
v3 | Tilføjet en simpel overview og mere examples. | Matthew Nichols | 6. marts 2025 10:29 | GODKENDT |
v2 | Tilføjet digitale IO-grænseflader og referencer tilbage til IGX. | Matthew Nichols | 3. maj 2024 kl. 7 | GODKENDT |
v1 | Første udgivelse, stadig et arbejde i gang. | Matthew Nichols | 21. februar 2024 kl. 11 | GODKENDT |
Dokument kontrol Ikke Reviewed
Aktuel dokumentversion: v.1
Nej vedrviewere tildelt.
1.1 Underskrifter
for den seneste dokumentversion
Fredag den 7. marts 2025, 10:33 UTC
Matthew Nichols underskrev ; betydning: Vedrview
Referencer
Dokument | Dokument ID | Forfatter | Version |
IGX – Programmeringsmanual | 2439249921 | Matthew Nichols | 1 |
FX4 programmering overståetview
FX4-processoren kører på et miljø kaldet IGX, som er bygget på QNX højpålidelige realtidsoperativsystem fra BlackBerry (QNX Webwebsted¹). IGX giver en fleksibel og omfattende applikationsprogrammeringsgrænseflade (API) til brugere, der ønsker at skrive deres egen værtscomputersoftware.
IGX-miljøet deles på tværs af andre Pyramid-produkter, så softwareløsninger, der er udviklet til ét produkt, nemt kan overføres til andre.
Programmører kan henvise til den komplette dokumentation for IGX, der er tilgængelig på pyramiden webwebsted på: IGX | Moderne Modular Control System Framework for Web-aktiverede applikationer²
Dette afsnit giver en introduktion til test af to af API-metoderne: HTTP ved hjælp af JSON-format og EPICS. For nemheds skyld, Python (Python Webwebsted³) bruges som example værtscomputersprog, som er tilgængeligt og nemt at bruge for ikke-professionelle programmører.
3.1 Brug af Python og HTTP
Som eksample, antag at du vil læse summen af de målte strømme med Python. Du har brug for URL for den pågældende IO. FX4 web GUI giver en nem måde at finde dette på: blot højreklik i feltet og vælg 'Kopier HTTP URL' for at kopiere strengen til udklipsholderen.
Nu kan du bruge Python til at teste forbindelse til brugersoftware via HTTP og JSON. Du skal muligvis importere anmodningerne og json-bibliotekerne for at håndtere HTTP-anmodningerne og dataparsing.
1 Simple Python HTTP Example
3.2 Brug af EPICS
Processen til at forbinde FX4 gennem EPICS (Experimental Physics and Industrial Control System) er den samme. EPICS er et sæt softwareværktøjer og applikationer, der bruges til at udvikle og implementere distribuerede kontrolsystemer, der er meget udbredt i videnskabelige faciliteter.
- Hent navnet på EPICS-procesvariabelen (PV) for den ønskede IO.
- Importer EPICS-biblioteket og læs værdien.
2 Få EPICS PV-navn
3 Simple Python EPICS Example
Derudover oprettede Pyramid et hjælpeprogram (EPICS Connect⁴), der giver dig mulighed for at overvåge EPICS-procesvariabler i realtid. Dette værktøj er nyttigt til at bekræfte, om EPICS PV-navnet er korrekt, og FX4'en serverer PV'en korrekt på dit netværk.
4 PTC EPICS Connect
FX4 programmerings-API
Koncepterne og metoderne, der er beskrevet i denne manual, bygger på de koncepter, der er etableret i IGX – Programmer Manual. Se venligst dette dokument for forklaring og examples om, hvordan grundlæggende IGX-programmering og grænseflader fungerer. Denne manual vil kun dække den enhedsspecifikke IO og funktionalitet, der er unik for FX4.
4.1 Analog indgang IO
Disse IO vedrører konfiguration og indsamling af data på de analoge strømindgange på FX4. Enhederne for kanalindgangene er baseret på den brugerkonfigurerbare indstilling kaldet "Sample Units", inkluderer gyldige muligheder pA, nA, uA, mA og A.
Alle 4 kanaler bruger den samme interface IO og styres uafhængigt. Erstat kanal_x med henholdsvis kanal_1 , kanal_2 , kanal_3 eller kanal_4.
IO-sti | Beskrivelse |
/fx4/adc/kanal_x | LÆSEKUN NUMMER Målt strømindgang. |
/fx4/adc/channel_x/scalar | NUMBER Simpel enhedsløs skalar anvendt på kanalen, 1 som standard. |
/fx4/adc/channel_x/nul_offset | NUMBER Aktuel offset i nA for kanalen. |
Følgende IO er ikke kanaluafhængige og anvendes på alle kanaler samtidigt.
IO-sti | Beskrivelse |
/fx4/kanal_sum | LÆSEKUN NUMMER Summen af de aktuelle inputkanaler. |
/fx4/adc_unit | STRING Indstiller de aktuelle brugerenheder for hver kanal og sum. Valgmuligheder: "pa", "na", "ua", "ma", "a" |
/fx4/område | STRING Indstiller det aktuelle inputområde. Se GUI for, hvordan hver områdekode svarer til de maksimale strømindgangsgrænser og BW. Valgmuligheder: "0", "1", "2", "3", "4", "5", "6", "7" |
/fx4/adc/sample_frekvens | NUMBER Frekvensen i Hz, der sample data vil blive gennemsnittet til. Dette styrer signal-til-støj og datahastighed for alle kanaler. |
/fx4/adc/conversion_frequency | NUMMER Frekvensen i Hz, som ADC'en vil konvertere analoge til digitale værdier ved. Som standard er dette 100kHz, og du behøver kun sjældent at ændre denne værdi. |
/fx4/adc/offset_correction | LÆSEKUN NUMMER Summen af alle kanalens aktuelle offsets. |
4.2 Analog udgang IO
Disse IO vedrører konfigurationen af de generelle analoge udgange på FX4, som findes under de analoge indgange på frontpanelet. Alle 4 kanaler bruger den samme interface IO og styres uafhængigt. Erstat kanal_x med henholdsvis kanal_1 , kanal_2 , kanal_3 eller kanal_4.
IO-sti | Beskrivelse |
/fx4/dac /kanal_x | NUMBER Command voltage output. Denne værdi kan kun skrives til, når output-tilstand er indstillet til manuel. |
/fx4/dac/channel_x/readback | LÆSEKUN NUMMER Målt voltage output. Dette er mest nyttigt, når du bruger udtryksoutputtilstand. |
/fx4/dac/kanal_x/output_mode | STRING Indstiller udgangstilstanden for kanalen. Valgmuligheder: "manuel", "udtryk", "proces_kontrol" |
/fx4/dac/channel _ x/slew_control_enable | BOOL Aktiverer eller deaktiverer begrænsning af slew rate. |
/fx4/dac/channel_ x/slew_rate | NUMBER Slew rate i V/s for kanalen. |
/fx4/dac/channel_x/upper_limit | NUMBER Den maksimalt tilladte kommando voltage for kanalen. Gælder for alle driftstilstande. |
/fx4/dac/kanal _ x/lower_limit | NUMBER Den mindst tilladte kommando voltage for kanalen. Gælder for alle driftstilstande. |
/fx4/dac/kanal _ x/ output _ udtryk | STRING Indstiller den udtryksstreng, der bruges af kanalen, når den er i udtryksoutputtilstand. |
/fx4/dac/kanal _ x/reset_button | KNAP Nulstiller kommandoen voltage til 0. |
4.3 Digitale ind- og udgange
Disse IO vedrører styring af de forskellige digitale ind- og udgange til generelle formål, der findes på FX4.
IO-sti | Beskrivelse |
/fx4/fr1 | READONLY BOOL Fibermodtager 1. |
/fx4/ft1 | BOOL Fibersender 1. |
/fx4/fr2 | READONLY BOOL Fibermodtager 2. |
/fx4/ft2 | BOOL Fibersender 2. |
/fx4/fr3 | READONLY BOOL Fibermodtager 3. |
/fx4/ft3 | BOOL Fibersender 3. |
/fx4/digital_udvidelse/d1 | BOOL D1 tovejs digital ekspansion IO. |
/fx4/digital_udvidelse/d2 | BOOL D2 tovejs digital ekspansion IO. |
/fx4/digital_udvidelse/d3 | BOOL D3 tovejs digital ekspansion IO. |
/fx4/digital_udvidelse/d4 | BOOL D4 tovejs digital ekspansion IO. |
4.3.1 Digital IO-konfiguration
Alle digitale enheder har underordnede IO til at konfigurere deres adfærd, herunder en driftstilstand, der styrer, hvordan den digitale vil fungere. Hver digital vil have et andet sæt tilgængelige muligheder. Se GUI for detaljer om, hvilke muligheder der er tilgængelige for hvilken IO.
Børns IO-sti | Beskrivelse |
…/mode | STRING Driftstilstand for det digitale. Valgmuligheder: "input", "output", "pwm", "timer", "encoder", "capture", "uart_rx", "uart_tx", "can_rx", "can_tx", "pru_input" eller "pru_output" |
…/proces_signal | STRING Navnet på processtyringssignalet, hvis der er et. |
…/pull_mode | STRING Træk op/ned-tilstand for en digital indgang. Valgmuligheder: "op", "ned" eller "deaktiver" |
4.4 Relæstyring
Begge relæer styres uafhængigt og deler den samme type interface. Erstat relay_x med henholdsvis relay_a eller relay_b.
IO-sti | Beskrivelse |
/fx4/relay _ x/permit / user _ kommando | BOOL Befaler relæet åbent eller lukket. En sand kommando vil forsøge at lukke relæet, hvis sikringerne er givet, og falsk kommando vil altid åbne relæet. |
/fx4/relæ _ x/tilstand | READONLY STRING Relæets aktuelle tilstand. Låste relæer er åbne, men kan ikke lukkes på grund af en aflåsning. Stater: "åbnet", "lukket" eller "låst" |
/fx4/relæ _ x/automatisk _ lukke | BOOL Når den er indstillet til sand, vil relæet automatisk lukke, når sikringerne er tildelt. Falsk som standard. |
/fx4/relæ _ x/ cyklus _ tæller | READONLY NUMBER Antallet af relæcyklusser siden sidste nulstilling. Nyttigt til sporing af relæets levetid. |
4.5 Høj Voltage modul
Se IGX – Programmer Manual for detaljer om FX4 high voltage interface. Komponentens overordnede sti er /fx4/high_votlage .
4.6 Dosisregulator
Se IGX – Programmeringsmanualen for detaljer om FX4 dosiscontrollergrænsefladen. Komponentens overordnede sti er /fx4/dose_controller .
FX4 Python Examples
5.1 Datalogger ved hjælp af HTTP
Denne example demonstrerer, hvordan man fanger et antal aflæsninger og gemmer dem i en CSV file. Ved at vælge en lang forsinkelse mellem aflæsningerne kan du udføre langtidsdatalogning, selvom FX4 sampling rate er sat højere. Dette giver dig mulighed for kontinuerligt at indsamle og gemme målinger over længere perioder uden at overvælde systemet, hvilket sikrer, at data fanges med intervaller, der passer til din analyse. Forsinkelsen mellem aflæsningerne hjælper med at regulere det tempo, hvormed data logges, hvilket muliggør effektiv lagring og reducerer risikoen for manglende datapunkter, mens du stadig drager fordel af højhastigheds-sampling til realtidsmålinger.
5.2 Simpel Python GUI
Det andet example bruger Tkinter GUI-værktøjet, som er bygget til Python, til at skabe en visning af de målte strømme. Denne grænseflade giver dig mulighed for at visualisere de aktuelle aflæsninger i et brugervenligt grafisk format. Displayet kan ændres størrelse for at gøre det stort nok til at læse fra tværs af et rum, hvilket gør det ideelt til scenarier, hvor realtidsovervågning er nødvendig i større rum. Tkinter giver en nem måde at skabe interaktive grænseflader på, og ved at integrere den med FX4 kan du hurtigt bygge en visuel visning af de målte strømme, som kan tilpasses til dine specifikke behov.
5.3 Enkel WebStikkontakter Eksample
Denne example demonstrerer WebSockets interface, som er den foretrukne metode til at læse data fra FX4, når der kræves maksimal båndbredde. WebSockets giver en real-time, fuld-duplex kommunikationskanal, hvilket muliggør hurtigere og mere effektiv dataoverførsel sammenlignet med andre metoder.
Eksample læser en række samples, rapporterer den gennemsnitlige tid pr. sample og maksimal latenstid, og gemmer dataene i en CSV file til senere analyse. Denne opsætning giver mulighed for effektiv overvågning i realtid og nem datalagring til efterbehandling.
Den specifikke præstation, der kan opnås med WebSockets afhænger af pålideligheden af din Ethernet-grænseflade og den relative prioritet af din applikation. For optimale resultater skal du sikre dig, at dit netværk er stabilt, og at FX4's dataoverførsel prioriteres, hvis det er nødvendigt.
Version: v3
FX4 Python Examplæs: 21
Dokumenter/ressourcer
![]() |
PYRAMID FX4 programmør [pdf] Brugsanvisning FX4 programmør, FX4, programmør |