
www.pyramid.tech
FX4
FX4 programmeringshåndbok
Dokument-ID: 2711715845
Versjon: v3
FX4 programmerer
Dokument-ID: 2711715845
FX4 – FX4 programmeringshåndbok
Dokument-ID: 2711650310
| Forfatter | Matthew Nichols |
| Eier | Prosjektleder |
| Hensikt | Forklar programmeringskonseptene som er nødvendige for å bruke API og utvide produktet gjennom eksterne applikasjoner. |
| Omfang | FX4 relaterte programmeringskonsepter. |
| Tiltenkt publikum | Programvareutviklere som er interessert i å bruke produktet. |
| Behandle | https://pyramidtc.atlassian.net/wiki/pages/createpage.action? spaceKey=PQ&title=Standard%20Manual%20Creation%20Process |
| Opplæring | IKKE GJELDER |
Versjonskontroll
| Versjon | Beskrivelse | Lagret av | Lagret på | Status |
| v3 | Lagt til en enkel overview og flere eksamples. | Matthew Nichols | 6. mars 2025 10:29 | GODKJENT |
| v2 | Lagt til digitale IO-grensesnitt og referanser tilbake til IGX. | Matthew Nichols | 3. mai 2024 7:39 | GODKJENT |
| v1 | Første utgivelse, fortsatt et arbeid pågår. | Matthew Nichols | 21. februar 2024 11:25 | GODKJENT |
Dokument kontroll Ikke Reviewed
Gjeldende dokumentversjon: v.1
Ingen reviewere tildelt.
1.1 Signaturer
for siste dokumentversjon
Fredag 7. mars 2025, 10:33 UTC
Matthew Nichols signerte ; betydning: Review
Referanser
| Dokument | Dokument-ID | Forfatter | Versjon |
| IGX – Programmeringshåndbok | 2439249921 | Matthew Nichols | 1 |
FX4-programmering overview
FX4-prosessoren kjører på et miljø kalt IGX, som er bygget på QNX høypålitelige sanntidsoperativsystem fra BlackBerry (QNX WebnettstedetIGX tilbyr et fleksibelt og omfattende applikasjonsprogrammeringsgrensesnitt (API) for brukere som ønsker å skrive sin egen vertsdatamaskinprogramvare.
IGX-miljøet deles på tvers av andre Pyramid-produkter, slik at programvareløsninger utviklet for ett produkt enkelt kan overføres til andre.
Programmerere kan referere til den fullstendige dokumentasjonen for IGX som er tilgjengelig på pyramiden webnettsted på: IGX | Moderne Modular Control System Framework for Web-aktiverte applikasjoner²
Denne delen gir en introduksjon til å teste to av API-metodene: HTTP ved bruk av JSON-format og EPICS. For enkelhets skyld, Python (Python Webnettstedet³) brukes som eksample vertsdatamaskinspråk, som er tilgjengelig og enkelt å bruke for ikke-profesjonelle programmerere.
3.1 Bruke Python og HTTP
Som eksample, anta at du vil lese summen av de målte strømmene med Python. Du trenger URL for den spesielle IO. FX4 web GUI gir en enkel måte å finne dette på: ganske enkelt høyreklikk i feltet og velg 'Kopier HTTP URL' for å kopiere strengen til utklippstavlen.

Nå kan du bruke Python til å teste tilkobling til brukerprogramvare via HTTP og JSON. Det kan hende du må importere forespørslene og json-bibliotekene for å håndtere HTTP-forespørslene og dataparsingen.
1 Enkel Python HTTP Eksample
3.2 Bruke EPICS
Prosessen for å koble FX4 gjennom EPICS (Experimental Physics and Industrial Control System) er lik. EPICS er et sett med programvareverktøy og applikasjoner som brukes til å utvikle og implementere distribuerte kontrollsystemer, mye brukt i vitenskapelige anlegg.
- Få EPICS-prosessvariabelnavnet (PV) for ønsket IO.
- Importer EPICS-biblioteket og les verdien.
2 Få EPICS PV-navn
3 enkle Python EPICS Eksample
I tillegg opprettet Pyramid et verktøy (EPICS Connect⁴) som lar deg overvåke EPICS-prosessvariabler i sanntid. Dette verktøyet er nyttig for å bekrefte om EPICS PV-navnet er riktig og FX4 betjener PV-en riktig på nettverket ditt.
4 PTC EPICS Connect
FX4 programmerings-API
Konseptene og metodene beskrevet i denne håndboken bygger på konseptene som er etablert i IGX – Programmerermanualen. Vennligst se det dokumentet for forklaring og eksamples om hvordan grunnleggende IGX-programmering og grensesnitt fungerer. Denne håndboken vil kun dekke den enhetsspesifikke IO og funksjonaliteten som er unik for FX4.
4.1 Analog inngang IO
Disse IO er relatert til konfigurering og innsamling av data på de analoge strøminngangene til FX4. Enhetene til kanalinngangene er basert på den brukerkonfigurerbare innstillingen kalt "Sample Units", inkluderer gyldige alternativer pA, nA, uA, mA og A.
Alle 4 kanalene bruker samme grensesnitt IO og styres uavhengig. Erstatt kanal_x med henholdsvis kanal_1 , kanal_2 , kanal_3 eller kanal_4.
| IO-bane | Beskrivelse |
| /fx4/adc/kanal_x | SKRIVEBARE NUMMER Målt strøminngang. |
| /fx4/adc/channel_x/scalar | NUMBER Enkel enhetsløs skalar brukt på kanalen, 1 som standard. |
| /fx4/adc/channel_x/zero_offset | NUMBER Gjeldende offset i nA for kanalen. |
Følgende IO er ikke kanaluavhengig og brukes på alle kanaler samtidig.
| IO-bane | Beskrivelse |
| /fx4/kanalsum | SKRIVEBARE NUMMER Summen av gjeldende inngangskanaler. |
| /fx4/adc_unit | STRING Angir gjeldende brukerenheter for hver kanal og sum. Alternativer: "pa", "na", "ua", "ma", "a" |
| /fx4/område | STRING Angir gjeldende inndataområde. Se GUI for hvordan hver områdekode tilsvarer de maksimale gjeldende inngangsgrensene og BW. Alternativer: “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7” |
| /fx4/adc/sample_frekvens | NUMBER Frekvensen i Hz som sample data vil bli gjennomsnittet til. Dette kontrollerer signal-til-støy og datahastighet for alle kanaler. |
| /fx4/adc/conversion_frequency | NUMBER Frekvensen i Hz som ADC vil konvertere analoge til digitale verdier ved. Som standard er dette 100kHz, og du trenger bare sjelden å endre denne verdien. |
| /fx4/adc/offset_correction | SKRIVEBARE NUMMER Summen av alle kanalens gjeldende forskyvninger. |
4.2 Analog utgang IO
Disse IO er relatert til konfigurasjonen av de generelle analoge utgangene til FX4 som finnes under de analoge inngangene på frontpanelet. Alle 4 kanalene bruker samme grensesnitt IO og styres uavhengig. Erstatt kanal_x med henholdsvis kanal_1 , kanal_2 , kanal_3 eller kanal_4.
| IO-bane | Beskrivelse |
| /fx4/dac /kanal_x | NUMBER Kommando voltage utgang. Denne verdien kan bare skrives til når utgangsmodus er satt til manuell. |
| /fx4/dac/channel_x/readback | LESBARE ANTALL Målt voltage utgang. Dette er mest nyttig når du bruker uttrykksutdatamodus. |
| /fx4/dac/kanal_x/utgangsmodus | STRING Angir utgangsmodus for kanalen. Alternativer: "manuell", "uttrykk", "prosesskontroll" |
| /fx4/dac/channel _ x/slew_control_enable | BOOL Aktiverer eller deaktiverer begrensning av slew rate. |
| /fx4/dac/channel_ x/slew_rate | NUMBER Slew rate i V/s for kanalen. |
| /fx4/dac/channel_x/upper_limit | NUMBER Maksimalt tillatt kommando voltage for kanalen. Gjelder alle driftsmoduser. |
| /fx4/dac/kanal _ x/lower_limit | NUMBER Minimum tillatt kommando voltage for kanalen. Gjelder alle driftsmoduser. |
| /fx4/dac/kanal _ x/ output _ uttrykk | STRING Angir uttrykksstrengen som brukes av kanalen når den er i uttrykksutgangsmodus. |
| /fx4/dac/kanal _ x/reset_button | BUTTON Tilbakestiller kommandoen voltage til 0. |
4.3 Digitale innganger og utganger
Disse IO er relatert til å kontrollere de forskjellige digitale inngangene og utgangene for generell bruk som finnes på FX4.
| IO-bane | Beskrivelse |
| /fx4/fr1 | READONLY BOOL Fibermottaker 1. |
| /fx4/ft1 | BOOL Fibersender 1. |
| /fx4/fr2 | READONLY BOOL Fibermottaker 2. |
| /fx4/ft2 | BOOL Fibersender 2. |
| /fx4/fr3 | READONLY BOOL Fibermottaker 3. |
| /fx4/ft3 | BOOL Fibersender 3. |
| /fx4/digital_expansion/d1 | BOOL D1 toveis digital utvidelse IO. |
| /fx4/digital_expansion/d2 | BOOL D2 toveis digital utvidelse IO. |
| /fx4/digital_expansion/d3 | BOOL D3 toveis digital utvidelse IO. |
| /fx4/digital_expansion/d4 | BOOL D4 toveis digital utvidelse IO. |
4.3.1 Digital IO-konfigurasjon
Alle digitale enheter har barne-IO for å konfigurere atferden, inkludert en driftsmodus som kontrollerer hvordan den digitale vil fungere. Hver digital vil ha et annet sett med tilgjengelige alternativer. Se GUI for detaljer om hvilke alternativer som er tilgjengelige for hvilken IO.
| Barn IO-bane | Beskrivelse |
| …/modus | STRING Driftsmodus for den digitale. Alternativer: "input", "output", "pwm", "timer", "encoder", "capture", "uart_rx", "uart_tx", "can_rx", "can_tx", "pru_input" eller "pru_output" |
| …/prosess_signal | STRING Navnet på prosesskontrollsignalet, hvis det finnes. |
| …/pull_mode | STRING Trekk opp/ned-modus for en digital inngang. Alternativer: "opp", "ned" eller "deaktiver" |
4.4 Relékontroll
Begge reléene styres uavhengig og deler samme type grensesnitt. Erstatt relay_x med henholdsvis relay_a eller relay_b.
| IO-bane | Beskrivelse |
| /fx4/relay _ x/permit / user _ kommando | BOOL Kommandoer reléet åpent eller lukket. En sann kommando vil prøve å lukke reléet hvis sperrene er gitt, og falsk kommando vil alltid åpne releet. |
| /fx4/relé _ x/tilstand | READONLY STRING Den nåværende tilstanden til reléet. Låste releer er åpne, men kan ikke lukkes på grunn av en forrigling. Statuser: «åpnet», «lukket» eller «låst» |
| /fx4/relay _ x/automatisk _ lukke | BOOL Når satt til true, vil releet automatisk lukkes når forriglingene er gitt. False som standard. |
| /fx4/relé _ x/ syklus _ telling | READONLY NUMBER Antall relésykluser siden siste tilbakestilling. Nyttig for å spore reléets levetid. |
4.5 Høy voltage Modul
Se IGX – Programmer Manual for detaljer om FX4 high voltage grensesnitt. Komponentens overordnede bane er /fx4/high_votlage .
4.6 Dosekontroller
Se IGX – Programmeringsmanual for detaljer om FX4-dosekontrollergrensesnittet. Komponentens overordnede bane er /fx4/dose_controller .
FX4 Python Examples
5.1 Datalogger som bruker HTTP
Denne eksample demonstrerer hvordan du fanger opp et antall avlesninger og lagrer dem i en CSV file. Ved å velge en lang forsinkelse mellom avlesningene, kan du utføre langsiktig datalogging selv om FX4 sampling rate er satt høyere. Dette lar deg kontinuerlig samle inn og lagre målinger over lengre perioder uten å overvelde systemet, og sikre at data fanges opp med intervaller som passer for analysen din. Forsinkelsen mellom avlesningene hjelper til med å regulere tempoet som data logges med, noe som muliggjør effektiv lagring og reduserer risikoen for manglende datapunkter samtidig som du drar nytte av høyhastighets sampling for sanntidsmålinger.




5.2 Enkelt Python GUI
Den andre eksample bruker Tkinter GUI-verktøyet, som er bygget for Python, for å lage en visning av de målte strømmene. Dette grensesnittet lar deg visualisere gjeldende avlesninger i et brukervennlig grafisk format. Skjermen kan endres for å gjøre den stor nok til å lese fra et rom, noe som gjør den ideell for scenarier der sanntidsovervåking er nødvendig i større rom. Tkinter gir en enkel måte å lage interaktive grensesnitt på, og ved å integrere den med FX4 kan du raskt bygge en visuell visning av de målte strømmene som kan tilpasses for å passe dine spesifikke behov.







5.3 Enkelt WebStikkontakter Eksample
Denne eksample demonstrerer WebSockets-grensesnitt, som er den foretrukne metoden for å lese data fra FX4 når maksimal båndbredde er nødvendig. WebSockets gir en sanntids, full-dupleks kommunikasjonskanal, som muliggjør raskere og mer effektiv dataoverføring sammenlignet med andre metoder.
Eksample leser en serie samples, rapporterer gjennomsnittlig tid pr. sample og maksimal ventetid, og lagrer dataene til en CSV file for senere analyse. Dette oppsettet muliggjør effektiv sanntidsovervåking og enkel datalagring for etterbehandling.
Den spesifikke ytelsen som kan oppnås med WebSockets avhenger av påliteligheten til Ethernet-grensesnittet og den relative prioriteringen av applikasjonen. For optimale resultater, sørg for at nettverket ditt er stabilt og at FX4s dataoverføring blir prioritert om nødvendig.



Versjon: v3
FX4 Python Examples: 21
Dokumenter / Ressurser
![]() | FX4 programmerer |
Referanser
- Brukerhåndbokmanual.tools
