Есть необходимость реализовать такую вещь:
Как в среде CodeSys при нажатии на кнопку происходит включение выхода 1.
Так и в сторонней программе необходимо сгенерировать некий пакет и послать на контроллер, чтобы включить выход 1.
Сложность в том, как понять что за пакет, чем отличается кнопка 1 от кнопки 2 и по какому протоколу (протоколам это можно сделать)?
Так как мне такое реализовать?
Необходимо на вход (скажем USB порт) подать сигнал, который посылает среда разработки (эмулировать среду)
Так реально сделать?
У меня не получилось - поймал два пакета в программе, их набил и послал в программе прослушки - ноль реакции.
Так данные не защищены?
Спасибо.
То есть вы хотите управлять контролером из своего софта программу серавно заливать в контролер придется из кодесиса а дальше общаетесь с контролером через ModBus или OPC примеры есть на форуме было про написание софта на делфи
Именно такая мне инфа и нужна была.
Буду знать теперь в какую сторону копать.
Я понял что проект в Codesys всё равно необходим.
Более того, если его содержимое измениться, то и вызовы будут другие (в моем случае).
Про мои изыскания.
Пробовал по USB ловить пакеты.
По Codesys подключался и нажимал три моих кнопки.
Эмулировал посылку пакетов через свою программу в тот же порт.
Мною была замечена разница:
Через среду Codesys индикатор горит постоянно, через мою прогу - при посылке пакета горит 10 секунд и гаснет, пока не погаснет - следующий пакет не примет.
В чем может быть проблема?
Примеры во вложении.
Если этот вариант(посылка пакета в порт) добить, он будет лучше чем ModBus или OPC - ничего не надо изучать, программировать, а просто перехватить пакеты в проекте и в своей программе их послать.
Например то, что я наковырял:
нажатие кнопки - последовательность $AA$AA$11$00$01$00$9B$01$50$45$01$00$00$00$04$00$9 8$00$00$00$0100$00$00$01
отжатие кнопки - последовательность
$AA$AA$11$00$01$00$9A$01$50$45$01$00$00$00$04$00$9 8$00$00$00$0100$00$00$00
Спасибо.
При связи постоянно шлет одну и ту же последовательность пакетов.
1. Порт для программирования при использовании кабеля для программирования ждет связи именно с CoDeSys. Если данные приходят "некорректные" он несколько раз проверяет, и отказывает в доступе. По этому и задержка.
2. Можете не использовать ModBus или OPC. На форуме есть пример работы с библиотекой UNM. Вы сами открываете порт, и просто получаете из него данные. А в программе, написанной в CoDeSys эти данные нужным Вам образом разбираете.
Нет, тут проблема немного не та.
Я никоим образом не собираюсь вмешиваться в работу программы контроллера и среды Codesys.
А алгоритм его работы прост -
открытый дискретный вход 1 - открытый дискрытный выход 1
открытый дискретный вход 2 - открытый дискрытный выход 2
открытый дискретный вход 3 - открытый дискрытный выход 3
Разница в том, что я хочу именно с КОМПЬЮТЕРА подать на вход не дискретный сигнал (нет у меня такой аппаратуры), а в любой доступный порт, я выбрал USB, кинуть посылку, которую отсылает Codesys.
Кстати, забыл спросить.
Говорилось про кабель для программирования и про порт для программирования.
Мне как раз необходимо не использовать Codesys, а просто подключиться к ПЛК и включить дискретный порт (любым путем).
По какому порту это можно сделать?
Спасибо.
В программе на CoDeSys заводите переменные, отвечающие за конктертные входы и выходы.
И получая данные их порта (Ethernet будет для Вас я думаю самым оптимальным) в программе присваиваете полученное значение из Ethernet переменной, отвечающей за соответствующий выход.
Надеюсь понятно объяснил...