Имя: Пароль:
1C
1С v8
Откуда правильнее читать данные OPC DA или Master-Scada?
,
0 rphosts
 
16.01.20
11:11
1. OPC DA 100% (1)
2. Master-Scada 0% (0)
3. Купили готовое стороннее решение. 0% (0)
Всего мнений: 1

Есть потребность тащить в 1С фактические данные по производству, вот только откуда лучше? Из Master-Scada вроде проще, но доп.звено + лицензии... В общем вопрос к тем кто этим занимался - как у вас? Если покупали, то что?
1 rphosts
 
16.01.20
13:39
Апну
2 Сукпун
 
16.01.20
13:57
мы читаем отсюда

OPC DA
3 rphosts
 
16.01.20
15:22
(2) какое-то купленное промежуточное ПО или самописное или как?
4 ДенисЧ
 
16.01.20
15:41
Мммм... Дядя, ты с кем сейчас говорил?
5 rphosts
 
16.01.20
16:08
(4) Эээээ, есть такой раздел для автоматизации: производство.
6 Очевидно
 
16.01.20
16:11
(0) а где вариант "написали своё" ?
7 ДенисЧ
 
16.01.20
16:19
(5) Слышал краем уха...
А вот тех матюков, что ты вытащил в голую совалку - нет.
8 Сукпун
 
16.01.20
16:32
(4) подключаемся через оле напрямую с 1с. Если интересно завтра могу подробнее расписать
9 rphosts
 
16.01.20
16:40
(6) Со станка что-ли? Типа симулятор OPC DA?
10 rphosts
 
16.01.20
16:40
(7) нуууу, я 3 месяца назад и производством не занимался практически от слова совершенно.
11 rphosts
 
16.01.20
16:41
(8) конечно интересно!
12 Очевидно
 
16.01.20
17:47
(9) ну у нас к счастью немного проще : весы, сканеры, термодатчики, анализаторы характеристик. Да, сами на 1С ... и завязали на регл документы в ERP (Про станки незнаю)
13 rphosts
 
16.01.20
18:21
(12) у станков есть промышленные протоколы, есть специальное решение (сервер opc da), который это всё удовольствие опрашивает и пишет, пишет, пишет... Есть master-scada,которая опять много чего умеет в т.ч. может периодически заливать себе данные с opc da, причем можно сохранить данные скалы уже в сравнительно простом формате в бд MS-Sql.
14 rphosts
 
16.01.20
18:23
Скалы= скады
15 fdsa01
 
16.01.20
19:45
Все слова хорошие, правильные... кроме "1С"
16 rphosts
 
17.01.20
01:57
(15) основные данные в 1С, потом, одна система для общей обработки данных это лучше чем две и наконец зачем на клиентах зоопарк софта плодить.
17 Сукпун
 
17.01.20
09:03
(11)    вот  некоторые   примеры


Процедура КоманднаяПанель1НачатьСмену(Кнопка)
    
    СтрС = "ArchestrA.DASSIDirect.2";
    Комп = "ws5203";//где  установлен  OPC server
    мОшибка = "";
    ОРССервер = МодульФункцийОбмена.ПолучитьОРССоединение("OPC.Automation.1",СтрС,Комп, мОшибка);
    Если СтрДлина(мОшибка) > 0 или ОРССервер = Неопределено Тогда
        Предупреждение(мОшибка+" Ошибка подключения к серверу ОРС. Смена не открыта!");
        Возврат;
    КонецЕсли;
    
    НастроитьШапку(Ложь);
    СчетчикПачек = 0;
    ВсегоДатчик2 = 0;
    ВсегоДатчик3 = 0;
    л = 1;
    в1 = 1;
    в2 = 1;
    // сохраненные данные за текущую смену
    ПолучитьДанныеИзРегистра(Подразделение);
    ПолучитьДанныеИзРегистраВыпуска(Подразделение);
    ЗагрузитьИсторию();
    СоздатьтзПанелей();
    
    СоздатьОРСГруппу();    
//    СоздатьОРСГруппуПанель("211",1);    
    СоздатьОРСГруппуДляПечати();    
    СоздатьОРСГруппуВыпуск();
    СоздатьОРСГруппуКарманы();
    ПроверитьТэги();
    ПодключитьОбработчикОжидания("ОбработатьДанныеОРС",2);
    ПодключитьОбработчикОжидания("ОбработатьДанныеОРСПечать",2);
    ПодключитьОбработчикОжидания("ОбработатьДанныеОРСВыпуск1",2);
    ПодключитьОбработчикОжидания("ОбработатьДанныеОРСВыпуск2",2);
    ПодключитьОбработчикОжидания("ОбработатьДанныеКарманов",10);

КонецПроцедуры

Функция ПолучитьОРССоединение(СтрокаСервера,СтрокаПодключения,К,Знач ИнфоОбОшибке) Экспорт
    
    COM = Новый COMОбъект(СтрокаСервера);
    Попытка
    Соединение = COM.Connect(СтрокаПодключения,к);
    Исключение
        ИнфоОбОшибке    = ОписаниеОшибки();
        Возврат Неопределено;
    КонецПопытки;
    
    Возврат COM;
    
КонецФункции


Процедура СоздатьОРСГруппуВыпуск()
    
ПанельКаретки1     = Константы.ПанельКаретки1.Получить();
Если СтрДлина(ПанельКаретки1) = 0 Тогда
    Предупреждение("Не указан номер панели каретки на первой линии для чтения данных ОРС в настройках!");
