Повідомлення створено: 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". Когда я менял константу, соответственно менялось и то, что приходило на сервер...
Такое впечатление, что я как-то не так считываю состояние крана, он всегда как будто закрыт. Надеюсь на вашу помощь, уважаемые. Спасибо.
|