i2GR писал(а):Или он все равно "тянуть" будет?
тянуть не будет , но вот и звуков наката тоже не будет , косяк такой, только стыки (сами удары)
i2GR писал(а):Или он все равно "тянуть" будет?
Не обязательно, я помню, как через нашу станцию ходили составы лок+лок+вагоны+лок+лок+вагоны. Тогда ещё 2ТЭ10л использовались. В таком случае надо, чтобы тянули все 4 лока, а "сотрудничество" по переданных данных было только между парами.i2GR писал(а):...в случаях если между локами вагон, то второй лок в середине надо делать IsDeadEngine в сценарии.
function Timer (data_1, data_2, data_3)
if type(data_1) == "number" then
for k,v in pairs(TabTimerData) do
if type(v) ~= "string" and TabTimerStatus[k] then
v = v - data_1
if v <= 0 then
TabTimerData[k] = "timeroff"
else
TabTimerData[k] = v
end
end
end
return
end
if type(data_1) == "string" then
if not data_2 then
if TabTimerData[data_1] == "timeroff" then
return true
else
return false
end
elseif data_2 == "ctrl" then
return TabTimerData[data_1]
elseif data_2 == "clear" then
TabTimerData[data_1] = nil
elseif data_2 == "pause" then
TabTimerStatus[data_1] = false
elseif data_2 == "run" then
TabTimerStatus[data_1] = true
elseif not TabTimerData[data_1] or TabTimerData[data_1] == "timeroff" or data_3 == "restart" then
TabTimerData[data_1] = data_2
TabTimerStatus[data_1] = true
end
end
end
function SetValueDelay(argument, target, time, method, tab_curve)
if type(argument) == "string" then
ControlNameObj[argument] = {}
ControlNameObj[argument].control_name = argument
ControlNameObj[argument].start_parameter = Call("*:GetControlValue", argument, 0)
ControlNameObj[argument].end_parameter = target
ControlNameObj[argument].time = time
ControlNameObj[argument].full_time = time
ControlNameObj[argument].method = method
if method == "curve" then
ControlNameObj[argument].curve = tab_curve
end
record_mark = true
else
if record_mark then
local count = 0
for k, val in pairs (ControlNameObj) do
val.time = val.time - argument
if val.time <= 0 then
if val.method == "trigger" then
Call("SetControlValue", k, 0, val.end_parameter)
end
ControlNameObj[k] = nil
else
local diapasone = val.end_parameter - val.start_parameter
local factor = val.end_parameter - diapasone * val.time/val.full_time
if val.method == "linear" then
Call("SetControlValue", k, 0, factor)
elseif val.method == "curve" then
factor = curve_yval(val.curve, val.time/val.full_time)
Call("SetControlValue", k, 0, val.end_parameter - diapasone * factor)
end
end
count = count + 1
end
if count == 0 then
record_mark = false
end
end
end
end
function curve_yval(curve, x)
local low, high_index, high, last
for i, v in ipairs(curve) do
if x <= v.x then
high = v
high_index = i
break
end
last = i
end
if not high then
return curve[last].y
end
low = curve[high_index - 1]
if not low then
return high.y
end
return low.y + (high.y - low.y) * (x - low.x) / (high.x - low.x)
end
На графике четко видно, что в то время, как частота вращения двигателя начинала увеличиваться после переключения позиции
Неправильно. И ток, и напряжение зависят от механической мощности двигателя и нагрузки (т.е. омического сопротивления ТЭДов за вычетом ЭДС индукции из подаваемого напряжения из-за вращения их якорей), их соотношением управляет объединённая система автоматического регулирования (уменьшающая возбуждение с увеличением подачи топлива если дизель "глохнет" и увеличивая возбуждение с уменьшением подачи топлива, если дизель разгоняется). Так что ничего сверхестественного в модели физики RW, что дизель мгновенно меняет свою мощность (именно из-за этого скачки) не меняя оборотов, нет. А вообще "обороты" определяют только ограничение на регулирование (больше оборотов - больше воздуха - можно больше или полнее сжигать топливо за такт), хотя тут ещё играет некоторую роль и обороты турбонаддува (т.к. когда топлива мало, воздух на выходе холоднее и слабее раскручивает турбину, потому на 1000 оборотах на холостом ходу в дизель поступает меньше воздуха, чем под нагрузкой).ток зависит от напряжения генератора, напряжение - от скорости вращения якоря (= скорости вращения двигателя)
Дело в том, что я хочу сделать алгоритм, который бы одинаково подходил для всех систем. Если привязать тяговое усилие к скорости вращения, то будет неважно, насколько быстро происходит приращение оборотов, программа будет корректно просчитывать любое приращение.Skif писал(а):У локомотивов с пневматичеким управлением обороты меняются скачком, и существующий метод дает достаточно точный результат.
Пренебречь не получилось, очень чувствуется рассинхронизация при переводе контроллера. А функция плавного перевода не подошла, потому что система получилась очень громоздкой, к тому же надо синхронизировать прирост скорости вращения с приростом тяги, отладка очень проблемная. Ну и при резкой смене позиций все равно присутствуют рывки, хоть и сглаженные.Skif писал(а): На самом деле, ступенька на практике вообще незаметна из-за кратковременности процесса в целом. Так что я считаю, что ей нужно либо пренебречь, либо использовать для Regulator вместо SetControlValue одну из разработанных нами с тобой функций плавного перевода на требуемое значение.
Не применяю категорически. Сейчас у меня в конфиге его нет вообще. При высоких скоростях, если применена скриптованная тяга, его значение снижается до дефолтного минимума - это уже откровенная ложь в показаниях.Skif писал(а):Параметр RPM в TS вообще исключительно декоративный - единственная польза от него, это хоть какой-то расчет расхода горючего.
Так что же неправильно? Если генератор сильнее раскрутить, он может выработать больший потенциал на выходе. Разве нет? Я понимаю, что чем ниже сопротивление нагрузки, тем больше просядет напряжение. Понимаю, что выходное сопротивление генератора также влияет на вырабатываемое под нагрузкой напряжение. Естественно, ток будет обратно пропорционален сопротивлению нагрузки. Но я эти моменты не затрагиваю, так как это всё выходит за рамки поднятого вопроса.TRam_ писал(а):Неправильно. И ток, и напряжение зависят от механической мощности двигателя и нагрузкиток зависит от напряжения генератора, напряжение - от скорости вращения якоря (= скорости вращения двигателя)
Это если рассматривать работу дизеля под нагрузкой и без. Опять-таки, я говорю совершенно не об этом.TRam_ писал(а):Так что ничего сверхестественного в модели физики RW, что дизель мгновенно меняет свою мощность (именно из-за этого скачки) не меняя оборотов, нет
Если система регулирования будет снижать возбуждение, то нет, можно получить не только больший, но и постоянный потенциал вне зависимости от оборотов, и даже его падение.Если генератор сильнее раскрутить, он может выработать больший потенциал на выходе. Разве нет?
ну так и должно быть. Рейки подачи топливного насоса будут смещены системой регулирования достаточно быстро, и "мгновенный набор мощности" тоже будет. Естественно не до уровня следующей позиции (т.к. топливо не будет достаточно полно сгорать), но тем не менее. А вот далее, если позиции набираются быстрее, чем растёт мощность дизеля, то всё действительно растёт по вашему алгоритму (разве что с привязкой не только к оборотам дизеля, но и к оборотам турбонаддува, но для упрощения можно считать просто оборотами).локомотив уже тянет сильнее, хотя дизель ещё даже не отреагировал.
Вернуться в [RW] Другие вопросы
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1