Zgodnie z normą IEC 61131-3 wyróżnia się pięć niezależnych języków programowania sterowników PLC. Są to kolejno:
- Język drabinkowy LD (LAD) – język graficzny, przypominający schematy elektryczne. Prostota jego interpretacji i diagnostyki znajduje szerokie uznanie w znacznej części aplikacji przemysłowych.
- Język bloków funkcyjnych FBD – drugi język graficzny, przypominający z kolei bramki logiczne znane elektronikom.
- Język sekwencyjny SFC (GRAPH) – ostatni z dostępnych język graficzny. Pozwala na tworzenie złożonych sekwencji składających się z etapów (ang. Step) i warunków przejścia (ang. Transition). Z diagnostyką kodu w języku SFC jest bezproblemowo, lecz w przypadku tworzenia go bez znajomości podstaw – całkowicie odwrotnie.
- Język wysokopoziomowy ST (SCL) – tekstowy język przypomijący składnią język Pascal. Na pokładzie posiada cały szereg instrukcji, z których wygodnie korzysta się w złożonych operacjach matematycznych, przy przetwarzaniu wielowymiarowych tablic czy zmiennych tekstowych. Tworzenie kodu w języku SCL (po nabraniu odrobiny wprawy) jest bardzo przyjemne, lecz jego diagnostyka nie należy do najprostszych.
- Język niskiego poziomu IL (STL) – drugi tekstowy język podobny do Asemblera. Z tytułu niskiego poziomu otrzymujemy cały arsenał narzędzi jakich jak wskaźniki adresowe, lecz opanowanie go do tego poziomu stanowi nie lada wyzwanie. Wiele instrukcji, dostępnych od ręki w języku wyższego poziomu ST wymaga samodzielnej implementacji.
Z punktu widzenia programowania sterowników PLC ciężko jednoznacznie stwierdzić który język programowania jest „najlepszy”. Ze względu na prostotę interpretacji i tworzenia nowego kodu dużą popularnością cechuje się język drabinkowy, krórego możliwości zostały znacznie poszerzone w sterownikach SIMATIC S7-1200/S7-1500 (w porównaniu do rodziny S7-300/S7-400). Tak czy inaczej, nie sposób stworzyć cały projekt w oparciu tylko o jeden język – w przypadku pracy z dużą ilością danych konieczna może okazać się obecność języka tekstowego – zgodnie z normą IEC – języka ST. Taki duet pozwala osiągnąć o wiele więcej.
W przypadku implementacji procesów automatyki dyskretnej bardzo pomocnym może okazać się język SFC, który ułatwia przygotowanie poszczególnych etapów np. linii montażowej. Programowanie w oparciu o „etapy i przejścia” może okazać się zbawienne nie tylko dla programistów (co przełoży się na krótszy czas uruchomienia), ale także dla działów Utrzymania Ruchu – język ten cechuje się bardzo dobrą czytelnością.
Język FBD jest kompatybilny względem języka drabinkowego. Innymi słowy, wszystkie instrukcje dostępne w języku LD odnajdziemy w języku FBD. Z doświadczenia jednak język ten jest mniej popularny.
Na sam koniec zostaje język rozkazów, czyli zgodnie z normą IEC język IL. Oferuje on wiele możliwości, takich jak rejestry adresowe, lecz niskopoziomowa składnia wymaga samodzielnej implementacji podstawowych operacji. Ze względu na wykładnicze tempo rozwoju oprogramowania inżynierskiego stosowanie niskopoziomowych języków staje się coraz bardziej uciążliwe. Nie można oczywiście powiedzieć, że język ten nie jest już wykorzystywany – wręcz przeciwnie! W środowisku przemysłowym jest obecny i ma się całkiem dobrze.