CSCP — CloudScale Communication Protocol
Polecenia CSCP dla Neutron: struktura komunikatów, ważenie, konfiguracja, liczenie, ważenie kontrolne oraz cyfrowe I/O.
PRECIZ · NEUTRON OPC UA
Integracja OPC UA z Neutron: bezpieczne połączenia, dane ważenia na żywo, przechwytywanie stabilnego pomiaru i integracja z PLC/SCADA.
Wersja instrukcji: 1.0 · Data publikacji: 18 października 2026
Dotyczy: oprogramowania układowego Neutron 2.5.0 z obsługą OPC UA · Model informacyjny producenta 1.3.0
Wersja | Data publikacji | Zmiany |
|---|---|---|
1.0 | 18 października 2026 | Pierwsze wydanie instrukcji Neutron OPC UA. Model informacyjny NodeSet2 1.3.0 z ActiveChannel do odczytu aktywnego kanału i SetChannel do wyboru kanału 1–4. |
PRECIZ jest oficjalnie zarejestrowanym członkiem OPC Foundation. Zobacz oficjalny wpis PRECIZ w katalogu członków OPC Foundation.
Neutron firmy PRECIZ udostępnia serwer OPC UA do integracji z PLC, SCADA, MES i aplikacjami komputerowymi. Interfejs korzysta z komunikacji OPC UA Client/Server przez UA-TCP z kodowaniem UA Binary.
Serwer udostępnia:
Bieżącą masę brutto, netto, tarę i masę brutto o wysokiej rozdzielczości, surowe ADC, stabilność, stan wagi, kod błędu i jednostkę.
Metadane pomiaru: działkę, liczbę miejsc dziesiętnych, nośność, jednostki inżynierskie i zakres inżynierski.
Identyfikację urządzenia i standardowe informacje serwera OPC UA.
Subskrypcje zmian danych dla wartości bieżących.
Spójny odczyt pomiaru zawierający jedenaście pól z jednej migawki.
Asynchroniczne przechwytywanie i pobieranie świeżego stabilnego pomiaru.
Tarowanie, zadawanie tary, zerowanie i kasowanie tary.
Ustawienie filtra FT i ustawienie przełączania ADC FC.
Odczytaj aktywny kanał wagowy przez ActiveChannel i wybierz kanał 1–4 przez SetChannel (NodeSet2 1.3.0).
Dwie równoczesne sesje klientów.
Opcjonalną szyfrowaną komunikację, zaufanie do certyfikatów aplikacji i uprawnienia użytkowników do odczytu lub odczytu i wykonywania poleceń.
Wszystkie udostępniane zmienne procesowe są tylko do odczytu. Operacje wykonuje się metodami. Interfejs nie udostępnia wykonywania dowolnych poleceń natywnych, kalibracji, sterowania wyjściami, wyboru aplikacji, wyników liczenia, historii, zdarzeń ani OPC UA PubSub. Model informacyjny jest modelem producenta PRECIZ, a nie modelem towarzyszącym OPC UA Weighing lub Device Integration.
Trzy sposoby uzyskania pomiaru służą różnym celom:
Interfejs | Zastosowanie |
|---|---|
Zmienne bieżące i subskrypcje | Wyświetlanie lub ciągłe monitorowanie poszczególnych wartości |
| Pobranie wszystkich jedenastu pól pomiaru z jednej aktualnej migawki |
| Zamrożenie świeżego, prawidłowego, stabilnego pomiaru i pobranie go według identyfikatora żądania |
Połącz się z lokalną stroną konfiguracji Neutron lub narzędziem konfiguracji Bluetooth. Do zarządzania certyfikatami/użytkownikami użyj HTTPS lub uwierzytelnionego Bluetooth.
Wybierz interfejs połączenia sieciowego i odczytaj przypisany mu adres IP.
Pozostaw akwizycję wagi włączoną w ustawieniach Scale.
Otwórz kartę OPC UA. Oprogramowanie układowe musi zgłaszać dostępność OPC UA.
Aby uzyskać dostęp szyfrowany, najpierw utwórz użytkownika w Users & permissions.
W Settings włącz serwer, wybierz tryb bezpieczeństwa i do pierwszego połączenia zachowaj port 4840 oraz minimalny interwał 100 ms.
Kliknij Save. Skopiuj adres połączenia przyciskiem Copy endpoint.
Przykładowy punkt końcowy:
opc.tcp://192.168.50.73:4840Dodaj punkt końcowy jako serwer w UAExpert.
W trybie szyfrowanym wybierz Basic256Sha256 / SignAndEncrypt i uwierzytelnianie Username/Password. W trybie niezabezpieczonym wybierz None i Anonymous.
Aby uzyskać dostęp szyfrowany, porównaj certyfikat Neutron i oznacz go jako zaufany. Jeśli certyfikat klienta nie jest jeszcze zaufany przez Neutron, postępuj zgodnie z sekcją 4.2 i połącz się ponownie.
Połącz się i przejdź do Objects → CS-NEUTRON Scale. NodeId obiektu to Scale; jego wyświetlana nazwa to CS-NEUTRON Scale.
Przeciągnij Gross, Net, Tare, Stable, Status, ErrorCode i Unit do Data Access View.
W menu kontekstowym Data Access View ustaw interwał publikacji subskrypcji i interwał próbkowania monitorowanych elementów, początkowo 100 ms.
Używaj wartości tylko wtedy, gdy jej OPC UA StatusCode wynosi Good. ErrorCode=1 oznacza brak błędu natywnej wagi. Status=1 lub Status=3 opisuje stabilne wskazanie.
Punkt końcowy ma postać opc.tcp://<assigned-device-IP>:<port>. Użyj adresu wybranego interfejsu Wi-Fi, Ethernet lub LTE. Karta OPC UA wyświetla adres i udostępnia przycisk kopiowania. Stały adres IP upraszcza integrację.
Urządzenie nie wymaga skonfigurowania adresu IP sterownika PLC. Zezwól na przychodzący ruch TCP na wybranym porcie. Klient musi mieć trasę sieciową do Neutron; adres LTE za NAT operatora nie jest automatycznie osiągalny spoza tej sieci. Użyj odpowiedniej sieci routowanej, prywatnego APN lub VPN.
Ustawienie | Klucz | Domyślnie | Wartości / działanie |
|---|---|---|---|
Dostępność OPC UA | OUB | Zależnie od oprogramowania układowego | Tylko do odczytu: 0 brak, 1 dostępny |
Obsługa zabezpieczeń | OUS | Zależnie od oprogramowania układowego | Tylko do odczytu: 0 brak, 1 dostępny |
Serwer OPC UA | OUE | Wyłączony | 0 wyłączony, 1 włączony |
Port TCP | OUP | 4840 | 1024–65535; wybierz nieużywany port usługi |
Minimalny interwał aktualizacji | OUI | 100 ms | 10–5000 ms; minimalny interwał próbkowania i publikacji akceptowany przez serwer |
Bezpieczeństwo połączenia | OUM | Niezabezpieczone | 0 None/anonymous; 1 Basic256Sha256/SignAndEncrypt z nazwą użytkownika/hasłem |
Dostęp anonimowy do poleceń | OUC | Wyłączony | Tylko w trybie niezabezpieczonym: 0 tylko odczyt; 1 wszystkie obsługiwane polecenia dozwolone |
Zapisanie ustawień OPC UA uruchamia ponownie usługę OPC UA i rozłącza jej klientów. Zmiany użytkowników i zaufania również uruchamiają usługę ponownie. Po tych zmianach połącz się ponownie. Wykorzystywane są istniejące ustawienia adresu IP urządzenia, wagi i zegara.
Minimalny interwał to dolna granica, a nie stały okres transmisji ani gwarancja opóźnienia od końca do końca. Klienci żądają własnych interwałów i muszą używać skorygowanych wartości zwróconych przez serwer.
Tryb | Polityka / zabezpieczenie komunikatów | Uwierzytelnianie | Uprawnienie do poleceń |
|---|---|---|---|
Niezabezpieczone | None / None | Anonymous | Sterowane ustawieniem Anonymous command access |
Szyfrowany | Basic256Sha256 / SignAndEncrypt | Nazwa użytkownika i hasło; zaufany certyfikat aplikacji klienta | Sterowane uprawnieniem użytkownika |
W trybie szyfrowanym sesje anonimowe i logowanie użytkownika za pomocą certyfikatu nie są obsługiwane. Certyfikat aplikacji klienta identyfikuje oprogramowanie klienta; nie zastępuje uwierzytelniania nazwą użytkownika/hasłem. PIN konfiguracji internetowej i certyfikat HTTPS są niezależne od danych uwierzytelniających i certyfikatów OPC UA.
Trybu niezabezpieczonego używaj w zaufanej, odizolowanej sieci. Nie szyfruje on danych ani nie uwierzytelnia poszczególnych użytkowników.
Otwórz ustawienia OPC UA Neutron przez HTTPS lub uwierzytelniony Bluetooth.
Dodaj użytkownika. Nazwy użytkowników zawierają 1–64 litery ASCII, cyfry, podkreślenia lub łączniki i rozróżniają wielkość liter. Hasła zawierają 12–128 znaków. Obsługiwanych jest maksymalnie ośmiu użytkowników; nie ma domyślnego konta OPC UA.
Wybierz Read only lub Read and execute commands.
Włącz szyfrowany OPC UA i zapisz. Zegar urządzenia musi być zsynchronizowany i musi istnieć przynajmniej jeden użytkownik. Bezpieczne uruchomienie czeka na synchronizację zegara.
Przy pierwszym bezpiecznym uruchomieniu Neutron generuje klucz prywatny i samopodpisany certyfikat aplikacji RSA-2048, ważny przez pięć lat.
W kliencie porównaj odcisk SHA-256 certyfikatu Neutron z odciskiem wyświetlanym w interfejsie konfiguracji, a następnie oznacz go jako zaufany.
Spróbuj nawiązać połączenie szyfrowane. Neutron odrzuca nieznany certyfikat aplikacji klienta i wyświetla go w Certificates jako rejected.
Kliknij Refresh certificates and users, porównaj odcisk klienta i kliknij Approve przy tym certyfikacie.
Połącz się ponownie, używając nazwy użytkownika i hasła.
Klient musi zaufać Neutron, zanim będzie mógł przejść do etapu wysłania własnego certyfikatu. Zatwierdzenie nie pomija sprawdzania terminu ważności, podpisu, użycia klucza ani URI aplikacji.
Operacja | Tylko odczyt | Odczyt i wykonywanie poleceń |
|---|---|---|
Odczyt zmiennych / subskrypcja | Tak | Tak |
ReadMeasurement | Tak | Tak |
GetCapturedMeasurement | Tak | Tak |
CaptureStableWeight | Nie | Tak |
TareCurrent, SetTare, Zero, ClearTare | Nie | Tak |
SetFilter, SetHRFilter, SetChannel | Nie | Tak |
Zapis zmiennych / zarządzanie użytkownikami lub certyfikatami przez OPC UA | Nie | Nie |
Zapisane role Reader i Operator odpowiadają tym dwóm uprawnieniom. Nie ma poziomów uprawnień dla poszczególnych poleceń. W trybie szyfrowanym obowiązuje uprawnienie użytkownika; OUC jest ignorowane. W trybie niezabezpieczonym OUC zezwala na wszystkie obsługiwane polecenia albo na żadne.
Pięć nieudanych logowań powoduje 30-sekundową blokadę logowania na całym serwerze. Może to tymczasowo wpływać także na innych użytkowników. Hasła użytkowników są przechowywane jako skróty PBKDF2-HMAC-SHA256 z solą; interfejs administracyjny nie eksportuje haseł ani kluczy prywatnych.
URI aplikacji Neutron:
urn:preciz:cs-neutron:<MID>Wygenerowany certyfikat zawiera ten URI, nazwę hosta <MID>.local zapisaną małymi literami i adres IP urządzenia w chwili generowania. Zachowaj stały adres lub wystaw certyfikat zastępczy zawierający adresy używane przez klientów.
Certyfikat CA nie jest wymagany dla jawnie zaufanych samopodpisanych certyfikatów aplikacji. W przypadku firmowej infrastruktury PKI:
Wybierz Create and download CSR. CSR wykorzystuje istniejący klucz urządzenia.
Zleć CA wystawienie certyfikatu aplikacji OPC UA zachowującego URI aplikacji w SAN oraz odpowiednie rozszerzone użycia klucza serwera/klienta i użycia podpisu cyfrowego/szyfrowania klucza.
Zaimportuj go jako CA-signed device certificate. Jego klucz prywatny musi odpowiadać istniejącemu kluczowi Neutron. Zainstaluj wymagany łańcuch CA w kliencie.
Aby ufać klientom z certyfikatami wystawionymi przez CA, zaimportuj główny certyfikat wystawcy jako Trusted client certificate or CA. Pośrednie CA importuj jako Intermediate issuer CA. Sam wpis pośredniego wystawcy nie nadaje zaufania.
Jeśli używana jest kontrola unieważnień, importuj podpisane przez CA listy CRL jako Certificate revocation list i aktualizuj je przed upływem ważności. Najpierw zaimportuj CA ich wystawców.
Obsługiwany jest import PEM lub DER, do 8192 bajtów na plik. Każdy magazyn certyfikatów zaufanych, odrzuconych, wystawców i CRL mieści do 12 wpisów. Usuń nieaktualne odrzucone wpisy, gdy ten magazyn się zapełni. Zainstalowane CRL są sprawdzane pod kątem dat i podpisu wystawcy; wygasłe CRL powodują odrzucanie objętych nimi nowych połączeń. Bez zainstalowanych CRL kontrola unieważnień nie jest wykonywana. CRL nie są pobierane automatycznie; zarządzanie OCSP i GDS nie jest udostępniane.
Odnów certyfikat, tworząc CSR i importując odnowiony certyfikat. Wygasły certyfikat urządzenia uniemożliwia bezpieczne uruchomienie. Replace device identity usuwa bieżący klucz/certyfikat/CSR i generuje nową tożsamość przy następnym bezpiecznym uruchomieniu; klienci muszą ponownie jej zaufać. Użytkownicy i zaufani klienci zostają zachowani.
Użytkownicy i magazyny certyfikatów zachowują się przy zwykłych restartach i aktualizacjach OTA. Wymazanie systemu plików urządzenia je usuwa. Przed przekazaniem własności urządzenia jawnie usuń poprzednich użytkowników i wpisy zaufania.
URI przestrzeni nazw producenta:
urn:preciz:cs-neutron:weighing:1Przy każdym połączeniu odszukaj ten URI w Server/NamespaceArray. Nie koduj na stałe indeksu przestrzeni nazw 1 ani 2. Sufiks wersji :1 należy do stałego URI przestrzeni nazw; wersja modelu do pobrania to 1.3.0.
Przykładowe postacie tej samej zmiennej:
nsu=urn:preciz:cs-neutron:weighing:1;s=Scale.Gross
ns=2;s=Scale.GrossPostać liczbowa jest prawidłowa tylko wtedy, gdy serwer aktualnie przypisuje ten URI do indeksu 2. Jeśli klient nie akceptuje składni nsu=, odszukaj URI i zbuduj NodeId z indeksem liczbowym. Identyfikatory producenta są ciągami rozróżniającymi wielkość liter, włącznie z kropkami w Scale.Gross.
Lokalizacja w przeglądarce | Łańcuchowy NodeId obiektu |
|---|---|
Objects / CS-NEUTRON Scale |
|
Objects / Device |
|
Objects / Server | Standardowa przestrzeń nazw 0, liczbowy NodeId |
Metody należy wywoływać z Scale jako nadrzędnym ObjectId i NodeId metody jako MethodId.
Gross, Net i Tare są eksportowane jako wartości Double znormalizowane do skonfigurowanej liczby miejsc dziesiętnych. HR to masa brutto o wysokiej rozdzielczości przed zaokrągleniem wskazania, a nie masa netto ani surowe ADC. Każda masa używa bieżącej Scale.Unit; OPC UA nie przelicza jednostek. Typ transportowy Double nie zwiększa dokładności czujnika.
Binarne wartości zmiennoprzecinkowe nie przedstawiają dokładnie każdej liczby dziesiętnej. Formatuj wyświetlane masy według Scale.Decimals, a jako krok ważenia używaj Scale.Division. HR może występować w notacji naukowej: 9.31e-5 kg oznacza 0.0000931 kg.
Neutron kopiuje najnowsze wartości ważenia do migawki OPC UA mniej więcej co min(OUI, 50) milisekund, zależnie od dostępności akwizycji. Odczyt ani subskrypcja nie inicjują kolejnego przetworzenia ADC.
SourceTimestamp określa czas migawki pomiaru, gdy zegar urządzenia jest zsynchronizowany. Przed synchronizacją jest nieobecny. ServerTimestamp to znacznik czasu dostarczony przez serwer dla DataValue; nie musi być równy SourceTimestamp. Znaczniki czasu OPC UA używają UTC.
Oddzielne odczyty lub powiadomienia subskrypcji mogą dotyczyć różnych migawek. Używaj ReadMeasurement lub przechwyconego wyniku, gdy pola muszą należeć do jednego pomiaru. Niezmieniona monitorowana wartość nie musi generować nowego powiadomienia w każdym interwale.
StatusCode DataValue | Znaczenie / działanie klienta |
|---|---|
Good | Wartość nadaje się do użycia; w razie potrzeby sprawdź Stable i stan natywny |
BadNoCommunication | Brak migawki lub ponad dwie sekundy bez nowej migawki; odrzuć bieżący pomiar |
BadSensorFailure | Błąd natywnej wagi; sprawdź ErrorCode |
BadOutOfRange | Niedociążenie lub przeciążenie; odrzuć pomiar |
Jakość dotyczy mas, ADC i Stable. Status, ErrorCode i Unit pozostają czytelne podczas błędów natywnej wagi, ale stają się nieaktualne po zatrzymaniu migawek. Diagnostyka poleceń/przechwytywania pozostaje czytelna niezależnie od jakości bieżącej wagi. Metadane są informacją konfiguracyjną; ich stan Good nie potwierdza prawidłowości bieżącego wyniku ważenia.
Wszystkie poniższe pozycje są tylko do odczytu. NodeId są identyfikatorami łańcuchowymi producenta, chyba że wskazano standardową przestrzeń nazw 0. Wszystkie pozycje skalarne mają ValueRank −1.
Łańcuchowy NodeId | Typ | Jednostka | Opis |
|---|---|---|---|
| Double | Scale.Unit | Zaokrąglona masa brutto |
| Double | Scale.Unit | Zaokrąglona masa netto |
| Double | Scale.Unit | Zastosowana tara |
| Double | Scale.Unit | Niezaokrąglona masa brutto o wysokiej rozdzielczości |
| Int32 | Zliczenia ADC | Istniejąca wartość ADC wagi skopiowana z migawką; bez dodatkowego odczytu sprzętowego |
| Boolean | — | Flaga stabilności wagi |
| UInt16 | — | Stan wskazania; tabela poniżej |
| UInt16 | — | Błąd natywny; 1 oznacza brak błędu |
| String | — | Skonfigurowana jednostka, np. kg lub g |
| UInt16 | miejsca dziesiętne | Liczba miejsc dziesiętnych wyświetlanej masy |
| Double | Scale.Unit | Aktywna działka wagowa |
| Double | Scale.Unit | Nośność aktywnego zakresu |
| UInt16 | — | Aktywne ustawienie FT, 1–1023 |
| Boolean | — | Ustawienie FC: false wyłączone, true włączone; steruje przełączaniem ADC |
ADC nie jest oddzielnym skanowaniem poszczególnych czujników tensometrycznych. Zmienna mV nie jest udostępniana. Mimo nazwy HRFilter steruje istniejącą funkcją FC/przełączania ADC, a nie filtrem programowym stosowanym wyłącznie do zmiennej OPC UA HR.
Scale.Status | Znaczenie |
|---|---|
0 | Niedociążenie |
1 | W zakresie zera |
2 | Niestabilna |
3 | Stabilna |
4 | Przeciążenie |
255 | Niezainicjowana migawka |
Używaj Scale.Stable jako flagi stabilności. Scale.Status i OPC UA StatusCode to odrębne pojęcia; natywny stan 3 nie jest kodem jakości OPC UA.
Scale.ErrorCode | Znaczenie |
|---|---|
1 | Brak błędu |
99 | Przekroczenie limitu czasu polecenia |
98 | Nieznane polecenie |
97 | Waga wyłączona |
96 | Brak kalibracji |
95 | Brak danych metrologicznych |
94 | Błąd rejestru stanu ADC |
93 | Błąd napięcia odniesienia ADC |
92 | Błąd trybu przetwarzania ADC |
91 | Błąd konfiguracji zegara ADC |
90 | Błąd konfiguracji pojedynczego cyklu ADC |
89 | Błąd konfiguracji filtra tłumiącego ADC |
88 | Niezgodność filtra ADC |
87 | Błąd konfiguracji kanału ADC |
86 | Niezgodność przełączania ADC |
85 | Błąd trybu bipolarnego ADC |
84 | Błąd konfiguracji zewnętrznego napięcia odniesienia ADC |
83 | Niezgodność wzmocnienia ADC |
82 | Błąd filtra uśredniającego ADC |
Właściwości mają następujące łańcuchowe NodeId producenta. Ich BrowseNames należą do przestrzeni nazw 0, na przykład 0:EngineeringUnits.
Wzorzec łańcuchowego NodeId | Typ | Znaczenie |
|---|---|---|
| EUInformation | Metadane jednostki |
| Range | Zakres inżynierski Low/High |
| Double | Eksportowana liczba miejsc dziesiętnych, równa Decimals |
EURange wynosi [0, Capacity], z wyjątkiem Net, które używa [-Capacity, Capacity]. Zakres inżynierski to metadane, a nie instrukcja ograniczania wartości. ValuePrecision to liczba miejsc dziesiętnych, a nie działka ani specyfikacja dokładności. HR nie ma właściwości ValuePrecision.
EngineeringUnits używa kodów UN/CEFACT dla kg (4933453), g (4674125), lb (4997714) i oz (5197402). Inne symbole jednostek mają UnitId −1 i pustą przestrzeń nazw standardów. Odśwież metadane po zmianach jednostek, zakresu lub konfiguracji wagi.
Łańcuchowy NodeId | Typ | Opis |
|---|---|---|
| UInt32 | Identyfikator ostatniego przyjętego polecenia tarowania/zerowania/filtra |
| UInt16 | 0 bezczynne; 1 w kolejce; 2 wykonywane; 3 zakończone powodzeniem; 4 niepowodzenie |
| String | Natywna odpowiedź lub powód odrzucenia |
| UInt32 | Identyfikator ostatniego przyjętego żądania przechwycenia stabilnego pomiaru |
| UInt16 | 0 bezczynne; 1 oczekujące; 2 zakończone; 3 przekroczenie limitu czasu |
Identyfikatory poleceń i przechwytywania należą do oddzielnych sekwencji. Obie są wspólne dla wszystkich klientów, lokalne dla uruchomionej usługi i zerują się przy ponownym uruchomieniu usługi.
Łańcuchowy NodeId | Typ | Opis |
|---|---|---|
| String | PRECIZ |
| String | Model urządzenia |
| String | MID |
| String | Wersja oprogramowania układowego |
| String | Wersja sprzętu |
| String | Skonfigurowana nazwa urządzenia |
Wartości tożsamości są ładowane przy uruchomieniu OPC UA. Po zmianie nazwy urządzenia uruchom usługę ponownie, aby odświeżyć DeviceName.
Poniższe ścieżki są względne wobec Objects / Server i używają przestrzeni nazw 0.
Ścieżka przeglądania | Typ / wartość |
|---|---|
ServerArray | String[]; indeks 0 to URI aplikacji urządzenia |
NamespaceArray | String[]; indeks 0 to przestrzeń nazw OPC UA, indeks 1 to URI aplikacji urządzenia; odszukaj URI producenta w tej tablicy |
ServerStatus | ServerStatusDataType |
ServerStatus/StartTime, CurrentTime | DateTime, zadeklarowany UtcTime |
ServerStatus/State | ServerState; 0 Running podczas normalnej pracy |
ServerStatus/SecondsTillShutdown | UInt32; 0, gdy nie zaplanowano wyłączenia |
ServerStatus/ShutdownReason | LocalizedText |
ServerStatus/BuildInfo | BuildInfo: ProductUri, ManufacturerName, ProductName, SoftwareVersion, BuildNumber, BuildDate |
ServiceLevel | Byte; 255 podczas normalnej pracy |
Auditing | Boolean; false |
VendorServerInfo | Obiekt informacji producenta |
ServerRedundancy/RedundancySupport | RedundancySupport; 0 None |
ServerCapabilities/ServerProfileArray | String[]; URI profili/aspektów implementacji |
ServerCapabilities/LocaleIdArray | LocaleId[]; en |
ServerCapabilities/MinSupportedSampleRate | Duration w ms; aktywne minimum OUI |
ServerCapabilities/MaxBrowseContinuationPoints | UInt16; 5 na sesję |
ServerCapabilities/SoftwareCertificates | SignedSoftwareCertificate[]; pusta |
ServerCapabilities/ModellingRules, AggregateFunctions | Foldery |
ServerCapabilities/OperationLimits | Limity na żądanie wymienione w sekcji 9 |
Standardowe zmienne tablicowe mają ValueRank 1 i ArrayDimensions [0]; zero oznacza nieokreśloną maksymalną długość. ServerProfileArray identyfikuje docelową implementację Micro Embedded Device 2017 i aktywne aspekty transportu/metod/bezpieczeństwa. Identyfikator tego profilu nie jest znakiem certyfikacji OPC Foundation.
Scale.ActiveChannel to zmienna UInt16 wskazująca aktualnie aktywny kanał wagowy. Jest tylko do odczytu; kanał wybieraj przez Scale.SetChannel. NodeSet2 1.3.0 obsługuje wybór kanałów 1–4. Przy łączeniu odszukaj URI przestrzeni nazw zgodnie z sekcją 5.1.
Wywołuj każdą metodę na obiekcie nadrzędnym Scale. Podawaj argumenty skalarne dokładnie we wskazanych typach OPC UA; nie zastępuj argumentu UInt32 lub Boolean typem String, Int32 ani Double.
SetChannel przyjmuje Channel: UInt16 (1–4) i zwraca RequestId: UInt32; patrz sekcja 7.9.
Łańcuchowy NodeId metody | Argumenty wejściowe | Wynik | Uprawnienie |
|---|---|---|---|
| Brak | Jedenaście pól pomiaru, sekcja 8.1 | Odczyt |
| TimeoutMs: UInt32 | RequestId: UInt32 | Wykonywanie |
| RequestId: UInt32 | Jedenaście pól pomiaru, sekcja 8.1 | Odczyt |
| Brak | RequestId: UInt32 | Wykonywanie |
| Value: Double | RequestId: UInt32 | Wykonywanie |
| Brak | RequestId: UInt32 | Wykonywanie |
| Brak | RequestId: UInt32 | Wykonywanie |
| Value: UInt16 | RequestId: UInt32 | Wykonywanie |
| Enabled: Boolean | RequestId: UInt32 | Wykonywanie |
Taruje bieżącą stabilną masę brutto, używając natywnej operacji T. Ustawia tarę równą masie brutto, a masa netto staje się zerowa; nie zmienia punktu zerowego masy brutto. Waga musi przyjąć operację stabilnego tarowania przed upływem limitu czasu polecenia.
Przykład z 1.11 kg na wadze: Gross pozostaje 1.11 kg, Tare staje się 1.11 kg, a Net staje się 0.00 kg. Natywna odpowiedź powodzenia przypomina T S 1.11 kg.
Ustawia zadaną tarę w Scale.Unit, używając natywnej operacji TA. Value musi być skończona, nieujemna, nie większa niż 1,000,000,000 i nie większa niż nośność. Zastosowana tara jest zaokrąglana do działki wagi. Po zakończeniu odczytaj Scale.Tare, aby uzyskać zastosowaną wartość. Przykładowe wejście: Double 0.250, gdy Unit to kg.
Wykonuje natywne Z z uwzględnieniem stabilności i skonfigurowanego zakresu zera. Przy powodzeniu punkt zerowy zostaje skorygowany, a istniejąca zastosowana/zadana tara zostaje skasowana. Natywna odpowiedź powodzenia to Z A. Jest to operacja odmienna od TareCurrent.
Wykonuje natywne TAC, usuwając zastosowaną i zadaną tarę. Gross zostaje zachowane, a Net powraca do Gross. Nie ma argumentów wejściowych.
Value ma typ UInt16, 1–1023 włącznie. Ustawia FT dla aktywnego kanału wagowego przez istniejącą procedurę konfiguracji filtra. Zero i wartości powyżej 1023 zwracają BadOutOfRange. Przykład: UInt16 512.
Enabled ma typ Boolean: true włącza FC/przełączanie ADC, false je wyłącza. Wartość liczbowa wysłana z liczbowym typem OPC UA nie jest Boolean i zostaje odrzucona.
FT i FC są aktywowane i zapisywane dla aktywnego kanału przez natywne procedury konfiguracji. Niepowodzenie weryfikacji sprzętowej powoduje niepomyślny wynik polecenia. Akwizycja może zostać wstrzymana podczas stosowania ustawienia. Po zakończeniu odczytaj Scale.Filter lub Scale.HRFilter, aby zobaczyć aktywne ustawienie.
Dla TareCurrent, SetTare, Zero, ClearTare, SetChannel, SetFilter i SetHRFilter:
Wywołaj metodę i zachowaj zwrócony RequestId.
Odczytuj lub subskrybuj LastCommandId, LastCommandState i LastCommandResult.
Powiąż wynik tylko ze zgodnym LastCommandId.
Stan 3 oznacza powodzenie; stan 4 oznacza niepowodzenie. Stany 1 i 2 są oczekujące.
Po pomyślnym zakończeniu odczytaj odpowiednie wartości procesowe/konfiguracyjne.
Wynik wywołania Call o stanie Good potwierdza przyjęcie, a nie zakończenie. W danej chwili tylko jedno z tych poleceń może być w kolejce lub w trakcie wykonywania; kolejne otrzymuje BadResourceUnavailable. Nadal obowiązują istniejące blokady stabilności wagi, dostępności, zajętości i aplikacji.
Miejsce na polecenie i diagnostyka ostatniego wyniku są wspólne dla całego urządzenia. Koordynuj klientów wysyłających polecenia, jeśli może je wydawać dwóch klientów: późniejsze polecenie może zastąpić ostatnią zakończoną diagnostykę, zanim inny klient ją odczyta. Nie jest to historia poleceń.
Identyfikatory żądań nie są trwałymi identyfikatorami operacji. Po utracie połączenia sprawdź odpowiedni stan wagi przed ponowieniem polecenia o nieznanym wyniku. Restart usługi kasuje diagnostykę i anuluje niezakończone polecenia wagowe należące do OPC UA; nie cofa zakończonego tarowania, zerowania ani zmiany ustawień.
Wywołaj Scale.SetChannel na obiekcie Scale. Jego argument wejściowy Channel jest skalarnym UInt16 o wartości 1–4; inne wartości są odrzucane. Argument wyjściowy RequestId ma typ UInt32.
Wywołanie wymaga uprawnienia do poleceń i ponownie inicjalizuje wagę. Koordynuj wykonanie z innymi poleceniami i postępuj według sekwencji asynchronicznej z sekcji 7.8. Wybrany kanał odczytuj z Scale.ActiveChannel.
ReadMeasurement() natychmiast zwraca najnowszą prawidłową migawkę. Nie czeka na stabilność ani nie żąda nowego odczytu ADC. GetCapturedMeasurement zwraca tę samą sygnaturę wyniku dla zamrożonego stabilnego pomiaru.
Pozycja (liczona od zera) | Argument | Typ OPC UA | Znaczenie |
|---|---|---|---|
0 | MeasurementId | UInt64 | Numer sekwencyjny migawki |
1 | Gross | Double | Masa brutto |
2 | Net | Double | Masa netto |
3 | Tare | Double | Zastosowana tara |
4 | HR | Double | Masa brutto o wysokiej rozdzielczości |
5 | Stable | Boolean | Stabilność tej migawki |
6 | Status | UInt16 | Natywny stan wagi |
7 | ErrorCode | UInt16 | Natywny kod błędu wagi |
8 | Unit | String | Jednostka tego wyniku |
9 | Timestamp | DateTime | Czas UTC migawki lub zero bez synchronizacji |
10 | TimeSynchronized | Boolean | Czy Timestamp można wykorzystać jako czas kalendarzowy |
Wszystkie pola należą do jednej migawki. MeasurementId zwiększa się przy każdej migawce OPC UA, a nie przy każdym fizycznym przetworzeniu ADC, i zeruje się wraz z usługą. Przy zapisywaniu zachowaj precyzję UInt64. ADC, metadane i filtry są oddzielnymi węzłami bieżącymi i nie wchodzą w skład jedenastopolowego wyniku tej metody.
Jeśli TimeSynchronized ma wartość false, nie interpretuj Timestamp jako daty kalendarzowej. ReadMeasurement zwraca BadNoCommunication, BadSensorFailure lub BadOutOfRange, gdy bieżącej migawki brakuje/jest nieaktualna, ma błąd natywny lub jest poza zakresem.
Wywołaj CaptureStableWeight(TimeoutMs) z UInt32 100–60000 ms. Na przykład 5000 pozwala czekać do pięciu sekund na prawidłowy stabilny pomiar. Zero jest nieprawidłowe.
Zachowaj zwrócony UInt32 RequestId.
Wywołaj GetCapturedMeasurement(RequestId), używając tego identyfikatora. Podczas oczekiwania zwraca BadWaitingForInitialData. Powtarzaj w umiarkowanym interwale, na przykład 100 ms.
Przy powodzeniu zapisz jedenastopolowy wynik wraz z RequestId przechwytywania.
Możesz też subskrybować LastCaptureId i LastCaptureState, a następnie pobrać wynik, gdy zgodne żądanie osiągnie stan 2.
LastCaptureState | Znaczenie |
|---|---|
0 | Bezczynne |
1 | Oczekujące |
2 | Zakończone; wynik dostępny |
3 | Przekroczenie limitu czasu |
Przechwycona migawka musi zostać opublikowana po rozpoczęciu żądania i musi być stabilna, świeża, bez błędów natywnych i w zakresie. Nieprawidłowe migawki są pomijane do nadejścia odpowiedniej lub upływu limitu czasu. Jeśli waga jest już stabilna, następna prawidłowa migawka może natychmiast zakończyć przechwytywanie; nie jest wymagane przejście od niestabilności do stabilności ani dodatkowy czas utrzymania.
Operacja nie taruje ani nie zeruje wagi i nie blokuje innych klientów. Tylko jedno przechwytywanie może oczekiwać. Dla całego urządzenia istnieje jeden zamrożony wynik wspólny dla wszystkich klientów. Pozostaje niezmieniony nawet po zmianie lub utracie dostępności bieżącej masy. Rozpoczęcie nowego przechwytywania zastępuje poprzednie żądanie/wynik. Nie ma historii przechwytywania.
Wynik GetCapturedMeasurement | Znaczenie |
|---|---|
Good | Zwrócony zamrożony wynik |
BadWaitingForInitialData | Zgodne przechwytywanie nadal oczekuje |
BadTimeout | Zgodne przechwytywanie wygasło bez prawidłowego stabilnego pomiaru |
BadNotFound | Identyfikator jest zerowy, nieznany, zastąpiony lub niedostępny po restarcie |
BadNoData | Brak zakończonego wyniku dla zgodnego stanu przechwytywania |
Jako wejścia GetCapturedMeasurement używaj RequestId przechwytywania, a nie MeasurementId wyniku. Przechwytywanie może zakończyć się po rozłączeniu klienta, który je zainicjował. Można je pobrać po ponownym połączeniu z tym samym identyfikatorem, jeśli usługa OPC UA działała nieprzerwanie. Restart usługi kasuje oczekujące przechwytywania, zapisane wyniki i identyfikatory; koordynuj żądania przechwytywania między klientami.
Parametr | Znaczenie |
|---|---|
OUI | Skonfigurowana dolna granica próbkowania i publikacji |
Interwał próbkowania | Jak często próbkowany jest monitorowany element |
Interwał publikacji | Jak często subskrypcja może publikować powiadomienia z kolejki |
Rozmiar kolejki | Liczba powiadomień zachowywanych dla monitorowanego elementu |
Keepalive | Sygnalizuje aktywną subskrypcję, gdy nie ma powiadomień |
Dla wyświetlania na żywo zacznij od 100–250 ms i rozmiaru kolejki 1. Aby uzyskać najszybszą dostępną aktualizację, ustaw OUI na 10 ms, po zapisaniu połącz się ponownie i zażądaj próbkowania/publikacji 10 ms. W logice klienta używaj skorygowanych interwałów serwera.
Próbkowanie szybsze niż fizyczna częstotliwość akwizycji nie tworzy nowych pomiarów. Opóźnienie sieci, szyfrowanie, obciążenie klienta i ustawienia publikacji wpływają na obserwowany czas odpowiedzi. Server Status / Response Time w UAExpert nie jest interwałem próbkowania ani publikacji subskrypcji.
Zasób | Limit |
|---|---|
SecureChannels | Łącznie 4, w tym nakładanie się połączeń przy ponownym łączeniu |
Sesje | 2 jednocześnie |
Limit czasu sesji | Maksymalny wynegocjowany limit czasu 30 sekund |
Subskrypcje | Łącznie 4; 2 na sesję |
Monitorowane elementy | Łącznie 64; 32 na subskrypcję |
Kolejka monitorowanego elementu | 1–16 wartości na element |
Oczekujące żądania Publish | 4 na sesję |
Kolejka retransmisji | 16 komunikatów na subskrypcję |
Punkty kontynuacji przeglądania | 5 na sesję |
Minimalne próbkowanie/publikowanie | OUI, 10–5000 ms; domyślnie 100 ms |
Operacje Read / Write / Browse | 32 na żądanie |
Operacje RegisterNodes / TranslateBrowsePaths | 32 na żądanie |
Operacje wywołania metod Call | 8 na żądanie |
Operacje monitorowanych elementów | 32 na żądanie |
Są to limity łączne dla całego serwera, chyba że wskazano zakres sesji/subskrypcji. Jeśli kolejka żądań Publish jest pełna, najstarsze oczekujące żądanie otrzymuje BadTooManyPublishRequests, aby nowe żądanie mogło trafić do kolejki. Potwierdzenia i Republish działają na ograniczonej kolejce retransmisji. Limit operacji Write nie czyni zmiennych tylko do odczytu zapisywalnymi.
Zamykaj sesje prawidłowo. Rozłączony klient może pozostawić poprzednią sesję zajmującą miejsce aż do jej wygaśnięcia. Jeśli to obsługiwane, ponownie wykorzystaj/aktywuj istniejącą sesję; w przeciwnym razie poczekaj na wygaśnięcie. Nowa instancja serwera nie może reaktywować sesji sprzed restartu usługi: utwórz sesję, odszukaj przestrzenie nazw i odtwórz subskrypcje. Klienci TCP nieodbierający danych mogą zostać rozłączeni po jednosekundowym limicie wysyłania.
Obejrzyj instruktaż Neutron NS OPC UA na YouTube
Przejdź do CS-NEUTRON Scale, kliknij prawym przyciskiem CaptureStableWeight i wybierz Call.
Wprowadź TimeoutMs 5000 i kliknij Call. Zanotuj zwrócony RequestId.
Otwórz GetCapturedMeasurement i wprowadź ten sam RequestId.
Kliknij Call. Jeśli żądanie oczekuje, ponownie wywołaj GetCapturedMeasurement z tym samym identyfikatorem.
Odczytaj Gross, Net, Tare, HR, Stable, Status, ErrorCode, Unit i Timestamp ze zwróconego wyniku. Podczas oczekiwania pozostaw istniejące żądanie przechwytywania aktywne; nie uruchamiaj wielokrotnie nowych przechwytywań.
Zainstaluj pakiet klienta w środowisku wirtualnym Python:
python -m pip install asyncuaPrzygotuj certyfikat aplikacji klienta OPC UA i klucz prywatny. Jego URI aplikacji w SAN musi odpowiadać poniższemu CLIENT_URI. Zatwierdź certyfikat w Neutron i pobierz certyfikat Neutron jako neutron.der. Zastąp punkt końcowy, nazwę użytkownika i URI klienta swoimi wartościami. Plik klucza prywatnego w tym przykładzie jest dostępny dla klienta Python; nie jest to klucz prywatny Neutron.
import asyncio
import getpass
from asyncua import Client, ua
from asyncua.crypto.security_policies import SecurityPolicyBasic256Sha256
from asyncua.ua.uaerrors import UaStatusCodeError
URL = "opc.tcp://192.168.50.73:4840"
NS_URI = "urn:preciz:cs-neutron:weighing:1"
CLIENT_URI = "urn:example:neutron-client"
FIELDS = ("MeasurementId", "Gross", "Net", "Tare", "HR", "Stable",
"Status", "ErrorCode", "Unit", "Timestamp", "TimeSynchronized")
CAPTURE = False # Set True when logged in with command permission.
async def main():
client = Client(URL, timeout=10)
client.application_uri = CLIENT_URI
await client.set_security(
SecurityPolicyBasic256Sha256,
certificate="client.der",
private_key="client-key.pem",
server_certificate="neutron.der",
mode=ua.MessageSecurityMode.SignAndEncrypt,
)
client.set_user(input("Username: "))
client.set_password(getpass.getpass("Password: "))
async with client:
ns = await client.get_namespace_index(NS_URI)
scale = client.get_node(ua.NodeId("Scale", ns))
def method(name):
return ua.NodeId("Scale." + name, ns)
values = await scale.call_method(method("ReadMeasurement"))
result = dict(zip(FIELDS, values))
print("Current snapshot:", result)
if CAPTURE:
request_id = await scale.call_method(
method("CaptureStableWeight"),
ua.Variant(5000, ua.VariantType.UInt32),
)
deadline = asyncio.get_running_loop().time() + 7
while True:
try:
values = await scale.call_method(
method("GetCapturedMeasurement"),
ua.Variant(request_id, ua.VariantType.UInt32),
)
print("Capture", request_id, dict(zip(FIELDS, values)))
break
except UaStatusCodeError as exc:
if exc.code != ua.StatusCodes.BadWaitingForInitialData:
raise
if asyncio.get_running_loop().time() >= deadline:
raise TimeoutError("Client capture wait expired") from exc
await asyncio.sleep(0.1)
asyncio.run(main())ReadMeasurement wymaga prawidłowych bieżących danych. Wyjątki takie jak BadSensorFailure lub BadOutOfRange muszą być obsługiwane przez aplikację wywołującą. BadTimeout z GetCapturedMeasurement oznacza upływ limitu czasu przechwytywania na serwerze; nie jest to powód do ponownego użycia starego zapisanego pomiaru jako nowego pomyślnego przechwycenia.
Poniższy kod działa w ramach nawiązanego połączenia async with client. Procedura obsługi sprawdza jakość przed użyciem wartości.
class WeightHandler:
def datachange_notification(self, node, value, data):
status = data.monitored_item.Value.StatusCode
if status.is_good():
print(node.nodeid.to_string(), value)
else:
print("Invalid measurement:", status)
ns = await client.get_namespace_index(NS_URI)
gross = client.get_node(ua.NodeId("Scale.Gross", ns))
subscription = await client.create_subscription(100, WeightHandler())
try:
await subscription.subscribe_data_change(gross, queuesize=1)
await asyncio.sleep(30)
finally:
await subscription.delete()Żądany interwał publikacji wynosi 100 ms. W razie potrzeby skonfiguruj próbkowanie monitorowanych elementów przez bibliotekę klienta i uwzględniaj skorygowane wartości serwera.
Używaj bloków klienta OPC UA dostarczonych przez producenta PLC. Rozwiązuj łańcuchowe NodeId według URI przestrzeni nazw producenta. Poniżej przedstawiono sekwencję niezależną od producenta, a nie implementację w konkretnym języku programowania PLC:
CONNECT -> TRUST / AUTHENTICATE -> RESOLVE NAMESPACE URI
-> RESOLVE Scale object and required variable/method NodeIds
-> CREATE SUBSCRIPTION -> MONITOR LIVE DATA
On a stable-result request:
Call Scale.CaptureStableWeight(TimeoutMs := UInt32(5000))
Save returned RequestId
Call Scale.GetCapturedMeasurement(RequestId)
BadWaitingForInitialData -> wait 100 ms and repeat retrieval
Good -> store the eleven fields as one record
BadTimeout -> report no stable result
Other failure -> handle the error; do not use old data
On tare request:
Call Scale.TareCurrent()
Save returned command RequestId
Wait for matching LastCommandId and LastCommandState 3 or 4
On success read Gross / Net / Tare; on failure read LastCommandResultOdwzoruj UInt64 MeasurementId na odpowiedni typ całkowitoliczbowy PLC. Nie wysyłaj liczbowego zamiennika Boolean do SetHRFilter. W PLC/aplikacji uszereguj polecenia i własność przechwytywania stabilnego pomiaru, gdy wielu klientów ma uprawnienia do poleceń.
Objaw / stan | Znaczenie i działanie |
|---|---|
BadCommunicationError / odmowa połączenia | Sprawdź, czy OPC UA jest włączony, adres IP/port punktu końcowego, wybraną trasę sieciową i zaporę. Dziennik uruchomienia musi zawierać |
BadCertificateUntrusted | Oznacz Neutron jako zaufany w kliencie i zatwierdź certyfikat klienta w Neutron lub zainstaluj odpowiedni łańcuch CA |
Błędy czasu/URI certyfikatu | Zsynchronizuj zegary i użyj certyfikatu z prawidłowymi datami oraz skonfigurowanym URI aplikacji klienta |
BadIdentityTokenRejected / BadUserAccessDenied | Użyj prawidłowej nazwy użytkownika/hasła i wymaganego uprawnienia do poleceń; po powtarzających się nieudanych logowaniach odczekaj 30-sekundową blokadę |
BadTooManySessions / osiągnięty limit sesji | Dwa miejsca są zajęte; rozłącz innego klienta lub poczekaj na wygaśnięcie porzuconej sesji |
BadNodeIdUnknown | Ponownie odszukaj URI przestrzeni nazw producenta, sprawdź łańcuchowy NodeId rozróżniający wielkość liter i zgodność oprogramowania układowego/modelu |
BadTypeMismatch | Użyj dokładnego typu argumentu skalarnego z sekcji 7.1 |
BadOutOfRange przy CaptureStableWeight | Limit czasu musi mieć typ UInt32 i wartość 100–60000; zero jest nieprawidłowe |
BadOutOfRange przy SetFilter / SetTare | Użyj FT 1–1023 lub skończonej nieujemnej tary nieprzekraczającej nośności i 1e9 |
BadResourceUnavailable | Miejsce na polecenie lub przechwytywanie jest zajęte; poczekaj na bieżącą operację |
Wywołanie polecenia Call ma stan Good, ale operacja kończy się niepowodzeniem | Sprawdź zgodne LastCommandState i LastCommandResult; Good potwierdziło tylko dodanie do kolejki |
BadNotWritable przy zapisie zmiennych | Zmienne procesowe są tylko do odczytu; użyj obsługiwanej metody |
Przechwytywanie BadWaitingForInitialData | Kontynuuj pobieranie tego samego identyfikatora przechwytywania; serwer czeka na prawidłową stabilną próbkę |
Przechwytywanie BadTimeout | Żadna odpowiednia stabilna próbka nie nadeszła przed upływem limitu czasu |
Przechwytywanie BadNotFound | Użyj zwróconego RequestId przechwytywania; nowsze przechwytywanie lub restart usługi unieważniły stary identyfikator |
Brak ServerCapabilities po zmianie oprogramowania układowego | Odśwież przestrzeń adresową lub połącz się ponownie z nowym projektem klienta, aby usunąć zapisane w pamięci podręcznej wyniki przeglądania |
Puste/nieaktualne pomiary | Pozostaw akwizycję wagi włączoną, sprawdź ErrorCode i stan natywny oraz jakość DataValue |
NodeSet2 opisuje przestrzeń adresową producenta, argumenty metod, referencje i typy na potrzeby narzędzi modelowych offline. Indeksy przestrzeni nazw są lokalne dla tego pliku XML; odszukaj URI przestrzeni nazw w działającym urządzeniu. XML zawiera definicje modelu, a nie bieżące pomiary ani kopię zapasową użytkowników/certyfikatów/ustawień. Interwały w czasie działania i uprawnienia do wykonywania wynikają z aktywnej konfiguracji urządzenia.
Model informacyjny | Rozszerzenia interfejsu |
|---|---|
1.0 | Podstawowe wartości wagowe i metody tarowania/zerowania |
1.1.0 | Metadane pomiaru, identyfikacja, spójny pomiar i przechwytywanie stabilnego pomiaru |
1.2.0 | ADC, wartości FT/FC i SetFilter/SetHRFilter |
1.3.0 | ActiveChannel i SetChannel do odczytu aktywnego kanału i wyboru kanału 1–4. |
URI przestrzeni nazw pozostaje urn:preciz:cs-neutron:weighing:1. Istniejące sygnatury metod zostają zachowane; ReadMeasurement/GetCapturedMeasurement zwracają jedenaście pól. Wybierz oprogramowanie układowe zawierające OPC UA i funkcje wymagane przez integrację. Kompilacja oprogramowania układowego bez OPC UA nie może udostępniać punktu końcowego.
Tak. Wybierz Basic256Sha256 / SignAndEncrypt, używaj nazwy użytkownika i hasła oraz ustanów wzajemne zaufanie do certyfikatów aplikacji. Dostępny jest również niezabezpieczony tryb None/Anonymous.
Wywołaj CaptureStableWeight z limitem czasu UInt32 100–60000 ms, zachowaj RequestId i pobierz jedenastopolowy wynik przez GetCapturedMeasurement z tym samym identyfikatorem. Podczas oczekiwania ponawiaj pobieranie zamiast rozpoczynać kolejne przechwytywanie.
Dla poleceń tarowania, zerowania i filtrów Good potwierdza przyjęcie. Dopasuj LastCommandId do zwróconego RequestId i czekaj na LastCommandState 3 (powodzenie) lub 4 (niepowodzenie).
Przy każdym połączeniu odszukaj urn:preciz:cs-neutron:weighing:1 w NamespaceArray. Model informacyjny do pobrania ma wersję 1.3.0; liczbowy indeks przestrzeni nazw, taki jak 2, jest tylko przykładem.
Polecenia CSCP dla Neutron: struktura komunikatów, ważenie, konfiguracja, liczenie, ważenie kontrolne oraz cyfrowe I/O.
Dokumentacja Neutron Modbus RTU/TCP do integracji z PLC, SCADA i HMI: połączenie, adresowanie, rejestry, kalibracja i sterowanie automatyczną wagą kontrolną.
Potrzebujesz pomocy z oprogramowaniem, łącznością lub obsługą rozwiązania? Opisz problem, abyśmy mogli pomóc w następnym kroku.