Вход | Регистрация
    1  2   
1С:Предприятие :: 1С:Предприятие 8 общая

Контроллер S7-1200 (Сименс) и 1С ERP 2.5 проблема с подключением

Контроллер S7-1200 (Сименс) и 1С ERP 2.5 проблема с подключением
Я
   Trimax
 
10.08.21 - 09:59
Имеется в наличии данный контроллер (Контроллер S7-1200 (Сименс)), который получает данные с энкодера (допустим метраж). Конечная задача получить данный метраж в 1С. Но задача рухнула на начальной стадии. Не можем подключиться к контроллеру.
Написал код.

Процедура ПолучитьДанные()
    
Попытка
     WinSocket=Новый ComОбъект("mswinsock.winsock");
    Исключение
    Сообщить("Ошибка создания объекта. "+ ОписаниеОшибки());
    Возврат;
    КонецПопытки;
Адрес="192.168.0.100";
Порт="502";
WinSocket.RemoteHost=Адрес;
WinSocket.RemotePort=Порт;
WinSocket.Protocol=0;
WinSocket.Connect();

ОтключитьОбработчикОжидания("ПолучитьДанные");
State=WinSocket.State;
Если State = 6 тогда
ПодключитьОбработчикОжидания("ПолучитьДанные",1);
Сообщить("6");
ИначеЕсли State=7 Тогда
WinSocket.GetData();
Сообщить("7");
Иначе
Сообщить(State);
КонецЕсли;
КонецПроцедуры

На возврате получаем только "6". Т.е. состояние "подключение". Нужно получить "7" - подключен.
Есть программа "MasterOPC Universal Modbus Server" (Демка). Она получает с контроллера необходимую цифру, но на свою форму.

Подскажите куда копать? Может кто-то сталкивался с этой проблемой.
   Мультук
 
1 - 10.08.21 - 10:05
(0) Как куда ? Читать про протокол modbus и его реализацию через tcp/ip
   Trimax
 
2 - 10.08.21 - 10:26
(1) Я написал по прочитанному. Есть проблема. Если знаешь где ошибка и как ее победить - напиши.
   acht
 
3 - 10.08.21 - 10:32
(2) У тебя проблемы с пониманием последовательности инициализации и опроса состояния объекта. Winsock тут не при чем.
   Trimax
 
4 - 10.08.21 - 10:40
(3) Безусловно. Я и спрашиваю, как правильно подключиться к контроллеру из 1С. Более чем уверен, что для этого нужно послать какой-то запрос на контроллер (судя по тому как работает ОРС сервер).
Вот и вопрос - что писать?
   Garykom
 
5 - 10.08.21 - 10:41
(4) микросервис
   Garykom
 
6 - 10.08.21 - 10:42
(5) можно на golang
https://github.com/robinson/gos7
   Trimax
 
7 - 10.08.21 - 10:54
(5) Прослойка? Конечно как "аварийный" вариант можно использовать, но хотелось-бы "напрямую".
По моей логике (возможно извращенной), если ОРС сервер обращается по IP и порту и получает данные, то 1С должна это уметь.
   Garykom
 
8 - 10.08.21 - 10:55
(7) а Новый ComОбъект("mswinsock.winsock") не прослойка?
причем ограниченная виндой
   acht
 
9 - 10.08.21 - 10:56
(4) Еще раз. У тебя проблема в построении потока выполнения кода. Никакой контроллер, никакой TCP тут не причем. С ними проблемы будут позже.

Как ты думаешь, какой статус будет у только что созданного объекта после вызова первого метода?
   Garykom
 
13 - 10.08.21 - 11:00
(0) Сколько платите?

Расшарить для тестов Адрес="192.168.0.100"; Порт="502"; можете?
   NorthWind
 
14 - 10.08.21 - 11:05
(0) телнетом для начала попробовали бы подключиться на порт. И для модбаса врде как утилитки есть, которые позволяют запрос в командной строке написать. https://habr.com/ru/company/advantech/blog/450234/ читали?
   NorthWind
 
15 - 10.08.21 - 11:05
там еще надо различать мастер и слейв... Довольно непростая тема
   Trimax
 
