Имя: Пароль:
1C
 
Подключение к OPC-серверу из 1С
,
0 trialex3
 
19.01.22
12:25
Добрый день. Есть у кого опыт работы с ОРС из 1С? Поставили задачу подключиться к станку на котором поднята эта штука, дали айпишник, а дальше в интернете мануалов минимум.
Нашел только вот это https://www.aggsoft.ru/opc-http-gate/opc-ua-da-1c.htm, но с именем тега забрать данные не получается. Пишет:
Нам вернули код: 404
Тело результата: <h1>Not Found</h1>The requested URL /read.json?server=opcserversim.Instance.1&#x26;tag=NS4%7Cstring%7C%7Cvar%7CPLC210%20OPC-UA.Application.GVL.auto_mode was not found on this server.
Может кто скинуть мануал как это все заставить работать или поделиться собственным опытом?
1 Garykom
 
гуру
19.01.22
12:28
(0) там дохрена стандартов https://ipc2u.ru/articles/prostye-resheniya/prosto-o-standartakh-opc-da-i-opc-ua/

от своего сервера мануал ищи на любом ЯП и по аналогии
2 acht
 
19.01.22
12:30
(0) В глаза бросается разница урлов:

/read.json?server=opcserversim.Instance.1&tag=Channel1.Device1.Tag1

И

/read.json?server=opcserversim.Instance.1&#x26;tag=NS

Что это за дивное "x26;", это ты туда еще один ампенсенд, что-ли запихиваешь?
3 acht
 
19.01.22
12:31
Амперсанд, извиняюсь
4 trialex3
 
19.01.22
12:32
(2) Это уже на выходе. В коде
"Запрос = Новый HTTPЗапрос("/read.json?server=opcserversim.Instance.1&tag=NS4|string||var|PLC210 OPC-UA.Application.GVL.auto_mode");"
5 trialex3
 
19.01.22
12:34
Господа. Еще один глупый вопрос. На компьютере с 1С-кой должно ли стоять какое - нибудь доп по? Или если поднять на станке ОРС то 1С сможет по хттп напрямую туда подключаться?
6 trialex3
 
19.01.22
12:36
(4) При этом этот тег точно существует - https://disk.yandex.ru/i/8xm-qVTY4nq_jg
7 fisher
 
19.01.22
12:36
(4) ведущий слэш убери для начала
8 trialex3
 
19.01.22
12:40
(7) Ничего не изменилось.
Еще вопрос - Instance.1 - это предопределенное значение или я должен подставить что-то вместо "1"?
9 fisher
 
19.01.22
12:42
(8) Понятия не имею. Первый раз слышу про OPC. Ты вообще уверен что там развернут http-gateway? Из твоего скриншота можно быть уверенным только в наличии tcp-сервера.
10 trialex3
 
19.01.22
12:45
(9) Не уверен - я его и в глаза то не видел, но программа через которую получаю данные тега называется "OPC UA-HTTP Gateway"
11 fisher
 
19.01.22
12:46
Хотя раз 404 вернуло, то какой-то http-сервер там работает...
12 fisher
 
19.01.22
12:51
Я бы первым делом загуглил how to get data from <модель станка> via OPC UA-HTTP
Если выдача плохая, тогда не по модели а по производителю
13 trialex3
 
19.01.22
12:59
(12) Все самодельное. Даже станок(ну это даже не станок а тестовый аппарат)
14 fisher
 
19.01.22
13:03
(10) Что еще можно попробовать. Если прога таки шлет http-запрос, то можно попробовать перехватить корректный запрос через fiddler (умеет снифить http-трафик), если прога юзает системные настройки прокси. Но судя по скриншоту она его скорее шлет все-таки по tcp. Но может ее и по http заставить можно.
15 Kassern
 
19.01.22
13:07
(4) кодируйте вашу портянку в урл, возможно в этом проблема.
16 arsik
 
гуру
19.01.22
13:08
(13) Ну модель мозгов то на нем можно просмотреть. и уже искать правильный мануал. Его же кто то вам собирал, дергайте их.
17 Kassern
 
19.01.22
13:08
Вот вам в помощь https://infostart.ru/public/1444067/
18 Kassern
 
19.01.22
13:10
Ресурс = КодироватьСтроку("/read.json?server=opcserversim.Instance.1&tag=NS4|string||var|PLC210 OPC-UA.Application.GVL.auto_mode", СпособКодированияСтроки.URLВКодировкеURL);
Запрос = Новый HTTPЗапрос(Ресурс,Заголовки);
19 Kassern
 
