Identificación por Radiofrecuencia

Los productos que poseen etiquetas electrónicas que se comunican directamente con una caja, ganado que posee pequeños chips en las orejas y que se comunica con un control de identificación, equipajes en aeropuertos e incluso implantes en humanos son ejemplos de aplicación de los chips RFID o Identificación por radiofrecuencia . Ver en este artículo lo que son y cómo funciona ese proceso electrónico de identificación.

La idea básica de la identificación por radiofrecuencia o RFID es la de tener un chip muy pequeño capaz de responder a señales de un sistema de lectura, sin la necesidad de cables. Este chip puede ser embutido en etiquetas de productos, maletas, equipaje, implantado en animales e incluso en seres humanos.

Hay dos tecnologías para el RFID, que hace uso de chips activos, es decir, que llevan su propia fuente de alimentación y de chips pasivos, o sea, que usan la propia señal del sistema de lectura remota para alimentarse. Estos chips tienden a ser los más utilizados actualmente ya sea por la facilidad de implementación y bajo costo, así como por la autonomía ilimitada, pues no se necesita una batería.

 

Como funciona

La idea básica del funcionamiento del sistema activo es simple. Un chip tiene un transmisor y un receptor de dimensiones extremadamente reducidas. Cuando el transmisor de lectura emite una señal solicitando información del chip, su receptor recibe esa señal y activa el sistema transmisor que responde enviando esas informaciones, como muestra la figura 1.

 

Figura 1 - El transmisor envía energía y la señal retorna con la información grabada en el chip.
Figura 1 - El transmisor envía energía y la señal retorna con la información grabada en el chip. | Haga click en la imagen para ampliar |

 

 

El sistema pasivo, por otro lado, funciona de una manera un poco diferente que puede ser entendida si partir del circuito simple de un transformador, como muestra la figura 2.

 

Figura 2 -Con el secundario abierto, la impedancia alta del primario hace que la tensión que aparece sobre R sea pequeña.
Figura 2 -Con el secundario abierto, la impedancia alta del primario hace que la tensión que aparece sobre R sea pequeña.

 

   

Si se aplica al enrollamiento primario de este transformador una señal, estando el devanado secundario abierto, la señal ve el circuito como una alta impedancia, o sea, no se carga.

Si tenemos un resistor en serie con el devanado, como muestra la misma figura, la impedancia elevada del transformador divide la señal con la resistencia y en el resistor aparece una tensión muy baja. Por otro lado, si el devanado secundario del transformador es cortocircuitado, como muestra la figura 3, el comportamiento del circuito cambia.

 

Figura 3 - Con el secundario en corto, la impedancia del primario cae y la tensión que aparece sobre R es mayor.
Figura 3 - Con el secundario en corto, la impedancia del primario cae y la tensión que aparece sobre R es mayor.

 

 

La señal ve el enrollamiento primario del transformador donde se aplica como una baja impedancia, y con ello la tensión que aparece sobre el resistor es mayor. Si se va más allá e imaginamos que el transformador no tiene un núcleo común, pero está formado por bobinas separadas por cierta distancia, como muestra la figura 4, el efecto es el mismo sólo que el cambio de impedancia que la señal ve es menor, acoplamiento existente entre las bobinas.

 

Figura 4 - El fenómeno ocurre con menor intensidad, aunque las bobinas estén separadas.
Figura 4 - El fenómeno ocurre con menor intensidad, aunque las bobinas estén separadas.

 

Esto significa que si el devanado primario está conectado a un circuito de lectura y el secundario es una bobina en un pequeño "tag", podemos "a distancia leer el nivel lógico 0 o 1 en ese tag, dependiendo de la bobina estar abierta o cerrada, como muestra la figura 5.

 

Figura 5 - Es posible leer el nivel lógico de un chip a distancia basado en el
Figura 5 - Es posible leer el nivel lógico de un chip a distancia basado en el "reflejo" sobre la impedancia del transformador que causa.

 

 

Evidentemente la distancia máxima en que esto puede ser hecho depende de la sensibilidad del circuito de lectura, pero puede llegar a tener hasta uno o dos metros. Por supuesto, un solo bit para la lectura no hace que el circuito sea muy práctico. Lo ideal sería la posibilidad de leer algunas decenas o cientos de bits que puedan representar información útil. Esto se hace justamente agregando a la pequeña bobina un chip y un sistema de alimentación, como muestra la figura 6.

 

Figura 6 - Agregando un chip con datos al sistema.
Figura 6 - Agregando un chip con datos al sistema.

 

 

El sistema de alimentación aprovecha la propia tensión inducida en la bobina cuando el sistema de lectura es aproximado. El circuito de alimentación rectifica la señal cuando su intensidad llega a algunos volts, alimentando entonces el pequeño chip de memoria y de su lectura.

Evidentemente, el consumo del circuito debe ser extremadamente bajo para no cargar la bobina y con ello dar al lector la indicación falsa de un bit alto. El chip está formado por una matriz de transistores de efecto de campo MOS y un sistema secuencial de alimentación, según el diagrama simplificado mostrado en la figura 7.

 

