Contrariamente a lo que muchos predican (con total desconocimiento del tema), la enseñanza de la electrónica digital, lógica y Álgebra de Boole es más que nunca fundamental para poder trabajar con microcontroladores. Con la disponibilidad de relés de 5 V (que pueden ser alimentados por fuentes TTL) e incluso de 6 y 12 V baratos, estos componentes pueden ser utilizados tanto en la docencia, como en la experimentación e incluso con fines prácticos en la elaboración de funciones lógicas. En este artículo veremos cómo se puede hacer esto.

Las funciones lógicas no sólo son importantes para entender cómo funcionan los microcontroladores, sino que también se pueden utilizar en la interconexión en condiciones especiales, por ejemplo, cuando existe el problema de latencia, la detección simultánea de señales de Sensores, o incluso la accionamiento simultánea de cargas.

 

El microcontrolador no hace todo, e incluso hay casos en los que no puede hacer cosas que son aparentemente simples.

 

El uso de funciones lógicas puede ser necesario y pueden ser implementados o entendidos incluso con circuitos simples usando relés, como los descritos en este artículo.

 

Los relés se pueden utilizar para activar los tipos de carga más diferentes: de osciladores o LEDs indicadores, incluso motores pequeños o dispositivos conectados a la red eléctrica, como se muestra en la figura 1.

 


| Clique na imagem para ampliar |

 

 

Figura 1 – Relé en el control de carga mediante los contactos NA y NF
Figura 1 – Relé en el control de carga mediante los contactos NA y NF | Clique na imagem para ampliar |

 

 

Por supuesto, la lámpara puede ser intercambiada por otras cargas, tales como un LED de serie con una resistencia de 470 ohms (6V) o un circuito oscilante como se muestra en la figura 2.

 

 

Figura 2 – Oscilador que se controla mediante un relé
Figura 2 – Oscilador que se controla mediante un relé | Clique na imagem para ampliar |

 

 

El terminal rojo del montaje en matrix va al contacto NA del relé como se muestra en la figura 3.

 

Figura 3 – Montaje en matrix.de contactos
Figura 3 – Montaje en matrix.de contactos | Clique na imagem para ampliar |

 

 

 

 

Los circuitos:

 

 

A continuación, damos varios circuitos para simular las funciones lógicas comunes. Los relés pueden ser de 5, 6 o 12 V con corrientes de 20 mA a 100 mA y una fuente de alimentación adecuada.

 

a) Función SI o No-inversor

Esta es la función más simple que activa la carga si el nivel de la señal de entrada es 1. Es decir, una tabla verdad sería:

A S

0 0

1 1

 

En la figura 4 tenemos la forma de implementar esta función con un relé:

Los contactos representados son NA y C.

 

 

Figura 4 – Función SÍ
Figura 4 – Función SÍ

 

 

 

b) Función No (Not) o Inversor

En la figura 5 tenemos la manera de implementar un inversor usando un relé. Los contactos utilizados son NF y C. La tabla verdad será:

A S

0 1

1 0

 

Figura 5 – Función inversora con relé
Figura 5 – Función inversora con relé

 

 

 

c) Función Y (AND)

 

En la figura 6 tenemos la manera de implementar la función Y (AND) con dos entradas, en los casos interruptores. Los interruptores, en una aplicación práctica, pueden ser sustituidos por sensores.

La tabla verdad para esta función es:

A B S

0 0 0

0 1 0

1 0 0

1 1 1

 

Figura 6 – Función E (AND)
Figura 6 – Función E (AND) | Clique na imagem para ampliar |

 

 

 

d) Función O (OR)

La figura 7 muestra cómo implementar una función de dos entradas O (OR) usando un relé. Los contactos de relé son los NA y C. La tabla verdad para esta función será:

A B S

0 0 0

0 1 1

1 0 1

1 1 1

 

 

  Figura 7 – Función O (OR)
Figura 7 – Función O (OR)

 

 

 

e) Función No y (NAND)

Esta función se implementa utilizando los contactos C y NF del relé. En la figura 8 tenemos la manera de conectar los sensores o interruptores y debajo de la tabla verdad.

A B S

0 0 1