19.01.22
13:11
(4) А там реально пробелы в адресе запроса? (PLC210 OPC)
20 arsik
 
гуру
19.01.22
13:12
OPC-HTTP GATEWAY - можете через него работать из 1с, он как раз для этого предназначен.
21 fisher
 
19.01.22
13:15
(20) Так он и без вашего разрешения уже пытается. Только пока плохо получается.
22 trialex3
 
19.01.22
13:15
(19) Это имя тега, которое выдает прога
23 arsik
 
гуру
19.01.22
13:17
(21) Понятно. Я думал он напрямую к станку запросы шлет.
24 trialex3
 
19.01.22
13:17
(19)
Нам вернули код: 404
Тело результата: <h1>Not Found</h1>The requested URL /read.json?server=opcserversim.Instance.1&#x26;tag=NS0%7Cnumeric%7C2256 was not found on this server.
вот вариант другого тега
25 Kassern
 
19.01.22
13:19
(24) вы, перед тем как послать запрос, строку запроса закодировали в урл?
26 trialex3
 
19.01.22
13:25
Ресурс = КодироватьСтроку("/read.json?server=opcserversim.Instance.1&tag=NS0|numeric|2256", СпособКодированияСтроки.URLВКодировкеURL);
  Запрос = Новый HTTPЗапрос(Ресурс);
  Результат = Соединение.Получить(Запрос);
27 fisher
 
19.01.22
13:35
А если просто в строке браузера набрать <имясервера>/read.json
Чего пишет?
28 trialex3
 
19.01.22
13:36
(27) Not Found
The requested URL /read.json was not found on this server.
29 fisher
 
19.01.22
13:37
А если просто
30 fisher
 
19.01.22
13:37
<имясервера>
31 trialex3
 
19.01.22
13:38
(29) аутентификация некоего ОВЕНа
32 fisher
 
19.01.22
13:40
Что еще за ОВЕН? Если он не имеет отношения к ОРС, то ты сейчас пытаешься тыкаться в левый ресурс со своими OPC-запросами.
33 trialex3
 
19.01.22
13:43
(32) хз. Но на айпишнике именно он - Powered by LuCI (Owen) / 2018.07
Собственно у меня информация по поводу серверов следующая:
На контроллерах подняты ОРС сервера по адресам:

opc.tcp://192.и далее
opc.tcp://192.и далее
34 fisher
 
19.01.22
13:45
(33) Но при этом легко может оказаться, что rest-интерфейс OPC либо вообще не поднят, либо поднят на другом порту. Пока что очевидно только, что ОРС сервера доступны по tcp
35 fisher
 
19.01.22
13:52
По-ходу, таки прав был (20). Вам его либо настраивать надо, либо на той машине где он настроен у вас http-шлюз и поднят и надо на нее стучатся, а не непосредственно на opc-сервера. Короче гуглите "Настройка OPC UA-HTTP Gateway"
36 vbus
 
19.01.22
14:04
Проверь доступность сначала ping,
В  PowerShell проверить порт Test-NetConnection -ComputerName 192.168.1.1 -port 80 -InformationLevel Detailed

У меня ответ такой
ComputerName            : 192.168.1.1
RemoteAddress           : 192.168.1.1
RemotePort              : 80
NameResolutionResults   : 192.168.1.1
                          test.local
MatchingIPsecRules      :
NetworkIsolationContext : Private Network
IsAdmin                 : False
InterfaceAlias          : Ethernet
SourceAddress           : 192.168.1.158
NetRoute (NextHop)      : 0.0.0.0
TcpTestSucceeded        : True


На время тестов отключить fireWall чтобы ответы приходили.
37 trialex3
 
19.01.22
14:20
(36) ПРЕДУПРЕЖДЕНИЕ: TCP connect to (192.168.1.1 : 80) failed                                                                ПРЕДУПРЕЖДЕНИЕ: Ping to 192.168.1.1 failed with status: DestinationHostUnreachable


ComputerName            : 192.168.1.1
RemoteAddress           : 192.168.1.1
RemotePort              : 80
NameResolutionResults   : 192.168.1.1
MatchingIPsecRules      :
NetworkIsolationContext : Internet
InterfaceAlias          : Ethernet
SourceAddress           : 192...
NetRoute (NextHop)      : 192...
PingSucceeded           : False
PingReplyDetails (RTT)  : 0 ms
TcpTestSucceeded        : False
38 arsik
 
гуру
19.01.22
14:24
(37) Херня какая то. Это запрос к ПК на котором OPC-HTTP GATEWAY развернуто? Может фаерволл? То тогда это ресурс бы не отвечал ошибкой 404.
39 arsik
 