16 - 10.08.21 - 11:06
(13) Озвучь примерную сумму, реальную, ибо платить буду из своего кармана (а дальше буду разговаривать с руководством по факту сделано/не сделано). Расшарить не могу, ибо это ноут, а выход в инет по другой сети. Можно что-то придумать.
   Trimax
 
17 - 10.08.21 - 11:06
(15) вот-вот вот. Тут и засады начинаются...
   acht
 
18 - 10.08.21 - 11:07
(16) Поддерживать сам будешь?
   NorthWind
 
19 - 10.08.21 - 11:08
   NorthWind
 
20 - 10.08.21 - 11:09
имея консоль, можно немного вдуплить в протокол и запросить чего надо. А потом уже 1С ковырять.
   Garykom
 
21 - 10.08.21 - 11:09
(19) чем питон лучше в этом голанг из (6) ?
   Garykom
 
22 - 10.08.21 - 11:10
(21)+ не спорю что можно почти на чем угодно что умеет с tcp/ip
вопрос что удобней из 1С юзать?
для меня например готовые бинарники (в макет 1С засунуть) которые никаких яв, питонов и дотнетов не требуют очень удобно
   NorthWind
 
23 - 10.08.21 - 11:11
(21) это готовая консоль, в ней уже реализована возможность разбираться с прикладной частью и писать запросы чтобы получить данные с конкретных железок. Не лазя в сокеты
   NorthWind
 
24 - 10.08.21 - 11:11
разобравшись с прикладным уровнем - уже можно попробовать пойти ниже
   Garykom
 
25 - 10.08.21 - 11:13
(23) так и в (6) в сокеты не надо, там готовые функции прикладные
   NorthWind
 
26 - 10.08.21 - 11:15
(25) cli - это консоль командной строки. Т.е. можно запросы прямо в комстроке писать.
То что ты предлагаешь - как я понял, либа. Т.е. к ней нужно еще обертку с вызовами сделать, причем на go, которого он не знает, как я понимаю.
   NorthWind
 
27 - 10.08.21 - 11:17
но в любом случае когда есть выбор - это хорошо. Пусть решает. Мне кажется, если чел уж взялся работать с модбасом - консоль-то ему по-любому не повредила бы. Никто же не спорит, хорошо пользоваться консолью запросов 1С или нет.
   Garykom
 
28 - 10.08.21 - 11:21
(26) ага либа с примерами
обертка делается простейше а можно сразу из liteide код писать и компилить/запускать
   Trimax
 
29 - 10.08.21 - 11:29
(18) Суть в следующем. Это /"первая ласточка".
Мы пытаемся внедрить ERP на производстве. на данный момент основная проблема - человеческий фактор: один списывает на бумажку данные, второй заносит к себе в эксельчик, третий переносит в ЕРП. Ошибки при такой схеме неизбежны и валятся со всех сторон. Получаются затыки на переходах. Раздули штат операторов.
Поэтому решили попробовать контроллеры. Нашли "мужичка/знакомого". Он сказал:" ОК, Вот вам энкодер с прикрученым роликом (считает метраж) и контроллер. Вот ОРС-сервер (качайте демку потом покупайте). Данные получены. Все Я умываю руки. 1С - не мое".
Программист, который с ним договаривался, помучавшись месяца три "скоропостижно уволился".
Хотелось-бы все-таки получить с этого оборудования данные в 1С.
И решить для себя, стоит-ли продолжать автоматизировать оборудование прикручивая контроллеры.
Оборудование достаточно старое.
Я, лично придерживаюсь линии продолжения автоматизации, но для этого нужно показать результат, что 1С умеет работать с промышленными контроллерами.
Если все с этим контроллером срастется вэригуд, то готовы к полноценному сотрудничеству, ибо оборудования очень много, разного старого/нового, нашего/импортного. Направление - ткань.
   Garykom
 
30 - 10.08.21 - 11:33
(29) Таки вам нужен спец по этому разному оборудованию
Это обзывается обычно "инженер АСУ ТП"
Ищите такого с опытом интеграции через HTTP REST API, далее в 1С все будет банально
 
 
   Garykom
 