Figura 7 - Diagrama simplificado del sistema.
Figura 7 - Diagrama simplificado del sistema.

 

 

Cada transistor CMOS representa una unidad de memoria que puede estar polarizada en el sentido de conducir o no según el bit que deseamos grabar en él. El sistema de lectura conecta cada transistor en secuencia a la bobina para que el dado en él grabado sea leído. Así, cuando un transistor se activa para leer el bit grabado en él, lo que se hace polarizando ese transistor existen dos posibilidades. Si el transistor está abierto, no conduce, la bobina al ser conectada en él, refleja una alta impedancia al circuito lector que entonces ve un bit 0. Si el transistor está en conducción, presentando una resistencia muy baja, la bobina se pone en corto y el sistema de lectura ve un bit 1.

Como la lectura se realiza en secuencia, al ser activado, el sistema de lectura recibe un tren de bits que corresponde justamente a la información grabada en el pequeño chip. Los chips usados ??en este tipo de circuito son extremadamente pequeños, como se muestra en la figura 8.

 

Figura 8 - Foto de una etiqueta RFID de Texas Instruments. Observe el tamaño del chip, del orden de pocos milímetros.
Figura 8 - Foto de una etiqueta RFID de Texas Instruments. Observe el tamaño del chip, del orden de pocos milímetros.

 

Mayor aún es la bobina que debe ser usada en el sistema de transmisión y recepción de las señales.

 

Aplicaciones

Las aplicaciones para el RFID son ilimitadas y lo que se puede grabar en el chip depende sólo del tamaño de su memoria. Podemos citar, como ejemplo simple, las llaves modernas de encendido de automóviles que poseen el llamado ¨transponder "que nada más es que un tag RFID embutido que contiene el código de accionamiento de aquel vehículo, como muestra la figura 9.

 

Figura 9 - Llavero con transponder para llave de coche, usando RFID.
Figura 9 - Llavero con transponder para llave de coche, usando RFID.

 

 

Otra aplicación es la identificación de equipajes y mercancías que tendrían etiquetas con etiquetas que podrían leerse en los lugares donde sea necesario. Información sobre el precio, dirección del dueño, etc. estarían contenidas en el chip. También tenemos los casos de identificación de ganado, plenamente utilizado en nuestros días aquí mismo en nuestro país en que un "tag" que contiene informaciones sobre el animal estarían grabadas como fecha de nacimiento, vacunas, etc.

En las personas, esas etiquetas podrían ser implantadas en discapacitados y personas con enfermedades graves que necesitarían de ayuda o socorro en condiciones que ellas mismas no podrían proporcionar informaciones. Esta información incluiría la dirección, qué hacer en caso de necesidad de socorro, etc.

 

 

18.924MBMemory Usage50.89msRequest 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" => 1752157968 "last" => 1752157968...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.36KB) (208μs)
  • afterInitialise (1.14MB) (3.15ms)
  • afterRoute (179.16KB) (1.18ms)
  • beforeRenderComponent com_content (100.69KB) (499μs)
  • Before Access::preloadComponents (all components) (33.45KB) (320μs)
  • After Access::preloadComponents (all components) (107.06KB) (640μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (27.6ms)
  • Before Access::getAssetRules (id:17033 name:com_content.article.20968) (514.65KB) (1.06ms)
  • After Access::getAssetRules (id:17033 name:com_content.article.20968) (7.38KB) (52μs)
  • afterRenderComponent com_content (407.51KB) (7.18ms)
  • afterDispatch (2.25KB) (52μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (2.3ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (374μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (119μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.32ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (788μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (83μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (276μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (61μs)
  • afterRender (265.75KB) (3.52ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (54.23%)
    27.60ms
    1 x afterRenderComponent com_content (407.51KB) (14.11%)
    7.18ms
    1 x afterRender (265.75KB) (6.92%)
    3.52ms
    1 x afterInitialise (1.14MB) (6.2%)
    3.15ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (4.52%)
    2.30ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.59%)
    1.32ms
    1 x afterRoute (179.16KB) (2.33%)
    1.18ms
    1 x Before Access::getAssetRules (id:17033 name:com_content.article.20968) (514.65KB) (2.08%)
    1.06ms
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.55%)
    788μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.26%)
    640μs
    1 x beforeRenderComponent com_content (100.69KB) (0.98%)
    499μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.73%)
    374μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.63%)
    320μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.54%)
    276μs
    1 x afterLoad (85.36KB) (0.41%)
    208μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    119μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.16%)
    83μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.12%)
    61μs
    1 x After Access::getAssetRules (id:17033 name:com_content.article.20968) (7.38KB) (0.1%)
    52μs
    1 x afterDispatch (2.25KB) (0.1%)
    52μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.01%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique18.4ms1.58MB
  • SELECT @@SESSION.sql_mode;29μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 170μ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)136μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`54μ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` = :guest66μ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`224μ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)479μ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` = 014.77ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`427μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '20968'161μ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)185μ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`192μ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)259μ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`190μ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 ASC447μ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`188μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1122μ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)88μ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)179μ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` = 173μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy