This documentation is out of date.

The new version of the documentation is here: https://cannylogic.com/docs

Difference between revisions of "CANNY 7, CAN Driver"

From CANNY Wiki
Jump to: navigation, search
[unchecked revision][checked revision]
(Смотри также)
(Driver's registers)
 
(18 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=== Общее описание ===
+
== General Description ==
  
Два специальных внешних вывода контроллера CANNY 7, расположенные на 4х контактном разъеме: CAN-H и CAN-L, предназначены для подключения к цифровой информационной '''[https://en.wikipedia.org/wiki/CAN_bus CAN-bus]'''.
+
Two dedicated external outputs of CANNY 7 controller, located on the 4-pin connector: CAN-H and CAN-L, provided for connection to digital information '''[https://en.wikipedia.org/wiki/CAN_bus CAN-bus]'''.
  
=== Регистры драйвера ===
+
== Driver's registers ==
  
Ниже приведено описание допустимых значений регистров управления работой драйвера CAN.
+
Below is a description of valid values for registers controlling CAN-bus driver operation.
  
Регистры конфигурации драйвера CAN позволяют установить параметры работы контроллера в качестве узла шины CAN:
+
CAN driver configuration registers allows to set the parameters of the controller as a CAN bus node:
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Ожидаемые значения
+
!Expected values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки конфигурации CAN
+
|style="padding-left:0.5em;"| CAN Mode Setup Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|1...8
+
|width="70px" style="padding-left:0.5em;"|1...N
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|активизация драйвера и установка скорости приема/передачи CAN-сообщений (задается специальной константой из справочника констант);
+
|style="padding-left:0.5em;"|driver activation and CAN-messages transmit/receive speed setting (defined by a special constant of constants directory);
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|драйвер отключен.
+
|style="padding-left:0.5em;"|driver disabled.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 33: Line 33:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки фильтра приема CAN IDL №0
+
|style="padding-left:0.5em;"|CAN Acceptance Filter Identifier Register IDL 0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки фильтра приема CAN IDL №15
+
|style="padding-left:0.5em;"|CAN Acceptance Filter Identifier Register IDL 15
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...65535
+
|width="70px" style="padding-left:0.5em;"|0...0xFFFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|установить значение фильтра для младшей части идентификатора CAN-сообщения (биты 0...10 идентификатора стандартного формата или биты 0...15 идентификатора расширенного формата);
+
|style="padding-left:0.5em;"|set filter value for lower part of CAN-message identifier(bits 0...10 identifier standard format or bits 0...15 expanded identifier format);
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 50: Line 50:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки фильтра приема CAN IDH №0
+
|style="padding-left:0.5em;"|CAN Acceptance Filter Identifier Register IDH 0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки фильтра приема CAN IDH №15
+
|style="padding-left:0.5em;"|CAN Acceptance Filter Identifier Register IDH 15
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...32767
+
|width="70px" style="padding-left:0.5em;"|0...0x1FFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|установить значение фильтра для старшей части идентификатора CAN-сообщения (биты 16...28 идентификатора расширенного формата);
+
|style="padding-left:0.5em;"|set filter value for higher part of CAN-message identifier (bits 16...28 expanded identifier format);
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 67: Line 67:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр установки режима пассивного приема сообщений CAN
+
|style="padding-left:0.5em;"|CAN Listen Only Mode Enable Register
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|1
+
|width="70px" style="padding-left:0.5em;"|≥ 1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|включен режим пассивного приема (listen only) сообщений CAN;
+
|style="padding-left:0.5em;"|CAN messages passive reception mode enabled (listen only);
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|включен режим нормального приема-передачи (normal) сообщений CAN;
+
|style="padding-left:0.5em;"|CAN messages reception and transmission mode enabled (normal);
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 84: Line 84:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр режима фильтрации приема данных CAN
+
|style="padding-left:0.5em;"|CAN Acceptance Filter Enable Register
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|1
+
|width="70px" style="padding-left:0.5em;"|≥ 1
 +
|style="padding-left:0.5em;"|=
 +
|style="padding-left:0.5em;"|CAN received messages filtering mode enabled;
 +
|- valign="top"
 +
|width="70px" style="padding-left:0.5em;"|0
 +
|style="padding-left:0.5em;"|=
 +
|style="padding-left:0.5em;"|CAN received messages filtering mode disabled;
 +
|}
 +
|- valign="top"
 +
|
 +
{|border="0" align="left"
 +
|- valign="top"
 +
|style="padding-left:0.5em;"|CAN Transmitting Cancel On Error Register
 +
|}
 +
|
 +
{|border="0" align="left"
 +
|- valign="top"
 +
|width="70px" style="padding-left:0.5em;"|≥ 1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|режим фильтрации принимаемых сообщений CAN включен;
+
|style="padding-left:0.5em;"|CAN transmitting cancel on error is enabled;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|режим фильтрации принимаемых сообщений CAN отключен.
+
|style="padding-left:0.5em;"|CAN transmitting cancel on error is disabled.
 
|}
 
|}
 