31 - 10.08.21 - 11:35
(30)+ в смысла на 99,9% уверен что есть готовый софт-прокладка, который умеет с одной стороны по интерфейсам железок, а с другой REST API
   shuhard
 
32 - 10.08.21 - 11:36
(29) не нужно работать с modbus напрямую
у Сименса достаточно промежуточного ПО для сбора данных, которое пишет в СУБД.
т.е. правильная архитектура трехзвенка
   shuhard
 
33 - 10.08.21 - 11:36
(31) +100500
   Garykom
 
34 - 10.08.21 - 11:37
   Trimax
 
35 - 10.08.21 - 11:38
(30) Искали, приходили, но все затыкается на 1С. Т.е. могут настроить контроллер, могут запросы к ним послать и прочее, но только на уровне "до 1С".А нам нужен уровень как раз наоборот - танцуя от 1С. Знать как подключить промышленное оборудование к 1С.
   Вадя
 
36 - 10.08.21 - 11:39
Подключаться к контроллеру НЕ НУЖНО
Настрой в WinCC запись нужного тега в UserArhiv и читай значения из таблички SQL-сервера
   Вадя
 
37 - 10.08.21 - 11:40
(+36) тем более, что 1С-ка в реалтайм поток данных по COM-объекту получить не сможет
   HeKrendel
 
38 - 10.08.21 - 11:40
(30) Для этого все производственники имеют выход на спец конторы
   HeKrendel
 
39 - 10.08.21 - 11:40
очень редко кто в штате может себе позволить АСУТПшника
   Trimax
 
40 - 10.08.21 - 11:41
(31) Есть, это ОРС-сервер, но вот как из него достать данные и куда сохранять тоже вопрос.
Поэтому и спрашиваю: если можешь "посмотреть" - сколько желаешь денег хотя-бы за консультации с положительным результатом.
   HeKrendel
 
41 - 10.08.21 - 11:41
(35) Ты не можешь забрать данные из СУБДшки? Или ты не можешь получить состояние?
   Garykom
 
42 - 10.08.21 - 11:41
(35) А вы не заморачивайтесь на 1С
Сейчас http rest самое универсальное
Или любые примеры на любых популярных ЯП
   Вадя
 
43 - 10.08.21 - 11:42
(38) В спец.конторах программистов почти нет, только железячники
Максимум, что они знают - это Step7
   HeKrendel
 
44 - 10.08.21 - 11:43
(43) А как  они настраивают системы управления оборудованием?
   Garykom
 
45 - 10.08.21 - 11:43
(40) Для меня это малоизвестная область, конкретно с modbus дела не имел
Просто интеграций с разными железками по разным протоколам много делал, не так давно ZeroMQ например
   Джордж1
 
46 - 10.08.21 - 11:43
Как имеющий отношение к АСУ ТП - специалисты работают на уровне промышленных протоколов

Насколько помню должен быть OPC сервер - и с ним по OLE работать. 20 лет назад делали так
   Trimax
 
47 - 10.08.21 - 11:43
(34) Спасибо. Интересно. Надо досконально изучить.
   Джордж1
 
48 - 10.08.21 - 11:44
(44)по промышленным протоколам. У контроллеров свое по, на верхнем уровне свое - WinCC. Может и промежуточное быть
   Trimax
 
49 - 10.08.21 - 11:44
(46) О! Здарова! Есть такие Спецы у нас в городе?
   Джордж1
 
50 - 10.08.21 - 11:45
(46) Спецы то может и есть, но это не программисты в нашем понимании
   Trimax
 
51 - 10.08.21 - 11:46
(41) Возвращает состояние "Подключение", а нужно "Подключено". Т.е. он бьётся по одресу, но не подключается.
   Джордж1
 
52 - 10.08.21 - 11:47
(51)И что-то мне очень сомнительно что вот так просто по ip контроллер что-то ответит
   HeKrendel
 
53 - 10.08.21 - 11:47
(51) При интеграции оборудования и учетной системы, всегда не исключай саботаж
   Trimax
 
