АВТОМАТИЗАЦИЯ РАСЧЕТОВ ИЗМЕНЕНИЙ ТЕРМОДИНАМИЧЕСКИХ ПОТЕНЦИАЛОВ В ХОДЕ ХИМИЧЕСКИХ РЕАКЦИЙ

Научная статья
Выпуск: № 6 (37), 2015
Опубликована:
2015/07/15
PDF

А.А. Пушкин1 , В.С. Римкевич2

1кандидат физико-математических наук, старший научный сотрудник, 2кандидат геолого-минералогических наук, старший научный сотрудник, заведующий лаборатории наукоемких технологий переработки минерального сырья,  Институт геологии и природопользования Дальневосточного отделения Российской академии наук

АВТОМАТИЗАЦИЯ РАСЧЕТОВ ИЗМЕНЕНИЙ ТЕРМОДИНАМИЧЕСКИХ ПОТЕНЦИАЛОВ В ХОДЕ ХИМИЧЕСКИХ РЕАКЦИЙ

Аннотация

В работе описывается программа для расчета изменений термодинамических потенциалов в ходе химических реакций, созданная на основе приложения Microsoft Access 2007 c процедурами vba. Помимо расчетов изменений термодинамических потенциалов программа позволяет строить графики их температурной зависимости. Программа использовалась для термохимических расчетов и определения направлений химических реакций, возникающих в процессах фторидной переработки алюмосиликатного сырья Верхнего Приамурья.  

Ключевые слова: стандартные средства, объект приложения, форма, таблица, отчет, объект управления, процедура vba, программный код 

A.A.Pushkin1, V.S.Rimkevich2

1candidate of physical-mathematical sciences, senior stuff, 2candidate of geological-mineralogical sciences, senior stuff, head of department of high technologies of mineral processing, Institute of geology and nature management of Far Eastern Branch of RAS

AUTOMATION OF CALCULATIONS OF CHANGES OF THERMODYNAMIC POTENTIALS DURING CHEMICAL REACTIONS

Abstract

The program of calculations of changes of thermodynamic potentials during chemical reactions created on the basis of Microsoft Access and used vba procedure are described in this article. Program is allowed to build graphics of these changes in addition to such calculations. Program was used for thermochemical calculations and for determination of durations of chemical reactions appeared during the processes of fluoride processing of raw materials of Upper Amur region.  

Key words: standard tools, application object, form, table, report, object of control, vba procedure, program code

Введение

В связи с осложнением отношений России с западными странами одним из важных направлений её современного экономического развития является импортозамещение. Основная сырьевая проблема в алюминиевой отрасли связана с тем, что обеспеченность Российской алюминиевой промышленности высококачественными бокситами составляет 35 – 40% [1]. Остальная потребность в сырье покрывается за счет импорта глинозема из Австралии, Экваториальной Африки и Южной Америки.

В Амурском научном центре разработана фторидная технология переработки небокситового алюмосиликатного сырья, запасы которого в Амурской области велики. Кроме того, Амурская область обладает богатыми гидроресурсами (Зейская (1,3 ГВт) и Бурейская ГЭС (2 ГВт)), что может быть использовано для создания энергоемкого производства алюминия в Амурском регионе.

Основным алюмосиликатным сырьем, исследуемым в настоящий момент являются каолины Чалганского и кианиты Чимчанского месторождений. В процессе выбора оптимальных вариантов сырья или фторирующего реагента для данного технологического процесса, встает задача предварительного термодинамического расчета различных физико-химических равновесий с целью выявления оптимальных сочетаний реагентов. Такой расчет возможен и первоначально проводился нами с использованием приложения Microsoft Excel [2]. Однако, в случае расчета при помощи приложения ME возникает проблема автоматизации расчетов, создания и обращения к базе данных. Существует специализированное приложение Microsoft Access, представляющее собой базу данных для хранения информации и допускающее возможность программируемой обработки данных. Автоматизация данных при помощи программы помимо облегчения расчетов обеспечивает повторяемость результатов вследствие исключения случайных ошибок. В связи с этим нами на основе приложения Microsoft Access 2007 разработана программа для проведения расчетов по термодинамике [3, 4]. Программа предназначена для определения при разных температурах направлений протекания и тепловых эффектов физико-химических реакций, которые могут быть положены в основу исследуемого технологического процесса [5].

Теоретическая часть

Поведение систем находящихся при постоянном давлении и температуре описывается изобарно-изотермическими потенциалами ΔH и ∆G. Самопроизвольное протекание изобарно-изотермического процесса определяется двумя факторами: энтальпийным, связанным с уменьшением энтальпии системы (ΔH), и энтропийным TΔS, обусловленным увеличением беспорядка в системе вследствие роста её энтропии. Разность этих термодинамических факторов является функцией состояния системы, называемой изобарно-изотермическим потенциалом или свободной энергией Гиббса G (кДж)

 \[\Delta G=\Delta H-T\Delta S.\]

