Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Crear tu banco

Un banco es una carpeta con esta forma:

mi_banco/
├── banco.yaml             ← qué instrumentos hay y en qué puerto
└── perfiles/
    ├── fuente_xyz.yaml    ← un perfil por MODELO de instrumento
    └── dmm_abc.yaml

Empezar copiando el de ejemplo

Lo más rápido es partir del banco de ejemplo y cambiarlo:

  • Linux:

    $ cp -r /usr/share/crucible/banco ~/mi_banco
    $ cd ~/mi_banco
    
  • Windows: menú Inicio → Crucible → Abrir carpeta del banco, y edita ahí o copia la carpeta a otro sitio.

Desde esa carpeta, crucible sin argumentos arranca tu banco: es el primer sitio donde busca.

banco.yaml

Este es el del ejemplo:

# Banco de ejemplo de Crucible.
#
# Un banco es la lista de instrumentos que se simulan a la vez. Cada uno apunta
# a su perfil (qué instrumento es y cómo responde) y dice en qué puerto escucha.
#
# Para tu banco: copia esta carpeta, añade un perfil por cada modelo de
# instrumento y una entrada por cada unidad física. Dos unidades del mismo
# modelo comparten perfil, pero cada una necesita su propio puerto.
#
# Comprueba el banco sin arrancarlo:   crucible --validar banco.yaml
# Arráncalo:                           crucible banco.yaml

banco:
  nombre: banco-de-ejemplo
  dispositivos:
    - id: fuente
      perfil: perfiles/fuente_dc.yaml
      transporte: { tipo: tcp, puerto: 5025 }

    - id: multimetro
      perfil: perfiles/multimetro.yaml
      transporte: { tipo: tcp, puerto: 5026 }
      # Se puede cambiar el estado de arranque de una unidad sin tocar su perfil.
      estado_inicial:
        tension_entrada: 3.3

    - id: smu
      perfil: perfiles/keithley_2400_demo.yaml
      transporte: { tipo: tcp, puerto: 5027 }

Cada entrada de dispositivos es una unidad:

CampoQué es
idUn nombre para ti. Sale en la tabla del arranque y en los errores.
perfilEl perfil del instrumento, con la ruta relativa a banco.yaml.
transportePor dónde escucha: { tipo: tcp, puerto: 5025 }. Hoy tipo solo puede ser tcp.
estado_inicialOpcional. Valores que sustituyen a los de estado del perfil solo para esta unidad.

Dos unidades del mismo modelo comparten perfil y cambian de puerto, y si hace falta, de estado_inicial:

    - id: dmm_entrada
      perfil: perfiles/dmm_abc.yaml
      transporte: { tipo: tcp, puerto: 5026 }

    - id: dmm_salida
      perfil: perfiles/dmm_abc.yaml
      transporte: { tipo: tcp, puerto: 5027 }
      estado_inicial:
        tension_entrada: 12.0

Validar antes de arrancar

$ crucible --validar banco.yaml
banco.yaml es válido:

  ID          MODELO         RECURSO VISA
  fuente      FUENTE-DC      TCPIP0::127.0.0.1::5025::SOCKET
  multimetro  MULTIMETRO     TCPIP0::127.0.0.1::5026::SOCKET
  smu         KEITHLEY-2400  TCPIP0::127.0.0.1::5027::SOCKET

--validar carga el banco y todos sus perfiles, comprueba patrones, fórmulas y puertos, y enseña la tabla de recursos sin abrir ningún puerto, así que puedes usarlo con el banco arrancado. Hazlo cada vez que edites un YAML: los errores dicen qué fichero, qué comando y qué está mal.

Cada instrumento necesita su puerto. Con este banco, que repite el 5025:

banco:
  nombre: dos-fuentes
  dispositivos:
    - id: fuente_a
      perfil: perfiles/fuente_dc.yaml
      transporte: { tipo: tcp, puerto: 5025 }

    - id: fuente_b
      perfil: perfiles/fuente_dc.yaml
      transporte: { tipo: tcp, puerto: 5025 }
$ crucible --validar puerto_repetido.yaml

error: 'fuente_a' y 'fuente_b' usan los dos 127.0.0.1:5025; cada instrumento necesita su puerto

Tres reglas que conviene conocer

Si un perfil tiene un error, el banco entero no arranca. Es a propósito: un banco al que le falta un instrumento daría resultados falsos sin que nadie se enterase.

*RST devuelve la unidad a los valores del perfil, no a los de estado_inicial. El multímetro del ejemplo arranca con 3,3 V en los bornes, pero tras un *RST mide 0 V (lo verás en el capítulo 8). Si tu software manda *RST al empezar, fija el valor en el perfil o vuelve a fijarlo por SCPI después.

Una variable mal escrita en estado_inicial no da error. Aquí tension_entarda no existe en el perfil del multímetro, y aun así:

banco:
  nombre: errata
  dispositivos:
    - id: dmm
      perfil: perfiles/multimetro.yaml
      transporte: { tipo: tcp, puerto: 5030 }
      estado_inicial:
        tension_entarda: 12.0
$ crucible --validar errata.yaml
errata.yaml es válido:

  ID   MODELO      RECURSO VISA
  dmm  MULTIMETRO  TCPIP0::127.0.0.1::5030::SOCKET

El multímetro arrancará midiendo 0 V. Si una unidad no arranca con el valor que esperabas, revisa primero cómo has escrito el nombre.