54 - 10.08.21 - 11:47
(46) Есть сервер. И работает и получает данные. Нужные данные. "MasterOPC Universal Modbus Server" (Демка, ограничение на 32 тега). А как, тогда с него взять данные?
   HeKrendel
 
55 - 10.08.21 - 11:48
(54) Документация то на него у тебя есть?
   Джордж1
 
56 - 10.08.21 - 11:49
(54)Запамятовал я

не по OLE а по DDE к нему подключаться надо он это умеет
   Джордж1
 
57 - 10.08.21 - 11:51
+(56)ODBC тоже этот сервер умеет
   shuhard
 
58 - 10.08.21 - 11:54
(54) с полноценного
https://insat.ru/prices/info.php?pid=124149
Поддержка функции ODBC-клиент.

Благодаря ODBC-клиенту редакции Modbus Universal MasterOPC Server на 10 000, 60 000 и 200 000 тегов может легко обмениваться данными со сторонними приложениями, не поддерживающими технологию OPC, – MES, ERP и BI-системами, различными системами учета и контроля, облачными сервисами и т.д. Для реализации обмена используется технология Open DataBase Connectivity (ODBC).  Это делает старшие (по количеству тегов) редакции Modbus Universal MasterOPC Server удобным инструментом для интеграции отдельных программных продуктов и систем сбора данных в общую информационно-коммуникационную сеть предприятия, создавая таким образом единое информационное пространство
   shuhard
 
59 - 10.08.21 - 11:55
(58) про кряк писать не буду =)
   бегинер
 
60 - 10.08.21 - 11:55
тут посмотри:
https://www.cyberforum.ru/plc/thread1227455-page2.html

еще есть LibNoDave через нее соединяются, может поможет
 
 
   Garykom
 
61 - 10.08.21 - 11:57
https://ftp.owen.ru/CoDeSys3/98_Books/EngineerAsuDesktop.pdf
"Для передачи данных в системы верхнего уровня используются протоколы OPC DA, OPC UA (server), МЭК 60870-5-104 (server) и MQTT."
   Джордж1
 
62 - 10.08.21 - 11:57
(59)там вроде на небольшое количество тегов - бесплатная версия
   Джордж1
 
63 - 10.08.21 - 11:58
(61) это не те верхние уровни что вы думаете
   shuhard
 
64 - 10.08.21 - 11:58
(62) в бесплатной нет ODBC и да,я это понимаю
   Garykom
 
65 - 10.08.21 - 12:00
(63) по MQTT можно подсунуть 1С как систему верхнего уровня
   Trimax
 
66 - 10.08.21 - 12:00
(64) БИНГО !!!
   Garykom
 
67 - 10.08.21 - 12:04
(66) так 1С по ODBC тоже фактически не алё
но примеров много через АДО или ВИД
   Сукпун
 
68 - 10.08.21 - 12:04
(54) А кто  мешает  общаться  с  OPC сереером  через  ОЛЕ  
СтрС = "ArchestrA.DASSIDirect.2";
    Комп = "ws5203";
    мОшибка = "";
    ОРССервер = МодульФункцийОбмена.ПолучитьОРССоединение("OPC.Automation.1",СтрС,Комп, мОшибка);
    Если СтрДлина(мОшибка) > 0 или ОРССервер = Неопределено Тогда
        Предупреждение(мОшибка+" Ошибка подключения к серверу ОРС. Смена не открыта!");
        Возврат;
    КонецЕсли;


   Garykom
 
69 - 10.08.21 - 12:05
(68) некую ocx надо ставить? по сети умеет?
   Сукпун
 
70 - 10.08.21 - 12:14
(69) мы  ставим  обычно  gbda_aut.dll .
   Сукпун
 
71 - 10.08.21 - 12:15
   Trimax
 
72 - 10.08.21 - 12:17
(68) Не "Кто", а "Что". Полное отсутствие знаний в данной области.
Если не затруднит - где почитать с примером полного кода?
   shuhard
 
73 - 10.08.21 - 12:22
(66) 12 тыров и ты получаешь готовое решение, за эти деньги ни один 1С-ник работающую конфу писать не станет
   Garykom
 