гуру
19.01.22
14:27
(37) Ты напрямую к станку стучишся из 1с или через OPC-HTTP GATEWAY?
40 trialex3
 
19.01.22
14:28
(38) Нет это я идиот забыл айпишник сервера поставить
ComputerName            : 192
RemoteAddress           : 192
RemotePort              : 80
NameResolutionResults   : 192
MatchingIPsecRules      :
NetworkIsolationContext : Private Network
InterfaceAlias          : Ethernet
SourceAddress           : 192
NetRoute (NextHop)      : 0.0.0.0
TcpTestSucceeded        : True
41 arsik
 
гуру
19.01.22
14:29
Ну судя по этому https://owen.ru/uploads/181/1/tn-ug-owrt-luci-r2.pdf - ты напрямую к контролеру пытаешься подключится. Тебе через OPC-HTTP GATEWAY нужно подключатся. Напрямую контроллер твои запросы не вкурит.
42 fisher
 
19.01.22
14:31
Как я подозреваю, он стучится непосредственно на станки. На каждом из которых работает tcp-сервер OPC и какая-то вебка станка (не имеющая отношения к OPC)
43 fisher
 
19.01.22
14:36
(41) Более того. Судя по (6)(10), шлюз у него уже настроен :)
44 trialex3
 
19.01.22
14:37
(42) Да на каждом станке свой айпи с веб визуализацией
45 fisher
 
19.01.22
14:39
(44) Тебе из 1С нужно стучаться не на адреса станков, а на адрес того компа, где OPC UA-HTTP Gateway работает.
46 fisher
 
19.01.22
14:41
Только сначала через браузер проверить что он хоть что-то отдает.
47 arsik
 
гуру
19.01.22
14:42
(45) Да не слышит он. Я ему уже писал. Нужно громче.
ТЕБЕ ИЗ 1С НУЖНО СТУЧАТЬСЯ НЕ НА АДРЕСА СТАНКОВ, А НА АДРЕС ТОГО КОМПА, ГДЕ OPC UA-HTTP GATEWAY РАБОТАЕТ.
😱
48 fisher
 
19.01.22
14:42
Громче-громче! СНЕ-ГУ-РОЧ-КА!
49 vbus
 
19.01.22
14:51
GEtWay бумажка же есть https://www.aggsoft.ru/opc-http-gate/opchttpgate.pdf
50 trialex3
 
19.01.22
14:54
(47) Слышу слышу я пошел узнавать айпи того компа)
51 trialex3
 
19.01.22
15:01
Ага. Мне ответили что это мне надо на своем компе запустить эту программу.
52 Garykom
 
гуру
19.01.22
15:21
(24) вот "read.json" мне сильно не нравится
найди уже рабочие примеры из postman или curl
53 trialex3
 
19.01.22
15:27
(52) Это пример из мануала эти ребят https://www.aggsoft.ru/opc-http-gate/opchttpgate.pdf
54 Garykom
 
гуру
19.01.22
15:30
(53) 1. opchttpgate.log
2. get-servers.json
55 trialex3
 
19.01.22
15:34
Я понял, что запустив прогу у себя я запущу сервак, на который смогу отправлять хттп запросы, а тот в свою очередь транслировать их в ОРС. Соответственно нужно понять как не в веб интерфейсе указать корректный айпи ОРС сервера и на какой айпи отправлять хттп запросы (моего компа?)
56 fisher
 
19.01.22
15:40
(55) Мануалы раскури сначала. Первым делом его надо его правильно сконфигурировать. Сомневаюсь, что достаточно "запустить прогу".
57 fisher
 
19.01.22
15:56
(55) Через хттп ты будешь к станкам уже по логическим адресам обращаться, а не по айпи. И скорее всего тот же "opcserversim.Instance.1" - пример такого имени.
58 trialex3
 
19.01.22
16:13
(57) Судя по мануалу там настраивать ничего не надо. Или мануал слишком маленький
59 Garykom
 
гуру
19.01.22
16:27
"server=opcserversim.Instance.1" - вряд ли

по аналогии попробуй:
http://127.0.0.1/get-servers.json?host=192.168.1.180
60 trialex3
 
19.01.22
16:56
(59) ничего не доступно. Да и смысл - надо сначала понять как поднять сервер через который обращаться к ОРС
61 trialex3
 
19.01.22
17:46
Разобрался с настройками подключения - неправильный порт был. Первый успех
Нам вернули код: 200
Тело результата: {"command":"","success":true,"processed":0,"data": []}