Можно ли самому изучить программирование логических контроллеров?
ПЛК программируются на одном из стандартных языков 

С и С++ в этом списке нет, есть подобия

Знания и методы программирования, которые пригодны для программирования ПК, для ПЛК  не годны, там своя специфика. 

Связано это с тем исторически, ПЛК заменили собой релейные схемы. А релейная схема работает не в виде исполнения последовательности инструкций (как работает ПК), а в виде переходов между состояниями (читать в вики "автомат с конечным числом состояний"). И для того, чтобы перенести все наработки старой доброй релейной логики (и разработчиков), ПЛК сделали удобным для такого программирования.

Главное, что нужно для этой разработки - практика на реальном железе, то есть стенды, контроллеры и софт для программирования.  Чисто теоретически, в каких-то симуляторах можно научиться только пониманию специфики, но вот отладка/наладка - это только реальное железо с реальными глюками.

Цифровая электроника здесь стоит не на первом месте, в ПЛК с точки зрения электроники никто серьезно не полезет (потому что убытки от поехавшего крышей ПЛК могут легко и многократно перекрыть стоимость замены сдохшего). Достаточно обычной науки о контактах и понимания закона Ома.

Чтобы прикинуть свои силы, попробуйте прямо здесь набросать, как вы при помощи ПЛК будете автоматизировать работу простого советского воздушного компрессора, который кто-то захотел подключить к SCADA-системе в своем гараже. 

-какие нужны датчики
-какие нужны исполнительные механизмы
-как обеспечить безопасную работу машины при поехавшем крышей ПЛК
Почитайте CoDeSys
Нужны языки ST (аналог Паскаля/С), графические CFC и SFC.
Есть ещё 3 версия Codesys, там можно применять объекты и интерфейсы (ООП).