|}
 
|}
  
 
{|
 
{|
|valign="top" style="padding-left:0.5em;"|''Примечание:''
+
|valign="top" style="padding-left:0.5em;"|''Note:''
|valign="top" style="padding-left:0.5em;"|''В режиме пассивного приема сообщений CAN (listen only) в отличие от нормального режима CAN (normal) драйвер выполняет прием данных из CAN-шины, но при этом не отправляет подтверждение их приема и не переводит сеть в состояние ошибки при обнаружении таковой. Таким образом контроллер остается незаметным для остальных устройств на шине, никак себя не проявляя. Для нормальной работы сети, в ней должны находится минимум два устройства работающие в режиме normal.''
+
|valign="top" style="padding-left:0.5em;"|''In passive receiving CAN messages mode (listen only), unlike normal CAN mode, the driver operates to receive data from CAN-bus, but does not send a confirmation of reception and does not puts network in an error state when it detects such. Thus, the controller remains invisible to the other devices on the bus, does not prove itself. For normal network operation, there must be present at least two devices operating in the normal mode.''
 
|}
 
|}
  
 
{|
 
{|
|valign="top" style="padding-left:0.5em;"|''Примечание:''
+
|valign="top" style="padding-left:0.5em;"|''Note:''
|valign="top" style="padding-left:0.5em;"|''При включенном режиме фильтрации CAN драйвер будет  принимать только те сообщения, идентификаторы которых совпадают с указанными в регистрах установки фильтра приема сообщений CAN значениями, игнорируя все остальные.''
+
|valign="top" style="padding-left:0.5em;"|''When filter mode enabled the CAN driver will accept only those messages whose identifiers match values in CAN message receive filter installation registers, ignoring all others.''
 
|}
 
|}
  
Конфигурация драйвера CAN, определяется константой, задающей скорость приема/передачи данных.
+
CAN driver configuration is defined by a constant predetermined data transmission/reception speed.
  
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Параметр
+
!width="250px"| Parameter
!Перечень допустимых значений
+
!A list of acceptable values
 
|- valign="top"
 
|- valign="top"
|Скорость приема/передачи данных, Кбит/с
+
|Data transmission/reception speed, Kbit/s
|10; 33; 50; 83; 100; 125; 250; 500; 1000
+
|10; 20; 33.3; 50; 83.3; 95.2; 100; 125; 250; 500; 800; 1000
 
|}
 
|}
  
Именованные константы, определяющие конфигурацию CAN-драйвера, содержатся в разделе «Конфигурация CAN» справочника констант CannyLab, доступ к которому осуществляется через контекстное меню входа функционального блока, имеющего тип «Константа».
+
Named constants that represent CAN configuration parameters combination, available to the user in the "CAN Modes" CannyLab constants directory, which can be accessed via function block entry context menu having "constant" type.
  
Регистры диагностики драйвера CAN позволяют пользователю определить состояние драйвера в тот или иной момент выполнения диаграммы.
+
CAN driver diagnostics registers allows the user to determine the status of the driver in one or another moment of a diagram execution.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Возвращаемые значения
+
!Returning Values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр отсутствия активности драйвера CAN
+
|style="padding-left:0.5em;"|CAN Idle Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
Line 138: Line 155:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|активность драйвера CAN отсутствует, шина бездействует, прием данных не осуществляется;
+
|style="padding-left:0.5em;"|CAN driver activity is absent, the bus is idle, the data reception is not performed;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|регистрируется активность CAN.
+
|style="padding-left:0.5em;"|CAN activity registered.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 148: Line 165:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр переполнения буфера приема CAN
+
|style="padding-left:0.5em;"|CAN Overflow Register
 
