Sterowniki PLC zwykle kojarzą się z wejściami i wyjściami cyfrowymi, jednak w praktyce bardzo często potrzebujemy obsłużyć także sygnały analogowe. Dzięki nim możliwe jest płynne sterowanie procesem – na przykład regulacja prędkości silnika.
W tym artykule pokażę Ci, jak w sterowniku Finder Opta wykorzystać moduł rozszerzeń analogowych, aby odczytywać sygnał z potencjometru i sterować falownikiem w zakresie 0–10 V.
👉 Pełne omówienie znajdziesz również w filmie na YouTube:
1. Stanowisko testowe i schemat podłączeń
Do testów przygotowałem:
- sterownik Finder Opta,
- moduł rozszerzeń Analog Expansion,
- potencjometr 10 kΩ podający napięcie 0–10 V,
- falownik sterujący silnikiem trójfazowym.
Wejście analogowe AI1 odbiera sygnał z potencjometru, natomiast wyjście analogowe O1 przekazuje napięcie sterujące do falownika. Dzięki temu możemy płynnie regulować prędkość obrotową silnika.


2. Konfiguracja wejść i wyjść analogowych w CODESYS
Po dodaniu modułu rozszerzeń w drzewie projektu CODESYS:
- wejścia ustawiamy jako Analog Input 0–10 V,
- wyjścia ustawiamy jako Analog Output 0–10 V.
Dzięki temu potencjometr generuje sygnał wejściowy, który jest przetwarzany i przekazywany do falownika.

3. Program w języku LAD
Na początku przygotowałem prosty program w LAD. Zawiera on klasyczny układ start-stop z podtrzymaniem oraz przeniesienie wartości z potencjometru na wyjście analogowe.

Dzięki temu uzyskujemy prosty układ, który pozwala uruchomić i zatrzymać silnik oraz sterować jego prędkością potencjometrem.


4. Skalowanie wartości analogowych – kod w ST
Wartość z potencjometru w CODESYS ma zakres 0–10000 (odpowiadający napięciu 0–10 V). Aby ułatwić interpretację, napisałem prosty blok funkcyjny FB_AnalogScaling w języku ST.
FUNCTION_BLOCK FB_AnalogScaling
VAR_INPUT
dwRawValue : DWORD; // Surowa wartość z wejścia analogowego
fInputMin : REAL; // Minimalna wartość wejściowa (np. 0)
fInputMax : REAL; // Maksymalna wartość wejściowa (np. 10000)
fOutputMin : REAL; // Minimalna wartość wyjściowa (np. 0.0)
fOutputMax : REAL; // Maksymalna wartość wyjściowa (np. 100.0)
bEnable : BOOL; // Włączenie skalowania
END_VAR
VAR_OUTPUT
fRawValue : REAL; // Wartość surowa jako REAL
fVoltageValue : REAL; // Wartość napięcia (0-10V)
fScaledValue : REAL; // Przeskalowana wartość (np. 0-100%)
wRawValueWord : WORD; // Wartość surowa jako WORD
bError : BOOL; // Flaga błędu
sErrorMsg : STRING; // Komunikat błędu
END_VAR
VAR
fInputRange : REAL; // Zakres wejścia
fOutputRange : REAL; // Zakres wyjścia
END_VARWewnątrz bloku przeliczamy wartość surową na procenty lub na wolty:
// Reset błędów
bError := FALSE;
sErrorMsg := '';
// Konwersja DWORD na REAL (zawsze)
fRawValue := DWORD_TO_REAL(dwRawValue);
wRawValueWord := DWORD_TO_WORD(dwRawValue);
// Sprawdzenie czy skalowanie jest włączone
IF NOT bEnable THEN
fScaledValue := fOutputMin;
fVoltageValue := 0.0;
RETURN;
END_IF
// Obliczenie zakresów
fInputRange := fInputMax - fInputMin;
fOutputRange := fOutputMax - fOutputMin;
// Sprawdzenie poprawności parametrów
IF fInputRange <= 0 THEN
bError := TRUE;
sErrorMsg := 'Błędny zakres wejścia (InputMax <= InputMin)';
fScaledValue := fOutputMin;
fVoltageValue := 0.0;
END_IF
// Przeskalowanie liniowe: y = (x - x_min) * (y_max - y_min) / (x_max - x_min) + y_min
fScaledValue := (fRawValue - fInputMin) * fOutputRange / fInputRange + fOutputMin;
// Ograniczenie do zakresu wyjściowego
fScaledValue := LIMIT(fOutputMin, fScaledValue, fOutputMax);
// Konwersja na wartość napięcia (0-10V)
fVoltageValue := (fRawValue - fInputMin) * 10.0 / fInputRange;
fVoltageValue := LIMIT(0.0, fVoltageValue, 10.0);Dzięki temu możemy łatwo korzystać z wartości w procentach (np. 0–100%) lub w Voltach (0–10 V).

5. Szablon projektu do pobrania
Żebyś mógł od razu uruchomić ten przykład u siebie, przygotowałem pełny projekt w CODESYS, który zawiera:
- program w LAD z obsługą start/stop i przeniesieniem wartości,
- blok funkcyjny FB_AnalogScaling w ST,
- przykładową deklarację zmiennych,
- konfigurację wejść i wyjść analogowych,
- schemat połączeń.
📂 Pobierz szablon projektu CODESYS:
6. Podsumowanie
Dzięki wejściom i wyjściom analogowym w sterowniku Finder Opta możesz w prosty sposób zrealizować płynną regulację prędkości silnika. Wystarczy:
- podłączyć potencjometr i falownik,
- skonfigurować moduł analogowy w CODESYS,
- wykorzystać prosty program w LAD,
- dodać blok skalowania w ST dla czytelnych wartości.
Zachęcam Cię do pobrania szablonu i samodzielnego przetestowania działania.
👉 A cały proces krok po kroku możesz obejrzeć w filmie:







