1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Ответить

Автор темы
nae
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 22 авг 2012, 00:53
Имя: David Belov
Страна: Russia
город/регион: Moscow

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение nae »

Подскажите есть ли готовые скрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД ( наша собственная БД MS SQL на сервере)?
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2318
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1644 раза
Поблагодарили: 160 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение keysansa »

Ищите примеры VBScript.
Они есть, но без учета вашей задачи.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

Andreywys
освоился
освоился
Сообщения: 286
Зарегистрирован: 15 сен 2016, 18:47
Имя: Андрей
Страна: Россия
город/регион: Вологда
Благодарил (а): 18 раз
Поблагодарили: 73 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение Andreywys »

Вот пример

Код: Выделить всё

Sub SaveToDB()

Dim TableName, Uname, DBPassword, DataBaseName, SQLServer
Dim SQLConnection
Dim SQLConnectionString
Dim SQLFields,SQLValues
Dim SQLQueryString
Dim SQLCommand
Dim D_Date


DataBaseName = "DBName"
Uname = "user"
DBPassword = "password"
SQLServer = "127.0.0.1\SQLEXPRESS"
TableName = "dbo.table"


Dim TagGroup 
Set TagGroup = HMIRuntime.Tags.CreateTagSet 


TagGroup.Add("HMI_1")
TagGroup.Add("HMI_2")
TagGroup.Add("HMI_3")
TagGroup.Add("HMI_4")
TagGroup.Add("HMI_5")
TagGroup.Add("HMI_6")
TagGroup.Add("HMI_7")
TagGroup.Add("HMI_8")
TagGroup.Add("HMI_9")
TagGroup.Add("HMI_10")
TagGroup.Add("HMI_11")
TagGroup.Add("HMI_12")
TagGroup.Add("HMI_13")
TagGroup.Add("HMI_14")

TagGroup.Read()

D_Date = Now


SQLConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & Uname & ";Pwd=" & DBPassword & ";Initial Catalog=" & DataBaseName & ";Data Source=" & SQLServer & ""
Set SQLConnection = CreateObject("ADODB.Connection")
SQLConnection.ConnectionString = SQLConnectionString
SQLConnection.Open
Set SQLCommand = CreateObject("ADODB.Command")
SQLCommand.ActiveConnection = SQLConnection




SQLFields = " (D_Date, " &_
" field_2, " &_
" field_3, " &_
" field_4, " &_
" field_5, " &_
" field_6, " &_
" field_7, " &_
" field_8, " &_
" field_9, " &_
" field_10, " &_
" field_11, " &_
" field_12, " &_
" field_13, " &_
" field_14, " &_
" field_15)"



SQLValues = " Values('" & D_Date & "','" &_
"" & TagGroup("HMI_1").Value & "','" &_
"" & TagGroup("HMI_2").Value & "','" &_
"" & TagGroup("HMI_3").Value & "','" &_
"" & TagGroup("HMI_4").Value & "','" &_
"" & TagGroup("HMI_5").Value & "','" &_
"" & TagGroup("HMI_6").Value & "','" &_
"" & TagGroup("HMI_7").Value & "','" &_
"" & TagGroup("HMI_8").Value & "','" &_
"" & TagGroup("HMI_9").Value & "','" &_
"" & TagGroup("HMI_10").Value & "','" &_
"" & TagGroup("HMI_11").Value & "','" &_
"" & TagGroup("HMI_12").Value & "','" &_
"" & TagGroup("HMI_13").Value & "','" &_
"" & TagGroup("HMI_14").Value & "') "

SQLQueryString = "INSERT INTO " & TableName & SQLFields & SQLValues

SQLCommand.CommandText = SQLQueryString
SQLCommand.Execute

Set SQLCommand = Nothing
SQLConnection.Close
Set SQLConnection = Nothing

End Sub

Автор темы
nae
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 22 авг 2012, 00:53
Имя: David Belov
Страна: Russia
город/регион: Moscow

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение nae »

Спасибо огроменное!

