Кроме классических императивных языков это могут быть языки стандарта ГОСТ Р МЭК 61131-3 (IEC 61131-3). Там штук пять языков, но из них текстовые только два, ST = Structured Text, похож на Паскаль, и IL = Instruction Language, что-то вроде ассемблера. Настоящий ассемблер на железке ARM или AVR, а IL искуственный, не как в процессорах. Другие языки графические, это релейные диаграммы, блок-схемы и что-то ещё, что могут проектировать и читать люди не программисты. Всю эту смесь модулей можно загрузить в ПЛК, и будет работать. Внутри ПЛК может работать интерпретатор, который на каждом такте запускает исполнение во всех модулях. Интерпретатор может увидеть, что какой-то модуль работает слишком долго, и прервать, не дать подвесить весь ПЛК, не дать привести к ущербу. Поэтому это популярно. В некоторых моделях ПЛК сделана трансляция в Си вместо интерпретатора, но в отличие от программирования на чистом Си, из конкретного странно работающего ПЛК можно скачать программу, которая на нём крутится, в исходном виде, на языках ПЛК. В графических языках блок-схемы будут расположены в том же месте. Когда я учился на приборостроение, у нас была среда CoDeSys