PDA

Просмотр полной версии : Реализация алгоритма..



VaBo
27.09.2020, 20:19
Что-то не могу реализовать (на СП300, если что) следующий алгоритм:

Существует 60 начальных точек, 60 промежуточных точек, и 60 конечных точек. Сочетание начальная, промежуточная и конечная точка образуют условный "маршрут".
Организованных маршрутов сильно меньше, чем 60^3, где-то порядка 300-400.
Хочу организовать выбор таким образом, оператор выбирает по очереди начальную, пром. и конечную точку, а алгоритм переводит эту комбинацию в число от 1 до 400 и команда улетает. Но что-то полезли трехмерные массивы и прочая громоздкая фигня. Понятно, что массивы констант должны быть (и будут!), но может можно все это как-то попроще?

capzap
27.09.2020, 20:30
таблицу приложите и громоздкая фигня будет делаться значительно быстрее

VaBo
27.09.2020, 21:08
В каком виде? Ну вот как бы начало и конец таблицы:

1. 34 12 23
2. 45 8 54
3. 6 49 10
...
400. 28 21 35

Т.е получается [400][3], так? Если бы в PLC разбирал, не парился бы, тут в панели придется...

capzap
27.09.2020, 21:13
да, хоть в таком(ексель был бы в самый раз) и вообще не принципиально на каком устройстве

Сергей0308
27.09.2020, 21:55
Мне кажется надо составить соответствие, для простоты не всех 216000 вариантов, а 400 используемых, с требуемой командой 0-400, всё!

Евгений Кислов
28.09.2020, 07:13
Если правильно понял задачу - то этот пример может помочь.
https://ftp.owen.ru/SP300/99_ForumFiles/Example_VaBo.txp

В массиве забиты маршруты (1, 1, 1), (1, 2, 3) и (1, 15, 25) - остальные можно добавить по аналогии.

VaBo
28.09.2020, 08:30
Если правильно понял задачу - то этот пример может помочь.
Да, пример помог, большое спасибо.
С учетом ограниченного кол-ва точек запакую ка это не в лонг-лонг, а в просто лонг, будет 254,254,254 точки - еще и останется. ПисАть в регистры 300-301 все равно функциональными кнопками буду.

Евгений Кислов
28.09.2020, 09:29
Да, пример помог, большое спасибо.
С учетом ограниченного кол-ва точек запакую ка это не в лонг-лонг, а в просто лонг, будет 254,254,254 точки - еще и останется. ПисАть в регистры 300-301 все равно функциональными кнопками буду.

Можно, конечно, оптимизировать, но тогда придется выделять байты из регистров в макросе и потом ими манипулировать.
Мне показалось, что это неоправданные сложности ради экономии 1600 байт RAM.

VaBo
28.09.2020, 11:28
Контроллеры с 4k OTP ROM и 190 byte RAM, трудное детство...
Наверное вы правы!