El modo de codificación Mancherster (Manchester Encoding) se está volviendo muy popular en los sistemas de transmisión de datos digitales de bajo costo, encontrando aplicaciones principalmente en sistemas de control remoto. Vea en este artículo, basado en la documentación de Maxim como funciona.

   El proceso de codificación Manchester consiste en un método simple de manipulación de frecuencia (Shift-keying) que produce trenes de gran extensión de ceros y unos sin que el reloj de transmisión esté incrustado en los propios datos transmitidos.

   Se trata, por lo tanto, de una forma de modulación BPSK o Binary Phase Shift Keying que, por su simplicidad, permite la elaboración de sistemas de control remoto de bajo costo.

   En esta codificación datos digitales seriales de patrones arbitrarios de bits que no tengan secuencias largas de ceros o unos, pueden ser transmitidos.

    En este sistema, los niveles lógicos 0 y 1 no se definen por estados estáticos, sino por transiciones, como muestra la figura 1. Así, como muestra la misma figura, tenemos transiciones de niveles que definen los valores transmitidos.

 

   Figura 1 - Los niveles lógicos son dados por las transiciones
   Figura 1 - Los niveles lógicos son dados por las transiciones

 

   

También es posible invertir la lógica, como ocurre con la lógica positiva y negativa en el caso de las aplicaciones digitales, como muestra la figura 2.

 

    Figura 2 - Otra posibilidad de transmisión
    Figura 2 - Otra posibilidad de transmisión

 

      

La definición de un bit para los datos codificados por el método Manchester puede ser confusa, porque cada dato binario codificado resulta en dos bits aparentes en la cadena de datos.

   Si se tiene en cuenta que un bit de datos se define como una transición, podemos percibir que no hay datos en las cadenas de datos en la codificación de Manchester.

   Los datos codificados en la cadena no requieren dos niveles para cada transición, pues por la definición la información se codifica en una transición del nivel bajo hacia arriba o en una transición del nivel alto al bajo.

   Así que tomamos dos veces los niveles lógicos para codificar los datos en Manchester. Sin embargo, el uso de la frase "Bits Manchester" persiste y se debe tener cuidado cuando se utiliza el término bit para especificar qué es un bit de datos serial o un bit codificado en Manchester.

    El término chip también se utiliza para describir los períodos de nivel a cada lado de una transición o frente. Por lo tanto, cada codificación de datos Manchester de un bit requiere dos chips. Una corriente de datos serial se muestra en la figura 3.

 

 

Figura 3 - Una corriente de datos codificada en Manchester
Figura 3 - Una corriente de datos codificada en Manchester

 

 

Un punto importante que debe considerarse en este proceso de decodificación es que el nivel del componente DC tiene un nivel medio igual a cero. Además de la amplitud pico a pico de los datos codificados, las transiciones pueden ser identificadas como el punto en que pasan por el nivel medio, por ejemplo, cero.

   Los codificadores de datos de bajo costo utilizan estas características empleando un circuito simple de detector de transición denominado "data slicer".

  En la figura 4 tenemos un ejemplo de este tipo, empleando un comparador para decodificar el "rebanado" (slice) una corriente de datos.

 

Figura 4 - Decodificación de las señales con un comparador
Figura 4 - Decodificación de las señales con un comparador

 

  

Un filtro pasa-bajas, formado por R1 y C1, acompaña la tensión DC media de la corriente de datos, con una constante de tiempo elegida para no ser mucho mayor que la tasa de chips serie.

   La tensión media en C1 establece la referencia negativa de entrada al comparador. La corriente de datos serial se aplica a la entrada del circuito y el resultado es una secuencia de datos de salida donde el comparador tiene su oscilación entre el nivel negativo y positivo de la alimentación.

   En la figura 5 tenemos un ejemplo de una cadena de datos codificados en Manchester aplicada al circuito y la señal de salida resultante.

 