А еще подскажите сразу с ПЛК s7-1200 можно в БД (MS SQL) писать (черед web-client или еще как)
Готов оплатить помощь специалиста !

Andreywys
освоился
освоился
Сообщения: 286
Зарегистрирован: 15 сен 2016, 18:47
Имя: Андрей
Страна: Россия
город/регион: Вологда
Благодарил (а): 18 раз
Поблагодарили: 73 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение Andreywys »


MaksimNT
освоился
освоился
Сообщения: 262
Зарегистрирован: 31 авг 2012, 06:30
Имя: Фоменко Максим Анатольевич
Страна: РФ
город/регион: гор. Нижнйи Тагил, Свердловской обл.
Благодарил (а): 3 раза
Поблагодарили: 76 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение MaksimNT »

Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2318
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1644 раза
Поблагодарили: 160 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение keysansa »

nae писал(а): 15 май 2019, 12:40 А еще подскажите сразу с ПЛК s7-1200 можно в БД (MS SQL) писать (черед web-client или еще как)
Тоже озаботился этим вопросом некоторое время назад. 1500 умеет. 1200 - нет.
MaksimNT писал(а): 15 май 2019, 13:31 Посмотрите на цепочку решений:
Это не напрямую. Это даже не через "прокси". Минимальное количество шлюзов (TIA RT не катит, не нашел, как vbs по событию от контроллера запускать, плюс, база может находиться на другом железе), это вот в этом видео.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение winb »

keysansa писал(а): 15 май 2019, 13:35 TIA RT не катит, не нашел, как vbs по событию от контроллера запускать, плюс, база может находиться на другом железе
Настройки соединения с использованием ODBC выполняются в ОС ("Источники данных ODBC"), в том числе и для удаленного железа, емнип.
Реакцию на события можно реализовать так: сделать задачу ("Sheduled task") c выполнением по триггеру, цикл опроса - Uppon cange, на событие Update повесить соответствующий скрипт
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2318
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 1644 раза
Поблагодарили: 160 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение keysansa »

winb писал(а): 15 май 2019, 14:54 Реакцию на события можно реализовать так: сделать задачу ("Sheduled task")
Вот тут и "порылась собака". Планировщик - по времени. Не по "событию". По событию нажатия кнопки на экране - да. Но это совсем не то. Еще и от RT.
А вопрос был:
nae писал(а): 15 май 2019, 12:40 сразу с ПЛК s7-1200
Отправлено спустя 3 минуты 38 секунд:
winb писал(а): 15 май 2019, 14:54 Реакцию на события можно реализовать так: сделать задачу ("Sheduled task") c выполнением по триггеру, цикл опроса - Uppon cange, на событие Update повесить соответствующий скрипт
Прошу прощения за резкую критику.
Дайте мне два дня на проверить? В прошлый раз у меня не получилось "c выполнением по триггеру".
Это конечно, не напрямую, но что-то.
Я "ближайший маршрут" нашел на запись всех событий в "журнал", а на стороне сервера уже проверял в базе условия. Но там все равно таймер.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение winb »

keysansa писал(а): 15 май 2019, 15:05 Прошу прощения за резкую критику.
Дайте мне два дня на проверить? В прошлый раз у меня не получилось "c выполнением по триггеру".
Это конечно, не напрямую, но что-то.
Я "ближайший маршрут" нашел на запись всех событий в "журнал", а на стороне сервера уже проверял в базе условия. Но там все равно таймер.
Да на здоровье, для меня этот форум - одно из средств повышения собственной квалификации, знаний и возможность помочь в этом коллегам :) Так что критика даже приветствуется.

v0v
не первый раз у нас
не первый раз у нас
Сообщения: 343
Зарегистрирован: 12 дек 2018, 14:47
Имя: Влад
Благодарил (а): 1 раз
Поблагодарили: 44 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение v0v »

Я так понимаю что в HMI стоит защита от запуска скрипта и не только по событию без участия оператора.
Можно попробовать запустить скрипт при смене экрана из PLC через Area Pointer в connections