0 1 1

1 0 1

1 1 0

 

 

   Figura 8 – La función NAND con relé
Figura 8 – La función NAND con relé

 

 

 

f) Función NEM o No- Y (NOR)

En este caso, la salida se activará (1) cuando ambas entradas estén deshabilitadas, esto es, ni una ni la otra. El circuito se implementa con un relé, como se muestra en la figura 9. Tenga en cuenta que hacemos uso de los contactos NF y C.

La tabla de la verdad será la siguiente:

A B C

0 0 1

0 1 0

1 0 0

1 1 1

 

 

Figura 9 – Función No-Y (NOR)
Figura 9 – Función No-Y (NOR)

 

 

 

g) Función O Exclusivo (Exclusive OR)

Para esta función, un poco más sofisticada, necesitamos interruptores (llaves) o sensores duales. Esto es necesario, porque cuando un sensor se enciende en la mitad del otro se apaga. Podemos utilizar para este propósito una tecla H, donde las secciones se conectarán alternativamente.

 

El circuito de esta función implementado con relés se muestra en la figura 10.

 

Figura 10 – La función O Exclusivo (Exclusive OR) con relé
Figura 10 – La función O Exclusivo (Exclusive OR) con relé | Clique na imagem para ampliar |

 

 

La tabla verdad para esta función es:

A B S

0 0 0

0 1 1

1 0 1

1 1 0

 

 

 

h) Memoria o Biestable

Para implementar esta función necesitamos un relé con doble contacto, como se muestra en la figura 11.

Con un pulso producido por B, el relé se cuelga alimentando la carga externa (nivel 1 de salida) y por lo tanto permanece, incluso después de que B está apagado.

Para rearmar el circuito debe apagarse en A, es decir, nivel 0 en esta entrada.

 

Figura 11 – Biestable con relé (bloqueo)
Figura 11 – Biestable con relé (bloqueo) | Clique na imagem para ampliar |

 

 

 

i) Monoestable

Cuando la señal de entrada desaparece, el capacitor mantiene el circuito alimentado durante un tiempo que depende de su valor. Para relés comunes de 5 a 12 V con unos pocos cientos de ohms los capacitores de 100 uF a 4700 uF pueden proporcionar tiempos de hasta varios segundos. El circuito se muestra en la figura 12.

 

Figura 12 – Monoestable
Figura 12 – Monoestable | Clique na imagem para ampliar |

 

 

j) Circuito Oscilador o clock

Podemos hacer que un relé oscile produciendo una señal rectangular aprovechando la inductancia de su bobina y capacitancia entre los espirales, como se muestra en la figura 13. Con la conexión de un capacitor de 100 nF a 100 uF en paralelo con la bobina podemos reducir la frecuencia de la señal generada.

 

Figura 13 – Oscilador (clock)
Figura 13 – Oscilador (clock)

 

 

 

Conclusión

En el último siglo, uno de los pioneros de la informática construyó un ordenador utilizando sólo relés. Aunque los cálculos realizados fueron muy sencillos, no podemos dejar de considerar el circuito utilizado como una aplicación digital.

Hoy en día se utilizan relés con muchos otros fines e indispensables en escudos para microcontroladores. Sin embargo, todavía se pueden utilizar con fines didácticos y experimentales, como hemos visto en este artículo, e incluso en la solución de problemas de automatización muy simples que dispensan el uso de un microcontrolador.

De hecho, en nuestros días muchos piensan en el microcontrolador como una solución para todo. Pero, hay casos en los que es un cañón para matar a un mosquito. En este caso, las cosas sencillas, como los relés, pueden ser la solución.

 

18.942MBMemory Usage40.87msRequest Duration
Joomla! Version5.2.3
PHP Version8.3.20
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.5.22-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
array:1 [ "joomla" => "***redacted***" ]
$_COOKIE
[]
$_SERVER
array:51 [ "USER" => "apache" "HOME" => "/usr/share/httpd" "SCRIPT_NAME" => "/index.php" "RE...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1747488991 "last" => 1747488991...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.39KB) (333μs)
  • afterInitialise (1.14MB) (3.76ms)
  • afterRoute (179.16KB) (955μs)
  • beforeRenderComponent com_content (100.65KB) (438μs)
  • Before Access::preloadComponents (all components) (33.45KB) (301μs)
  • After Access::preloadComponents (all components) (107.06KB) (374μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (10μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (18.86ms)
  • Before Access::getAssetRules (id:27420 name:com_content.article.31053) (514.65KB) (614μs)
  • After Access::getAssetRules (id:27420 name:com_content.article.31053) (7.38KB) (68μs)
  • afterRenderComponent com_content (410.35KB) (7.26ms)
  • afterDispatch (2.25KB) (61μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (1.63ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (438μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (91μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.91KB) (1.19ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (567μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.22KB) (100μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (191μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (54μs)
  • afterRender (273.77KB) (3.46ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (46.14%)
    18.86ms
    1 x afterRenderComponent com_content (410.35KB) (17.77%)
    7.26ms
    1 x afterInitialise (1.14MB) (9.21%)
    3.76ms
    1 x afterRender (273.77KB) (8.46%)
    3.46ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (359.33KB) (3.99%)
    1.63ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.91KB) (2.91%)
    1.19ms
    1 x afterRoute (179.16KB) (2.34%)
    955μs
    1 x Before Access::getAssetRules (id:27420 name:com_content.article.31053) (514.65KB) (1.5%)
    614μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.98KB) (1.39%)
    567μs
    1 x beforeRenderComponent com_content (100.65KB) (1.07%)
    438μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (1.07%)
    438μs
    1 x After Access::preloadComponents (all components) (107.06KB) (0.91%)
    374μs
    1 x afterLoad (85.39KB) (0.82%)
    333μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.74%)
    301μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.14KB) (0.47%)
    191μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.22KB) (0.25%)
    100μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.22%)
    91μs
    1 x After Access::getAssetRules (id:27420 name:com_content.article.31053) (7.38KB) (0.17%)
    68μs
    1 x afterDispatch (2.25KB) (0.15%)
    61μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.13%)
    54μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    10μs
21 statements were executed, 5 of which were duplicates, 16 unique10.99ms1.58MB
  • SELECT @@SESSION.sql_mode;32μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 176μs1.3KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `incbmx_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)147μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`52μs656B/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `incbmx_usergroups` AS `a` LEFT JOIN `incbmx_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest76μs1.64KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`238μs20.2KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39)217μs7.44KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `incbmx_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 07.72ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`351μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '31053'209μs48B/libraries/src/Table/Table.php:1348Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)179μs22.13KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`194μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `incbmx_contentitem_tag_map` AS `m` INNER JOIN `incbmx_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)248μs3.98KBParams/libraries/src/Helper/TagsHelper.php:388Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`174μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM incbmx_fields AS a LEFT JOIN `incbmx_languages` AS l ON l.lang_code = a.language LEFT JOIN incbmx_users AS uc ON uc.id=a.checked_out LEFT JOIN incbmx_viewlevels AS ag ON ag.id = a.access LEFT JOIN incbmx_users AS ua ON ua.id = a.created_user_id LEFT JOIN incbmx_fields_groups AS g ON g.id = a.group_id LEFT JOIN `incbmx_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2,:preparedArray3)) AND `a`.`access` IN (:preparedArray4,:preparedArray5)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray6,:preparedArray7)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC392μs4.81KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:164Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `incbmx_categories` AS `s` INNER JOIN `incbmx_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`169μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1153μs1.89KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:135Copy
  • SELECT `title` FROM `incbmx_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)90μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context60μs1.55KBParams/plugins/system/schemaorg/src/Extension/Schemaorg.php:403Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `incbmx_content` AS `a` INNER JOIN `incbmx_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `incbmx_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `incbmx_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `incbmx_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `incbmx_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)152μs22.17KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT SUM(CASE WHEN `a`.`next_execution` <= :now THEN 1 ELSE 0 END) AS due_count,SUM(CASE WHEN `a`.`locked` IS NULL THEN 0 ELSE 1 END) AS locked_count FROM `incbmx_scheduler_tasks` AS `a` WHERE `a`.`state` = 163μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy