LM358 не даст чистый ноль без двухполярного питания. Да и смещение
у нее конское. Выход 0-10в много лет делаем на рассыпухе, 10бит
точность вполне обеспечивает. Линейный стабилизатор +10В на TL431 и
биполярном транзисторе, от него питается полумост на двух мосфетах
разной структуры, раскачиваемый ШИМом через оптрон. Можно для этих
целей применить какой-нибудь опторазвязанный драйвер ИЖБТ или
мосфетов, обязательно с выходом на полевых транзисторах, но 2
мелких мосфета в sot-23 дешевле, у нас массовое производство, нам каждый цент критичен. Полученный ШИМ 0-10В прецизионной амплитуды подается через двухзвенный пассивный фильтр прямо на выход, никаких ОУ в схеме нет, смещение и дрейф вносить некому. Небольшой недостаток в том, что выходное сопротивление довольно велико, 4кОм в нашем случае.