Информация: Уважаемые посетители! В течение нескольких месяцев на форуме существовала проблема с регистрацией новых пользователей, о которой администрации стало известно недавно. Если вы ранее пытались зарегистрироваться на форуме, но не получили на ваш e-mail письмо с ссылкой для подтверждения регистрации, просим вас зарегистрироваться повторно. Приносим извинения за доставленные неудобства. Если вы все еще испытываете проблемы с регистрацией на форуме, обратитесь за помощью на e-mail: mr.angelo@railroadsim.net

LuaScript - для RS

Другие вопросы и проблемы разработки дополнений

Re: LuaScript - для RS

Сообщение maestro » 28.10.2019, 23:09

Одним из решений проблемы больших чисел может являться уменьшение этих чисел (как бы странно это ни звучало) либо разделение их на части. Зависит от того, что в этих числах содержится и для чего это нужно.
Мне один раз нужно было решить задачу ( A - B ) / C, где A, B и C - 64-битные целые числа (в виде структур). Из возможностей платформы были доступны максимум 32-битное целое и 64-битное с плавающей точкой. В процессе решения выяснилось, что более 10 разрядов на деле оказались не нужны, и после определённого шаманства с битами уже хватало типа Double.
maestro
 
Сообщения: 246
Зарегистрирован: 18.03.2011, 15:13
Благодарил (а): 0 раз.
Поблагодарили: 142 раз.
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Виталий

Re: LuaScript - для RS

Сообщение Света » 28.10.2019, 23:54

К сожалению, я не могу ничего такого сделать (уменьшение этих чисел либо разделение). Любое действие с числом дает неверный (в моем понимании) результат.
Например, как в описанном мной ранее случае: "если сделать простое арифметическое действие (4294967295 - 3534543), мы в симуляторе получим 4291432704, тогда как правильный ответ - 4291432752". Разница - 48, это даже не кратно двоичному представлению.
Проблема у меня с битовыми операциями - я не могу получить правильное десятичное число на выходе. Если я конвертирую 32-разрядное двоичное число математическим путем (суммируя произведение бита на двойку в степени разряда), я получаю ошибку суммирования, например, 0b11111111111111111111111111110111 в результате равно 4294967296 (что соответсвует максимальному значению - 0b11111111111111111111111111111111). Можно предположить, что сбоит моя функция. Но если использовать базовую функцию tonumber() - результат тот же.
Код: Выделить всё
print (tonumber ("11111111111111111111111111110111", 2)) -->> 4294967296

Перевожу двухбитное число в шестнадцатиричное, чтобы потом его преобразовать в десятичное - результат тот же:
Код: Выделить всё
print (tonumber ("FFFFFFF7", 16)) -->> 4294967296

То есть, по неизвестным мне причинам симулятор во всех этих случаях вернул максимальное 32-битное число - 4294967296. Тогда как верное - 4294967287.
То, что возвращаемые числа во всех случаях конвертирования одинаковые, показывает, что это правильный, с точки зрения симулятора, результат. Но я не понимаю его логику, в моем мире работают другие правила арифметики )))). А самое главное - в других программах тоже. Даже в lua 5.3 эти же функции дают нормальный результат.
Поэтому я не могу как-то уменьшить разрядность этих чисел - так или иначе, но в итоге мне придется их восстанавливать, а это невозможно без арифметических действий, будь то суммирование или побитная сборка.
Поэтому сейчас я вижу 2 пути: или подключать внешнюю библиотеку, которая будет работать по правилам "привычной" арифметики и возвращать уже готовое число, или же писать вообще весь lua-код на битах, фактически - на ассемблере.
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение BooYa » 29.10.2019, 08:03

В данном случае единственный знакомый человек, что могёт в С - это Виталий. Поэтому и попросили помощи с компилированием библиотеки.
Аватара пользователя
BooYa
 
Сообщения: 3263
Зарегистрирован: 24.01.2010, 16:30
Откуда: Екатеринбург
Благодарил (а): 1129 раз.
Поблагодарили: 2507 раз.
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Андрей

Re: LuaScript - для RS

Сообщение Romazan67 » 29.10.2019, 09:07

Света, а у Вас Скайп есть или через личку? Я спросил у знакомых, переслал им Ваш текст и они запросили доп информацию о следующем: а кусок скрипта можно вместе с функцией конвертации ?
Но крашу, крашу я заборы вагоны, чтоб тунеядцем не прослыть...
Как снимать на текстуры https://yadi.sk/i/d1_dhD8dKXpMHw (обновленная версия).
Romazan67
 
Сообщения: 294
Зарегистрирован: 09.01.2013, 10:53
Благодарил (а): 201 раз.
Поблагодарили: 192 раз.
Блог: Просмотр блога (3)
Играю в: Train Simulator 2018
Имя: Роман