|}
 
|}
 
|
 
|
Line 155: Line 172:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|ошибка, буфер CAN переполнен;
+
|style="padding-left:0.5em;"|error, CAN buffer is full;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|переполнение буфера приема отсутствует.
+
|style="padding-left:0.5em;"|no overflow of the receive buffer.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 165: Line 182:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр ошибки приема CAN
+
|style="padding-left:0.5em;"|CAN Error Register
 
|}
 
|}
 
|
 
|
Line 172: Line 189:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|уровень ошибок приема CAN превысил допустимый порог;
+
|style="padding-left:0.5em;"|CAN reception error rate exceeds a threshold;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|уровень ошибок приема CAN ниже допустимого порога.
+
|style="padding-left:0.5em;"|CAN reception error rate below an acceptable threshold.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 182: Line 199:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр готовности буфера передачи данных CAN
+
|style="padding-left:0.5em;"|CAN Ready To Send Register
 
|}
 
|}
 
|
 
|
Line 189: Line 206:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|буфер передачи данных драйвера CAN свободен и готов к загрузке новых сообщений;
+
|style="padding-left:0.5em;"|CAN driver data transmit buffer is empty and ready to send new messages;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|буфер передачи данных драйвера CAN не готов.
+
|style="padding-left:0.5em;"|CAN driver data transmit buffer is not ready.
 
|}
 
|}
 
|}
 
|}
  
Регистры приема драйвера CAN позволяют получить доступ к значениям, полученным по шине.
+
CAN driver receiving registers allows access to the values obtained on the bus.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Возвращаемые значения
+
!Return values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр наличия принятых данных CAN
+
|style="padding-left:0.5em;"|CAN Data Set Ready Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
Line 213: Line 230:
 
|width="70px" style="padding-left:0.5em;"|1
 
|width="70px" style="padding-left:0.5em;"|1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|в буфере приема драйвера CAN находится полученное сообщение, данное значение появляется в регистре на один цикл выполнения диаграммы сообщая об актуальности данных, находящихся в буфере приема;
+
|style="padding-left:0.5em;"|CAN driver receive buffer has received message, this value appears in the register for one cycle of diagram execution, stating the relevance of data stored in the receive buffer;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|в буфере приема драйвера CAN нет актуальных данных.
+
|style="padding-left:0.5em;"|there is no data in the CAN driver receive buffer.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 223: Line 240:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения CAN IDL
+
|style="padding-left:0.5em;"|CAN Received Data Register IDL
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...65535
+
|width="70px" style="padding-left:0.5em;"|0...0xFFFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение младшей части идентификатора полученного CAN-сообщения.
+
|style="padding-left:0.5em;"|the value of the lower part of the identifier received CAN-message.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 236: Line 253:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения CAN IDH
+
|style="padding-left:0.5em;"|CAN Received Data Register IDH
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...32767
+
|width="70px" style="padding-left:0.5em;"|0...0x1FFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение старшей части идентификатора полученного CAN-сообщения.
+
|style="padding-left:0.5em;"|the value of the higher part of the identifier received CAN-message.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 249: Line 266:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения CAN ERL
+
|style="padding-left:0.5em;"|CAN Received Data Register ERL
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...ER + 8
+
|width="70px" style="padding-left:0.5em;"|0...'''0xXX'''08
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение, равное количеству байт данных в принятом сообщении, признаки EXT и RTR (см. примечание).
+
|style="padding-left:0.5em;"|a value equal to the number of bytes of data in the received message, where '''0хXX''' is: 0x00 (for standard format), 0x40 (for standard format with RTR), 0x80 (for extended format) or 0xC0 (for extended format with RTR). For more information, see note.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 262: Line 279:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения CAN D1:D0
+
|style="padding-left:0.5em;"|CAN Received Data Register D1:D0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр принятого сообщения CAN D7:D6
+
|style="padding-left:0.5em;"|CAN Received Data Register D7:D6
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...65535
+
|width="70px" style="padding-left:0.5em;"|0...0xFFFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значения соответствующих байт данных принятого сообщения CAN, по два байта на регистр.
+
|style="padding-left:0.5em;"|values of the corresponding data bytes received in CAN message, two bytes per register.
 