74 - 10.08.21 - 12:22
   Garykom
 
75 - 10.08.21 - 12:25
(74) кстати с разрядностью 32/64 это классическая засада в 1С
вроде бы на форуме было какое то решение для этого
   HeKrendel
 
76 - 10.08.21 - 12:33
(72) Поэтому тебе и предложили найти спеца, чтобы он тебе состояния оборудования не по бумажке указывал, а по памяти, или мог быстро глянуть что смотреть
   NorthWind
 
77 - 10.08.21 - 14:37
(72) чет крутовато для таких задач. Сименс, OPC-сервера... неужто нет ничего попроще? Те же Siemens Logo!. Или Controllino. S7-1200 может полноценно управлять нехилым станком.
   HeKrendel
 
78 - 10.08.21 - 14:40
(77) Вплоть до индивидуальной обвязки оборудования и вывод на СКЛ, проблема как обычно в исполнителях ;-)
   Джордж1
 
79 - 10.08.21 - 15:27
(77)Небось старый с объекта достался нахаляву

Из отечественных есть Омен
   SSSSS_AAAAA
 
80 - 10.08.21 - 15:44
"найти спеца"
Эх, может молодость вспомнить... :)
И с Сименсом работал (правда давненько), и с 1с сейчас, и с БД, и прочими ОДиБиСями... Да и как раз вот такие задачки (в смылсе интеграция АСУ ТП и учетных систем) всегда были интересны...
   Trimax
 
81 - 10.08.21 - 15:55
(79) У меня другое предположение, что оборудование "свинтили" с другого производства (возможно списаное) и "впарили" нам. Я тоже очень удивлен данным "выбором", ибо куча контроллеров с более высокими возможностями и беспроблемным подключением к 1С и достаточно дешевых.
   Garykom
 
82 - 10.08.21 - 15:57
Зачем тут контроллер непонятно
Если как понял обычный энкодер, который метраж меряет
   Trimax
 
83 - 10.08.21 - 16:07
(82) Как "напели" продавцы, что типа контроллер можно запрограммировать на определенный список артикулов, и типа выбирать из списка и считать метры, все это он будет запоминать и выдавать в нужный момент в любую форму.
Короче "впарили" и "слились".
Единственный плюс от этой ситуации, что собственник теперь не работает с людьми "с улицы". И знает, что если у кого-то что-то красиво работает, это не совсем факт, что будет работать у тебя.
   Trimax
 
84 - 10.08.21 - 16:08
+ (83) Типа ТСД.
   Garykom
 
85 - 10.08.21 - 16:10
(83) действительно впарили
когда можно было взять намного более новое и вменяемое решение

эти разные ардуинки и малинки же не просто так популярны, а именно тем что по сути могут почти тоже самое только доступно
хотя и не очень надежно, но можно взять и промышленное исполнение
   Джордж1
 
86 - 10.08.21 - 16:11
(83)ВЫ это, оригинал проекта себе сохраните. А то из некоторых контроллеров проект и не сольешь
   breezee
 
87 - 10.08.21 - 16:20
(0) Процедура ПолучитьДанные_1()
    
Попытка
     WinSocket=Новый ComОбъект("mswinsock.winsock");
    Исключение
    Сообщить("Ошибка создания объекта. "+ ОписаниеОшибки());
    Возврат;
    КонецПопытки;
Адрес="192.168.0.100";
Порт="502";
WinSocket.RemoteHost=Адрес;
WinSocket.RemotePort=Порт;
WinSocket.Protocol=0;
WinSocket.Connect();

ПодключитьОбработчикОжидания("ПолучитьДанные2",2);

Процедура ПолучитьДанные2()
    
State=WinSocket.State;
Если State = 6 тогда

Сообщить("6");
ИначеЕсли State=7 Тогда
ф = "";
WinSocket.GetData(ф);
Сообщить("7");
Иначе
Сообщить(State);
КонецЕсли;
КонецПроцедуры


Попробуйте так, сначлаа кннект, а потом через 2 секунды считывание данных
   breezee
 
88 - 10.08.21 - 16:28
(65) без прослойки не пашет напрямую с 1с
   NorthWind
 