Автор темы
nae
здесь недавно
здесь недавно
Сообщения: 11
Зарегистрирован: 22 авг 2012, 00:53
Имя: David Belov
Страна: Russia
город/регион: Moscow

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение nae »

Вопрос чуток изменился: как напрямую читать/ писать из s7-1200 в ms sql ?
Может это использовать ?
https://openplclibrary.com/

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение winb »

S7-1200 - контроллеры не того ценового сегмента и, подозреваю, производительности, чтобы иметь на борту дополнительный функционал по обеспечению работы с SQL с использованием стандартных драйверов. Как было сказано выше, 1500-й программный контроллер такой драйвер имеет, но реализуется он скорее средствами ОС компьютерной системы, где развернут этот программный контроллер.
А указанная библиотека, судя по описанию, используется для связки контроллера и HMI, точнее - заготовки для отображения на HMI состояния поддерживаемого оборудования (клапанов, двигателей, входов-выходов) и предоставления элементов (скорее всего фейсплейтов) для управления им. В общем - не подойдёт.
В любом случае придется организовывать шлюз.

Andreywys
освоился
освоился
Сообщения: 286
Зарегистрирован: 15 сен 2016, 18:47
Имя: Андрей
Страна: Россия
город/регион: Вологда
Благодарил (а): 18 раз
Поблагодарили: 73 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение Andreywys »

А почему бы не сделать базу в контроллере, а результат не записывать в базу MSSQL по "Sheduled task"? У меня производительность, например, вот так считается

Код: Выделить всё

FUNCTION_BLOCK "Productivity"
TITLE =
VERSION : 0.1


VAR
  Front3 : BOOL ;	
  Front1 : BOOL ;	
  BoardsNumber1min : INT ;	
  CurrentDateAndTime : DATE_AND_TIME ;	
  Error : INT ;	
  BoardCount : "CTU";	
  Second : BYTE ;	
  ResetCount : BOOL ;	
  Front2 : BOOL ;	
  BoardsNumber10 : INT ;	
  BoardsNumber9 : INT ;	
  BoardsNumber8 : INT ;	
  BoardsNumber7 : INT ;	
  BoardsNumber6 : INT ;	
  BoardsNumber5 : INT ;	
  BoardsNumber4 : INT ;	
  BoardsNumber3 : INT ;	
  BoardsNumber2 : INT ;	
  BoardsNumber1 : INT ;	
  BoardsNumber10min : INT ;	
  BoardsNumberCounter : INT ;	
  Front4 : BOOL ;	
  LoopCount : INT ;	
  LoopCount2 : INT ;	
  DogCount : "CTU";	
  DogCounter : INT ;	
  Front5 : BOOL ;	
  DogsNumber1min : INT ;	
  DogsNumber10min : INT ;	
  DogsNumber10 : INT ;	
  DogsNumber9 : INT ;	
  DogsNumber8 : INT ;	
  DogsNumber7 : INT ;	
  DogsNumber6 : INT ;	
  DogsNumber5 : INT ;	
  DogsNumber4 : INT ;	
  DogsNumber3 : INT ;	
  DogsNumber2 : INT ;	
  DogsNumber1 : INT ;	
END_VAR
BEGIN
NETWORK
TITLE =Shift Data and Calc Number of boards per 10 min

      A     #ResetCount; 
      FP    #Front4; 
      JCN   _end; 
      OPN   "ProductivityDB"; 
      L     P##BoardsNumber10; 
      LAR1  ; 
      L     9; 