Из этого выражения следует, что

\[\Delta H=T\Delta S+\Delta G,\]

То есть, количество теплоты, которое расходуется при химической реакции, идет отчасти на увеличение энтропии T∆S,  отчасти может быть использовано на совершение работы ∆G. В этом смысле первый член называется связанной энергией (т.к. он связан с той частью теплоты, которая рассеивается в окружающее пространство и не может быть использована для совершения работы), второй член представляет собой ту часть теплоты, которая может быть превращена в работу. Поэтому изменение потенциала Гиббса представляет собой работу в равновесном изотермическом процессе за вычетом работы против внешнего давления.

Направление протекания химической реакции определяется по изменению энергии Гиббса ∆G в ходе реакции при данной температуре. Реакция протекает в прямом направлении, если изменение потенциала Гиббса в ходе реакции отрицательно ∆G<0. В случае, если изменение  потенциала Гиббса положительно ∆G>0, то реакция идет в обратном направлении.

Тепловой эффект химической реакции представляет собой величину, которая может быть определена как количество теплоты Q или как изменение энтальпии ∆Н. При этом они между собой связаны соотношением Q = ∆Н. В случае экзотермической реакции Q>0, ∆Н<0, а в случае эндотермической Q<0, ∆Н>0.

Тепловой эффект химической реакции по закону Гесса зависит только от природы и состояния исходных веществ и продуктов реакции, но не зависит от пути процесса, т.е. от числа и характера промежуточных стадий. В случае многостадийной химической реакции тепловые эффекты каждой из последовательных стадий суммируются и образуют тепловой эффект многостадийной реакции. Таким образом, для того, чтобы найти тепловой эффект химической реакции, многостадийной или одностадийной, необходимо из суммы энтальпий образования конечных продуктов реакции вычесть сумму энтальпий образования исходных продуктов [6].

Определение направления химической реакции проводится по изменению потенциала Гиббса реакции аналогично определению теплового эффекта реакции, т.е. изменение потенциала Гиббса химической реакции, многостадийной или одностадийной, определяется по разности суммы потенциалов Гиббса образования конечных продуктов и суммы потенциалов Гиббса образования исходных веществ.

При определении теплового эффекта и направления химической реакции при высокой температуре нужно учитывать высокотемпературные составляющие энтальпий и потенциалов Гиббса. Эти высокотемпературные составляющие учитываются в первом случае при помощи теплоемкости, а во втором при помощи энтропийного члена.

Следовательно, вычисление значений термодинамических потенциалов при заданной температуре производится по формулам [3]:

17-06-2015 15-38-33                    (1)

где H2980, ∆G2980 – изменения термодинамических потенциалов в ходе образования 1 моля данного вещества из простых веществ, т.е. разность между суммой значений потенциалов продуктов реакции и суммой значений исходных простых веществ в стандартных условиях (Т=298К и р=1Бар); размерность (кДж/моль).

Cp0, S2980 – значения молярной теплоемкости при постоянном давлении и энтропии при стандартных условиях; размерность (Дж/ (моль*К)).

HT, ∆GT – изменения термодинамических потенциалов в ходе реакции при температуре Т, размерность (кДж).

Т – абсолютная температура в К.

Для химических реакций протекающих в идеальных газах и идеальных растворах константа равновесия представляет собой величину, которая определяет для данной химической реакции (А+В=АВ) соотношение между концентрациями и определяется по формуле [3]

\[{{K}_{p}}=-\frac{[AB]}{[A]*[B]}\]                   (2)

при температуре Т рассчитывается по формуле

\[{{K}_{p}}=\exp (-\frac{\Delta {{G}_{T}}}{RT})\],                   (3)

где  – универсальная газовая постоянная.

В случае, когда значения констант очень велики или очень малы удобно пользоваться логарифмом константы равновесия:

17-06-2015 15-38-55                   (4)

На основе формул (1) и (4) была составлена программа, описанная в работе [3].

В ряде случаев представляет интерес вопрос о температуре начала прямой реакции или о температуре равновесия. Температуру начала реакции Tb найдем из следующего условия

17-06-2015 15-39-56                             (5)

Точность значений потенциалов ∆G, ∆H в таблицах стандартных термодинамических потенциалов составляет δ(∆G2980) ≈ δ(∆H2980) ≈ 0,1кДж/моль, их производных δ(∆S2980) ≈ δ (∆C2980) ≈ 1Дж/(моль*К).

Тогда, пренебрегая членами вида 0,001*δТ*ΔS0298, 0,001*298*ΔS0298 по сравнению с членом 0,001*ΔS0298 точность вычисленных значений составляет

17-06-2015 15-40-38        (6)

Реализация вычислений на основе Microsoft Access

На конференциях в Апатитах [3] и в Благовещенске [4] сообщалось о программе, реализованной на основе приложения Microsoft Access 2003 c использованием стандартных средств. В настоящий момент программа усовершенствована, преобразована в формат Microsoft Access 2007 с использованием процедур vba. Окно программы с раскрытой формой Потенциалы имеет вид, показанный на Рис. 1. В области переходов программы содержатся ярлыки 6 объектов Access, которые используются для работы программы: форма Потенциалы для расчетов, таблица Вход­_тп для ввода данных и Выход_тп для вывода  данных, а также таблица Потенциалы, содержащая значения термодинамических потенциалов и их производных при стандартных условиях 250С и давлении р = 1 Бар для 150 веществ, наиболее часто встречающихся в реакциях с участием алюмосиликатов.

Отчет Графики_Потенциалы служит для вывода данных в графической форме: кривые температурных зависимостей изменений энтальпии и потенциала Гиббса, а также логарифма константы равновесия. Отчет Потенциалы выводит информацию о всех величинах, вычисляемых в форме Потенциалы, в табличном виде.

На Рис. 1 показана форма Потенциалы,  раскрытая в окне программы Потенциалы. В области заголовков формы Потенциалы находятся заголовки полей, а в области данных – поля, через которые осуществляется ввод данных в программу. Поскольку исходными данными для расчета является уравнение химической реакции с уравненными стехиометрическими коэффициентами, то перед расчетом необходимо ввести данные о веществах – реагентах и продуктах, а также об их

17-06-2015 15-20-19 Рис. 1 - Окно программы Потенциалы в формате Microsoft Access 2007 – 2010 с раскрытой формой Потенциалы в Режиме формы.

стехиометрических коэффициентах. Поля со списком Реагент и Продукт формы Потенциалы связаны с полями со списком  Реагент и Продукт таблицы Вход_тп (Рис. 2).

17-06-2015 15-20-37

А)

17-06-2015 15-20-51

Б)

Рис. 2 - Таблица Вход_тп: А) в Режиме таблицы, Б) в режиме Конструктор.

Поле Вещество таблицы Потенциалы (Рис. 3) является столбцом подстановки для этих двух полей со списками. Через поля со списками осуществляется выборка необходимых названий веществ, находящихся в поле Вещество таблицы Потенциалы. Эти значения заносятся в таблицу Вход_тп. Стехиометрические коэффициенты вводятся через поля ввода СКР и СКП формы Потенциалы в таблицу Вход_тп.

Таблица Потенциалы содержит значения термодинамических потенциалов ΔH и ΔG, а также производных термодинамических потенциалов Ср и Sp при стандартных условиях.

17-06-2015 15-21-10

Рис. 3 - Окно программы Потенциалы с раскрытой таблицей Потенциалы.

Таблица содержит данные о 150 веществах, наиболее часто использующихся в ходе фторидной переработки алюмосиликатов.   Таблица   содержит   6   полей:   поле   №№  с    порядковыми номерами веществ в таблице, поля Вещество, Н(кДж/моль), С(Дж/моль*К), S(Дж/моль*К), G(кДж/моль).

В области примечаний формы Потенциалы содержатся вычисляемые поля. Программа вычисляет значения изменений термодинамических потенциалов (энтальпии и энергии Гиббса) в ходе реакции и погрешностей их вычисления, значений логарифмов константы равновесия при различных температурах. При этом программа предоставляет возможность расчета для одиннадцати температур, начиная со стандартной 250С, и далее, с шагом 1000С, от 1000С до 10000C.

Помимо стандартного ряда температур программа позволяет проводить вычисления для 10 произвольных температур, включая отрицательные. Переключение к режиму произвольного выбора температур осуществляется установкой указателя Выбор Т на форме Потенциалы.

Кнопка Погрешности позволяет отменить вывод полей погрешностей вычисления изменений потенциалов на экран.

17-06-2015 15-21-25

А)

17-06-2015 15-21-41

Б)

Рис. 4 - А) Таблица Выход_тп и Б) Отчет Потенциалы в окне программы Потенциалы.

Температура начала реакции помещается в поле Начало реакции, С.  Значения вычисляемых в форме полей заносятся также в таблицу Выход_тп (Рис. 4а), на основе которой составлен отчет Потенциалы (Рис. 4б). Отчет раскрывается нажатием кнопки Вывод на форме Потенциалы.

