АВТОМАТИЗАЦИЯ РАСЧЕТОВ ИЗМЕНЕНИЙ ТЕРМОДИНАМИЧЕСКИХ ПОТЕНЦИАЛОВ В ХОДЕ ХИМИЧЕСКИХ РЕАКЦИЙ
А.А. Пушкин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]:
где ∆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)
где – универсальная газовая постоянная.
В случае, когда значения констант очень велики или очень малы удобно пользоваться логарифмом константы равновесия:
На основе формул (1) и (4) была составлена программа, описанная в работе [3].
В ряде случаев представляет интерес вопрос о температуре начала прямой реакции или о температуре равновесия. Температуру начала реакции Tb найдем из следующего условия
Точность значений потенциалов ∆G, ∆H в таблицах стандартных термодинамических потенциалов составляет δ(∆G2980) ≈ δ(∆H2980) ≈ 0,1кДж/моль, их производных δ(∆S2980) ≈ δ (∆C2980) ≈ 1Дж/(моль*К).
Тогда, пренебрегая членами вида 0,001*δТ*ΔS0298, 0,001*298*ΔS0298 по сравнению с членом 0,001*ΔS0298*Т точность вычисленных значений составляет
Реализация вычислений на основе Microsoft Access
На конференциях в Апатитах [3] и в Благовещенске [4] сообщалось о программе, реализованной на основе приложения Microsoft Access 2003 c использованием стандартных средств. В настоящий момент программа усовершенствована, преобразована в формат Microsoft Access 2007 с использованием процедур vba. Окно программы с раскрытой формой Потенциалы имеет вид, показанный на Рис. 1. В области переходов программы содержатся ярлыки 6 объектов Access, которые используются для работы программы: форма Потенциалы для расчетов, таблица Вход_тп для ввода данных и Выход_тп для вывода данных, а также таблица Потенциалы, содержащая значения термодинамических потенциалов и их производных при стандартных условиях 250С и давлении р = 1 Бар для 150 веществ, наиболее часто встречающихся в реакциях с участием алюмосиликатов.
Отчет Графики_Потенциалы служит для вывода данных в графической форме: кривые температурных зависимостей изменений энтальпии и потенциала Гиббса, а также логарифма константы равновесия. Отчет Потенциалы выводит информацию о всех величинах, вычисляемых в форме Потенциалы, в табличном виде.
На Рис. 1 показана форма Потенциалы, раскрытая в окне программы Потенциалы. В области заголовков формы Потенциалы находятся заголовки полей, а в области данных – поля, через которые осуществляется ввод данных в программу. Поскольку исходными данными для расчета является уравнение химической реакции с уравненными стехиометрическими коэффициентами, то перед расчетом необходимо ввести данные о веществах – реагентах и продуктах, а также об их
Рис. 1 - Окно программы Потенциалы в формате Microsoft Access 2007 – 2010 с раскрытой формой Потенциалы в Режиме формы.
стехиометрических коэффициентах. Поля со списком Реагент и Продукт формы Потенциалы связаны с полями со списком Реагент и Продукт таблицы Вход_тп (Рис. 2).
А)
Б)
Рис. 2 - Таблица Вход_тп: А) в Режиме таблицы, Б) в режиме Конструктор.
Поле Вещество таблицы Потенциалы (Рис. 3) является столбцом подстановки для этих двух полей со списками. Через поля со списками осуществляется выборка необходимых названий веществ, находящихся в поле Вещество таблицы Потенциалы. Эти значения заносятся в таблицу Вход_тп. Стехиометрические коэффициенты вводятся через поля ввода СКР и СКП формы Потенциалы в таблицу Вход_тп.
Таблица Потенциалы содержит значения термодинамических потенциалов ΔH и ΔG, а также производных термодинамических потенциалов Ср и Sp при стандартных условиях.
Рис. 3 - Окно программы Потенциалы с раскрытой таблицей Потенциалы.
Таблица содержит данные о 150 веществах, наиболее часто использующихся в ходе фторидной переработки алюмосиликатов. Таблица содержит 6 полей: поле №№ с порядковыми номерами веществ в таблице, поля Вещество, Н(кДж/моль), С(Дж/моль*К), S(Дж/моль*К), G(кДж/моль).
В области примечаний формы Потенциалы содержатся вычисляемые поля. Программа вычисляет значения изменений термодинамических потенциалов (энтальпии и энергии Гиббса) в ходе реакции и погрешностей их вычисления, значений логарифмов константы равновесия при различных температурах. При этом программа предоставляет возможность расчета для одиннадцати температур, начиная со стандартной 250С, и далее, с шагом 1000С, от 1000С до 10000C.
Помимо стандартного ряда температур программа позволяет проводить вычисления для 10 произвольных температур, включая отрицательные. Переключение к режиму произвольного выбора температур осуществляется установкой указателя Выбор Т на форме Потенциалы.
Кнопка Погрешности позволяет отменить вывод полей погрешностей вычисления изменений потенциалов на экран.
А)
Б)
Рис. 4 - А) Таблица Выход_тп и Б) Отчет Потенциалы в окне программы Потенциалы.
Температура начала реакции помещается в поле Начало реакции, С. Значения вычисляемых в форме полей заносятся также в таблицу Выход_тп (Рис. 4а), на основе которой составлен отчет Потенциалы (Рис. 4б). Отчет раскрывается нажатием кнопки Вывод на форме Потенциалы.
Кнопка Графики позволяет построить температурные зависимости изменений энтальпии и потенциала Гиббса, а также логарифма константы равновесия. Нажатием данной кнопки раскрывается отчет. Построение графиков осуществляется нажатием кнопки Построить в отчете Графики_Потенциалы. Для построения графика используется встроенная диаграмма Excel с подключенной Библиотекой Microsoft Excel 14.0 Object Library. Значения изменений энтальпии и потенциала Гиббса откладываются по основной оси, а логарифма константы равновесия по вспомогательной.
Рис. 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 - Расчетные значения термодинамических параметров ряда реакций.
Из данных Табл. 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 придает программе значительную гибкость и облегчает интерфейс по сравнению с первыми версиями программы, использующими стандартные средства автоматизации. Программа позволяет проводить расчеты термодинамических параметров реакций, строить графики их зависимостей от температуры, а также оценивать погрешности их вычислений.
Литература
- Сизяков В.М. Состояние и проблемы развития алюминиевой промышленности России в условиях переходного периода (литературный обзор) // Цветные металлы. – 2000. – № 11-12. – С. 29-33.
- В.С.Римкевич, А.А.Пушкин, Ю.Н.Маловицкий, И.В.Гиренко. Изучение процессов фторидной переработки кремнеземсодержащего сырья. Журнал прикладной химии. – 2011. – Т. 84. – Вып. 3. – С. 353 – 358.
- А.А.Пушкин, В.С.Римкевич, Ю.Н.Маловицкий, Р.В.Белов. Автоматизация расчетов термодинамических равновесий в процессе переработки алюмосиликатного сырья по фторидной технологии. Труды V Всероссийской научной школы. «Математические исследования в естественных науках». 12–14 октября 2009г. – Апатиты: изд. ГИ КНЦ РАН, 2009. – С. 225–228.
- А.А.Пушкин, В.С.Римкевич. Автоматизация термодинамических расчетов в процессах фторидного обогащения алюмосиликатного сырья. Сборник докладов Второй Всероссийской научной конференции «Вопросы геологии и комплексного освоения природных ресурсов Восточной Азии». – Благовещенск. – 15 – 16 октября 2012г. – С. 280 – 283.
- А.А.Пушкин, М.А.Леонтьев. Программа для расчета термодинамических величин на основе приложения Microsoft Access Математические исследования в естественных науках. Труды IX Всероссийской научной школы. Апатиты, Геологический институт Кольского НЦ РАН, Кольское отделение РМО, 10-11 октября 2013 г. /Ред. Ю.Л. Войтеховский. – Апатиты: Изд-во K & M, 2013. - c. 68 – 72.
- Ахметов Н.С. Общая и неорганическая химия. – М.: Высшая школа, 1988. – 640С.
- Римкевич В.С., Пушкин А.А., Маловицкий Ю.Н., Еранская Т.Ю., Гиренко И.В. Синтез и свойства наночастиц аморфного SiO2. Неорганические материалы. – 2012. – Т. 48. – № 4. – С. 423 – 428.
References
- Sizjakov V.M. Sostojanie i problemy razvitija aljuminievoj promyshlennosti Rossii v uslovijah perehodnogo perioda (literaturnyj obzor) // Cvetnye metally. – 2000. – № 11-12. – S. 29-33.
- 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.
- 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.
- 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.
- 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.
- Ahmetov N.S. Obshhaja i neorganicheskaja himija. – M.: Vysshaja shkola, 1988. – 640S.
- 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.