Самый простой вариант:
ПЛК поддерживает работу с Modbus TCP.
Пишите логику внутри контроллера, все переменные, через которые хотите взаимодействовать с ПЛК выводите в Modbus TCP Slave.
Из вашего приложения ведете опрос и запись параметров, тем самым управляете вашим ПЛК.