Кнопка Графики позволяет построить температурные зависимости изменений энтальпии и потенциала Гиббса, а также логарифма константы равновесия. Нажатием данной кнопки раскрывается отчет. Построение графиков осуществляется нажатием кнопки Построить в отчете Графики_Потенциалы. Для построения графика используется встроенная диаграмма Excel с подключенной Библиотекой Microsoft Excel 14.0 Object Library. Значения изменений энтальпии и потенциала Гиббса откладываются по основной оси, а логарифма константы равновесия по вспомогательной.

17-06-2015 15-22-02

Рис. 5 - Отчет Графики_Потенциалы в коне программы Потенциалы.

Управление объектами осуществляется при помощи объектов управления Кнопка. Эти кнопки расположены в форме Потенциалы и в отчете Графики_Потенциалы.  События, вызываемые нажатиями кнопок, управляются при помощи процедур vba.

Нажатие кнопки Вычислить на форме Потенциалы вызывает заполнение вычисляемых полей формы. При этом флажок Выбор_Т должен быть опущен. Вычисления осуществляются в соответствии с процедурой Вычислить:

Private Sub Вычислить_Click ()

Dim nr As Integer, np As Integer, ns As Integer, n1 As Integer, n2 As Integer, i As Integer, k As Integer, _

Sum_sk As Integer, Sum_skr As Integer, Sum_skp As Integer, _

arr_H_0_r () As Double, arr_H_0_p () As Double, arr_G_0_r () As Double, arr_G_0_p () As Double, _

arr_C_r () As Double, arr_S_r () As Double, arr_C_p () As Double, arr_S_p () As Double, _

arr_skr () As Double, arr_skp () As Double, _

arr_matr () As String, arr_matp () As String, FName As String, _

db As Database, rs As DAO.Recordset, output As DAO.Recordset, potence As DAO.Recordset, _

deltaH As Double, deltaH_r As Double, deltaH_p As Double, _

deltaG As Double, deltaG_r As Double, deltaG_p As Double, _

 deltaC As Double, deltaC_r As Double, deltaC_p As Double, _

 deltaS As Double, deltaS_r As Double, deltaS_p As Double, _

 arr_Temp (1 To 11) As Double, arr_enthalp (1 To 11) As Double, _

 arr_gibbs (1 To 11) As Double, arr_lnk (1 To 11) As Double, _

 arr_H_inac (1 To 11) As Double, arr_G_inac (1 To 11) As Double, TempBegin As Double

 Set db = CurrentDb

 Set rs = db.OpenRecordset ("вход_тп")

 Set potence = db.OpenRecordset ("Потенциалы")

 Set output = db.OpenRecordset ("Выход_тп")

'Выборка данных из таблицы Вход_тп

    n1 = DCount("Реагент", "Вход_тп")

    n2 = DCount("Продукт", "Вход_тп")

    nr = DCount("Реагент", "Вход_тп", "СКР > 0")

    np = DCount("Продукт", "Вход_тп", "СКП > 0")

    ns = DCount("Вещество", "Потенциалы")

    Debug.Print "n1 = " & n1

    Debug.Print "nr = " & nr

    Debug.Print "n2 = " & n2

    Debug.Print "np = " & np

    Debug.Print "ns = " & ns

    Debug.Print ""

    rs.MoveFirst

    rs.MoveNext

    ReDim arr_skr (1 To n1) As Double

For i = 1 To n1

arr_sk r (i) = rs.Fields (2)

         Debug.Print "arr_skr (i) = " & arr_skr (i)

          rs.MoveNext

Next i

Debug.Print”

rs.MoveFirst

ReDim arr_skp (1 To n2) As Double

For i = 1 To n2

            arr_skp (i) = rs.Fields (4)

            Debug.Print "arr_skp (i) = " & arr_skp (i)

            rs.MoveNext

Next i

Debug.Print ""

 rs.MoveFirst

rs.MoveNext

ReDim arr_matr (1 To n1) As String

For i = 1 To n1

            arr_matr (i) = rs.Fields (1)

            Debug.Print "arr_matr (i) = " & arr_matr (i)

            rs.MoveNext

Next i

Debug.Print ""

rs.MoveFirst

ReDim arr_matp (1 To n2) As String

For i = 1 To n2

            arr_matp (i) = rs.Fields (3)

            Debug.Print "arr_matp (i) = " & arr_matp (i)

            rs.MoveNext

Next i

Debug.Print ""

'Выборка данных из таблицы Потенциалы

rs.MoveFirst

ReDim arr_H_0_r (1 To ns) As Double

