Страница 17 из 18

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-код на битах, фактически - на ассемблере.

Re: LuaScript - для RS

СообщениеДобавлено: 29.10.2019, 08:03
BooYa
В данном случае единственный знакомый человек, что могёт в С - это Виталий. Поэтому и попросили помощи с компилированием библиотеки.

Re: LuaScript - для RS

СообщениеДобавлено: 29.10.2019, 09:07
Romazan67
Света, а у Вас Скайп есть или через личку? Я спросил у знакомых, переслал им Ваш текст и они запросили доп информацию о следующем: а кусок скрипта можно вместе с функцией конвертации ?

Re: LuaScript - для RS

СообщениеДобавлено: 29.10.2019, 11:24
Света
Romazan67, есть скайп, можно через личку - как удобнее...
Да, можно кусок скрипта, и функцию. Вот страничка с описанием работы этой библиотеки и её подключения, На этой же страничке ссылка на архив с исходниками, там как исходные файлы на С (или С++, я не различаю), так и фрагменты кода на lua, с тестовыми примерами.

Re: LuaScript - для RS

СообщениеДобавлено: 16.03.2020, 06:09
ALCIDES FABIANO
Speed = Call("GetCurrentSpeedLimit"

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

HELP ME

Re: LuaScript - для RS

СообщениеДобавлено: 18.03.2020, 17:35
Света
Вызов Call("GetCurrentSpeedLimit") работает только в скриптах подвижного состава. Поэтому, если Вы пишете скрипт не для вагона или локомотива, а чего-то другого, то он не будет работать. А если это локомотив или вагон, то нужен фрагмент скрипта (или весь скрипт), чтобы определить причину отказа.

Re: LuaScript - для RS

СообщениеДобавлено: 01.06.2020, 02:16
Света
Господа, требуется помощь.
Мне нужно реализовать математическую зависимость, когда чем большее количество исходных суммируемых значений, тем меньшее влияние каждого из них на результат.
Попробую объяснить, что я имею ввиду, на примере. Допустим, есть комната с десятью окнами. Звуконепроницаемая. Снаружи - шум. Если открыть одно окно, в комнате установится какой-то уровень шума. Если открыть ещё одно - шум усилится, но не в 2 раза, а меньше. Если открыть ещё одно - шума станет ещё больше, но прирост будет ещё слабее. И так далее. И при открывании последнего, десятого окна, шум будет максимальным, но прирост будет практически незаметен.
Я думаю, что такая зависимость должна быть описана математическими функциями. Не хочу изобретать велосипед, но я ни разу не математик, понимаю, что собака порылась в логарифмах, но связать с линейным увеличением количества входных значений - не могу, даже не представляю, с какой стороны к этому подойти. Делать решение в лоб, с кучей констант - грубо и не гибко. Если кто-то знает, как решить этот ребус - очень прошу совет, подсказку, формулу или ссылку. Любая информация может дать ключ к решению.

Re: LuaScript - для RS

СообщениеДобавлено: 01.06.2020, 07:07
радиомастер
Оптимальный вариант это 5 и 7 на рисунке , кубический и квадратный корень , останется только подобрать оптимальный коеффициент , чтобы оказаться на нужном участке графика .
ПКМ- открыть изображение
Изображение

Re: LuaScript - для RS

СообщениеДобавлено: 01.06.2020, 11:29
Света
Надо же, как просто можно сделать... идея с корнями совсем в голову мне не пришла. Спасибо, Костя!

Re: LuaScript - для RS

СообщениеДобавлено: 13.10.2020, 16:28
Света
Господа, мне требуется помощь.
Я хочу сделать обработчик аккумуляторной батареи.
Исходные данные: аккумуляторная батарея, её емкость и напряжение без нагрузки.
Я подключаю нагрузку, которая создает определенный ток.
Надо: высчитать напряжение под этой нагрузкой, т.е., формула, по которой я смогу это сделать.
Сразу скажу: нет, в гугле не забанили, но мои познания в области физики/химии аккумуляторных батарей равны нулю, а для поиска чего-либо надо хоть примерно представлять, что искать. А для специалиста в этой сфере дать формулу - пара минут.
Очень рассчитываю на помощь, спасибо всем откликнувшимся.

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 Ом.) как то так .

Re: LuaScript - для RS

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

Это несколько неточно. Особенность акб в том, что напряжение при полной зарядке выше, а при полной разрядке - ниже. Свету интересует аккумулятор ПС, который набран ячейками по 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 уже примерно то-же пытался расписать, но только сильнее закопался))))

Re: LuaScript - для RS

СообщениеДобавлено: 24.02.2021, 21:25
hellishfire
Обнаружил интересную особенность в выполнении ошибочно написанного вызова SetControlValue.

Если написать его так:
Код: Выделить всё
Call("SetControlValue", "Lamp1", 1)

То версия х64 выполнит его, установив контрол в положение 1.

Но х32 версия отправит желаемое значение в индекс, а в значение не отправит ничего (либо отправит в Lamp1 по индексу 1 тоже 1, но тестировать это я не считаю целесообразным).

А правильно должно быть так:
Код: Выделить всё
Call("SetControlValue", "Lamp1", 0, 1)


Т.е., как я предполагаю, в х64 сделали защиту от дурака, проверкой наличия ещё одного параметра, но на х32 положили ноль.

Re: LuaScript - для RS

СообщениеДобавлено: 25.02.2021, 23:44
BooYa
hellishfire писал(а):положили ноль.

На лопатки? Разделили на ноль? Взяли болт и положили его в дырку от ноля?

Re: LuaScript - для RS

СообщениеДобавлено: 26.02.2021, 23:10
hellishfire
Всё и сразу!