plc software engineer