УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Отправка по TCP состояния крана


Автор Сообщение
Сообщение создано: 23. 12. 2019 [18:38]
ivan
Иван Иванов
Создатель темы
Зарегистрирован(а) с: 23.12.2019
Сообщения: 2
Здравствуйте, уважаемые.

Уже долго бьюсь над, казалось бы, элментарной задачкой - есть у меня в BlockCalc шаровый кран (взял из AGLKS), нужно отправить на сервер состояние этого крана. Создал выходной транспорт, к серверу подключается, создал контроллер логического уровня, который использует следующий шаблон:

req = SYS.DAQ.BlockCalc.WellData.g_bc1.st_open.get();
SYS.Transport.Sockets.out_sendData.messIO(req,"TCP");

Открываю/закрываю на мнемосхеме кран - на сервер всегда приходит "0".

Подскажите, пожалуйста, куда копать/что почитать? Спасибо.

[Сообщение редактировалось 1 раз(а), в последний раз 23.12.2019 в 18:40.]
Сообщение создано: 23. 12. 2019 [19:35]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
"ivan" wrote:

req = SYS.DAQ.BlockCalc.WellData.g_bc1.st_open.get();
SYS.Transport.Sockets.out_sendData.messIO(req,"TCP");

Документацию читаем, протокол должен быть прикладной в OpenSCADA, а не транспортный "TCP", которым сам транспорт и является!

Learn, learn and learn better than work, work and work.
Сообщение создано: 24. 12. 2019 [08:16]
ShuraF
Aleksandr Fenogentov
Зарегистрирован(а) с: 08.08.2019
Сообщения: 50
Если правильно сам понял, то попытаюсь пояснить

TCP в вашем контексте - это "дырочка" куда вы будете "пихать" свои пакеты (например ip: 100.10.1.1 port:502)
Но пакеты еще над составить, а этим занимаются Транспортные протоколы: Modbus, HTTP или Пользовательский протокол, который сами придумаете и реалзуете
Сообщение создано: 30. 12. 2020 [15:36]
ivan
Иван Иванов
Создатель темы
Зарегистрирован(а) с: 23.12.2019
Сообщения: 2
Здравствуйте, Роман, Александр!

Спасибо за оперативные ответы. Пользуясь случаем поздравляю вас с наступающими праздниками, здоровья Вам и Вашим близким!

Посмотрел примеры, переделал код шаблона для использования HTTP, теперь он выглядит так:

text = SYS.DAQ.BlockCalc.WellData.g_bc1.st_open.get().toString();
req = SYS.XMLNode("POST");
req.setText(text);
SYS.messWarning("test", text);
SYS.Transport.Sockets.out_sendData.messIO(req,"HTTP");

На всякий случай добвил ещё messWarning, чтобы сразу было видно то, что мы собираемся отправлять, в протоколе на мнемосхеме.
Теперь на сервер всегда приходит "false" и в протоколе тоже всегда "false", независимо от состояния крана. :cry:

А до этого, когда я тестировал отправку на сервер, код выглядел так:

req = 2;
SYS.Transport.Sockets.out_sendData.messIO(req,"TCP");

и на сервер, что характерно, приходило "2". Когда я менял константу, соответственно менялось и то, что приходило на сервер...

Такое впечатление, что я как-то не так считываю состояние крана, он всегда как будто закрыт. Надеюсь на вашу помощь, уважаемые. Спасибо.



16245