Descargar

Simulación de un circuito de molienda clasificación directa


    1. Justificación
    2. Objetivos
    3. Elementos Conceptuales
    4. Diseño del programa
    5. Procedimiento
    6. Conclusiones
    7. Recomendaciones
    8. Bibliografía
    9. Anexo. Simulación de un circuito de molienda clasificación directa

    I-Introducción

    1.1-Contexto:

    • Tendencias vigentes de la tecnología
    • Optimización de operaciones metalúrgicas
    • Extensión y detalle del documento
    • Proyecto de investigación
    • Este simulador no es dinámico, se aplica al estado estacionario.
    • Los cálculos dependen del tonelaje de alimentación fresca y de las dimensiones y parámetros de operación del molino así como de las propiedades del mineral.

    1.2-Justificación:

    Todos los procesos necesarios en la industria de procesamiento de minerales son importantes debido a que cada uno contribuye para la obtención del producto deseado.

    Sin embargo los procesos de conminución de mineral juegan un rol trascendental en la recuperación de elementos valiosos desde sus menas. Dentro de ellos la molienda tiene importancia especial, no solamente por sus altos costos operativos, sino también al hecho de que las propiedades físicas y mineralógicas del producto molido resultante es determinante en gran medida de la efectividad de las siguientes etapas. Es por eso que la optimización de esta operación unitaria disminuiría considerablemente los costos de operación.

    1.3-Objetivos:

    • Desarrollar un simulador de un circuito de molienda-clasificación directa en Visual Basic.

    1.4-Elementos Conceptuales:

    El circuito de molienda-clasificación que se permite simular es el siguiente:

    Figura 1

    Este sistema tiene tres subsistemas (S1, S2, S3), los cuales nos permitirán realizar los cálculos para la simulación.

    1.4.1-El subsistema (S1) esta conformado por el Hidrociclón, este subsistema nos permitirá calcular: El porcentaje acumulado retenido del Underflow; tonelaje de salida del Underflow, cuyos modelos matemáticos son:

    (1)

     

    (2)

     

    (3)

    (4)

    (5)

    (6)

    (7)

    Donde,

    a1, a2, a3, a4, son constantes del Hidrociclón.

    Qf, Flujo volumétrico de pulpa en la alimentación del Hidrociclón, m3/hr.

    H, presión en la alimentación del Hidrociclón, expresada en pies equivalentes en la pulpa de alimentación, ft.

    , Fracción sólidos por volumen alimentación del Hidrociclón, %.

    DC, diámetro del Hidrociclón, in.

    h, altura del Hidrociclón, definida como la distancia del fondo (Vortex) a la parte superior (apex), in.

    DI, Diámetro de la entrada de la alimentación del Hidrociclón (área equivalente si la entrada es rectangular), in.

    DO, Diámetro del vortex Hidrociclón (Overflow), in.

    DU, Diámetro apex Ciclón (Underflow), in.

    , Tamaño Corre del corte de la partícula que permite un cociente de peso 50:50 entre el Overflow y Underflow.

    S, distribución de los caudales volumétricos (flor split) de rebalse y descarga del Hidrociclón.

    m, parámetro de plit’s nunca es mayor que 4.

    , Eficacia Corregida de Clasificación.

    , By_pass finos.

    , By_pass del agua.

    1.4.2-El subsistema (S2) esta conformado por la unión de flujos del Underflow; del Hidrociclón y la alimentación fresca, este subsistema permite realizar el calculo de: El porcentaje acumulado retenido de la alimentación al molino, alimentación total al molino; los modelos matemáticos son:

    (8 y 9)

    Donde

    Fj, Flujo seco total de alimentación fresca al sistema tons/hr.

    U, toneladas del Underflow del Hidrociclón, tons/hr.

    Fm, flujo total de alimentación al molino (incluye carga circulante), tons/h.

    fm, porcentaje acumulada retenida de sólidos en la alimentación compuesta al molino, %.

    fu, porcentaje acumulada retenida de sólidos en el Underflow del Hidrociclón,%.

    fsf, porcentaje acumulada retenida de sólidos en la alimentación fresca al circuito,%.

    1.4.3-El subsistema (S3) esta conformado por el molino, este subsistema permite calcular el porcentaje acumulado retenido en la descarga del molino; los modelos matemáticos son:

    (10)

    Donde:

    fm:= {fi |i=1,2,…n} vector producto (descarga) del molino, cuyos elementos representan la distribución granulométrica parcial del producto

    fd= { fd |i=1,2,…n} vector de alimentación al molino, cuyos elementos representan la distribución granulométrica parcial de la alimentación al equipo

    T es la matriz triangular inferior (nxn), cuyos elementos Tij están dados:

    Tij =

    e

    (11)

    Donde:

    Es la función de fractura en su forma acumulada retenida.

    Es la función de selección específica.

    J es la matriz diagonal (nxn), cuyos elementos Jij están dados por:

    Jij =

    (12)

    (13) (14)

    (15)

    (16)

    (17)

    Donde:

    D, Diámetro interior molino,ft.

    L, Largo interior molino, ft.

    J, Nivel llenado aparente. Carga volumétrica aparente llenado (incluyendo bolas y exceso pulpa sobre bolas cargadas, mas pulpa en espacios intersticiales entre bolas), porcentaje ocupa carga relación volumen interno total molino, %.

    m, Densidad Mineral, ton/m3.

    ap, Densidad aparente carga molino (incluyendo espacios intersticiales), ton/m3.

    Pneta, Potencia Neta Molino, kW.

    , Angulo inclinación superficie carga durante operación, º.

    P, Potencia real o total, kW.

    Lw, Pérdidas potencia, %.

    E, Energía por tonelada carga, kWh/ton.

    Fm, Flujo seco total alimentación molino (incluye carga recirculada), tph.

    La relación de las variables entre estos tres subsistemas es el siguiente:

    Figura 2

    4-DISEÑO DEL PROGRAMA:

    4.1-Algoritmo de la simulación del circuito molienda-clasificación.

    4.2- PROCEDIMIENTO

    En la Figura 3 se indica el esquema seguido en el desarrollo del software:

    4.2.1- Variables de Ingreso:

    4.2.1.1-Parámetros del Molino

    La figura 4 se representan las constante del molino, estas dependen solo del tipo de mineral que se va a reducir de tamaño

    , constantes para hallar la función de selección especifica "SE"

    constantes para hallar la función de fractura "B(i,j)"

    dcrit, diámetro crítico al que se quiere llegar, micrones

    Figura 4

    La figura 5 se representa datos de operación del molino

    Lw, Pérdidas potencia, %, (0→100)

    , Angulo inclinación superficie carga durante operación, º, (0→180)

    , porcentaje velocidad crítica utilizada, %

    D, Diámetro interior molino ,ft

    L, Largo interior molino, ft

    Jp, Nivel llenado pulpa espacios intersticiales %

    J, Nivel llenado aparente. Carga volumétrica aparente llenado (incluyendo bolas y exceso pulpa sobre bolas cargadas, mas pulpa en espacios intersticiales entre bolas), porcentaje ocupa carga relación volumen interno total molino, %

    fsd, Fracción peso de los sólidos a la descarga del molino, %

    JB, Nivel llenado bolas

    fv, Fracción volumétrica espacios intersticiales entre bolas(aprox. 40% volumen aparente ocupado por carga).

    B, Densidad bolas, ton/m3

    m, Densidad Mineral, ton/m3

    Figura 5

    4.2.1.2- Parámetros del Hidrociclón

    • La figura 6 se representa datos de operación del Hidrociclón

    fus, Fracción Sólidos Underflow Ciclón, %.

    fos, Fracción Sólidos Overflow Ciclón, %.

    a1, a2, a3, a4son constantes del Hidrociclón

    N, número de hidrociclones

    DC, diámetro del Hidrociclón, in

    h, altura del Hidrociclón, definida como la distancia del fondo (Vortex) a la parte superior (apex), in.

    DI, Diámetro de la entrada de la alimentación del Hidrociclón (área equivalente si la entrada es rectangular), in

    DO, Diámetro del vortex Hidrociclón (Overflow), in

    DU, Diámetro apex Ciclón (Underflow), in

    Figura 6

    4.2.1.3-Alimentación Fresca

    Esta parte de la ventana representa el análisis granulométrico % acumulado retenido de la alimentación fresca al circuito de molienda clasificación y el tonelaje seco de alimentación fresca.

    Malla, representa el tipo de malla usada en el análisis granulométrico

    Abertura, es el diámetro correspondiente al numero de malla en micrones

    Figura 7

    4.2.2- Proceso de Iteración.

    El Método Numérico que se a empleado en el Programa en Método de Punto Fijo, la variable que se itera es la carga circulante cci = cc0

    Se partirá asumiendo una Carga Circulante Inicial = 1, obteniendo la nueva carga circulante la que nos permite determinar:

    • La masa en cada malla en la alimentación al Hidrociclón(c/U)
    • La masa en cada malla en el overflow al Hidrociclón
    • La masa en cada malla en el underflow del Hidrociclón
    • % retenido underflow y overflow del Hidrociclón
    • Masa total underfloW de cada Hidrociclón
    • % retenido underflow y overflow de cada malla
    • calculo de la fracción de sólidos acumulada retenida
    • calculo de la matriz Tij
    • calculo de la salida del molino
    • Nueva Carga Circulante.

    El proceso de iteración termina cuando TM de alimentación nueva = TM de alimentación asumida.

    4.2.3- Resultados:

    • Se obtiene los Balances de Matria en cada uno de los subsistemas.

    • Se genera un Reporte en Excel , que nos permite evaluar el Proceso del circuito.

    5- CONCLUSIONES

    • Se trabajo con el método numérico de punto fijo el cual da una buena convergencia
    • Para el criterio de convergencia se usa la variación de la carga circulante, asumiendo se una inicial de 1
    • Se construyo el programa en Visual Basic 6.0, el cual permite predecir el porcentaje acumulado passing del molino así como también el balance de materia del circuito

    6- RECOMENDACIONES

    • Este simulador no es dinámico, se aplica al estado estacionario.
    • Los cálculos dependen del tonelaje de alimentación fresca y de las dimensiones y parámetros de operación del molino así como de las propiedades del mineral.
    • Es importante saber las constantes del clasificador y del molino ya que este simulador no calcula las constantes.

    7- BIBLIOGRAFIA

    • JOSE MANZANEDA CABALA "Procesamiento de minerales", Lima-Perú 1995
    • FERNANDO AYRES HIDALGO "Técnicas matemáticas aplicadas al balance de materia circuitos de Chancado, molienda y flotación" 1998
    • JAIME E. SEPULVEDA "Dimensionamiento y optimización de plantas concentradoras mediante técnicas de modelación matemática" Chile, 1986
    • ANGEL EGAS SAENS "Evaluación de plantas concentradoras"
    • JHON M. CURRIE "Operaciones Unitarias en el procesamiento de Minerales"

    ANEXO

    SIMULACIÓN DE UN CIRCUITO DE MOLIENDA CLASIFICACIÓN DIRECTA

    I- CODIGO DEL PROGRAMA:

    1. Datos de Ingreso

    frm Datos de Ingreso

    Private Sub cmdaceptar_Click()

    a01 = Val(txta01.Text)

    a02 = Val(txta02.Text)

    a11 = Val(txta11.Text)

    a12 = Val(txta12.Text)

    a2 = Val(txta2.Text)

    dcrit = Val(txtdcrit.Text)

    B00 = Val(txtb00.Text)

    B01 = Val(txtb01.Text)

    B1 = Val(txtb1.Text)

    B2 = Val(txtb2.Text)

    lw = Val(txtlw.Text)

    angulo = Val(txta.Text)

    phy = Val(txtphi.Text)

    diametro = Val(txtdiametro.Text)

    largo = Val(txtlongitud.Text)

    Jp = Val(txtjp.Text)

    tonff = Val(txtafrescacircuito.Text)

    Jllenado = Val(txtj.Text)

    Jbolas = Val(txtjb.Text)

    fracv = Val(txtfv.Text)

    dbolas = Val(txtdensidadbolas.Text)

    dmineral = Val(txtdensidadmineral.Text)

    fsd = Val(txtfsd.Text)

    Rem hidrociclon

    fus = Val(txtfus.Text)

    fos = Val(txtfos.Text)

    lambda = Val(txtlambda.Text)

    ca1 = Val(txtca1.Text)

    ca2 = Val(txtca2.Text)

    ca3 = Val(txtca3.Text)

    ca4 = Val(txtca4.Text)

    NH = Val(txtNH.Text)

    DCH = Val(txtDC.Text)

    HC = Val(txtHC.Text)

    DIH = Val(txtDI.Text)

    DOH = Val(txtDO.Text)

    DUH = Val(txtDU.Text)

    cc0 = Val(txtCC0.Text)

    'fasumido en la alimentacion del hidrociclon

    fasumido(1) = 0: fasumido(10) = 2.971: fasumido(19) = 1

    fasumido(2) = 0.632: fasumido(11) = 3.857

    fasumido(3) = 1.397: fasumido(12) = 4.842

    fasumido(4) = 1.384: fasumido(13) = 6.004

    fasumido(5) = 1.272: fasumido(14) = 6.732

    fasumido(6) = 1.344: fasumido(15) = 6.771

    fasumido(7) = 1.568: fasumido(16) = 6.377

    fasumido(8) = 1.857: fasumido(17) = 5.725

    fasumido(9) = 2.475: fasumido(18) = 5.023

    fasumido(19) = 4.164: fasumido(20) = 35.604

    'recuperado los valores % retenido y abertura de las mallas

    For i = 1 To 21

    abertura(i) = Val(lblopen(i).Caption)

    malla(i) = CStr(label1(i).Caption)

    If i = 21 Then

    Exit For

    Else

    faf(i) = Val(txtfaf(i).Text)

    End If

    Next i

    Rem calculo del mid size y SE

    For i = 2 To 21

    If i <> 21 Then

    d(i – 1) = Sqr(abertura(i) * abertura(i – 1))

    ElseIf i = 21 Then

    d(i – 1) = (abertura(i) + abertura(i – 1)) / 2

    SE(i – 1) = 0: Exit For

    End If

    SE(i – 1) = (1 / (1 + a02 / a01)) * ((a01 * ((d(i – 1)) ^ a11) / (1 + (d(i – 1) / dcrit) ^ a2)) + a02 * (d(i – 1)) ^ a12)

    Next i

    'calulo de la potrencia del molino

    Me.Hide

    frmprincipal.Show

    frmprincipal.cmdcalcular.Visible = True

    End Sub

    1.2- Hidrociclon

    Frm Hidrociclón

    Private Sub cmdaceptar_Click()

    mdiprincipal.Enabled = True

    Unload frmhidrociclon

    End Sub

    Private Sub Form_Activate()

    Rem hidrocilon

    TonF = TonFM

    'overflow

    txtfso.Text = Round(fos, 2) & " " & "%"

    txtppo.Text = Round(densidad(fos), 2) & " " & "ton/m3"

    txtTonO.Text = Round(Over * NH, 2) & " " & "ton/hr"

    'underflow

    txtfsu.Text = Round(fus, 2) & " " & "%"

    txtppu.Text = Round(densidad(fus), 2) & " " & "ton/m3"

    txttonU.Text = Round(TonFM – Over * NH, 2) & " " & "ton/Hr"

    'alimentacion

    Rem calculo de la fraccion de solidos a la alimentacion

    fsf = TonF / (TonO / fos + TonU / fus)

    txtfsf.Text = Round(fsf, 2) & " " & "%"

    txtppf.Text = Round(densidad(fsf), 2) & " " & "ton/m3"

    txtTonF.Text = Round(TonF, 2) & " " & "ton/hr"

    txtNH.Text = NH

    txtpresion.Text = Round(PHidrociclon / 2.31 * densidad(fsf), 2) & " " & "Psi"

    txtbpw.Text = Round(Bpw, 2)

    txtbpf = Round(Bpf, 2)

    End Sub

    Private Sub Timer1_Timer()

    imghidrociclon.Visible = Not imghidrociclon.Visible

    End Sub

    1.3- Molino

    Frm Molino

    Private Sub cmdaceptar_Click()

    mdiprincipal.Enabled = True

    Unload frmmolino

    End Sub

    Private Sub Form_Load()

    txtEnergia.Text = Round(E, 2) & " " & "KwHr/Ton"

    'calculo del p80

    For i = 1 To 19

    If pfm(i) > 80 And pfm(i + 1) < 80 Then

    P80M = abertura(i + 1) * Exp(Log(80 / pfm(i + 1)) * Log(abertura(i + 1) / abertura(i)) / Log(pfm(i + 1) / pfm(i)))

    End If

    Next i

    For i = 1 To 19

    If pd(i) > 80 And pd(i + 1) < 80 Then

    P80D = abertura(i + 1) * Exp(Log(80 / pd(i + 1)) * Log(abertura(i + 1) / abertura(i)) / Log(pd(i + 1) / pd(i)))

    End If

    Next i

    txtp80d.Text = Round(P80D, 2) & " " & "um"

    txtp80m.Text = Round(P80M, 2) & " " & "um"

    txtppd.Text = Round(densidad(fsd), 2) & " " & "ton/m3"

    txtPR.Text = Round(Ereal, 2) & " " & "Kwhr"

    txttonD.Text = Round(TonFM, 2) & " " & "ton/hr"

    txtTonM.Text = Round(TonFM, 2) & " " & "ton/hr"

    txtV.Text = Round(Nc, 2) & " " & "rpm"

    txtWi.Text = Round(E / 10 / (1 / P80D ^ 0.5 – 1 / P80M ^ 0.5), 2) & " " & "KwHr/ton"

    txtw.Text = Round(TonFM – TonFM / fsd, 2) & " " & "m3/hr"

    End Sub

    Private Sub Timer1_Timer()

    imgtuberia2.Visible = Not imgtuberia2.Visible

    imgmolino.Visible = Not imgmolino.Visible

    imgsalida.Visible = Not imgsalida.Visible

    End Sub

    1.4- Frm Pozo

    Private Sub cmdaceptar_Click()

    mdiprincipal.Enabled = True

    Unload frmpozo

    End Sub

    Private Sub Form_Load()

    fsf = Round((TonO + TonU) / (TonO / fos + TonU / fus), 2)

    txtd.Text = Round(TonFM, 2) & " " & "ton/hr"

    txtpp1.Text = Round(densidad(fsd), 2) & " " & "m3/hr"

    txtpp2.Text = Round(densidad(fsf), 2) & " " & "m3/hr"

    txtps1.Text = Round(fsd, 2) & " " & "%"

    txtps2.Text = Round(fsf, 2) & " " & "%"

    txtw.Text = Round(TonFM – TonFM / fsd, 2) & " " & "m3/hr"

    End Sub

    Private Sub Timer1_Timer()

    imgtuberia.Visible = Not imgtuberia.Visible

    imgmsalida.Visible = Not imgmsalida.Visible

    End Sub

    1.5- Principal

    Frm Principal

    Dim fdescarga(1 To 20) As Double

    Private Sub cmdcalcular_Click()

    'la variable que se itera es la carga circulante

    cci = cc0

    ii = 1

    For i = 1 To 20

    fdescarga(i) = fasumido(i)

    Next i

    Do While ii < 1000

    hidrociclon (cci)

    calculos

    If Gauss(mat(), inversa()) = True Then

    If MULT(T(), Jm(), inversa(), fm(), fd()) = True Then

    Else

    MsgBox "Ha ocurrido un error." _

    & Chr(13) & Chr(13) & "Error : " & Err.Number _

    & Chr(13) & "Info : " & Err.Description _

    & Chr(13) & "Objeto : " & Err.Source _

    & Chr(13) & Chr(13) & "Envie este error a la dirección igorclm[arroba]hotmail.com " _

    & "y le indicaran la solución a su problema.", vbCritical, "Error al"

    End If

    End If

    'calculo de la nueva carga circulante

    'hallamos la masa en cada malla en la alimentacion al hidrociclon(c/U)

    For i = 1 To 20

    mfi(i) = TonFM / NH * fd(i, 1) / 100

    Next i

    'hallamos la masa en cada malla en el overflow al hidrociclon

    For i = 1 To 20

    mui(i) = Ei(i) * mfi(i)

    Next i

    'hallamos la masa en cada malla en el underflow del hidrociclon

    For i = 1 To 20

    moi(i) = mfi(i) – mui(i)

    Next i

    'hallamos % retenido underflow y overflow del hidrociclon

    For i = 1 To 20

    'masa total underflon de cada hidrociclon

    smui = smui + mui(i)

    smoi = smoi + moi(i)

    Next i

    For i = 1 To 20

    '% retenido underflow y overflow de cada hidrociclon

    rfu(i) = mui(i) / smui * 100

    rfo(i) = moi(i) / smoi * 100

    Next i

    cc = smui / smoi

    If Abs(cci – cc) < 0.001 Then

    mostrarpanel

    Exit Sub

    Else

    cci = cc

    End If

    For i = 1 To 20

    fdescarga(i) = fd(i, 1)

    Next i

    ii = ii + 1

    Loop

    End Sub

    Sub mostrarpanel()

    Pff(1) = 100: pfm(1) = 100: pd(1) = 100: paf(1) = 100

    po(1) = 100: pu(1) = 100

    For i = 1 To 20

    Pff(i + 1) = Round(Pff(i) – faf(i), 2)

    pfm(i + 1) = Round(pfm(i) – fm(i, 1), 2)

    pd(i + 1) = Round(pd(i) – fd(i, 1), 2)

    paf(i + 1) = Round(paf(i) – fd(i, 1), 2)

    pu(i + 1) = Round(pu(i) – rfu(i), 2)

    po(i + 1) = Round(po(i) – rfo(i), 2)

    Next i

    txtalifresca.Visible = True

    txtover.Visible = True

    txtalimolino.Visible = True

    txtcc.Visible = True

    Label1.Visible = True

    Label2.Visible = True

    Label3.Visible = True

    Label4.Visible = True

    lblmolino.Enabled = True

    lblpozo.Enabled = True

    lblhidrociclon.Enabled = True

    cmdreporte.Visible = True

    txtalifresca.Text = tonff & " " & "ton/hr"

    txtover.Text = TonO & " " & "ton/hr"

    txtalimolino.Text = Round(TonFM, 2) & " " & "ton/hr"

    txtcc.Text = Round(cc, 4)

    End Sub

    Sub calculos()

    Rem calculo de B0j

    For i = 1 To 20

    B0j(i) = B00 * (d(i) / d(1)) ^ (-B01)

    If B0j(i) > 1 Then

    B0j(i) = 1

    ElseIf B0j(i) < 1 Then

    B0j(i) = B0j(i)

    End If

    Next i

    Rem calculo de Bij fraccion de solidos acumulada pasante

    For i = 1 To 20

    For j = 1 To 20

    If i >= j Then

    If i = 20 And j = 20 Then

    B(i, j) = B0j(i) * (abertura(i) / abertura(j)) ^ B1 + (1 – B0j(i)) * (abertura(i) / abertura(j)) ^ B2

    ElseIf i = j Then

    B(i, j) = 1

    ElseIf i > j Then

    B(i, j) = B0j(i) * (abertura(i) / abertura(j + 1)) ^ B1 + (1 – B0j(i)) * (abertura(i) / abertura(j + 1)) ^ B2

    End If

    Else

    B(i, j) = 0

    End If

    Next j

    Next i

    Rem calculo de la fraccion de solidos acumulada retenida baij

    For i = 1 To 20

    For j = 1 To 20

    If i >= j Then

    If i = j Then

    ba(i, j) = 0

    ElseIf i = 20 Then

    ba(i, j) = B(i, j)

    ElseIf i > j Then

    ba(i, j) = B(i, j) – B(i + 1, j)

    End If

    End If

    Next j

    Next i

    Rem caluculo de la matriz Tij

    For j = 1 To 20

    For i = 1 To 20

    If i < j Then

    T(i, j) = 0

    ElseIf i = j Then

    T(i, j) = 1

    ElseIf i > j Then

    T(i, j) = suma(i, j)

    End If

    Next i

    Next j

    'calculo de la matriz j

    For i = 1 To 20

    For j = 1 To 20

    If i = j Then

    Jm(i, j) = 1 / (1 + SE(i) * E / (largo / diametro)) ^ (largo / diametro)

    ElseIf i <> j Then

    Jm(i, j) = 0

    End If

    Next j

    Next i

    Rem calculo de la salida del molino

    'creamos una matriz aumentada mat

    For i = 1 To 20

    For j = 1 To 40

    If j = i + 20 And j > 20 Then

    mat(i, j) = 1

    End If

    If j <= 20 Then

    mat(i, j) = T(i, j)

    End If

    If j <> i + 20 And j > 20 Then

    mat(i, j) = 0

    End If

    Next j

    Next i

    End Sub

    Sub hidrociclon(cci)

    Rem calculo delos valores

    TonO = tonff ' alimentacion fresca

    Over = TonO / NH

    Under = cci * Over

    Feed = Over + Under

    Up = Under * 100 / fus 'mas de pulpa tons/hr

    Op = Over * 100 / fos ' masa de pulpa tons/hr

    Fp = Up + Op 'masa de pulpa tons/hr

    Wf = Fp – Feed 'caudal de agua ton/hr

    Wo = Op – Over 'caudal de agua ton/hr

    Wu = Up – Under 'caudal de agua ton/hr

    Qf = Feed / dmineral + Wf 'caudal de pulpa m3/hr

    Qo = Over / dmineral + Wo 'caudal de pulpa m3/hr

    Qu = Under / dmineral + Wu 'caudal de pulpa m3/hr

    fphy = Feed / dmineral / Qf * 100

    Bpw = Wu / Wf

    Bpf = lambda * Bpw

    'Public fus , fos lambda ca1 ca2 ca3 ca4 NH DC HC As Variant

    PHidrociclon = ca1 * Qf ^ 1.46 * Exp(-7.63 * fphy / 100 + 10.79 * (fphy / 100) ^ 2) / (DCH ^ 0.2 * HC ^ 0.15 * DIH ^ 0.51 * DOH ^ 1.65 * DUH ^ 0.53)

    d50 = ca2 * (DCH ^ 0.44 * DIH ^ 0.58 * DOH ^ 1.91 * Exp(11.12 * fphy / 100)) / (HC ^ 0.37 * DUH ^ 0.8 * Qf ^ 0.44 * (dmineral – 1) ^ 0.5)

    Sp = ca3 * (HC ^ 0.19 * (DUH / DOH) ^ 2.64 * Exp(-4.33 * fphy / 100 + 0.77 * (fphy / 100) ^ 2)) / (HC ^ 0.54 * DCH ^ 0.38)

    m = Exp(ca4 – 1.58 * (Sp / (1 + Sp))) * (DCH ^ 2 * HC / Qf) ^ 0.15

    For i = 1 To 20

    Eic(i) = 1 – Exp(-0.693 * (d(i) / d50) ^ m)

    Next i

    For i = 1 To 20

    Ei(i) = Bpf + (1 – Bpf) * Eic(i)

    Next i

    'hallamos la masa en cada malla en la alimentacion al hidrociclon(c/U)

    For i = 1 To 20

    mfi(i) = Feed * fdescarga(i) / 100

    Next i

    'hallamos la masa en cada malla en el overflow al hidrociclon

    For i = 1 To 20

    mui(i) = Ei(i) * mfi(i)

    Next i

    'hallamos la masa en cada malla en el underflow al hidrociclon

    For i = 1 To 20

    moi(i) = mfi(i) – mui(i)

    Next i

    'hallamos % retenido underflow del hidrociclon

    For i = 1 To 20

    'masa total underflon de cada hidrociclon

    smui = smui + mui(i)

    Next i

    For i = 1 To 20

    '% retenido underflow de cada hidrociclon

    fui(i) = mui(i) / smui * 100

    Next i

    'balance en el nodo de alimentacion del molino TonFM

    TonU = smui * NH

    TonFM = TonU + tonff

    potencia

    For i = 1 To 20

    fm(i, 1) = (TonU * fui(i) + tonff * faf(i)) / (TonFM)

    Next i

    End Sub

    Sub potencia()

    Nc = 76.6 / diametro ^ 0.5 * phy / 100

    ppd = densidad(fsd)

    Vmolino = pi / 4 * (0.305 * diametro) ^ 2 * (0.305 * largo)

    Vc = Vmolino * Jllenado / 100

    VBolas = Vmolino * Jbolas / 100

    MB = (1 – fracv) * dbolas * VBolas

    MPEI = Jp / 100 * fracv * VBolas * ppd

    JE = Jllenado – Jbolas

    MPE = JE * Vmolino * ppd

    pap = (MB + MPEI + MPE) / Vc

    pneta = 0.238 * diametro ^ 3.5 * (largo / diametro) * phy / 100 * pap * (Jllenado / 100 – 1.064 * Jllenado ^ 2 / 10000) * Sin(angulo * pi / 180)

    Ereal = pneta / (1 – lw / 100)

    E = pneta / TonFM

    End Sub

    Private Sub cmdreporte_Click()

    'calculo del p80

    For i = 1 To 19

    If pfm(i) > 80 And pfm(i + 1) < 80 Then

    P80M = abertura(i + 1) * Exp(Log(80 / pfm(i + 1)) * Log(abertura(i + 1) / abertura(i)) / Log(pfm(i + 1) / pfm(i)))

    End If

    Next i

    For i = 1 To 19

    If pd(i) > 80 And pd(i + 1) < 80 Then

    P80D = abertura(i + 1) * Exp(Log(80 / pd(i + 1)) * Log(abertura(i + 1) / abertura(i)) / Log(pd(i + 1) / pd(i)))

    End If

    Next i

    dialogo.DialogTitle = "Destino – Seleccione el archivo de destino"

    dialogo.Filter = "Archivos de Datos (*.csv)|*.csv|Archivos de Excel (*.xls)|*.xls|Todos los archivos (*.*)|*.*"

    dialogo.ShowOpen

    If dialogo.FileName <> "" Then

    Open dialogo.FileName For Output As #1

    Print #1, " " & ";" & "Simulador de Molienda de un Circuito Cerrado Convencional"

    Print #1, ""

    Print #1, " " & ";" & "Datos de la simulación"

    Print #1, "Fecha" & " " & Date

    Print #1, "Hora" & " " & Time

    Print #1, " Autores" & ";" & "Veronica Charres & igor Cañapataña"

    Print #1, " " & ";" & "Distribución de tamaños de particula"

    Print #1, "malla" & ";" & "%pass" & ";" & "%pass" & ";" & "%pass" & ";" & "%pass" & ";" & "%pass" & ";" & "%pass"

    Print #1, "Tyler#" & ";" & "Al. Fresca" & ";" & "al. Molino" & ";" & " Des. Molino" & ";" & "Al. Hidrociclon" & ";" & "Uderflow" & ";" & "Overflow"

    For i = 1 To 20

    Print #1, malla(i) & ";" & Pff(i) & ";" & pfm(i) & ";" & pd(i) & ";" & paf(i) & ";" & pu(i) & ";" & po(i)

    Next i

    Print #1, ""

    Print #1, "Desempeño del molino de bolas"

    Print #1, "Potencia Real" & ";" & Round(Ereal, 2) & "KWH "

    Print #1, "Potencia Especifica" & ";" & Round(E, 2) & "KWH/Ton "

    Print #1, "Velocidad del molino" & ";" & Round(Nc, 2) & " " & "rpm"

    Print #1, "Work Index" & ";" & Round(E / 10 / (1 / P80D ^ 0.5 – 1 / P80M ^ 0.5), 2) & " " & "KwHr/ton"

    Print #1, ""

    Print #1, "datos del Hidrocilon"

    Print #1, "Alimentación" & ";" & Round(Feed * NH, 2) & " " & "ton/Hr"

    Print #1, "Presión" & ";" & Round(PHidrociclon / 2.31 * densidad(fsf), 2) & " " & "Psi"

    Print #1, "d50" & ";" & Round(d50, 2) & " " & "micrones"

    Print #1, "By-pass Agua" & ";" & Round(Bpw, 2)

    Print #1, "By-pass Finos" & ";" & Round(Bpf, 2)

    Print #1, "Carga Circulante" & ";" & Round(cc, 2)

    Close #1

    Dim Error As Integer

    Error = ShellExecute(Me.hwnd, "Open", dialogo.FileName, " ", " ", 1)

    End If

    End Sub

    Private Sub Form_Load()

    txtalifresca.Visible = False

    txtover.Visible = False

    txtalimolino.Visible = False

    txtcc.Visible = False

    Label1.Visible = False

    Label2.Visible = False

    Label3.Visible = False

    Label4.Visible = False

    lblmolino.Enabled = False

    lblpozo.Enabled = False

    lblhidrociclon.Enabled = False

    End Sub

    Private Sub lblhidrociclon_Click()

    mdiprincipal.Enabled = False

    frmhidrociclon.Show

    End Sub

    Private Sub lblmolino_Click()

    mdiprincipal.Enabled = False

    frmmolino.Show

    End Sub

    Private Sub lblpozo_Click()

    mdiprincipal.Enabled = False

    frmpozo.Show

    End Sub

    Private Sub mdicontenido_Click()

    frmayuda.Show

    End Sub

    Private Sub mdivaringreso_Click()

    cmdreporte.Visible = False

    frmprincipal.Hide

    frmdatosdeingreso.WindowState = 2

    frmdatosdeingreso.Show

    End Sub

    Private Sub Timer1_Timer()

    imgmolino.Visible = Not imgmolino.Visible

    imgsalida.Visible = Not imgsalida.Visible

    imgtuberia.Visible = Not imgtuberia.Visible

    imghidrociclon.Visible = Not imghidrociclon.Visible

    imgtuberia2.Visible = Not imgtuberia2.Visible

    End Sub

    1.5- Módulo Principal

    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

    Public Directorio As String

    Public abertura(1 To 21) As Variant

    Public d(1 To 20)

    Public malla(1 To 21) As String

    Public SE(1 To 20)

    Public fm(1 To 20, 1) As Double

    Public faf(1 To 20) As Single

    Public B(1 To 20, 1 To 20)

    Public B0j(1 To 20)

    Public ba(1 To 20, 1 To 20)

    Public Jdiag(1 To 20, 1 To 20)

    Public T(1 To 20, 1 To 20) As Double

    Public Jm(1 To 20, 1 To 20) As Double

    Public mat(1 To 20, 1 To 40) As Double

    Public dmineral

    Public inversa(1 To 20, 1 To 20) As Double

    Public fd(1 To 20, 1) As Double

    Public E As Single

    Public Const pi = 3.141592653589

    Rem molino

    Public a01 As Variant

    Public a02 As Variant

    Public a11 As Variant

    Public a12 As Variant

    Public a2 As Variant

    Public dcrit As Variant

    Public B00 As Variant

    Public B01 As Variant

    Public B1 As Variant

    Public B2 As Variant

    Public lw As Variant

    Public angulo As Variant

    Public phy As Variant

    Public Ereal As Variant

    Public diametro As Variant

    Public largo As Variant

    Public Jp As Variant

    Public tonff As Variant

    Public TonFM As Variant

    Public Jllenado As Variant

    Public Jbolas As Variant

    Public fracv As Variant

    Public dbolas As Variant

    Public fsd As Variant

    Public Nc As Variant

    Rem porcentajes passing

    Public Pff(1 To 21)

    Public pfm(1 To 21)

    Public pd(1 To 21)

    Public paf(1 To 21)

    Public pu(1 To 21)

    Public po(1 To 21)

    Public d50 As Single

    Rem hicrocilon

    '''''''''''''

    Public fasumido(1 To 20) As Single

    Public Eic(1 To 20) As Single

    Public Ei(1 To 20) As Single

    'masa en cada malla

    Public moi(1 To 20) As Single

    Public mui(1 To 20) As Single

    Public mfi(1 To 20) As Single

    '%retenidos en las mallas

    Public fui(1 To 20) As Single

    Public foi(1 To 20) As Single

    Public ffi(1 To 20) As Single

    Public rfo(1 To 20) As Single

    Public rfu(1 To 20) As Single

    Public TonU As Variant

    Public TonO As Variant

    Public TonF As Variant

    Public PHidrociclon As Variant

    '''''''''''''''''

    Public fus As Variant

    Public fos As Variant

    Public fof As Variant

    Public lambda As Variant

    Public ca1 As Variant

    Public ca2 As Variant

    Public ca3 As Variant

    Public ca4 As Variant

    Public NH As Variant

    Public DCH As Variant

    Public HC As Variant

    Public DIH As Variant

    Public DOH As Variant

    Public DUH As Variant

    Public cc0 As Single

    Public cc As Single

    Public cci As Single

    Public Bpw As Single

    Public Bpf As Single

    Public Under As Single

    Public Over As Single

    Public Feed As Single

    Public ppd As Variant

    Public Vmolino As Variant

    Public Function MULT(ByRef A() As Double, ByRef B() As Double, ByRef invA() As Double, ByRef f0() As Double, ByRef f() As Double) As Boolean

    Dim i, j, k, m

    ' On Error GoTo Gauss_Err

    n = UBound(A)

    'preimera multiplicacion T*J

    ReDim c(1 To n, 1 To n) As Single

    ReDim U(1 To n, 1 To n) As Single

    For i = 1 To n

    For j = 1 To n

    c(i, j) = 0

    For k = 1 To n

    c(i, j) = c(i, j) + A(i, k) * B(k, j)

    Next k

    Next j

    Next i

    'segunda multiplicacion (T*J)*T-1

    For i = 1 To n

    For j = 1 To n

    U(i, j) = 0

    For k = 1 To n

    U(i, j) = U(i, j) + c(i, k) * invA(k, j)

    Next k

    Next j

    Next i

    'hallando el producto

    For i = 1 To n

    For j = 1 To 1

    f(i, j) = 0

    For k = 1 To n

    f(i, j) = f(i, j) + U(i, k) * f0(k, j)

    Next k

    Next j

    Next i

    MULT = True

    Exit Function

    Gauss_Err: MULT = False

    End Function

    Public Function Gauss(ByRef A() As Double, ByRef inv() As Double) As Boolean

    Dim Temp As Single, i, j, k, m

    On Error GoTo Gauss_Err

    n = UBound(inv)

    For k = 1 To n

    Temp = A(k, k)

    For j = 1 To 2 * n

    A(k, j) = A(k, j) / Temp

    Next j

    For i = 1 To n – 1

    If i = k Then

    For m = i To n – 1

    For j = k + 1 To 2 * n

    A(m + 1, j) = A(m + 1, j) – A(m + 1, k) * A(i, j)

    Next j

    Next m

    End If

    Next i

    Next k

    Rem sacando elementos de la inversa

    k = 1

    For j = n + 1 To 2 * n

    For i = 1 To n

    inv(i, k) = A(i, j)

    Next i

    k = k + 1

    Next j

    Gauss = True

    Exit Function

    Gauss_Err: Gauss = False

    End Function

    Public Function suma(i, j)

    suma = 0

    For k = j To i – 1

    suma = suma + (ba(i, k) * SE(k) * T(k, j)) / (SE(i) – SE(j))

    Next k

    End Function

    Public Function densidad(s)

    densidad = 1 / (s / 100 * 1 / dmineral + 1 – s / 100)

    End Function

    II- REPORTE EN EXCEL

    Simulador de Molienda de un Circuito Cerrado Convencional

    Datos de la simulación

    Fecha 27/03/2006

    Hora 15:33:39

    Autores

    Verónica Charres & igor Cañapataña

    Distribución de tamaños de partícula

    malla

    %pass

    %pass

    %pass

    %pass

    %pass

    %pass

    Tyler#

    Al. Fresca

    al. Molino

    Des. Molino

    Al. Hidrociclón

    Underflow

    Overflow

    1 '

    100

    100

    100

    100

    100

    100

    3/4 '

    100

    100

    100

    100

    100

    100

    1/2 '

    100

    100

    100

    100

    100

    100

    3/8 '

    95

    98,02

    99,42

    99,42

    99,99

    100

    3

    78,4

    91,81

    97,87

    97,87

    99,95

    100

    4

    64,33

    86,11

    96,12

    96,12

    99,91

    100

    6

    54

    81,25

    94,16

    94,16

    99,86

    100

    8

    45,66

    76,54

    91,8

    91,8

    99,8

    100

    10

    38,82

    71,74

    88,94

    88,94

    99,73

    100

    14

    33,41

    66,43

    85,18

    85,18

    99,63

    100

    20

    28,31

    60,38

    80,59

    80,59

    99,51

    100

    28

    24,41

    53,36

    74,71

    74,71

    99,36

    100

    35

    20,87

    44,93

    67,33

    67,33

    99,17

    100

    48

    17,86

    34,82

    58,09

    58,09

    98,94

    100

    65

    15,27

    25,58

    48,18

    48,18

    98,72

    99,9

    100

    13,06

    19,85

    39,85

    39,85

    98,59

    99,68

    150

    11,18

    16,25

    33,43

    33,43

    98,51

    99,46

    200

    9,56

    13,71

    28,58

    28,58

    98,46

    99,28

    270

    8,18

    11,77

    24,85

    24,85

    98,42

    99,13

    400

    7

    10,26

    21,98

    21,98

    98,39

    99,02

    Desempeño del molino de bolas

    Potencia Real

    1031,6KWH

    Potencia Especifica

    2,6KWH/Ton

    Velocidad del molino

    15,92 rpm

    Work Index

    15,45 KwHr/ton

    datos del Hidrociclón

    Alimentación

    360,66 ton/Hr

    Presión

    3,1 Psi

    d50

    206,47 micrones

    By-pass Agua

    0,43

    By-pass Finos

    0,41

    Carga Circulante

    2,61

     

     

     

    Autor:

    Verónica Charres Choque

    Igor Cañapataña Larico