|}
 
|}
 
|}
 
|}
  
 
{|
 
{|
|valign="top" style="padding-left:0.5em;"|''Примечание:''
+
|valign="top" style="padding-left:0.5em;"|''Note:''
|valign="top" style="padding-left:0.5em;"|''Регистр принятого сообщения CAN ERL, помимо числа байт в принятом сообщении 0...8 в младших битах, содержит в своих старших битах информацию о специальных признаках сообщения: бит 15 - признак EXT и бит 14 признак RTR.  Где EXT = 1 при приеме сообщения в расширенном формате,  EXT = 0 при стандартном формате сообщения; RTR = 1 при приеме удаленного запроса данных, EXT = 0 при приеме обычного сообщения.''
+
|valign="top" style="padding-left:0.5em;"|''CAN Received Data Register ERL, in addition to the number of bytes in the received message 0 ... 8 least significant bits, contains in its most significant bits information about special message attributes: bit 15 - EXT flag & bit 14 - RTR flagWhere EXT = 1, when receive a message in the extended format,  EXT = 0 for a standard message format; RTR = 1 when receiving remote data request, RTR = 0 when receiving normal message.''
 
|}
 
|}
  
Регистры передачи сообщений CAN используются для размещения в буфере передачи драйвера данных, подлежащих отправке.
+
CAN transmit registers are used to accommodate data in the transmission buffer to be sent.
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
{|border="1" style="border-collapse:collapse;" align="left" width="100%"
 
|- align="center" valign="top"
 
|- align="center" valign="top"
!width="250px"|Адрес
+
!width="250px"|Address
!Ожидаемые значения
+
!Expected values
 
|- valign="top"
 
|- valign="top"
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр начала передачи CAN
+
|style="padding-left:0.5em;"|CAN Request To Send Register
 
|}
 
|}
 
|valign="top"|
 
|valign="top"|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|1
+
|width="70px" style="padding-left:0.5em;"|≥ 1
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|загрузить данные из регистров передачи в буфер передачи драйвера CAN;
+
|style="padding-left:0.5em;"|load data from the transfer registers in to CAN driver send buffer;
 
|- valign="top"
 
|- valign="top"
 
|width="70px" style="padding-left:0.5em;"|0
 
|width="70px" style="padding-left:0.5em;"|0
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|не загружать данные в буфер передачи драйвера CAN.
+
|style="padding-left:0.5em;"|do not load data to CAN driver transmission buffer.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 308: Line 325:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр сообщения передачи CAN IDL
+
|style="padding-left:0.5em;"|CAN Transmit Data Register IDL
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...65535
+
|width="70px" style="padding-left:0.5em;"|0...0xFFFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение младшей части идентификатора передаваемого CAN-сообщения.
+
|style="padding-left:0.5em;"|the value of the lower part of the identifier transmitting CAN-message.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 321: Line 338:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр сообщения передачи CAN IDH
+
|style="padding-left:0.5em;"|CAN Transmit Data Register IDH
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...32767
+
|width="70px" style="padding-left:0.5em;"|0...0x1FFF
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение старшей части идентификатора передаваемого CAN-сообщения.
+
|style="padding-left:0.5em;"|the value of the higher part of the identifier transmitting CAN-message.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 334: Line 351:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр сообщения передачи CAN ERL
+
|style="padding-left:0.5em;"|CAN Transmit Data Register ERL
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...ER + 8
+
|width="70px" style="padding-left:0.5em;"|0...'''0xXX'''08
 
|style="padding-left:0.5em;"|=
 
|style="padding-left:0.5em;"|=
|style="padding-left:0.5em;"|значение, равное количеству байт данных в передаваемом сообщении, признаки EXT и RTR (см. примечание).
+
|style="padding-left:0.5em;"|the value equal to the number of bytes of data in the transmitted message, where '''0хXX''' is: 0x00 (for standard format), 0x40 (for standard format with RTR), 0x80 (for extended format) or 0xC0 (for extended format with RTR). For more information, see note.
 
|}
 
|}
 
|- valign="top"
 
|- valign="top"
Line 347: Line 364:
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр сообщения передачи CAN D1:D0
+
|style="padding-left:0.5em;"|CAN Transmit Data Register D1:D0
 