КонецЕсли;    
ПанельКаретки2     = Константы.ПанельКаретки2.Получить();
Если СтрДлина(ПанельКаретки2) = 0 Тогда
    Предупреждение("Не указан номер панели каретки на второй линии для чтения данных ОРС в настройках!");
КонецЕсли;    

ДатаВ1 = ТекущаяДата()-7*3600;
ДатаВ2 = ТекущаяДата()-7*3600;
ОрсГруппаВыпуск=ОРССервер.OPCGroups;
ОрсГруппаВыпуск.DefaultGroupIsActive=True;
opcGroup = ОрсГруппаВыпуск.Add("MadeDSP1");
MyItems= opcGroup.OPCItems;
СписокТеговВыпуск1.Очистить();

Попытка
// для первой линии
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Quality",     1);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Сорт");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Length",     2);
//    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.DB10207,INT0",                        2);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Длина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Count",         3);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Количество");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_KT",         4);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_НомерЛинии");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Thickness",     5);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Толщина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Width",         6);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Ширина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Order",         7);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Декор");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.DB18,INT96",             8);
//    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_Thickness",     8);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_Тиснение1");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_NPalBot",     9);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_ПаллетаНижняя");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2811.Panel"+ПанельКаретки1+"_NPalTop",     10);
    СписокТеговВыпуск1.Добавить(ОрсПоказатель,НомерПанели+"_ПаллетаВерхняя");
Исключение
    ОрсГруппа.Remove("MadeDSP1");
    Возврат;
КонецПопытки;

opcGroup = ОрсГруппаВыпуск.Add("MadeDSP2");
MyItems= opcGroup.OPCItems;
СписокТеговВыпуск2.Очистить();
Попытка
// для второй линии
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Quality",     1);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Сорт");
//    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"DB10207,INT0",2);//"_Length",        2);
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.DB10207,INT0",                        2);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Длина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Count",         3);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Количество");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_KT",         4);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_НомерЛинии");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Thickness",     5);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Толщина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Width",         6);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Ширина");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Order",         7);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Декор");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.DB18,INT96",             8);
//    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_Thickness",     8);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_Тиснение1");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_NPalBot",     9);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_ПаллетаНижняя");
    ОрсПоказатель =MyItems.AddItem("PLCS7.2812.Panel"+ПанельКаретки2+"_NPalTop",     10);
    СписокТеговВыпуск2.Добавить(ОрсПоказатель,НомерПанели+"_ПаллетаВерхняя");
Исключение
    ОрсГруппа.Remove("MadeDSP2");
    Возврат;
КонецПопытки;

Возврат;
КонецПроцедуры

18 Сукпун
 
17.01.20
09:08
(13)  у  нас  оборудование  монтировали  немцы  и я  тоже сначала  думал  читать  напрямую  с  msssql ,  но  буржуи  категорично  запретили  лезть  к  ним  в  базу . Вот  пришлось    опрашивать  OPC  сервер.
19 ДенисЧ
 
17.01.20
09:08
(18) 1с тоже запрещает лезть напрямую в скуль-базу. Кого-то это останавливает?  )))
20 Сукпун
 
17.01.20
09:10
(19) это  то  да ,  но  при запуске  линии   терялась  бы  их  гарантия
21 rphosts
 
17.01.20
10:04
(17) Спасибо Огромное!
22 rphosts
 
17.01.20
10:08
(12) кста, у нас есть тоже немного "рухляди"... например пресс чуть-ли не 30-х годов. Ничё, поставили лазерный "уровень", как эта дура рабочим органом машет вниз для выпрессовки в штрипсе заготовки, так при пересечении луча событие падает в на сервер OPC... ни современный станок какого-нить  Сименса но всё при желании прикручивается!
23 rphosts
 
17.01.20
10:09
(18) Эх, есть типа как внешние источники данных!
24 rphosts
 
17.01.20
10:10
+ (23) и никаких нарушений
25 Очевидно
 
17.01.20
10:24
(13) а можете в 2-х словах описать что за "Протоколы у современных станков" ? ну вот у меня например есть весы в цехах, есть сервер (Приложение на винде) который их в онлайне опрашивает (По сети) сами весы на каждой контрольнной точке подключены к компу, соответственно данные падают на сервер под опр. Ip который привязан к КТ. + Интерфейс для сотрудника который грубо говоря ставит тележку на весы, выбирает что за сырье, жмёт "Ок" => в Ерп создаётся перемещение/выпуск, с фото фиксацией.
Есть более сложные анализаторы характеристик сырья, там есть программа производителя которая пишет на SQL. в итоге человек подходит к аппарату, кладёт сырье, жмёт кнопку. Анализатор - анализирует, пишет в SQL (Отдельная БД) 1C- опрашивает SQL - и привязывает к конкретной партии конкретные характеристики уже в ERP.
А об какой автоматизации говорите вы ? У нас и станки есть но они однажды настроены и к ним подходят мастера цехов нажимают "Вкл" и дальше всё довольно тривиально. А у вас ? станок включается и меняет режим работы без участия человека ? или про другое ?
26 rphosts
 
17.01.20
10:33
(25) не смогу, железяками и их сочленением занимаются специально обученные люди... пока так, между делом собирал инфу неспешно находил ссылки на книги типа как "написание клиента сервера OPC DA", может оно вам будет полезно, но там вроде С/С++?
27 Очевидно
 
17.01.20
10:41
(26) я так понимаю это типа DLL библиотеки для работы с железом ? ... такие у меня есть (писал под несложные девайсы).
28 rphosts
 
17.01.20
10:43
(27) внутрь пока не глядел, собственно сначала нужно определиться с источником данных, а уж потом можно от этого код плясать