Zgodnie z podziałem dokonanym w artykule poprzednim sterowniki PLC można podzielić na kompaktowe i modułowe. W sterownikach kompaktowych wszystkie elementy zawarte są w jednej, trwałej obudowie - już na etapie produkcji producent określił liczbę wejść / wyjść danego typu jakie posiada sterownik, interfejsow komunikacyjnych, itp.. Użytkownik w przypadku konieczności rozbudowy stanowiska obsługiwanego przez sterownik tego typu, ma do wykorzystania dokładnie określoną liczbę wejśc/wyjść, w przypadku gdy liczba ta okaże się nie wystarczająca, konieczna jest wymiana sterownika na nowy, z większą liczbą wejść/wyjść. Inaczej wygląda sytuacja w przypadku sterowników modułowych, w tym przypadku gdy użytkownik potrzebuje wykorzystać większą ilość wejść / wyjść, niż ma obecnie do dyspozycji, wystarczy że do sterownika doda kolejny moduł rozszerzeń - np. modył wejść cyfrowych, dzieki temu może dowolnie rozbudowywać sterownik w miarę zaistniałych potrzeb.
Rys. Możliwości rozbudowy modułowego sterownika PLC serii XGB - w wersji ekonomicznej lub standardowej.
• Moduły sygnałowe - interfejs pomiędzy procesem obsługiwanym przez sterownik, a nim samym. W zależności od wymagań sterowanego procesu można wybierać z pośród modułów wejść / wyjść cyfrowych lub analogowych, rózniących się między sobą liczbą kanałów, zakresem obsługiwanych napięć, prądów, itp.
• Moduły specjalizowane - są to między innymi moduły symulacyjne, służące do sprawdzania poprawności napisanej aplikacji, umożliwiające wymuszanie stanu wejść oraz sygnalizujące stan wyjść.
• Moduły funkcyjne – służą one do wykonywania zadań wymagających dużej szybkości obliczeń lub dynamiki sterowania. W większości przypadków wyposażone są we własny procesor i przetwarzają program niezależnie od CPU. Przykładami takich modułów są: regulator PID, sterownik silnika krokowego i wiele innych.
• Procesory komunikacyjne –znajdują zastosowanie w sieciach przemysłowych, takich jak Profibus, Profinet/Industrial Ethernet, AS-interface oraz jako swobodne programowalne porty szeregowe do komunikacji punkt –punkt.
Zgodnie ze standaredem IEC 61131-3 zatytułowanym "Sterowniki programowalne - Część 3: języki programowania" języki programowani sterowników PLC można podzielić na dwie grupy: języki tekstowe oraz języki graficzne. Do pierwszej grupy zalicza się języki listy instrukcji (Instruction List, IL) oraz tekstu strukturalnego (Structured Text, ST). W drugiej grupie znajdują się natomiast języki schematów drabinkowych ( Ladder Diagram, LD) oraz schematów bloków funkcyjnych (Function Block Diagram, FBD).
Język listy instrukcji - (ang. Instruction List, IL), jezyk niskiego poziomu, zbliżony do asemblera. Program składa się z instrukcji wykonywanych sekwencyjnie, każda instrukcja rozpoczyna się od nowej linii. Instrukcje składają się z dwóch elementów - operatora, określającego rodzaj wykonywanego zadania oraz operandu - stałej lub zmiennej. Język ten umożliwia pełny dostęp do zasobów systemu operacyjnego sterownika.
Język tekstu strukturalnego - (ang. Structured Text, ST), składnią przypomina jezyki C lub Pascal, jest zatem językiem wysokiego poziomu. Umożliwia wykonywanie złożonych procedur obliczeniowych, pętli oraz rozbudowanych instrukcji wyboru. W wypadku języka ST w jednej linii można zamieścić kilka instrukcji, a każda z nich powinna być zakończona średnikiem.
Język drabinkowy - (ang. Ladder diagram, LD), w praktyce bardzo często wykorzystywany język programowania PLC, swoją popularność zawdzięcza podobieństwu do schematów układów stykowo-przekaźnikowych. Podstawowymi symbolami w języku drabinkowym są styki przedstawiajce wartości logiczne sygnałów wejściowych oraz cewki odpowiadające za wysterowanie dyskretnych wyjść sterownika. Ponadto mogą w nim występować funkcje oraz bloki funkcyjne używane do opisu bardziej złożonych funkcji, np. liczniki, timery, komparatory.
Język schematów bloków funkcyjnych - (ang. Function Block Diagram, FBD), pozwala programiście na budowę rozbudowanych programów przy wykorzystaniu gotowych bloków obrazujących funkcje logiczne lub procedury wykonywane przez sterownik. Realizacja programu w języku FDB opiera się na przepływie sygnału z wyjścia jednego bloku funkcyjnego do przyłączonego wejścia bloku nasępnego.
Przygotowany program sterowania musi zostać wysłany do pamięci sterownika programowalnego. Po włączeniu sterownik rozpoczynie przetwarzanie programu, nim jednak to nastąpi najpierw sterownik wykona tzw. czynności inicjalizujące - odpyta stany sygnałów wejściowych a następnie zapisze je w pamięci. Dopiero kolejnym etapem będzie pobranie przez jednostkę centralną rozkazów zapisanych w określonym języku programowania. Na podstawie kodu rozkazu jednostka określa czy mają być pobrane następne elementy rozkazu z pamięci tzw. operandy i w jakiej ilości. Kolejne rozkazy przetwarzane są w taki sam sposób - po zakończniu jednego pobierany jest kolejny, itd. Gdy jednostka przetworzy ostatni rozkaz z pamieci następuje zakończenie cyklu programu, zostają odpowiednio wysterowane wyjścia sterownika, po czym cały proces rozpoczyna się od początku. Takie działanie określane jet pracą szeregowo-cykliczną, co stanowi jedną z podstawowych cech funkcjonowania sterowników PLC. Czas przetwarzania jednego cyklu nosi nazwę czasu cyklu, który jest sumą czasów wykonywania poszczególnych rozkazów. Zatem czas ten zależy od długości programu oraz od prędkości działania jednostki centralnej sterownika.