Figura 5 - La señal del decodificador
Figura 5 - La señal del decodificador

 

 

   Tenga en cuenta que en este ejemplo los datos codificados tienen una tensión offset desde el nivel de cero, como ocurre normalmente en los receptores comunes de RF.

   El data-slicer efectivamente convierte la corriente de datos de entrada en una cadena de sados ​​binarios que varían según la tensión de alimentación, como se requiere en los sistemas digitales. Las señales obtenidas pueden entonces ser procesadas por los circuitos digitales comunes.

    El circuito mostrado en la figura 5 tiene aún los resistores R2 y R3 que forman un eslabón de realimentación positiva que añade histéresis al comparador. Esta histéresis reduce las fronteras múltiples que pueden ocurrir con señales lentas o sujetas a ruidos.

   Una vez que los datos enviados se separan en datos seriales digitales con el restablecimiento de las tensiones que representan los niveles lógicos, un decodificador puede ser usado para extraer la señal original,

   Normalmente, para el decodificador se utiliza un microcontrolador que ejecuta algún algoritmo capaz de hacer esto.

   En un sistema, el software puede anticipar el tiempo de transición lógica, conociendo la tasa aproximada de transmisión de los datos. Con ello es posible aprovechar un segundo beneficio: la tasa de transmisión embutida.

   En las situaciones en los datos recibidos están cerca del nivel de ruido (bajas potencias o transmisores distantes) las fronteras de transición pueden ser múltiples en la decodificación.

   Un algoritmo apropiado puede ser utilizado para anticipar los valores válidos de la transición, rechazando los que no deben ser considerados.

    Apear de los microcontroladores pueden ser implementados con la función de decodificación, ellos también deben ser empleados para otras como el control de dispositivos externos y todo lo demás.

   En la figura 6 tenemos un sistema básico de receptor de control remoto.

 

Figura 6 - Receptor básico
Figura 6 - Receptor básico

 

 

     La codificación Manchester se refiere al proceso de la combinación lógica de datos seriales que deben ser codificados y el reloj utilizado para establecer la tasa de transmisión.

   Un ejemplo de circuito transmisor se muestra en la figura 7.

 

   Figura 7 - Un circuito transmisor
   Figura 7 - Un circuito transmisor

 

 

   Se utiliza un circuito como éste para codificar datos seriales de la salida UART de un microcontrolador. El circuito mostrado imita funciones necesarias para evitar la generación de frontales múltiples en las transiciones del reloj y de las entradas de datos que pueden ocurrir con estados lógicos intermedios.

  En la figura 8 tenemos el modo de implementar un transmisor de datos codificado con Manchester y usando software apropiado.

 

Figura 8 - Un transmisor para datos codificados en Manchester
Figura 8 - Un transmisor para datos codificados en Manchester

 

   

De esta forma no es necesario utilizar un microcontrolador con UART y circuitos externos para transmitir los datos codificados en Manchester.

   Un temporizador interno del microcontrolador dispara una subrutina para actualizar la clavija de salida de acuerdo con los datos que se transmiten y luego establece el tiempo de la tasa de datos.

   La base de tiempo del microcontrolador no necesita ser precisa, ya que los datos codificados contienen toda la información sobre datos y el reloj embutidos para el uso del circuito de descodificador.

 

 