For k = 1 To n1

            potence.MoveFirst

            For i = 1 To ns

                If arr_matr (k) = potence.Fields (1) Then arr_H_0_r (k) = potence.Fields (2)

                potence.MoveNext

            Next i

rs.MoveNext

Debug.Print "arr_H_0_r (k) = " & arr_H_0_r (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_C_r (1 To ns) As Double

For k = 1 To n1

            potence.MoveFirst

            For i = 1 To ns

                If arr_matr (k) = potence.Fields (1) Then arr_C_r (k) = potence.Fields (3)

                potence.MoveNext

            Next i

rs.MoveNext

Debug.Print "arr_C_r (k) = " & arr_C_r (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_S_r (1 To ns) As Double

For k = 1 To n1

            potence.MoveFirst

            For i = 1 To ns

                If arr_matr (k) = potence.Fields (1) Then arr_S_r (k) = potence.Fields (4)

                potence.MoveNext

            Next i

rs.MoveNext

Debug.Print "arr_S_r (k) = " & arr_S_r (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_G_0_r (1 To ns) As Double

For k = 1 To n1

            potence.MoveFirst

            For i = 1 To ns

                If arr_matr (k) = potence.Fields (1) Then arr_G_0_r (k) = potence.Fields (5)

                potence.MoveNext

            Next i

rs.MoveNext

Debug.Print "arr_G_0_r (k) = " & arr_G_0_r (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_H_0_p (1 To ns) As Double

For k = 1 To n2

       potence.MoveFirst

        For i = 1 To ns

                If arr_matp (k) = potence.Fields (1) Then arr_H_0_p (k) = potence.Fields (2)

                potence.MoveNext

         Next i

rs.MoveNext

Debug.Print "arr_H_0_p (k) = " & arr_H_0_p (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_C_p (1 To ns) As Double

For k = 1 To n2

       potence.MoveFirst

       For i = 1 To ns

                If arr_matp (k) = potence.Fields (1) Then arr_C_p (k) = potence.Fields (3)

                potence.MoveNext

        Next i

rs.MoveNext

Debug.Print "arr_C_p (k) = " & arr_C_p (k)

Next k

Debug.Print ""

rs.MoveFirst

 ReDim arr_S_p (1 To ns) As Double

For k = 1 To n2

       potence.MoveFirst

       For i = 1 To ns

              If arr_matp (k) = potence.Fields (1) Then arr_S_p (k) = potence.Fields (4)

                potence.MoveNext

                      Next i

rs.MoveNext

Debug.Print "arr_S_p (k) = " & arr_S_p (k)

Next k

Debug.Print ""

rs.MoveFirst

ReDim arr_G_0_p (1 To ns) As Double

For k = 1 To n2

       potence.MoveFirst

       For i = 1 To ns

            If arr_matp (k) = potence.Fields (1) Then arr_G_0_p (k) = potence.Fields (5)

            potence.MoveNext

        Next i

rs.MoveNext

Debug.Print "arr_G_0_p (k) = " & arr_G_0_p (k)

Next k

Debug.Print ""

'Вычисления приращений потенциалов и суммы модулей Стех. Коэффициентов при температуре 25град.С

deltaH_r = 0

For i = 1 To n1

       deltaH_r = deltaH_r + (arr_skr (i) * arr_H_0_r (i))

 Next i

deltaH_p = 0

For i = 1 To n2

        deltaH_p = deltaH_p + (arr_skp (i) * arr_H_0_p (i))

 Next i

deltaH = deltaH_p - deltaH_r

Debug.Print "deltaH = " & deltaH

deltaG_r = 0

For i = 1 To n1

       deltaG_r = deltaG_r + (arr_skr (i) * arr_G_0_r (i))

Next i

deltaG_p = 0

For i = 1 To n2

       deltaG_p = deltaG_p + (arr_skp (i) * arr_G_0_p (i))

 Next i

deltaG = deltaG_p - deltaG_r

Debug.Print "deltaG = " & deltaG

deltaC_r = 0

For i = 1 To n1

       deltaC_r = deltaC_r + (arr_skr (i) * arr_C_r (i))

Next i

deltaC_p = 0

For i = 1 To n2

       deltaC_p = deltaC_p + (arr_skp (i) * arr_C_p (i))

Next i

deltaC = 0.001 * (deltaC_p - deltaC_r)

Debug.Print "deltaC = " & deltaC

deltaS_r = 0

For i = 1 To n1

       deltaS_r = deltaS_r + (arr_skr (i) * arr_S_r (i))

Next i

deltaS_p = 0

For i = 1 To n2

       deltaS_p = deltaS_p + (arr_skp (i) * arr_S_p (i))

Next i

deltaS = 0.001 * (deltaS_p - deltaS_r)

Debug.Print "deltaS = " & deltaS

Sum_skr = 0

For i = 1 To n1

       Sum_skr = Sum_skr + Abs (arr_skr (i))

Next i

Sum_skp = 0

For i = 1 To n2

       Sum_skp = Sum_skp + Abs (arr_skp (i))

Next i

Sum_sk = Sum_skr + Sum_skp

Debug.Print "Sum_sk = " & Sum_sk

Debug.Print ""

'Заполнение полей температуры'

 If Me.Flag Then

For i = 1 To 11

       FName = "F1" & CStr (i)

       arr_Temp (i) = Me.Controls (FName)

   Debug.Print "arr_Temp (i) = " & arr_Temp (i)

Next i

Else

For i = 1 To 11

        If i = 1 Then arr_Temp (i) = 25 Else: arr_Temp (i) = 100 * (i - 1)

        Debug.Print "arr_Temp (i) = " & arr_Temp (i)

        FName = "F1" & CStr (i)

        Me.Controls (FName).Value = arr_Temp (i)

Next i

End If

Debug.Print ""

'Заполнение полей приращений энтальпии

For i = 1 To 11

        If i = 1 Then arr_enthalp (i) = deltaH Else: arr_enthalp (i) = deltaH + deltaC * (arr_Temp (i) - 25)

        Debug.Print "arr_enthalp (i) = " & arr_enthalp (i)

        FName = "F2" & CStr (i)

        Me.Controls (FName).Value = arr_enthalp (i)

Next i

Debug.Print ""

'Заполнение полей погрешностей приращений энтальпии

For i = 1 To 11

        arr_H_inac (i) = Abs (Sum_sk * (0.1 + 0.001 * (arr_Temp (i) + 273)) / arr_enthalp (i))

        Debug.Print "arr_H_inac (i) = " & arr_H_inac (i)

        FName = "F3" & CStr (i)

        Me.Controls (FName).Value = arr_H_inac (i)

Next i

Debug.Print ""

'Заполнение полей приращений потенциала Гиббса

 For i = 1 To 11

        If i = 1 Then arr_gibbs (i) = deltaG Else: arr_gibbs (i) = deltaG - deltaS * (arr_Temp (i) - 25)

        Debug.Print "arr_gibbs (i) = " & arr_gibbs (i)

        FName = "F4" & CStr (i)

        Me.Controls (FName).Value = arr_gibbs (i)

Next i

Debug.Print ""

'Заполнение полей погрешностей приращений потенциала Гиббса

For i = 1 To 11

        arr_G_inac (i) = Abs (Sum_sk * (0.1 + 0.001 * (arr_Temp (i) + 273)) / arr_gibbs (i))

        Debug.Print "arr_G_inac (i) = " & arr_G_inac (i)

        FName = "F5" & CStr (i)

        Me.Controls (FName).Value = arr_G_inac (i)

Next i

Debug.Print ""

'Заполнение полей логарифма константы скорости

For i = 1 To 11

        arr_lnk (i) = (-arr_gibbs (i)) / (0.001 * 8.31 * (arr_Temp (i) + 273))

        Debug.Print "arr_lnk (i) = " & arr_lnk (i)

        FName = "F6" & CStr (i)

        Me.Controls (FName).Value = arr_lnk (i)

Next i

Debug.Print ""

'Заполнение поля температуры начала реакции

TempBegin = 25 + (deltaG / deltaS)

Debug.Print "TempBegin = " & TempBegin

F711.SetFocus

F711.Value = TempBegin

Debug.Print ""

'Заполнение таблицы Выход_тп

output.MoveFirst

For i = 10 To 70 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (1) = Me.Controls (FName).Caption

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 11 To 71 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (2) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 12 To 72 Step 10

output.Edit

        FName = "F" & CStr (i)

        output.Fields (3) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 13 To 73 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (4) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 14 To 74 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (5) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 15 To 75 Step 10

       output.Edit

       FName = "F" & CStr (i)

       output.Fields (6) = Me.Controls (FName).Value

       output.Update

       output.MoveNext

Next i

output.MoveFirst

For i = 16 To 76 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (7) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 17 To 77 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (8) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

 For i = 18 To 78 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (9) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 19 To 79 Step 10

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (10) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 110 To 710 Step 100

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (11) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

output.MoveFirst

For i = 111 To 711 Step 100

        output.Edit

        FName = "F" & CStr (i)

        output.Fields (12) = Me.Controls (FName).Value

        output.Update

        output.MoveNext

Next i

End Sub

В процессе выполнения процедуры Вычислить заполняются все вычисляемые поля формы, а также таблица Выход_тп. Если необходимости в погрешностях на экране монитора нет, то поля с погрешностями могут быть убраны при помощи нажатия кнопки Погрешности. Нажатие этой кнопки вызывает запуск одноименной процедуры:

Private Sub Погрешности_Click ()

    Dim str As String, i As Integer

    If F30.Visible = True Then

       For i = 0 To 11

            str = "F3" & CStr (i)

            Me.Controls (str).Visible = False

        Next i

        For i = 0 To 11

            str = "F5" & CStr (i)

            Me.Controls (str).Visible = False

        Next i

    Else

        For i = 0 To 11

            str = "F3" & CStr (i)

            Me.Controls (str).Visible = True

        Next i

        For i = 0 To 11

            str = "F5" & CStr (i)

            Me.Controls (str).Visible = True

        Next i

    End If

End Sub

Нажатием кнопки Графики раскрывается отчет Графики_Потенциалы. Построение графиков зависимости ΔH, ΔG и LnKp от температуры осуществляется по данным таблицы Выход_тп нажатием кнопки Построить на отчете Графики_Потенциалы. Кроме того, при нажатии этой кнопки, осуществляется вывод графиков и их сохранение в формате png. При нажатии кнопки Построить выполняется одноименная процедура:  Private Sub Построить_Click ()

Dim exc As Excel.Workbook, chrt As Excel.Chart

Dim i As Integer, A As Integer, B As Integer, C As Integer

                                               Set exc = Exc_Potentials.Object

                                               exc.Worksheets ("Sh1").Range ("A1:D12") = ""

                                               Set chrt = exc.ActiveChart

Dim db As Database, output As DAO.Recordset

                                               Set db = CurrentDb

                                                Set output = db.OpenRecordset ("Выход_тп")

                               output.MoveFirst

                                               For i = 1 To 12

                                                              exc.Worksheets ("Sh1").Cells (i, 1) = output.Fields (i)

                                               Next i

                               output.MoveNext

                                               For i = 1 To 12

                                                              exc.Worksheets ("Sh1").Cells (i, 2) = output.Fields (i)

                                               Next i

                               output.MoveNext

                               output.MoveNext

                                               For i = 1 To 12

                                                              exc.Worksheets ("Sh1").Cells (i, 3) = output.Fields (i)

                                               Next i

                                output.MoveNext

                               output.MoveNext

                                               For i = 1 To 12

                                                              exc.Worksheets ("Sh1").Cells (i, 4) = output.Fields (i)

                                               Next i

                               Exc_Potentials.Object.Save

                               chrt.Export FileName:="D:\Потенциалы.Графики.png", filtername:="PNG"

End Sub

Вывод отчета Потенциалы, который содержит данные расчетов в табличном виде, осуществляется нажатием кнопки Вывод путем выполнения процедуры Вывод:         Private Sub Вывод_Click ()

DoCmd.OpenReport "Потенциалы", acViewReport

End Sub

Результаты расчетов

Программа использовалась для расчетов термодинамических параметров различных физико-химических реакций, использующихся в процессе переработки минерального сырья Верхнего Приамурья. В табл. 2 приведены результаты расчетов ряда реакций: фторирования каолина гидродифторидом аммония, сублимации, пирогидролиза, гидролизации гексафторсиликата аммония аммиачной водой и трех реакций регенерации гидродифторида аммония [7].

Таблица 2 - Расчетные значения термодинамических параметров ряда реакций.17-06-2015 15-22-51

Из данных Табл. 1 по рассчитываемым значениям изменения потенциала Гиббса следует вывод, что реакция №1 идет при всех температурах исследуемого диапазона. Реакции №2, №3 и №7 при комнатной температуре в прямом направлении не идут, а начинаются при более высоких температурах (реакция №2 при Т = 3060С, №3 при Т = 3170С, №7 при Т=280С). Указанные в скобках температуры, при которых происходит изменение направлений этих реакций, вычисляются по формуле (5). Реакции №4, №5 и №6 при комнатной температуре идут в прямом направлении, но прекращаются при более высокой температуре ((реакция №4 при Т = 1480С, №5 при Т = 2100С, №6 при Т=2830С)), следовательно, при высоких температурах эти реакции идут в обратном направлении.

Заключение

В работе описывается программа, созданная на базе приложения Microsoft Access 2007 – 2010 c использованием процедур vba. Использование процедур vba придает программе значительную гибкость и облегчает интерфейс по сравнению с первыми версиями программы, использующими стандартные средства автоматизации. Программа позволяет проводить расчеты термодинамических параметров реакций, строить графики их зависимостей от температуры, а также оценивать погрешности их вычислений.

Литература

  1. Сизяков В.М. Состояние и проблемы развития алюминиевой промышленности России в условиях переходного периода (литературный обзор) // Цветные металлы. – 2000. – № 11-12. – С. 29-33.
  2. В.С.Римкевич, А.А.Пушкин, Ю.Н.Маловицкий, И.В.Гиренко. Изучение процессов фторидной переработки кремнеземсодержащего сырья. Журнал прикладной химии. – 2011. – Т. 84. – Вып. 3. – С. 353 – 358.
  3. А.А.Пушкин, В.С.Римкевич, Ю.Н.Маловицкий, Р.В.Белов. Автоматизация расчетов термодинамических равновесий в процессе переработки алюмосиликатного сырья по фторидной технологии. Труды V Всероссийской научной школы. «Математические исследования в естественных науках». 12–14 октября 2009г. – Апатиты: изд. ГИ КНЦ РАН, 2009. – С. 225–228.
  4. А.А.Пушкин, В.С.Римкевич. Автоматизация термодинамических расчетов в процессах фторидного обогащения алюмосиликатного сырья. Сборник докладов Второй Всероссийской научной конференции «Вопросы геологии и комплексного освоения природных ресурсов Восточной Азии». – Благовещенск. – 15 – 16 октября 2012г. – С. 280 – 283.
  5. А.А.Пушкин, М.А.Леонтьев. Программа для расчета термодинамических величин на основе приложения Microsoft Access Математические исследования в естественных науках. Труды IX Всероссийской научной школы. Апатиты, Геологический институт Кольского НЦ РАН, Кольское отделение РМО, 10-11 октября 2013 г. /Ред. Ю.Л. Войтеховский. – Апатиты: Изд-во K & M, 2013. - c. 68 – 72.
  6. Ахметов Н.С. Общая и неорганическая химия. – М.: Высшая школа, 1988. – 640С.
  7. Римкевич В.С., Пушкин А.А., Маловицкий Ю.Н., Еранская Т.Ю., Гиренко И.В. Синтез и свойства наночастиц аморфного SiO2. Неорганические материалы. – 2012. – Т. 48. – № 4. – С. 423 – 428.

References

  1. Sizjakov V.M. Sostojanie i problemy razvitija aljuminievoj promyshlennosti Rossii v uslovijah perehodnogo perioda (literaturnyj obzor) // Cvetnye metally. – 2000. – № 11-12. – S. 29-33.
  2. V.S.Rimkevich, A.A.Pushkin, Ju.N.Malovickij, I.V.Girenko. Izuchenie processov ftoridnoj pererabotki kremnezemsoderzhashhego syr'ja. Zhurnal prikladnoj himii. – 2011. – T. 84. – Vyp. 3. – S. 353 – 358.
  3. A.A.Pushkin, V.S.Rimkevich, Ju.N.Malovickij, R.V.Belov. Avtomatizacija raschetov termodinamicheskih ravnovesij v processe pererabotki aljumosilikatnogo syr'ja po ftoridnoj tehnologii. Trudy V Vserossijskoj nauchnoj shkoly. «Matematicheskie issledovanija v estestvennyh naukah». 12–14 oktjabrja 2009g. – Apatity: izd. GI KNC RAN, 2009. – S. 225–228.
  4. A.Pushkin, V.S.Rimkevich. Avtomatizacija termodinamicheskih raschetov v processah ftoridnogo obogashhenija aljumosilikatnogo syr'ja. Sbornik dokladov Vtoroj Vserossijskoj nauchnoj konferencii «Voprosy geologii i kompleksnogo osvoenija prirodnyh resursov Vostochnoj Azii». – Blagoveshhensk. – 15 – 16 oktjabrja 2012g. – S. 280 – 283.
  5. A.Pushkin, M.A.Leont'ev. Programma dlja rascheta termodinamicheskih velichin na osnove prilozhenija Microsoft Access 2007. Matematicheskie issledovanija v estestvennyh naukah. Trudy IX Vserossijskoj nauchnoj shkoly. Apatity, Geologicheskij institut Kol'skogo NC RAN, Kol'skoe otdelenie RMO, 10-11 oktjabrja 2013 g. /Red. Ju.L. Vojtehovskij. – Apatity: Izd-vo K & M, 2013. - c. 68 – 72.
  6. Ahmetov N.S. Obshhaja i neorganicheskaja himija. – M.: Vysshaja shkola, 1988. – 640S.
  7. Rimkevich V.S., Pushkin A.A., Malovickij Ju.N., Eranskaja T.Ju., Girenko I.V. Sintez i svojstva nanochastic amorfnogo SiO2. Neorganicheskie materialy. – 2012. – T. 48. – № 4. – S. 423 – 428.