|- valign="top"
 
|- valign="top"
 
|style="padding-left:0.5em;"|...
 
|style="padding-left:0.5em;"|...
 
|- valign="top"
 
|- valign="top"
|style="padding-left:0.5em;"|Регистр сообщения передачи CAN D7:D6
+
|style="padding-left:0.5em;"|CAN Transmit Data Register D7:D6
 
|}
 
|}
 
|
 
|
 
{|border="0" align="left"
 
{|border="0" align="left"
 
|- valign="top"
 
|- valign="top"
|width="70px" style="padding-left:0.5em;"|0...65535
+
|width="70px" style="padding-left:0.5em;"|0...0xFFFF
|style="padding-left:0.5em;"|=
+
|style="padding-left:0.5em;"|
|style="padding-left:0.5em;"|значения соответствующих байт данных передаваемого сообщения CAN, по два байта на регистр.
+
|style="padding-left:0.5em;"|values of the corresponding data byte of transmitting CAN message, two bytes per register.
 
|}
 
|}
 
|}
 
|}
  
 
{|
 
{|
|valign="top" style="padding-left:0.5em;"|''Примечание:''
+
|valign="top" style="padding-left:0.5em;"|''Note:''
|valign="top" style="padding-left:0.5em;"|''Регистр сообщения передачи CAN ERL, помимо числа байт в передаваемом сообщении 0...8 в младших битах, содержит в своих старших битах информацию о специальных признаках сообщения: бит 15 - признак EXT и бит 14 признак RTR. Где EXT = 1 при передаче сообщения в расширенном формате,  EXT = 0 при стандартном формате сообщения; RTR = 1 при передаче удаленного запроса данных, EXT = 0 при передаче обычного сообщения.''
+
|valign="top" style="padding-left:0.5em;"|''CAN Transmit Data Register ERL, in addition to the number of bytes in the transmitting message 0 ... 8 least significant bits, contains in its most significant bits information about special message attributes: bit 15 - EXT flag & bit 14 - RTR flag. Where EXT = 1, when transmitting a message in the extended format,  EXT = 0 for a standard message format; RTR = 1 when transmitting remote data request, RTR = 0 when receiving normal message.''
 
|}
 
|}
  
Пример функциональной диаграммы отправки данных в шину CAN. Выполняя диаграмму контроллер, с периодичностью 1 раз в 100мс, передает в шину на скорости 125 кБод данные о состоянии трех своих входов, используя сообщения стандартного формата с идентификатором 0x123, содержащие один байт данных.
+
== Examples of message transmitting ==
 +
 
 +
An example of a functional diagram of the data sent to the CAN bus. Performing diagram the controller once every 100 ms, transmits to the bus at a speed of 125 kbps, the data about the state of its three inputs, using a standard format message with the identifier 0x123, contains a single byte of data.
 +
 
 +
[[File:6_9_2_1.png]]
 +
 
 +
An example of a functional diagram for sending a CAN message with a standard identifier is '''0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78''' by the appearance of a signal on the channel #8 of the controller.
 +
 
 +
[[File:6_9_2_4.png|500px]]
 +
 
 +
An example of a functional diagram for sending a CAN message with the extended identifier is "0x1f110001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78" by the appearance of a signal on the channel #8 of the controller.
 +
 +
Differences in sending an extended message from sending a standard one: set bit 15 of the register '''[CAN Transmit Data Register ERL]''', the leading part of the identifier should be written to the register '''[CAN Transmit Data Register IDH]'''.
 +
 
 +
[[File:6_9_2_5.png|500px]]
 +
 
 +
Example of a functional diagram for sending a CAN message with the standard identifier "0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78" by the appearance of a signal on the channel #8 of the controller, and sending a message with the same ID, but with zero data when the signal on the channel #8 of the controller is disappears.
 +
 
 +
[[File:6_9_2_6.png|700px]]
 +
 
 +
An example of sending several CAN messages periodically.
 +
 
 +
[[File:6_9_2_7.png|800px]]
 +
 
 +
== Examples of message reciving ==
  
[[File:6_9_2_1.png|center|850px]]
+
An example of a functional diagram of the data receive from the CAN bus. Performing the diagram controller, receiving message from the bus in standard format with ID 0x0123, containing one byte of data, sets on three of its outputs, states in accordance with received value.
  
