PDA

Просмотр полной версии : Визуализация - взаимодействие с другим приложением на PC



SuP
26.07.2014, 15:09
Подскажите, пожалуйста, каким образом возможно организовать взаимодействие визуализации CoDeSys v2 и сторонней программы, от которой нужно принимать команды на включение (несколько логических переменных), а также отдавать ей несколько значений? Это должен быть некий API, который будет документирован и отдан клиенту.

Возможно ли такое вообще стандартными средствами? Необходимо принять решение об использовании визуализации средствами CoDeSys v2, до этого мы использовали свой софт и OPC-сервер, работающий с контроллером по Modbus TCP.

Yegor
27.07.2014, 21:01
Я по Modbus TCP без OPC-серверов нестандартную визуализацию делал.

Пять регистров у меня было выделено на передачу команд контроллеру, а остальные — на передачу показаний, состояний и прочего на компьютер от контроллера. Из первых пяти регистров (0, 1, 2, 3, 4) нулевой был отведён под код команды, а 1-4 — под аргументы. Скажем, если оператор хотел открыть клапан, то сначала в регистр 1 записывался код клапана, а потом в регистр 0 — код команды на открытие клапана. Код команды 0 означал бездействие. Если программа контроллера на очередном проходе обнаруживала ненулевой код команды, то выполняла соответствующее команде действие с аргументами и уже сама обнуляла регистр кода команды. Так обеспечивалась однократность выполнения команды и актуальность аргументов на момент её выполнения. Ну а остальные регистры просто считывались визуализацией по 30 раз в секунду и шли на отображение и регистрацию. Вот кусок релевантного кода: http://pastebin.com/EGgjqeQz

Расширяемость при таком подходе прекрасная, регистров расходуется разумный минимум. В моём случае визуализация делалась в Visual Studio на связке C#/WPF/XAML. Библиотека модбаса — NModbus. С ПЛК160 работало без сбоев и задержек. Если бы меня сейчас попросили сделать управление той установкой, скажем, с андроида и не трогая программу контроллера, то сделал бы без проблем.

SuP
28.07.2014, 15:23
Спасибо за отклик! У меня примерно так же реализовано, только инициатива по изменению регистров может исходить как от программы визуализации, так и от контроллера, поэтому есть соответствующие переменные для разных направлений. Но я считаю, что некрасиво отдавать стороннему клиенту возможность писать по модбасу сразу в контроллер, тем более, что я могу что-то поменять в адресации, например. Я предполагаю создание какого-то API для заказчика, который, насколько возможно, останется для него неизменным, чтобы он мог писать свой вспомогательный софт для моей программы визуализации. Но саму визуализацию была мысль сделать средствами CodeSys. Вот, пытаюсь выяснить, правильное ли это направление.