ПЛК программируются на одном из
стандартных языков
С и С++ в этом списке нет, есть
подобия
Знания и методы программирования, которые пригодны для программирования ПК, для ПЛК не годны, там своя специфика.
Связано это с тем исторически, ПЛК заменили собой релейные схемы. А релейная схема работает не в виде исполнения последовательности инструкций (как работает ПК), а в виде переходов между состояниями (читать в вики "автомат с конечным числом состояний"). И для того, чтобы перенести все наработки старой доброй релейной логики (и разработчиков), ПЛК сделали удобным для такого программирования.
Главное, что нужно для этой разработки - практика на реальном железе, то есть стенды, контроллеры и софт для программирования. Чисто теоретически, в каких-то симуляторах можно научиться только пониманию специфики, но вот отладка/наладка - это только реальное железо с реальными глюками.
Цифровая электроника здесь стоит не на первом месте, в ПЛК с точки зрения электроники никто серьезно не полезет (потому что убытки от поехавшего крышей ПЛК могут легко и многократно перекрыть стоимость замены сдохшего). Достаточно обычной науки о контактах и понимания закона Ома.
Чтобы прикинуть свои силы, попробуйте прямо здесь набросать, как вы при помощи ПЛК будете автоматизировать работу простого советского воздушного компрессора, который кто-то захотел подключить к SCADA-системе в своем гараже.
-какие нужны датчики
-какие нужны исполнительные механизмы
-как обеспечить безопасную работу машины при поехавшем крышей ПЛК