1
Ваши вопросы / Re: Ключ защиты.
« : 24 Февраля 2025, 10:08:24 »
Не видно. Ни во внешнем, ни во внутренних портах.
Официальный форум Simple-Scada.
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
var
DateStart, DateEnd: TDateTime;
begin
DateEnd:= Now; // время завершения цикла
DateStart:= IncMinute(DateEnd, -CycleTime.AsInt) // время начала цикла
end.
Есть же round()...Нам надо именно целую часть, а Round() Возвращает число X округленное до ближайшего целого..
Немного не так Int((sunrise*60) - целое, 60 - целое.
Почему-то
sunriseMinutes:=Int((sunrise*60) div 60);
даёт ошибку incopatible types "SINGLE" and "INTRGER"
я так понимаю, потому что операция деления нацело определена в Паскале только для случая, когда по обе стороны от div указаны
целочисленные значения. а у вас переменная sunrise имеет тип SINGLE

Добрый день. Подскажите пожалуйста, может быть есть скрипт для подсчета астрономического восхода и захода солнца? Планируется ли добавление в функционал расписания включение/отключения по заходу/восходу?
)var
sigma,sunriseAngle,sunrise,sunset: Single;
sunriseHour, sunriseMinutes, sunsetHour, sunsetMinutes : Extended;
begin
// склонение солнца в текущий день года
sigma:=(23.45*PI/180)*sin(2*PI*(284+DayOfTheYear(Now))/365);
// для 45 градусов северной широты угол восхода солнца равен
sunriseAngle:= arccos(-tan((45*PI/180))*tan(sigma));
// угол восхода
sunrise:= 12-sunriseAngle/(15*PI/180);
// угол заката
sunset:=12+sunriseAngle/(15*PI/180);
// искомые часы и минуты
sunriseHour:=Int(sunrise);
sunriseMinutes:=Int((sunrise*60) div 60);
sunsetHour:=Int(sunset);
sunsetMinutes:=Int((sunset*60) div 60);
end.
var
sigma,sunriseAngle,sunrise,sunset: Single;
sunriseHour,sunriseMinutes,sunsetHour,sunsetMinutes : Extended;
begin
// склонение солнца в текущий день года
sigma:=(23.45*PI/180)*sin(2*PI*(284+DayOfTheYear(Now))/365);
// для 45 градусов северной широты угол восхода солнца равен
sunriseAngle:= arccos(-tan((45*PI/180))*tan(sigma));
// угол восхода
sunrise:= 12-sunriseAngle/(15*PI/180);
// угол заката
sunset:=12+sunriseAngle/(15*PI/180);
// искомые часы и минуты
sunriseHour:=Int(sunrise);
sunriseMinutes:=Int((sunrise-sunriseHour)*60);
sunsetHour:=Int(sunset);
sunsetMinutes:=Int((sunset-sunsetHour)*60);
end.
Здравствуйте.
Планируется создать серверную версию Simple-Scada 2 для ОС Linux (x86, ARM)?
var
aObject: TM_Object;
i: integer;
begin
{для всего, что на форме есть
GetShapeByName GetFieldByName
GetTextByName GetImageByName
GetLevelByName GetButtonByName
GetPipelineByName GetLineByName
GetValveByName GetTankByName
GetTimeTrendViewerByName GetScaleByName
GetCheckBoxByName GetComboBoxByName
GetTableByName GetCalendarByName
GetScheduleByName GetMessageViewerByName
}
for i:=1 to 999 do
begin
aObject := GetObjectByName('Mobi'+'Field'+IntToStr(i)); // ищем объект с префиксом Mobi
if aObject <> nil then // если объект найден
aObject.Visible := False; // меняем видимость
aObject := GetObjectByName('Mobi'+'Text'+IntToStr(i)); // ищем объект с префиксом Mobi
if aObject <> nil then // если объект найден
aObject.Visible := False; // меняем видимость
// ******* и т.д.
end
end.
aObject := GetObjectByName('Desk'+'Field'+IntToStr(i)); // ищем объект с префиксом Desk

Вот об этом и речь. По какой-то причине происходит задержка передачи.
Скада работает всегда одинаково, как сразу после запуска, так и через любое другое количество времени. При записи значения в тег скада лишь передает на OPC-сервер обновленное значение и никак не влияет на скорость, с которой произойдет запись.
Скорость будет зависеть от того, как быстро OPC-сервер передаст значение на ПЛК и как быстро ПЛК его запишет.От ОРС на ПЛК передача происходит "мгновенно". От SCADA на ОРС тег не приходит (видно предыдущее значение). Как только значение тега в ОРС изменилось - тут же следует реакция ПЛК.
Повторите проблему и пришлите логи OPC-сервера. Также, пришлите конфигурацию OPC-сервера. Возможно разработчик arOPC подскажет, в чем может быть проблема.