Loop: T     #LoopCount; 

      L     DBW [AR1,P#2.0]; 
      T     DBW [AR1,P#0.0]; 
      L     DBW [AR1,P#50.0]; //DogsNumber
      T     DBW [AR1,P#48.0]; 
      L     16; 
      +AR1  ; 
      L     #LoopCount; 
      LOOP  Loop; 
      L     #BoardsNumberCounter; 
      T     #BoardsNumber1min; 
      T     #BoardsNumber1; 

      L     #DogCounter; 
      T     #DogsNumber1min; 
      T     #DogsNumber1; 


      L     0; 
      T     #BoardsNumber10min; 
      T     #DogsNumber10min; 
      L     P##BoardsNumber10; 
      LAR1  ; 
      L     10; 
Loo1: T     #LoopCount2; 

      L     #BoardsNumber10min; 
      L     DBW [AR1,P#0.0]; 
      +I    ; 
      T     #BoardsNumber10min; 

      L     #DogsNumber10min; 
      L     DBW [AR1,P#48.0]; //DogsNumber
      +I    ; 
      T     #DogsNumber10min; 
      L     16; 
      +AR1  ; 
      L     #LoopCount2; 
      LOOP  Loo1; 
_end: NOP   0; 



NETWORK
TITLE =Board Counter


      CALL #BoardCount (
           CU                       := "DB_Pos150_ID_Number".Piece_in_dog,
           R                        := #ResetCount,
           CV                       := #BoardsNumberCounter);

NETWORK
TITLE =Dog Counter


      CALL #DogCount (
           CU                       := "DB_Shift_reg".Enc_Shift_Pulse,
           R                        := #ResetCount,
           CV                       := #DogCounter);

NETWORK
TITLE =Read time, save number of second


      R     #ResetCount; 

      CALL "READ_CLK" (
           RET_VAL                  := #Error,
           CDT                      := #CurrentDateAndTime);
      LAR1  P##CurrentDateAndTime; 
      L     B [AR1,P#5.0]; 
      BTI   ; 
      T     #Second; 


NETWORK
TITLE =

      A(    ; 
      L     #Second; 
      L     0; 
      ==I   ; 
      )     ; 
      FP    #Front3; 
      S     #ResetCount; 
END_FUNCTION_BLOCK


winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение winb »

Вариантов решения задачи передачи значений масса, но последнее уточнение условий: прямая передача с контроллера в MSSQL

Andreywys
освоился
освоился
Сообщения: 286
Зарегистрирован: 15 сен 2016, 18:47
Имя: Андрей
Страна: Россия
город/регион: Вологда
Благодарил (а): 18 раз
Поблагодарили: 73 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение Andreywys »

Не зря придумали OPC. Используйте их. Попробуйте написать сервис на Sharp7 http://snap7.sourceforge.net/sharp7.html

MaksimNT
освоился
освоился
Сообщения: 262
Зарегистрирован: 31 авг 2012, 06:30
Имя: Фоменко Максим Анатольевич
Страна: РФ
город/регион: гор. Нижнйи Тагил, Свердловской обл.
Благодарил (а): 3 раза
Поблагодарили: 76 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение MaksimNT »

winb писал(а): 17 май 2019, 07:06 ... прямая передача с контроллера в MSSQL
Andreywys писал(а): 17 май 2019, 08:15 Не зря придумали OPC.
Множество решений через OPC, например
на S7-1200 поднять Modbus TCP по
https://cache.industry.siemens.com/dl/f ... 200_en.pdf

и использовать например Lectus Modbus OPC/DDE сервер умеющий писать в MS SQL
http://www.lectussoft.com/opcserver.html

Писать можно:
как по событию из S7-1200 Modbus TCP Master --> OPC Slave --> SQL,
так и циклически из S7-1200 Modbus TCP Slave --> OPC Master (опрос) --> SQL.

Andreywys
освоился
освоился
Сообщения: 286
Зарегистрирован: 15 сен 2016, 18:47
Имя: Андрей
Страна: Россия
город/регион: Вологда
Благодарил (а): 18 раз
Поблагодарили: 73 раза

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение Andreywys »

Есть еще https://www.aggsoft.ru/

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 14 раз
Поблагодарили: 59 раз

Cкрипты или другие способы как передавать данный из WinCC Prof Runtime (TIA Portal v15) на внешнюю БД?

Сообщение winb »

Прямой обмен данными с SQL сервером реализован у этого http://www.proenergo.ru/news/omron-nj-s ... dpriyatiy/, например, контроллера. Описанные выше решения - с использованием промежуточных шлюзов.
Ответить

Вернуться в «WinCC»