18.924MBMemory Usage41.82msRequest 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" => 1749621405 "last" => 1749621405...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:21 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
  • afterLoad (85.42KB) (226μs)
  • afterInitialise (1.14MB) (3.69ms)
  • afterRoute (179.16KB) (899μs)
  • beforeRenderComponent com_content (100.7KB) (439μs)
  • Before Access::preloadComponents (all components) (33.45KB) (201μs)
  • After Access::preloadComponents (all components) (107.06KB) (456μs)
  • Before Access::preloadPermissions (com_content) (1.57KB) (7μs)
  • After Access::preloadPermissions (com_content) (16.22MB) (22.19ms)
  • Before Access::getAssetRules (id:27046 name:com_content.article.30684) (514.65KB) (978μs)
  • After Access::getAssetRules (id:27046 name:com_content.article.30684) (7.38KB) (37μs)
  • afterRenderComponent com_content (399.34KB) (5.81ms)
  • afterDispatch (2.25KB) (41μs)
  • beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (1.51ms)
  • afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (311μs)
  • beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (95μs)
  • afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (1.03ms)
  • beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (523μs)
  • afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (64μs)
  • beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (192μs)
  • afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (50μs)
  • afterRender (265.75KB) (2.98ms)
  • 1 x After Access::preloadPermissions (com_content) (16.22MB) (53.06%)
    22.19ms
    1 x afterRenderComponent com_content (399.34KB) (13.89%)
    5.81ms
    1 x afterInitialise (1.14MB) (8.82%)
    3.69ms
    1 x afterRender (265.75KB) (7.12%)
    2.98ms
    1 x beforeRenderRawModule mod_articles_category (Banco de Circuitos) (358.53KB) (3.62%)
    1.51ms
    1 x afterRenderRawModule mod_finder (Busca_inteligente) (64.9KB) (2.46%)
    1.03ms
    1 x Before Access::getAssetRules (id:27046 name:com_content.article.30684) (514.65KB) (2.34%)
    978μs
    1 x afterRoute (179.16KB) (2.15%)
    899μs
    1 x beforeRenderModule mod_articles_category (Banco de Circuitos) (9.27KB) (1.25%)
    523μs
    1 x After Access::preloadComponents (all components) (107.06KB) (1.09%)
    456μs
    1 x beforeRenderComponent com_content (100.7KB) (1.05%)
    439μs
    1 x afterRenderRawModule mod_articles_category (Banco de Circuitos) (79.43KB) (0.74%)
    311μs
    1 x afterLoad (85.42KB) (0.54%)
    226μs
    1 x Before Access::preloadComponents (all components) (33.45KB) (0.48%)
    201μs
    1 x beforeRenderModule mod_finder (Busca_inteligente) (6.64KB) (0.46%)
    192μs
    1 x beforeRenderRawModule mod_finder (Busca_inteligente) (5.9KB) (0.23%)
    95μs
    1 x afterRenderModule mod_articles_category (Banco de Circuitos) (5.47KB) (0.15%)
    64μs
    1 x afterRenderModule mod_finder (Busca_inteligente) (4.75KB) (0.12%)
    50μs
    1 x afterDispatch (2.25KB) (0.1%)
    41μs
    1 x After Access::getAssetRules (id:27046 name:com_content.article.30684) (7.38KB) (0.09%)
    37μs
    1 x Before Access::preloadPermissions (com_content) (1.57KB) (0.02%)
    7μs
21 statements were executed, 5 of which were duplicates, 16 unique10.92ms1.58MB
  • SELECT @@SESSION.sql_mode;35μs968B/libraries/src/Session/MetadataManager.php:184Copy
  • SELECT `session_id` FROM `incbmx_session` WHERE `session_id` = :session_id LIMIT 167μ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)168μs944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `id`,`rules` FROM `incbmx_viewlevels`48μ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` = :guest73μ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`234μ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)311μ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.69ms1.48MBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `incbmx_content`326μs2.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:587Copy
  • UPDATE `incbmx_content` SET `hits` = (`hits` + 1) WHERE `id` = '30684'138μ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)146μ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`172μ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)268μ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`210μ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 ASC368μ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`171μs3.92KBParams/libraries/src/Categories/Categories.php:375Copy
  • SELECT `name`,`element` FROM `incbmx_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1132μ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)81μs648B/administrator/components/com_finder/src/Indexer/Taxonomy.php:325Copy
  • SELECT * FROM `incbmx_schemaorg` WHERE `itemId` = :itemId AND `context` = :context53μ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)159μ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` = 167μs1.37KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:465Copy