Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - levchenkoa

Страницы: [1]
1
Ваши вопросы / Re: БД и Отчеты
« : 03 Октября 2018, 16:26:42 »
Сделать два различных отчета, а логику обработки условий переместить на уровень скады. В зависимости от условий формировать один отчет или другой.

2
Ваши вопросы / Re: Погода в проекте
« : 19 Марта 2018, 23:46:14 »
Добрый день, подскажите как можно использовать текущую погоду с какого нибудь сайта в проекте, визуализировать ее и использовать показание погоды для самого проекта?
vyacheslav, Simple-Scada умеет читать текстовые файлы, это дает Вам возможность извернуться как хотите.
https://ru.wikipedia.org/wiki/Обходной_приём
Суть идеи:
Спарсить погоду с нужного сервиса в текстовый файл (любым путем как Вам удобно).
Прочитать файл и отобразить данные в Simple-Scada.

Рабочий пример:
Все действия сводятся просто к копированию файлов в нужные места и регистрации на сайте.

Погоду будем получать с сайта https://openweathermap.org.
Он предоставляет удобный API, данные выдает в JSON.
Просто регистрируемся, получаем свой API key согласно описания https://openweathermap.org/appid.
(appid заработает через 10 минут после регистрации).
Если все ок то по ссылке http://api.openweathermap.org/data/2.5/weather?q=Moscow,RU&appid=APPID&units=metric
Вы увидите что-то типа:

Код
{"coord":{"lon":37.62,"lat":55.75},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":-4.5,"pressure":1010,"humidity":53,"temp_min":-5,"temp_max":-3},"visibility":10000,"wind":{"speed":3,"deg":210},"clouds":{"all":0},"dt":1521484200,"sys":{"type":1,"id":7325,"message":0.0029,"country":"RU","sunrise":1521430374,"sunset":1521474143},"id":524901,"name":"Moscow","cod":200}

Нам нужно просто получить этот json, дальше его обработать и перенаправить нужные нам данные в текстовый файл, который и прочитаем в Simple-Scada.

Для этого нам потребуются две утилиты:

1. jq
 
Цитировать
jq is a lightweight and flexible command-line JSON processor.
https://stedolan.github.io/jq/  <-качаем отсюда

2. curl
Цитировать
cURL — свободная (распространяемая по лицензии MIT), кроссплатформенная служебная программа командной строки, позволяющая взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
https://ru.wikipedia.org/wiki/CURL

https://curl.haxx.se/download.html  <-качаем отсюда

Утилиты копируем куда Вам нравится, я для них в каталоге с проектом создал папку bin
Создаем там же weather.bat с таким содержимым:
Код
echo off
cls
set dirPath=%~dp0
"%dirPath%curl.exe" "http://api.openweathermap.org/data/2.5/weather?q=Moscow,RU&appid=ВАШ_APIKEY&units=metric" | "%dirPath%jq.exe" ".main.temp" > "%dirPath%weather.txt"

BAT файл можно запускать или средствами СКАДЫ или сделать в планировщике задачу.
Я буду запускать средствами Simple-Scada.
1. Добавляю переменную типа DateTime и называю ее WeatherTimer.
2. Создаю скрипт типа Изменились переменные и добавляю в список переменных WeatherTimer.
Код скрипта:
Код: (delphi)
var
aPath:String;
begin                                 
if WeatherTimer.AsDateTime < StrToTime('00:00:01') then begin
        if FileExists('weather.txt', GetProjectPath + 'bin\') then begin
              TextFileOpen('weather.txt', GetProjectPath + 'bin\', fomReset, fcpUTF8);
              txtWeather.Text:=TextFileReadLn+'°C';
              TextFileClose;
              end;
end;
if WeatherTimer.AsDateTime > StrToTime('00:00:10') then begin
   aPath := '"' + GetProjectPath + 'bin\weather.bat"';
   RunApplication(GetClientName, aPath,'');
   TimerStart(WeatherTimer,0); //Сбрасываем таймер
end;
end.



3
АРМ служит для удаленного управления печью с прибором Термодат 16Е6, составления и сохранения программ термообработки, учета циклов термообработки и подготовки отчетов.
При включении АРМ и наличии связи с прибором происходит автоматическое считывание текущей программы регулирования.



В случае непредвиденного выключения АРМ во время выполнения цикла после включения программа предложит оператору продолжить или завершить цикл.



Перед запуском оператор заполняет соответствующую форму и запускает цикл в работу. (Если регулирование включено непосредственно с прибора, то заполнение формы происходит автоматически).



У оператора есть возможность составления плана работы.



В случае обрыва связи во время выполнения цикла АРМ предложит оператору завершить цикл для обеспечения достоверности данных в отчете.



Создание, редактирование и сохранение программ термообработки происходит в редакторе.  Программа может быть считана с прибора или создана вручную.



Отредактированную или выбранную из базы программу можно загрузить в Термодат.



На вкладке "Отчеты" оператор может просмотреть все выполненные и сохраненные циклы. Оператору доступен ряд фильтров для выборки данных из базы (по дате, по имени детали, по номеру садки)



Доступно несколько видов отчетов.



Раздел настройки.



На вкладке "Администрирование" доступно управление таблицами в БД, создание резервной копии программ, восстановление из резервной копии и копирование на USB-носитель.



Просмотр каталога с резервными копиями.



Все сообщения о состоянии и последовательности работы АРМ сохраняются в журнал.


4
Добрый день!
 Прошу Вас помочь в написании простого скрипта. Имеется связка ПЛК(сервер)-GPRS модем- на объекте ,GPRS модем-Lectus-SimpleScada2 в диспетчерской. Задача - отследить разрыв связи на стороне ПЛК. То есть, необходимо чтобы СКАДА записывала в ПЛК периодически меняющуюся переменную типа boolean. На стороне ПЛК организовать проверку не составляет проблем, а вот со скриптами пока не разберусь... Спасибо!!
Cкрипт с условием "Прошла секунда":
Код: (delphi)
begin
  Tag.Value := InverseBit(Tag.Value, 0);
end.

5
Здравствуйте.
Отдельной процедуры для закрытия приложения нет. Можно создать .bat-файл который выполняет закрытие приложения и запускать его из скады через RunApplication.
Использую для этого nircmd.
http://www.nirsoft.net/utils/nircmd2.html
Необходимо добавить путь к nircmd.exe  в переменную Path Системных переменных или просто скопировать в каталог, который уже там обозначен (Например: C:\Windows)
Вызов из скрипта:
Код
begin
  RunApplication(GetClientName, 'nircmd.exe'  , 'killprocess notepad.exe');
end.

Страницы: [1]