Задача звучала скучно: взять справочник металлопроката почти на 5 800 строк и убедиться, что числа в нём верные. За месяц выяснилось, что неверных больше полутора тысяч, и что почти каждую из них можно было поймать одной формулой.
Откуда берутся справочники металлопроката
Ниоткуда. Точнее, друг из друга.
ГОСТ на сортамент печатает размеры сечения, площадь сечения, массу метра и моменты инерции. Многого из того, что нужно на практике, там нет: например, площади поверхности профиля, без которой не посчитать окраску, огнезащиту или изоляцию. Её считают сами, каждый по-своему, и результат расходится по таблицам в интернете без указания источника.
Мы унаследовали такой справочник: рабочий Excel-генератор, который вёлся годами и много раз проверялся на практике. Он выглядел надёжным ровно потому, что был живым.
Идея проверки
Первоисточника нет, но у каждого вида проката есть внутреннее тождество: связь между напечатанными числами, которая обязана выполняться независимо от того, кто и как таблицу составлял. Если тождество не сходится, строка битая, и не важно, откуда она взялась.
Самое простое тождество это масса через плотность. Теоретическую массу сортаменты считают при 7,85 г/см³, значит
масса метра, кг = площадь сечения, см² × 0,785
Коэффициент именно 0,785, а не 7,85: плотность умножается на метр длины, то есть на 100 см, и делится на 1000, чтобы получились килограммы. Это первое место, где легко ошибиться на порядок.
Дальше начинается интересное, потому что у каждого профиля тождество своё.
Полоса и лента: масса, кг/м = ширина, мм × толщина, мм × 7,85 / 1000. Для полосы 40 на 4 это 1,256 кг/м. Проверка поймала 177 строк ленты по ГОСТ 6009-74, которые лежали в категории полосы и назывались полосой. Заодно нашлись две опечатки в самом стандарте: клетки 70×2,0 и 28×1,5.
Двутавр с параллельными гранями полок: развёртка сечения P = 4b + 2h — 2s. Четыре полуполки, две наружные грани полок, две стороны стенки. Поверхность профиля не может быть короче этого периметра.
Отношение табличной площади к развёртке у сортаментов СТО АСЧМ 20-93 и ГОСТ 8239 по всем 87 строкам укладывалось в 1,00-1,03. У ГОСТ 26020-83 оно разлетелось от 0,98 до 1,76. Тридцать девять значений из девяноста одного не относились к тому профилю, к которому были приписаны. Причём ошибка росла с толщиной профиля внутри серии: 40К1 верен, у 40К5 завышение 42 процента.
Сетка: коэффициент плетения. Масса сетки больше массы прямых проволок той же длины, потому что проволока идёт волной. У квадратной ячейки коэффициент лежит в 1,135-1,264, у ромбической в 1,338-1,578, и диапазоны не пересекаются. В нашем файле каждая сетка была записана дважды, квадратная и ромбическая, с одинаковой массой. Так не бывает: ромб тяжелее на 11-13 процентов. Сорок дублей убрано, восемь масс исправлено.
Заодно выяснилось, что площадь поверхности у всех 94 строк сетки стояла ровно 1,0 м²/м². То есть её никогда не считали, просто поставили единицу. Правда лежит между 0,278 и 3,29.
Профнастил: масса 1 м² = (ширина заготовки / монтажная ширина) × (7,85 × t + 0,414). Слагаемое 0,414 это масса цинкового покрытия с двух сторон, оно записано примечанием к таблицам ГОСТ 24045-2016.
Из этого тождества следует неочевидное. Развёртку профиля нельзя восстанавливать из массы, как мы сделали на первом заходе: масса включает цинк, и площадь выходит завышенной на 8,8 процента при толщине 0,6 мм и на 3,5 при 1,5 мм. Ширину заготовки стандарт печатает прямо, надо просто её взять.
Когда стандарт сам себе противоречит
Отдельная категория находок это ошибки в самих изданиях.
При разборе ГОСТ 13616-97 на прессованные алюминиевые профили таблица давала три независимых числа на строку: площадь сечения, теоретическую массу и диаметр описанной окружности. Последний обязан равняться диагонали прямоугольника, то есть корню из суммы квадратов сторон.
У профиля 401440 размером 51 на 102 напечатан диаметр 125 мм. Диагональ даёт 114. Расхождение слишком большое для округления.
Дальше повезло: PDF официального издания содержал поправку ИУС № 3 за 2000 год, которой нет ни в одной веб-копии стандарта. В поправке написано: для профиля 401440 в графе «диаметр описанной окружности» читать 114 вместо 125.
То есть геометрическая проверка нашла ровно то же, что за двадцать шесть лет до этого нашёл Росстандарт. Заодно та же поправка снимает из стандарта 23 профиля, и в веб-копиях они по-прежнему висят как действующие.
Вывод отсюда практический: поправки живут в самом издании. Если вы разбираете стандарт по тексту с сайта-агрегатора, вы разбираете редакцию до правок.
Что даёт этот подход и чего не даёт
Не даёт он вот чего: тождество проверяет согласованность, а не истинность. Если в таблице ошибочны и площадь, и масса согласованно, проверка пройдёт. Такое встретилось трижды из шестисот на одном стандарте: напечатанная площадь не сходилась с произведением сторон, а масса была честно посчитана от этой неверной площади. Эти строки мы просто не публикуем.
А даёт он масштаб. Проверка это несколько строк кода на строку данных, она гоняется на всём датасете за секунды и превращается в постоянный тест. У нас сейчас такой тест держит, например, все 178 двутавров с параллельными полками в коридоре 0,97-1,05 от развёртки сечения, и следующая попытка занести туда чужое число просто уронит сборку.
Итог за месяц: пересобраны профнастил, гофрированный профиль, сетка, проволока, лента, балки М и двутавры. Исправлено около 1 550 значений площади и 59 значений массы. У гофрированного профиля площадь была завышена во всех 47 строках на 24-49 процентов, и там же обнаружилось, что 47 строк вида «14×3» это вообще не профнастил, а вагоностроительные профили по ГОСТ 10551-75.
Калькулятор, который получился в итоге, лежит среди других бесплатных инструментов
Если найдёте расхождение, напишите. Проверять чужие числа полезнее, чем верить своим.
ссылка на оригинал статьи https://habr.com/ru/articles/1077476/