89 - 10.08.21 - 18:06
(79) Овен. Ну... такое себе. Не знаю как насчет ПЛК, но у нас были их счетчики импульсов, которые иногда странно себя вели, и лично у меня использовались блоки питания, которые просто при пропадании входного напряжения не запускались без видимых причин (при том что кондеры внутри блока все были живые). В связи с чем я к этим поделиям отношусь настороженно.
   NorthWind
 
90 - 10.08.21 - 18:10
(82) ну, энкодер на выходе выдает тупо импульсы. Которые еще надо чем-то посчитать и перевести в физическую величину.
Контроллер достаточно разумная тема для этой цели, особенно, если датчиков много. Другой вопрос, что сименс штука не самая простая и очень сильно страдающая копирастией - если не брать китайские дженерики под него, то весь оригинал там стоит некислых денег.
Мой лично выбор для таких задачек - контроллино.
   Garykom
 
91 - 10.08.21 - 18:15
(90) угу и чтобы не заморачиваться просто берем малинку/апельсинку и https://raspberrypi.ru/585-udalennoe-upravlenie-sobytiya-enkoder-inkrementalnyy
пример там дурной но суть понятна
эта же малинка и будет накапливать у себя данные и поднимет http-сервис чтобы 1С могла дергать
   Джордж1
 
92 - 10.08.21 - 18:43
(89)есть такое
   NorthWind
 
93 - 10.08.21 - 19:10
(91) есть нюансы. То что там изображено на рисунке - вообще-то не промышленный энкодер, а элемент управления для радиоаппаратуры, для рукояток типа "джог-дайл" и регуляторов громкости. Если вы начнете такой штукой какие-то многометровые полотна измерять, она развалится на второй раз. Промышленный энкодер выглядит по-другому, например, так: https://kipia.ru/catalog/oborudovanie/sredstva-avtomatizatsii/datchiki/enkodery/autonics-e30s/. И из-за того, что он использует промышленную же слаботочку, чаще всего 24В, его выход не особо-то совместим с GPIO на ардуинках и малинках, там еще нужно будет на оптопарах или еще на чем-то развязку присобачивать. А в железках типа контроллины все это уже есть, включая нормальные клеммники под зажим или под винт, а не эти дурацкие иголочки.
   NorthWind
 
94 - 10.08.21 - 19:14
я просто уже через все это проходил. Да, на ардуинке сделать можно, но придется дрочиться с паяльником и разбираться что куда подтянуть чтобы устойчиво срабатывало и не глючило. Если очень охота - то можно, конечно. Но если нужен результат, лучше взять промышленную железку.
   Garykom
 
95 - 10.08.21 - 19:30
(93) (94) так про это и писал
что поиграться ардуинка/малинка дешевые
а в проду уже взять CONTROLLINO и подобные
   Garykom
 
96 - 10.08.21 - 19:31
(94) кстати промышленные аналоги малинки есть?
   Джордж1
 
97 - 10.08.21 - 22:23
(96)А контроллеры тот же Simatic - не оно?
   spectre1978
 
98 - 10.08.21 - 22:57
(96) В такой комплектации, чтобы именно ARM на такой куче периферии, включая HDMI - не попадалось. Да это и избыточно в большинстве случаев. Обычно-то смстема управления железкой имеет иную конфигурацию - чаще всего это не единый комп с ОС, дисплеем и модулем ввода-вывода (хотя встречал и такое), а относительно маломощный ПЛК со своим процом, программой и модулями расширения, и еще один такой же маломощный панельный комп - HMI, который занят только поорисовкой визуализации и прописыванием рецептов в ПЛК. Эти два компонента связаны между собой по какой-нибудь шине.
   Джордж1
 
99 - 10.08.21 - 23:02
(98)Это вы достаточно простую систему описали
   Garykom
 
100 - 10.08.21 - 23:13
(98) да хотелось бы именно ARM и GPIO и HDMI, только в промышленном исполнение в защищенном корпусе
чтобы софт такой же, на дешевых можно было конструировать/отлаживать а в дело пускать уже нормальные
  1  2   

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.