Re: LuaScript - для RS

Сообщение Света » 29.10.2019, 11:24

Romazan67, есть скайп, можно через личку - как удобнее...
Да, можно кусок скрипта, и функцию. Вот страничка с описанием работы этой библиотеки и её подключения, На этой же страничке ссылка на архив с исходниками, там как исходные файлы на С (или С++, я не различаю), так и фрагменты кода на lua, с тестовыми примерами.
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение ALCIDES FABIANO » 16.03.2020, 06:09

Speed = Call("GetCurrentSpeedLimit"

I am not able to assemble the structure in my script to obtain this function!

HELP ME
ALCIDES FABIANO
 
Сообщения: 1
Зарегистрирован: 20.02.2020, 06:06
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Имя: alcides fabiano mari

Re: LuaScript - для RS

Сообщение Света » 18.03.2020, 17:35

Вызов Call("GetCurrentSpeedLimit") работает только в скриптах подвижного состава. Поэтому, если Вы пишете скрипт не для вагона или локомотива, а чего-то другого, то он не будет работать. А если это локомотив или вагон, то нужен фрагмент скрипта (или весь скрипт), чтобы определить причину отказа.
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение Света » 01.06.2020, 02:16

Господа, требуется помощь.
Мне нужно реализовать математическую зависимость, когда чем большее количество исходных суммируемых значений, тем меньшее влияние каждого из них на результат.
Попробую объяснить, что я имею ввиду, на примере. Допустим, есть комната с десятью окнами. Звуконепроницаемая. Снаружи - шум. Если открыть одно окно, в комнате установится какой-то уровень шума. Если открыть ещё одно - шум усилится, но не в 2 раза, а меньше. Если открыть ещё одно - шума станет ещё больше, но прирост будет ещё слабее. И так далее. И при открывании последнего, десятого окна, шум будет максимальным, но прирост будет практически незаметен.
Я думаю, что такая зависимость должна быть описана математическими функциями. Не хочу изобретать велосипед, но я ни разу не математик, понимаю, что собака порылась в логарифмах, но связать с линейным увеличением количества входных значений - не могу, даже не представляю, с какой стороны к этому подойти. Делать решение в лоб, с кучей констант - грубо и не гибко. Если кто-то знает, как решить этот ребус - очень прошу совет, подсказку, формулу или ссылку. Любая информация может дать ключ к решению.
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение радиомастер » 01.06.2020, 07:07

Оптимальный вариант это 5 и 7 на рисунке , кубический и квадратный корень , останется только подобрать оптимальный коеффициент , чтобы оказаться на нужном участке графика .
ПКМ- открыть изображение
Изображение
Объекты от радиомастера для RailWorks бесплатно Способ поддержки webmoney Z874401784332 Save DONBASS People from Kiev Agression
Аватара пользователя
радиомастер
 
Сообщения: 2355
Зарегистрирован: 23.10.2010, 18:42
Откуда: Макеевка
Благодарил (а): 1294 раз.
Поблагодарили: 1830 раз.
Блог: Просмотр блога (4)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Костик

Re: LuaScript - для RS

Сообщение Света » 01.06.2020, 11:29

Надо же, как просто можно сделать... идея с корнями совсем в голову мне не пришла. Спасибо, Костя!
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение Света » 13.10.2020, 16:28

Господа, мне требуется помощь.
Я хочу сделать обработчик аккумуляторной батареи.
Исходные данные: аккумуляторная батарея, её емкость и напряжение без нагрузки.
Я подключаю нагрузку, которая создает определенный ток.
Надо: высчитать напряжение под этой нагрузкой, т.е., формула, по которой я смогу это сделать.
Сразу скажу: нет, в гугле не забанили, но мои познания в области физики/химии аккумуляторных батарей равны нулю, а для поиска чего-либо надо хоть примерно представлять, что искать. А для специалиста в этой сфере дать формулу - пара минут.
Очень рассчитываю на помощь, спасибо всем откликнувшимся.
Никогда не опускай руки, ведь впереди тебя ждет еще так много поводов опустить руки, а ты уже опустил руки.
Аватара пользователя
Света
 
Сообщения: 881
Зарегистрирован: 18.06.2016, 19:38
Благодарил (а): 631 раз.
Поблагодарили: 1039 раз.
Блог: Просмотр блога (21)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Пандора

Re: LuaScript - для RS

Сообщение радиомастер » 14.10.2020, 09:31

Привет , наиболее простой способ , это использовать внутреннее сопротивление батареи .
Изображение
например батарея без нагрузки имеет напряжение 50 в , подключаем нагрузку лампу на 30 А , внутреннее сопротивление батареи 0.1 Ом .
Уменьшение напряжения на батареи составит 50 - 30*0.1 = 47 в.
А если подключено несколько потребителей на 30 А , на 24 А и еще один на 10 А , то
50 -(30+24+10)*0.1 = 43.6 В .
Это очень простой просчет , который не учитывает то , то при подключении одного потребителя напряжение уже изменилось , и потребление других поторбетелей ток так же немного снижается , но в нашем случает очень подходит . Кроме того можно учитывать и ток зарядки
напряжение на вольтметре U = 50 - (Iр+Iз)*0.1
где Ip - ток разряда Iз = ток заряда .
Еесть еще особенность АБ , что при полной зарядке напряжение несколько выше , например при полной емкости 55 в , а при почти полной разрядке скажем 47 в, и внутреннее сопротивление после 47 в резко возрастает ,и соответственно аккум уже не тянет лампочку и просадка выше .Как же просчитать емкость ? просто . есть исходная емкость допустим 100 АЧ . тогда при зарядке током 10 А и отсутствии разрядки эта цифра увеличивается на 10 за 1 час , то есть через час емкость уже 110 АЧ и так до напрядения конечного к примеру 55 в соответствуют емкости1000 АЧ .а 47 в соотв 0 АЧ .собрав это в формулу можно имея емкость и уменьшая- увеличивая её в зависимости от того идет заряд или разряд - выводить напряжение на вольтметр , выводить нужное внутреннее сопротивление , выводить правильный ток заряда (генереатор дает например как раз 55 в , то ток уже будет равен 0 при полном заряде . например бартарея имеет напрядение 51 в , то 55-51 = 4 в . 4/0.1 = 40 А , то есть при напрядении 51 в ток заряда 40 А опять же учитываем внутреннее сопротивление аккумулятора 0.1 Ом.) как то так .
Объекты от радиомастера для RailWorks бесплатно Способ поддержки webmoney Z874401784332 Save DONBASS People from Kiev Agression
Аватара пользователя
радиомастер
 
Сообщения: 2355
Зарегистрирован: 23.10.2010, 18:42
Откуда: Макеевка
Благодарил (а): 1294 раз.
Поблагодарили: 1830 раз.
Блог: Просмотр блога (4)
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Костик

Re: LuaScript - для RS

Сообщение BooYa » 14.10.2020, 11:27

радиомастер писал(а):Еесть еще особенность АБ , что при полной зарядке напряжение несколько выше

Это несколько неточно. Особенность акб в том, что напряжение при полной зарядке выше, а при полной разрядке - ниже. Свету интересует аккумулятор ПС, который набран ячейками по 12В, так что лучше отработать всё именно на нём, а потом просто помножить\суммировать.

В инете куча разных значений для разных типов, но если очень грубо взять, то для 12В свинцового акума, разница в 2В, я находил значения макс\мин 13.5\11.5, и 12.8-13\10.8. Первое - это современные необслуживаемые свинцовые, второе - обычные свинцовые.

радиомастер писал(а):например батарея без нагрузки имеет напряжение 50 в , подключаем нагрузку лампу на 30 А , внутреннее сопротивление батареи 0.1 Ом .
Уменьшение напряжения на батареи составит 50 - 30*0.1 = 47 в.

Хм. Для упрощенного способа звучит неплохо. Правда, я бы значение немного прибавлял, чтобы было похоже на нечто среднее между сопротивлением батареи и общим сопротивлением цепи. Просто, если речь идёт о лампочках - это одно дело. А если какой-нибудь электромотор подключить - то с его сопротивлением и сопротивлением его проводов придётся считаться. Мизерное собственное сопротивление акума тут будет выглядеть крайне странно, имхо.

радиомастер писал(а):Как же просчитать емкость ? просто . есть исходная емкость допустим 100 АЧ .

Ну, стоит заметить, что Ампер\часы - это не ёмкость. Хотя, нынче, наверное, никому уж и не докажешь. Маркетинг победил физику))

Не подумай, что я докопался до слов, просто в данном контексте, для понимания, всё же верно использовать правильное определение, что цифра в ампер-часах указывает максимальное количество сохранённого электричества в батарее, которое он выдаст при указанном токе разряда за указанное количество времени.

И вот тут да, верно соотносить напряжение минимальное\максимальное с нулевым количеством электричества в минимальном напряжении, и максимальным - в максимальном.

P.S. Я часа 2 уже примерно то-же пытался расписать, но только сильнее закопался))))
Аватара пользователя
BooYa
 
Сообщения: 3263
Зарегистрирован: 24.01.2010, 16:30
Откуда: Екатеринбург
Благодарил (а): 1129 раз.
Поблагодарили: 2507 раз.
Играю в: Train Simulator 2018
Роль: Разработчик
Имя: Андрей

Пред.

Вернуться в [RW] Другие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0