Пример функциональной диаграммы приема данных из шины CAN. Выполняя диаграмму контроллер, получая по шине сообщения стандартного формата с идентификатором 0x0123, содержащие один байт данных, устанавливает на трех своих выходах состояние в соответствии с полученным значением.
+
[[File:6_9_2_2.png]]
  
[[File:6_9_2_2.png|center|950px]]
+
An example of a functional diagram of the data receive from the CAN bus. Performing the diagram controller, receiving message on the bus in standard format with an ID 0x01F3, analyzes contained in one of the  message bytes a value and sets on its outputs and built-in LED corresponding states.  
  
 +
[[File:6_9_2_3.png]]
  
== Смотри также ==
+
== See also ==
 
[[CANNY 7]]
 
[[CANNY 7]]
  
 
[[CANNY 7, LIN Driver]]
 
[[CANNY 7, LIN Driver]]

Latest revision as of 16:50, 27 August 2019

General Description

Two dedicated external outputs of CANNY 7 controller, located on the 4-pin connector: CAN-H and CAN-L, provided for connection to digital information CAN-bus.

Driver's registers

Below is a description of valid values for registers controlling CAN-bus driver operation.

CAN driver configuration registers allows to set the parameters of the controller as a CAN bus node:

Address Expected values
CAN Mode Setup Register
1...N = driver activation and CAN-messages transmit/receive speed setting (defined by a special constant of constants directory);
0 = driver disabled.
CAN Acceptance Filter Identifier Register IDL 0
...
CAN Acceptance Filter Identifier Register IDL 15
0...0xFFFF = set filter value for lower part of CAN-message identifier(bits 0...10 identifier standard format or bits 0...15 expanded identifier format);
CAN Acceptance Filter Identifier Register IDH 0
...
CAN Acceptance Filter Identifier Register IDH 15
0...0x1FFF = set filter value for higher part of CAN-message identifier (bits 16...28 expanded identifier format);
CAN Listen Only Mode Enable Register
≥ 1 = CAN messages passive reception mode enabled (listen only);
0 = CAN messages reception and transmission mode enabled (normal);
CAN Acceptance Filter Enable Register
≥ 1 = CAN received messages filtering mode enabled;
0 = CAN received messages filtering mode disabled;
CAN Transmitting Cancel On Error Register
≥ 1 = CAN transmitting cancel on error is enabled;
0 = CAN transmitting cancel on error is disabled.
Note: In passive receiving CAN messages mode (listen only), unlike normal CAN mode, the driver operates to receive data from CAN-bus, but does not send a confirmation of reception and does not puts network in an error state when it detects such. Thus, the controller remains invisible to the other devices on the bus, does not prove itself. For normal network operation, there must be present at least two devices operating in the normal mode.
Note: When filter mode enabled the CAN driver will accept only those messages whose identifiers match values in CAN message receive filter installation registers, ignoring all others.

CAN driver configuration is defined by a constant predetermined data transmission/reception speed.

Parameter A list of acceptable values
Data transmission/reception speed, Kbit/s 10; 20; 33.3; 50; 83.3; 95.2; 100; 125; 250; 500; 800; 1000

Named constants that represent CAN configuration parameters combination, available to the user in the "CAN Modes" CannyLab constants directory, which can be accessed via function block entry context menu having "constant" type.

CAN driver diagnostics registers allows the user to determine the status of the driver in one or another moment of a diagram execution.

Address Returning Values
CAN Idle Register
1 = CAN driver activity is absent, the bus is idle, the data reception is not performed;
0 = CAN activity registered.
CAN Overflow Register
1 = error, CAN buffer is full;
0 = no overflow of the receive buffer.
CAN Error Register
1 = CAN reception error rate exceeds a threshold;
0 = CAN reception error rate below an acceptable threshold.
CAN Ready To Send Register
1 = CAN driver data transmit buffer is empty and ready to send new messages;
0 = CAN driver data transmit buffer is not ready.

CAN driver receiving registers allows access to the values obtained on the bus.

Address Return values
CAN Data Set Ready Register
1 = CAN driver receive buffer has received message, this value appears in the register for one cycle of diagram execution, stating the relevance of data stored in the receive buffer;
0 = there is no data in the CAN driver receive buffer.
CAN Received Data Register IDL
0...0xFFFF = the value of the lower part of the identifier received CAN-message.
CAN Received Data Register IDH
0...0x1FFF = the value of the higher part of the identifier received CAN-message.
CAN Received Data Register ERL
0...0xXX08 = a value equal to the number of bytes of data in the received message, where 0хXX is: 0x00 (for standard format), 0x40 (for standard format with RTR), 0x80 (for extended format) or 0xC0 (for extended format with RTR). For more information, see note.
CAN Received Data Register D1:D0
...
CAN Received Data Register D7:D6
0...0xFFFF = values of the corresponding data bytes received in CAN message, two bytes per register.
Note: CAN Received Data Register ERL, in addition to the number of bytes in the received message 0 ... 8 least significant bits, contains in its most significant bits information about special message attributes: bit 15 - EXT flag & bit 14 - RTR flag. Where EXT = 1, when receive a message in the extended format, EXT = 0 for a standard message format; RTR = 1 when receiving remote data request, RTR = 0 when receiving normal message.

CAN transmit registers are used to accommodate data in the transmission buffer to be sent.

Address Expected values
CAN Request To Send Register
≥ 1 = load data from the transfer registers in to CAN driver send buffer;
0 = do not load data to CAN driver transmission buffer.
CAN Transmit Data Register IDL
0...0xFFFF = the value of the lower part of the identifier transmitting CAN-message.
CAN Transmit Data Register IDH
0...0x1FFF = the value of the higher part of the identifier transmitting CAN-message.
CAN Transmit Data Register ERL
0...0xXX08 = the value equal to the number of bytes of data in the transmitted message, where 0хXX is: 0x00 (for standard format), 0x40 (for standard format with RTR), 0x80 (for extended format) or 0xC0 (for extended format with RTR). For more information, see note.
CAN Transmit Data Register D1:D0
...
CAN Transmit Data Register D7:D6
0...0xFFFF values of the corresponding data byte of transmitting CAN message, two bytes per register.
Note: CAN Transmit Data Register ERL, in addition to the number of bytes in the transmitting message 0 ... 8 least significant bits, contains in its most significant bits information about special message attributes: bit 15 - EXT flag & bit 14 - RTR flag. Where EXT = 1, when transmitting a message in the extended format, EXT = 0 for a standard message format; RTR = 1 when transmitting remote data request, RTR = 0 when receiving normal message.

Examples of message transmitting

An example of a functional diagram of the data sent to the CAN bus. Performing diagram the controller once every 100 ms, transmits to the bus at a speed of 125 kbps, the data about the state of its three inputs, using a standard format message with the identifier 0x123, contains a single byte of data.

6 9 2 1.png

An example of a functional diagram for sending a CAN message with a standard identifier is 0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78 by the appearance of a signal on the channel #8 of the controller.

6 9 2 4.png

An example of a functional diagram for sending a CAN message with the extended identifier is "0x1f110001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78" by the appearance of a signal on the channel #8 of the controller.

Differences in sending an extended message from sending a standard one: set bit 15 of the register [CAN Transmit Data Register ERL], the leading part of the identifier should be written to the register [CAN Transmit Data Register IDH].

6 9 2 5.png

Example of a functional diagram for sending a CAN message with the standard identifier "0x001: 0xDE 0xAD 0xBE 0xEF 0x12 0x34 0x56 0x78" by the appearance of a signal on the channel #8 of the controller, and sending a message with the same ID, but with zero data when the signal on the channel #8 of the controller is disappears.

6 9 2 6.png

An example of sending several CAN messages periodically.

6 9 2 7.png

Examples of message reciving

An example of a functional diagram of the data receive from the CAN bus. Performing the diagram controller, receiving message from the bus in standard format with ID 0x0123, containing one byte of data, sets on three of its outputs, states in accordance with received value.

6 9 2 2.png

An example of a functional diagram of the data receive from the CAN bus. Performing the diagram controller, receiving message on the bus in standard format with an ID 0x01F3, analyzes contained in one of the message bytes a value and sets on its outputs and built-in LED corresponding states.

6 9 2 3.png

See also

CANNY 7

CANNY 7, LIN Driver