0% нашли этот документ полезным (0 голосов)
5 просмотров69 страниц

Fbus Api SPM

Документ представляет собой руководство программиста для комплекта разработчика прикладного программного обеспечения Fastwel FBUS SDK версии 2.2. Он включает информацию о программном обеспечении, установке драйверов, интерфейсе FBUS и программном интерфейсе прикладного уровня, а также содержит примеры программирования для различных операционных систем. Документ также содержит контактные данные и информацию о технической поддержке.

Загружено:

msalimov
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
5 просмотров69 страниц

Fbus Api SPM

Документ представляет собой руководство программиста для комплекта разработчика прикладного программного обеспечения Fastwel FBUS SDK версии 2.2. Он включает информацию о программном обеспечении, установке драйверов, интерфейсе FBUS и программном интерфейсе прикладного уровня, а также содержит примеры программирования для различных операционных систем. Документ также содержит контактные данные и информацию о технической поддержке.

Загружено:

msalimov
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd

2004–2011 Fastwel Co Ltd. [Link]

ru

Комплект разработчика прикладного программного обеспечения для шины FBUS


Fastwel FBUS SDK
Руководство программиста

Версия 2.2
2004 –2011 Fastwel Co Ltd. [Link]

СОДЕРЖАНИЕ

1. ВВЕДЕНИЕ.................................................................................................................................... 7
1.1. СВЕДЕНИЯ О ДОКУМЕНТЕ ......................................................................................................... 7
1.2. СОКРАЩЕНИЯ И ТЕРМИНОЛОГИЯ ............................................................................................. 7
2. ИНФОРМАЦИЯ О ПОСТАВЛЯЕМОМ ПРОГРАММНОМ ОБЕСПЕЧЕНИИ ............. 9
2.1. ОБЩИЕ СВЕДЕНИЯ .................................................................................................................... 9
2.2. УСТАНОВКА И УДАЛЕНИЕ FBUS SDK ..................................................................................... 9
2.2.1. Требования к конфигурации программного обеспечения ........................................... 9
2.2.2. Требования к конфигурации аппаратных средств ..................................................... 9
2.2.3. Установка ....................................................................................................................... 9
2.2.4. Удаление ........................................................................................................................ 10
2.3. СОСТАВ КОМПЛЕКТА .............................................................................................................. 10
2.3.1. Драйверы и библиотеки поддержки .......................................................................... 10
2.3.2. Примеры программирования ....................................................................................... 10
2.4. ПОСТРОЕНИЕ ИСХОДНЫХ ТЕКСТОВ ПРИМЕРОВ И РАЗРАБОТКА ПРИЛОЖЕНИЙ ...................... 11
2.4.1. Общие сведения ............................................................................................................ 11
2.4.2. Средства разработки для Windows CE 5.0 ............................................................... 11
2.4.3. Средства разработки для Windows XP ..................................................................... 12
2.4.4. Средства разработки для QNX 6 ............................................................................... 12
2.5. ПОСТРОЕНИЕ ПРИМЕРОВ ДЛЯ WINDOWS CE 5.0 .................................................................... 12
2.6. ПОСТРОЕНИЕ ПРИМЕРОВ ДЛЯ QNX 6 ..................................................................................... 13
2.7. ПОСТРОЕНИЕ ПРИМЕРОВ ДЛЯ WINDOWS XP .......................................................................... 14
2.8. ПОСТРОЕНИЕ ПРИМЕРОВ ДЛЯ LINUX ...................................................................................... 14
3. УСТАНОВКА ДРАЙВЕРА АДАПТЕРА FBUS В ЦЕЛЕВОЙ СИСТЕМЕ ...................... 16
3.1. ДРАЙВЕР ДЛЯ WINDOWS CE 5.0 ............................................................................................. 16
3.1.1. Общие сведения ............................................................................................................ 16
3.1.2. Установка ..................................................................................................................... 16
3.1.3. Конфигурирование........................................................................................................ 16
3.2. ДРАЙВЕР ДЛЯ WINDOWS XP ................................................................................................... 17
3.2.1. Общие сведения ............................................................................................................ 17
3.2.2. Установка ..................................................................................................................... 17
3.2.3. Конфигурирование........................................................................................................ 20
3.3. ДРАЙВЕР ДЛЯ QNX 6.............................................................................................................. 21
3.3.1. Общие сведения ............................................................................................................ 21
3.3.2. Конфигурирование........................................................................................................ 21
3.4. ДРАЙВЕР ДЛЯ LINUX ............................................................................................................... 22
3.4.1. Общие сведения ............................................................................................................ 22
3.4.2. Конфигурирование........................................................................................................ 22
3.5. ДРАЙВЕР УСТРОЙСТВА NIM745 ............................................................................................. 22
3.5.1. Общие сведения ............................................................................................................ 22
3.5.2. Конфигурирование........................................................................................................ 22
4. ОБЩИЕ СВЕДЕНИЯ ОБ ИНТЕРФЕЙСЕ FBUS ................................................................ 24
4.1. ОБЩИЕ СВЕДЕНИЯ .................................................................................................................. 24
4.2. СЕРВИСЫ ПРИКЛАДНОГО УРОВНЯ .......................................................................................... 24
4.2.1. Структура сервисов прикладного уровня .................................................................. 24
4.2.2. Сервисы управления сетью ......................................................................................... 24
4.2.3. Сервисы RPC ................................................................................................................. 24
4.2.4. Сервисы обмена данными реального времени ........................................................... 25
4.3. ИНФОРМАЦИОННАЯ МОДЕЛЬ УСТРОЙСТВА ВВОДА-ВЫВОДА FBUS ...................................... 25
5. ПРОГРАММНЫЙ ИНТЕРФЕЙС ПРИКЛАДНОГО УРОВНЯ ....................................... 27
2
2004 –2011 Fastwel Co Ltd. [Link]

5.1. ОБЩИЕ СВЕДЕНИЯ .................................................................................................................. 27


5.2. УЗЛЫ FBUS ............................................................................................................................ 27
5.2.1. Общие сведения ............................................................................................................ 27
5.2.2. Представление общей информации узла ................................................................... 27
5.2.3. Представление конфигурационной информации узла .............................................. 27
5.2.4. Представление областей входных и выходных каналов узла .................................. 28
5.3. ФУНКЦИИ ИНТЕРФЕЙСА ПРИКЛАДНОГО УРОВНЯ ................................................................... 28
5.3.1. Общие сведения ............................................................................................................ 28
5.3.2. Инициализация и завершение работы с сервисом .................................................... 30
[Link]. Общие сведения........................................................................................................ 30
[Link]. fbusInitialize ............................................................................................................... 30
[Link]. fbusDeInitialize .......................................................................................................... 31
5.3.3. Интерфейс сети FBUS ................................................................................................ 31
[Link]. Общие сведения........................................................................................................ 31
[Link]. fbusOpen .................................................................................................................... 31
[Link]. fbusClose .................................................................................................................... 32
[Link]. fbusRescan ................................................................................................................. 32
[Link]. fbusGetNodesCount ................................................................................................... 33
[Link]. fbusGetNodeDescription ............................................................................................ 33
[Link]. fbusReset .................................................................................................................... 33
[Link]. fbusSendSync ............................................................................................................. 34
5.3.4. Интерфейс конфигурирования ................................................................................... 34
[Link]. Общие сведения........................................................................................................ 34
[Link]. fbusGetNodeCommonParameters .............................................................................. 34
[Link]. fbusSetNodeCommonParameters............................................................................... 35
[Link]. fbusGetNodeSpecificParameters ................................................................................ 35
[Link]. fbusSetNodeSpecificParameters ................................................................................ 36
[Link]. fbusDeleteGroup ........................................................................................................ 37
[Link]. fbusDeleteAllGroups .................................................................................................. 37
[Link]. fbusAssignNodeToGroup........................................................................................... 37
[Link]. fbusBuildGroups ........................................................................................................ 38
[Link]. fbusReadConfig ...................................................................................................... 38
[Link]. fbusWriteConfig ..................................................................................................... 39
[Link]. fbusSaveConfig ...................................................................................................... 39
5.3.5. Обмен данными с использованием индивидуальных запросов ................................. 40
[Link]. fbusReadInputs ........................................................................................................... 40
[Link]. fbusWriteOutputs ....................................................................................................... 40
5.3.6. Интерфейс группового обмена ................................................................................... 41
[Link]. Общие сведения........................................................................................................ 41
[Link]. fbusGroup_setNodeOutputs ....................................................................................... 41
[Link]. fbusGroup_getNodeInputs ......................................................................................... 42
[Link]. fbusProcessGroup....................................................................................................... 43
5.4. КОДЫ ОШИБОК ....................................................................................................................... 43
5.5. ПРЕДСТАВЛЕНИЕ ТИПОВ МОДУЛЕЙ ВВОДА-ВЫВОДА ............................................................. 44
5.5.1. Общие сведения ............................................................................................................ 44
5.5.2. Модули дискретного ввода .......................................................................................... 45
[Link]. Общие структуры модулей дискретного ввода ..................................................... 45
[Link]. DIM710 ...................................................................................................................... 45
[Link]. DIM714 ...................................................................................................................... 47
[Link]. DIM715 ...................................................................................................................... 47
[Link]. DIM716 ...................................................................................................................... 47
[Link]. DIM717 ...................................................................................................................... 47
[Link]. DIM760 ...................................................................................................................... 47
[Link]. DIM761 ...................................................................................................................... 48
[Link]. DIM762 ...................................................................................................................... 48

3
2004 –2011 Fastwel Co Ltd. [Link]

5.5.3. Модули дискретного вывода ....................................................................................... 48


[Link]. DIM711 ...................................................................................................................... 48
[Link]. DIM712 ...................................................................................................................... 49
[Link]. DIM713 ...................................................................................................................... 50
[Link]. DIM718 ...................................................................................................................... 50
[Link]. DIM719 ...................................................................................................................... 52
[Link]. DIM763 ...................................................................................................................... 52
5.5.4. Модули аналогового ввода ........................................................................................... 53
[Link]. AIM720 ...................................................................................................................... 53
[Link]. AIM721 ...................................................................................................................... 54
[Link]. AIM722 ...................................................................................................................... 55
[Link]. AIM723 ...................................................................................................................... 56
[Link]. AIM724 ...................................................................................................................... 56
[Link]. AIM725 ...................................................................................................................... 57
[Link]. AIM726 ...................................................................................................................... 58
[Link]. AIM727 ...................................................................................................................... 59
[Link]. AIM728 ...................................................................................................................... 59
[Link]. AIM729 .................................................................................................................. 60
[Link]. AIM733 .................................................................................................................. 60
5.5.5. Модули аналогового вывода ........................................................................................ 62
[Link]. AIM730 ...................................................................................................................... 62
[Link]. AIM731 ...................................................................................................................... 63
5.5.6. Специальные модули .................................................................................................... 64
[Link]. OM751 ....................................................................................................................... 64
[Link]. NIM741 ...................................................................................................................... 64
[Link]. NIM742 ...................................................................................................................... 66
[Link]. DIM764_0_0 .............................................................................................................. 66
ПРИЛОЖЕНИЕ A . ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ................................................ 69

4
2004 –2011 Fastwel Co Ltd. [Link]

Авторское право
Настоящий документ и содержащаяся в нем информация являются исключительной
собственностью Фаствел®.

Право воспроизведения информации


Настоящий документ и содержащаяся в нем информация могут быть воспроизведены каким-либо
известным способом без предварительного уведомления и последующего извещения Фаствел®.
Ссылка на первоисточник воспроизводимой информации является обязательной.

Право внесения информации


Фаствел® оставляет за собой исключительное право внесения изменений и дополнений в данное
руководство по эксплуатации без предварительного уведомления. Все изменения и дополнения
включаются в последующие редакции документа и представлены на Web-сайтах Фаствел® и
компании «ПРОСОФТ», именуемой в дальнейшем ПРОСОФТ®.

Право обновления спецификации изделия


Фаствел® оставляет за собой исключительное право внесения изменений и дополнений в
конструкцию, электрическую схему и программное обеспечение, улучшающие технические и
потребительские характеристики изделия, без предварительного уведомления. Все изменения и
дополнения включаются в последующие редакции документа и представлены на Web-сайтах
Фаствел® и ПРОСОФТ®.

Фирменные и торговые марки


Все товарные знаки и торговые марки, а также зарегистрированные товарные знаки и торговые
марки, представленные в руководстве по эксплуатации, являются исключительной собственностью
своих законных владельцев.

Контактная информация
Адрес: 119313, Москва, a/я 242;
Телефон: (095) 234–0639;
Факс: (095) 232–1654;
E-mail: info@[Link]; fio@[Link]
Web: [Link].

Поставка и техническая поддержка


ПРОСОФТ® осуществляет поставку и техническую поддержку продукции Фаствел®.
Адрес: 119313, Москва, a/я 81;
Телефон: (095) 234–0636;
Факс: (095) 234–0640;
E-mail: info@[Link];
Web: [Link].

5
2004 –2011 Fastwel Co Ltd. [Link]

Фаствел® приветствует любые предложения и замечания по улучшению данного руководства по


эксплуатации, а также объективную информацию о функционировании представленного изделия и
встроенного системного программного обеспечения.
Каталог продукции Фаствел® размещен на Web-странице:
[Link]
Каталог продукции Фаствел® размещен также на файл-сервере ПРОСОФТ® по адресу:
[Link]

6
2004 –2011 Fastwel Co Ltd. [Link]

1. ВВЕДЕНИЕ

1.1. Сведения о документе

Настоящий документ содержит указания по разработке прикладного программного обеспечения


для вычислительных устройств, оснащенных интерфейсом FBUS, с использованием средств FBUS
SDK.
При работе с настоящим документом следует также пользоваться руководством по эксплуатации
на систему Fastwel I/O в части сведений о модулях ввода-вывода.
Информация об особенностях настройки адаптера FBUS в процессорных модулях и других
вычислительных устройствах Fastwel приведена в руководстве по эксплуатации на вычислительное
устройство.

1.2. Сокращения и терминология

В настоящем документе использованы следующие сокращения и термины:

Инструментальный ПК

Персональный компьютер, на который установлен комплект FBUS SDK и на котором


выполняется разработка прикладного программного обеспечения, использующего функции FBUS API.

МВВ (модуль ввода-вывода)

Устройство, реализующее функции подчиненного узла шины FBUS.

ПО

Программное обеспечение.

Сервис FBUS

Компонент системного программного обеспечения, поставляемый в составе FBUS SDK,


реализующий стек протоколов шины FBUS.

FBUS API

Интерфейс прикладного программирования сервиса FBUS.

CRC (Cyclic Redundancy Check)

Контрольная сумма.

RPC (Remote Procedure Call)

Вызов удаленной процедуры.

Клиент (или мастер) FBUS

Поток исполнения операционной системы, использующий функции для работы с шиной FBUS,
предоставляемые прикладным программным интерфейсом.

Поток исполнения операционной системы (задача)

Последовательность инструкций, которая может исполняться независимо от других потоков.

Транзакция

Запрос мастера к МВВ и ответ МВВ.

Область входных данных

Область памяти МВВ, содержащая текущие измеренные значения или состояния на входных
каналах и передаваемая в адрес мастера FBUS в ответ на запросы чтения данных реального времени.
Размер области в байтах равен суммарной размерности всех входных каналов плюс 1 байт,
7
2004 –2011 Fastwel Co Ltd. [Link]

содержащий код диагностики. Содержимое данной области обновляется значениями и состояниями на


входных каналах МВВ.

Область выходных данных

Область памяти МВВ, содержащая полученные от мастера FBUS текущие значения и состояния,
которые должны быть выведены в выходные каналы МВВ. Размер области в байтах равен суммарной
размерности всех выходных каналов. Содержимое области или ее отдельных полей обновляется
командой записи выходных данных МВВ.

Область неизменяемых общих параметров

Область памяти МВВ, содержащая информацию о типе модуля, размерах областей входных и
выходных данных, версии встроенного программного обеспечения, версии протокола FBUS и т.п.
Содержимое данной области или ее отдельных полей передается мастеру по соответствующим
запросам RPC. Данная область имеет одинаковую структуру у модулей всех типов.

Область изменяемых общих параметров

Область памяти МВВ, содержащая идентификатор МВВ на шине FBUS, идентификатор


конфигурационных данных, сохраненных в энергонезависимой памяти МВВ, интервал отсутствия
запросов от мастера, по истечении которого МВВ переводит свои выходы в безопасное состояние,
номера сообщений синхронизации чтения и записи, а также параметры групповых операций чтения и
записи. Запись и чтение содержимого данной области или ее отдельных полей осуществляется по
соответствующим запросам RPC. Данная область имеет одинаковую структуру у модулей всех типов.
Имеется специальный запрос RPC, по которому содержимое данной области сохраняется в
энергонезависимой памяти МВВ.

Область изменяемых специфических параметров

Область памяти МВВ, в которой находятся конфигурационные параметры, относящиеся к


конкретному типу МВВ. Запись содержимого данной области осуществляется мастером с
использованием соответствующего запроса RPC. Структура данной области уникальна для каждого
типа МВВ.

Область неизменяемых специфических параметров

Область памяти МВВ, в которой содержатся конфигурационные параметры конкретного типа


МВВ, доступные только для чтения (константы). Чтение содержимого данной области осуществляется
мастером с использованием соответствующего запроса RPC. Структура данной области уникальна для
каждого типа МВВ.

Конфигурация МВВ

Области неизменяемых общих параметров, изменяемых общих параметров, изменяемых


специфических параметров и неизменяемых специфических параметров модуля ввода-вывода.

Конфигурация сети

Совокупность конфигурационных параметров всех модулей в сети.

8
2004 –2011 Fastwel Co Ltd. [Link]

2. ИНФОРМАЦИЯ О ПОСТАВЛЯЕМОМ ПРОГРАММНОМ ОБЕСПЕЧЕНИИ

2.1. Общие сведения

Комплект разработчика Fastwel FBUS SDK содержит набор драйверов, библиотек поддержки и
примеры программ для работы с модулями ввода-вывода распределенной системы FASTWEL-I/O.
Модули ввода-вывода FASTWEL-I/O могут подключаться к вычислительному устройству через
локальный интерфейс шины FBUS (присутствует на некоторых процессорных модулях производства
Fastwel) и/или интерфейсный модуль Fastwel NIM745, выполняющий функции удаленного адаптера
FBUS через интерфейс Ethernet TCP/IP.
В состав текущей версии FBUS SDK входят библиотеки поддержки для операционных систем
Windows XP, Windows CE 5.0, QNX 6, Linux.
На данный момент для процессорных модулей Fastwel, оснащенных локальным адаптером шины
FBUS: СPB902, CPM902-02, CPB905, CPC150 доступны драйверы для Windows XP, Windows CE 5.0,
QNX 6. Для модуля CPC150 доступен также драйвер для Linux.
Дополнительно в комплект разработчика включены командные (пакетные) файлы и
конфигурации построения тестовых примеров использования FBUS API.

2.2. Установка и удаление FBUS SDK

2.2.1. Требования к конфигурации программного обеспечения

На инструментальном ПК должна быть установлена операционная система:


1. Windows XP Home или Professional SP3, или
2. Windows Vista (не ниже Home Premium) SP2, или
3. Windows 7 (не ниже Professional).

2.2.2. Требования к конфигурации аппаратных средств

Инструментальный ПК должен иметь конфигурацию аппаратных средств, достаточную для


исполнения инструментального и системного программного обеспечения, перечисленного в п. 2.2.1.
Размер свободного дискового пространства должен составлять, как минимум, 200 Мбайт.

2.2.3. Установка

Для установки FBUS SDK запустите программу установки Fastwel_FBUS_SDK.exe и следуйте ее


указаниям. По завершении работы программы в выбранном каталоге установки будут созданы
следующие подкаталоги:

1. bin – каталог бинарных файлов для поддерживаемых операционных систем,


подлежащих размещению на целевом устройстве (процессорном модуле).
2. build – каталог командных файлов для построения из командной строки Windows
примеров использования FBUS API.
3. configs – каталог файлов конфигураций для построения примеров использования FBUS
API.
4. doc – каталог документации.
5. lib – каталог статических и динамических библиотек FBUS API и слоя абстракции
окружения для поддерживаемых операционных систем.
6. src – каталог исходных текстов, содержащий заголовочные файлы FBUS API и модули
примеров использования FBUS API.

9
2004 –2011 Fastwel Co Ltd. [Link]

2.2.4. Удаление

Для удаления FBUS SDK откройте Control Panel (Панель управления) Windows, дважды
щелкните на ярлыке Add or Remove Programs (Установка или удаление программ), в списке
установленных приложений выберите Fastwel FBUS SDK и нажмите кнопку Remove (Удалить).

2.3. Состав комплекта

2.3.1. Драйверы и библиотеки поддержки

Перечень драйверов и соответствующих им библиотек поддержки приведен в табл. 1. Подробная


информация о драйверах и процессе их установки приведена в разделе 3 настоящего документа.
Таблица 1. Драйверы FBUS и сопутствующие библиотеки API
ОС Файл Назначение Применимость
Win CE /bin/ce5/[Link] Динамическая библиотека функций FBUS API для Windows CE 5 Везде
5.0
/bin/ce5/i8237/ce_fbus.dll Драйвер адаптера FBUS подключенного к DMA-контроллеру i8237 для CPB902, CPM902
Windows CE 5
/bin/ce5/ite8888/ce_fbus.dll Драйвер адаптера FBUS подключенного к DMA-контроллеру ITE 8888G для CPB905, CPC150
Windows CE 5
/lib/ce5/ [Link] Статическая библиотека связи с [Link] Везде

Win XP /bin/xp/[Link] Динамическая библиотека функций FBUS API для Windows XP Везде

/bin/xp/i8237/[Link] Установочный файл для драйвера [Link] CPB902, CPM902


/bin/xp/i8237/[Link] Драйвер адаптера FBUS подключенного к DMA-контроллеру i8237 для CPB902, CPM902
Windows XP
/bin/xp/ite8888/[Link] Установочный файл для драйвера [Link] CPB905, CPC150
/bin/xp/ite8888/[Link] Драйвер адаптера FBUS подключенного к DMA-контроллеру ITE 8888G для CPB905, CPC150
Windows XP
/lib/xp/[Link] Статическая библиотека связи с [Link] Везде

QNX 6 /lib/qnx6/i8237/[Link] Динамическая библиотека функций FBUS API для Windows CE 5 с включенным CPB902, CPM902
в нее драйвером адаптера FBUS подключенного к DMA-контроллеру i8237
/lib/qnx6/ite8888/[Link] Динамическая библиотека функций FBUS API для Windows CE 5 с включенным CPB905, CPC150
в нее драйвером адаптера FBUS подключенного к DMA-контроллеру ITE 8888G
/lib/qnx6/no_local/[Link] Динамическая библиотека функций FBUS API для Windows CE 5 без драйвера Везде
локального адаптера FBUS
Linux /lib/linux/[Link] Динамическая библиотека функций FBUS API для Linux Везде

/bin/linux/linux_2_4/ite8888/ Драйвер адаптера FBUS подключенного к DMA-контроллеру ITE 8888G для CPC150
Linux 2.4 (МСВС)
/bin/linux/linux_2_6/ite8888/ Драйвер адаптера FBUS подключенного к DMA-контроллеру ITE 8888G для CPC150
Linux 2.6

2.3.2. Примеры программирования

Поставляемые заголовочные файлы и исходные тексты примера расположены в подкаталоге \src


каталога установки FBUS SDK. При последующем изложении все ссылки на модули исходных
текстов и заголовочные файлы будут указываться относительно каталога src.
Заголовочные файлы библиотеки API FBUS находятся в подкаталоге fbus.
Файлы примера использования библиотеки находятся в подкаталоге example. В примере
реализованы основные сценарии работы с модулями ввода-вывода, подключенными к шине FBUS:
поиск модулей, подключенных к шине, конфигурирование модулей, обмен данными с модулями с
использованием индивидуальных запросов, а также обмен данными в групповом режиме.

10
2004 –2011 Fastwel Co Ltd. [Link]

2.4. Построение исходных текстов примеров и разработка приложений

2.4.1. Общие сведения

Командные (пакетные) файлы построения тестовых примеров использования FBUS API


предназначены для компиляции и компоновки поставляемых примеров программирования из
командной строки с использованием среды разработки, установленной на инструментальном ПК, и
расположены в подкаталоге \build каталога установки FBUS SDK. В текущей версии доступны файлы
построения для целевых ОС: Windows XP, Windows CE 5.0, QNX 6.
Командные файлы служат для вызова компиляторов и редакторов связей (компоновщиков)
выбранной целевой платформы по отношению ко всем модулям исходных текстов, расположенных в
подкаталоге \src каталога установки FBUS SDK.
При вызове компилятора для каждого модуля исходных текстов используются общие параметры
командной строки компилятора, перечисленные в строках COMPILE= конфигурационного файла (с
расширением *.cfg) из подкаталогов \build\ce5 (для Windows CE 5.0), \build\qnx6 (для QNX 6) и
\build\xp (для Windows XP).
Дополнительные параметры командной строки для используемого компилятора, специфические
для транслируемого приложения, берутся из строк COMPILE= файлов конфигурации построения
исполняемых модулей, из подкаталогов \configs\ce5 (для Windows CE 5.0), \configs\qnx6 (для QNX 6) и
\configs\xp (для Windows XP).
Все промежуточные и объектные файлы в процессе компиляции размещаются в подкаталоге с
именем файла конфигурации построения (без расширения) каталога \intdir, в котором также создается
rsp-файл для компоновщика. Параметры компоновщика берутся из строк LINK= общих и
специфических файлов конфигурации построения.
После построения исполняемый файл, необходимые драйверы и библиотеки поддержки
помещаются в подкаталог \output.
Все командные файлы для построения примеров (build_ce5.bat, build_qnx6.bat, build_xp.bat)
принимают в качестве параметра тип DMA-контроллера, к которому подключен адаптер FBUS.
Например, для построения примера для процессорного модуля CPB902 и операционной системы
QNX6 следует в каталоге \build выполнить следующую команду в окне командного процессора:
build_qnx6 8237

Для построения примера для процессорного модуля CPB905 и операционной системы Windows
XP следует в каталоге \build выполнить следующую команду в окне командного процессора:
build_xp 8888

Для построения примера для процессорного модуля, не имеющего локального адаптера FBUS
(или имеется, но не планируется к использованию, в системах на базе NIM745) следует в каталоге
\build выполнить указанные команды без параметра:
для операционной системы Windows XP
build_xp

для операционной системы QNX6


build_qnx6

для операционной системы Windows CE 5.0


build_се5

2.4.2. Средства разработки для Windows CE 5.0

Для построения примеров использования FBUS API для ОС Windows CE 5.0 на инструментальном
ПК должна быть установлена одна из следующих сред разработки:
1. Microsoft eMbedded Visual C++ 4.0 SP4, или
2. Microsoft Visual C++ 2008, или

11
2004 –2011 Fastwel Co Ltd. [Link]

3. Microsoft Visual C++ 2005, или


4. Microsoft Visual C++ .NET 2003, или
5. Microsoft Visual C++ .NET 2002
Утилиты доступа к удаленному устройству с установленной ОС Windows CE 5.0 и менеджер
платформы входят в состав Microsoft eMbedded Visual C++ 4.0.
Среда разработка Microsoft eMbedded Visual C++ 4.0 может быть загружена с Web-узла компании
Microsoft по следующему адресу:
[Link]
A107-FA75AE960856&displaylang=en
Указания по установке, включая информацию о ключе продукта, приведены по следующему
адресу:
[Link]
A107-FA75AE960856&displaylang=en#Instructions
Пакет обновлений Microsoft eMbedded Visual C++ 4.0 SP4 может быть загружен с Web-узла
компании Microsoft по следующему адресу:
[Link]
986e-a812984318e5&displaylang=en
ВНИМАНИЕ! Адреса на Web-узле Microsoft регулярно меняются. Если какая-либо из указанных
ссылок окажется неработоспособной, воспользуйтесь поисковой системой на
[Link]
Кроме того, на инструментальном ПК должен быть установлен пакет программной поддержки
целевой платформы для Windows CE 5.0 (Windows CE 5.0 SDK).
Если SDK не входит в комплект поставки применяемого процессорного модуля, следует
использовать стандартный SDK для платформы CEPC, устанавливаемый вместе с eMbedded Visual
C++.
После установки SDK следует создать переменную окружения CESDK, значение которой должно
содержать путь к каталогу установленного Windows CE 5.0 SDK. Например:
C:\Program Files\Windows CE Tools\wce500\902_50

2.4.3. Средства разработки для Windows XP

Для построения примеров использования API FBUS для ОС Windows XP на инструментальном


ПК должна быть установлена одна из следующих сред разработки:
1. Microsoft Visual C++ 2008, или
2. Microsoft Visual C++ 2005, или
3. Microsoft Visual C++ .NET 2003, или
4. Microsoft Visual C++.NET 2002, или
5. Microsoft Visual C++ 6.0 SP6.

2.4.4. Средства разработки для QNX 6

Для построения примеров использования API FBUS, для ОС QNX 6 на инструментальном ПК


должен быть установлен пакет инструментальных и кросс-средств QNX Software Development
Platform 6, версия которого соответствует версии используемой целевой ОС QNX.
Пользователь должен иметь права администратора на инструментальном ПК.

2.5. Построение примеров для Windows CE 5.0

Основной командный файл построения примера программирования для Windows CE 5.0


build_ce5.bat расположен в подкаталоге \build каталога установки комплекта. Данный командный
файл в процессе выполнения рекурсивно вызывает командный файл vc_build.bat, расположенный в
подкаталоге \build\ce5, передавая ему в качестве первого параметра имя конфигурации построения из
подкаталога \configs\ce5, а в качестве второго – относительный путь к каталогу исходных текстов \src.
12
2004 –2011 Fastwel Co Ltd. [Link]

Перед построением исполняемого файла примера следует на инструментальном ПК создать


переменную окружения CESDK, указывающую на каталог установки SDK образа Windows CE 5.0
целевой платформы (например: "C:\Program Files\Windows CE Tools\wce500\Fastwel CPM902
Programmable Automation Controller").
Для построения примера программирования для ОС Windows CE 5.0:
1. Щелкните на ярлыке Build Scripts Command Line в программной группе Fastwel FBUS
SDK
2. В появившемся окне консоли введите команду “build_ce5 8237” для процессорного
модуля CPB902 или “build_ce5 8888” для процессорного модуля CPB905 или
“build_ce5” для процессорных модулей, не имеющих в своем составе локального
адаптера мастера шины FBUS.
Если построение завершится без ошибок, то результирующий исполняемый модуль fb_test.exe
будет помещен в подкаталог \output каталога установки комплекта вместе со всеми необходимыми
библиотеками поддержки из подкаталога \bin.
Общие параметры трансляции находятся в файлах:
\build\ce5\evc4_ce5.cfg – для Microsoft eMbedded Visual C++ 4.0 SP4
\build\ce5\vc2003_ce5.cfg – для Microsoft Visual C++ .NET 2002 и Microsoft Visual C++ .NET 2003
\build\ce5\vc2008_ce5.cfg – Microsoft Visual C++ 2005 и Microsoft Visual C++ 2008
Пример содержимого общих параметров трансляции:
(\build\ce5\evc4_ce5.cfg):
COMPILE= /D "CE_DDK_DISABLE" /D "_X86_" /D "UNDER_CE" /D "_UNICODE" /D "UNICODE"
COMPILE= /X /FD /MT /Gy /W3 /c
LINK= /NOLOGO /NODEFAULTLIB /ENTRY:"main" /MACHINE:X86 /VERBOSE:LIB

Специфические параметры трансляции находятся в файле \configs\ce5\fb_test.cfg:


COMPILE: /D "FBUS_APPLICATION_LAYER_ENABLED"
COMPILE: /D "BLD_CFG_FILE=app/fbusapp/wincfg/wince.h"
LINK= [Link] [Link] [Link]

2.6. Построение примеров для QNX 6

Основной командный файл построения примера программирования для QNX 6 build_qnx6.bat


расположен в подкаталоге \build каталога установки FBUS SDK. Данный командный файл в процессе
выполнения рекурсивно вызывает командный файл qcc_build.bat, расположенный в подкаталоге
\build\qnx6, передавая ему в качестве первого параметра имя конфигурации построения из подкаталога
\configs\qnx6, а в качестве второго – относительный путь к каталогу исходных текстов \src.
Перед построением убедитесь, что на инструментальном ПК установлены инструментальные и
кросс-средства QNX Software Development Platform и в системе определены переменные окружения
QNX_HOST и QNX_TARGET, которые автоматически создаются в процессе установки QNX Software
Development Platform.
Для построения примера программирования для ОС QNX 6:
1. Щелкните на ярлыке Build Scripts Command Line в программной группе Fastwel FBUS
SDK
2. В появившемся окне консоли введите команду “build_ qnx6 8237” для
процессорного модуля CPB902 или “build_ qnx6 8888” для процессорного модуля
CPB905 или “build_ qnx6” для процессорных модулей, не имеющих в своем составе
локального адаптера мастера шины FBUS.
Если построение завершится без ошибок, то результирующий исполняемый модуль fb_test будет
помещен в каталог \output каталога установки комплекта вместе со всеми необходимыми
библиотеками из каталога \bin. На целевом устройстве библиотеки поддержки (файлы с расширением
so) должны быть помещены в каталог /lib/dll.
Общие параметры трансляции находятся в файле \build\qnx6\[Link]:

13
2004 –2011 Fastwel Co Ltd. [Link]

COMPILE= -Vgcc_ntox86 -c -D__QNX_6__ -Wc,-Wall -Wc,-Wno-parentheses -Wno-write-strings


-DVARIANT_g
LINK= -L%QNX_TARGET%\x86\lib -L%QNX_TARGET%\x86\usr\lib -g

Специфические параметры для поставляемого тестового примера \configs\qnx6\fb_test.cfg:


COMPILE: -DFBUS_APPLICATION_LAYER_ENABLED -DBLD_CFG_FILE=app/fbusapp/qnx.h
LINK= -Bdynamic [Link]

2.7. Построение примеров для Windows XP

Основной командный файл построения примера программирования для Windows XP


build_xp.bat расположен в подкаталоге \build каталога установки FBUS SDK. Данный командный
файл в процессе выполнения рекурсивно вызывает командный файл vc_build_test.bat,
расположенный в подкаталоге \build\xp, передавая ему в качестве первого параметра имя
конфигурации построения из подкаталога \configs\xp, а в качестве второго – относительный путь к
каталогу исходных текстов \src.
Для построения примера программирования для ОС Windows XP:
1. Щелкните на ярлыке Build Scripts Command Line в программной группе Fastwel FBUS
SDK
2. В появившемся окне консоли введите команду “build_ xp 8237” для процессорного
модуля CPB902 или “build_ xp 8888” для процессорного модуля CPB905 или
“build_ xp ” для процессорных модулей, не имеющих в своем составе локального
адаптера мастера шины FBUS.
Если построение завершится без ошибок, то результирующий исполняемый модуль fb_test.exe
будет помещен в каталог \output каталога установки комплекта вместе со всеми необходимыми
библиотеками и установочными файлами из каталога \bin.
Общие параметры трансляции находятся в файлах:
\build\xp\vc6_test.cfg – для Microsoft Visual C++ 6.0 SP6
\build\xp\vc2003_test.cfg – для Microsoft Visual C++ .NET 2002 и Microsoft Visual C++ .NET 2003
\build\xp\vc2008_test.cfg – Microsoft Visual C++ 2005 и Microsoft Visual C++ 2008
Пример содержимого общих параметров трансляции:
(\build\xp\vc2008_test.cfg):
COMPILE= /D "WIN32" /D "NDEBUG" /D "_CONSOLE"
COMPILE= /Od /FD /EHsc /MT /W1 /c
LINK= /NOLOGO /MANIFEST:NO /SUBSYSTEM:CONSOLE /MACHINE:X86

Специфические параметры трансляции находятся в файле \configs\xp\fb_test.cfg:


COMPILE: /D "FBUS_APPLICATION_LAYER_ENABLED"
COMPILE: /D "BLD_CFG_FILE=app/fbusapp/wincfg/winuni.h"
LINK= [Link] [Link] [Link] [Link] [Link] [Link]
[Link] [Link] [Link] [Link] [Link] [Link] [Link]
[Link]

Если на целевом устройстве присутствует и используется локальный адаптер FBUS, то до запуска


теста необходимо установить драйвер, пользуясь соответствующим установочным файлом (с
расширением INF) в соответствии с указаниями п. 3.2.2 настоящего руководства.
Кроме того, на целевом устройстве может понадобиться установка компонентов Microsoft Visual
C++ 2008 Redistributable Package, установочный комплект которых может быть загружен с web-узла
компании Microsoft:
[Link]
3802B2AF5FC2&displaylang=en

2.8. Построение примеров для Linux

Построение примера программирования для ОС Linux предусматривается на целевой платформе.

14
2004 –2011 Fastwel Co Ltd. [Link]

Для построения примера:


1. Создайте каталог для сборки на целевой платформе.
2. Поместите в корень созданного каталога файлы из состава FUS SDK: makefile из
каталога build/linux и каталог src, сохранив структуру его подкаталогов.
3. Поместите в каталок /usr/lib целевой платформы библиотеку API FBUS для Linux
(lib/linux/[Link]).
4. Перейдите в каталог сборки и выполните команду make.

Если на целевом устройстве присутствует и используется локальный адаптер FBUS, то до запуска


теста необходимо установить драйвер, в соответствии с указаниями п. 3.4 настоящего руководства.

15
2004 –2011 Fastwel Co Ltd. [Link]

3. Установка драйвера адаптера FBUS в целевой системе

3.1. Драйвер для Windows CE 5.0

3.1.1. Общие сведения

Драйвер является библиотекой динамической компоновки (DLL), реализующей потоковый


интерфейс, для которого определяется трехбуквенный префикс устройства и набор функций,
связанных с этим префиксом, для работы с устройством.
Для адаптера FBUS используется префикс "FBS", соответственно первый адаптер имеет имя
FBS0. Использование драйвера напрямую из приложений не предусматривается, работа с сетью FBUS
должна осуществляться исключительно через прикладной интерфейс библиотеки поддержки.
Драйвер допускает работу только с одним клиентом в каждый момент времени, поэтому при
открытии файла проверяется, не открыт ли драйвер другим клиентом, и, если открыт, запрос на
открытие отклоняется.
Существуют две версии драйвера, предназначенные для использования с разными контроллерами
DMA, к которым может быть подключен адаптер FBUS: для стандартного контроллера DMA i8237
(модуль CPB902), и для контроллера DMA 8888G производства компании ITE (модули CPB905 и
CPC150). Название файла (ce_fbus.dll) и прикладной интерфейс обоих драйверов идентичны в целях
унификации использования разных драйверов в прикладном ПО, независимо от используемого
контроллера DMA.

3.1.2. Установка

Драйвер для Windows CE может быть установлен в систему двумя способами:


1. Интеграция в образ ОС
2. Установка вручную
В случае интегрированного в ОС драйвера никаких дополнительных действий не требуется. О
том, что драйвер интегрирован, будет говорить наличие в каталоге \WINDOWS файла CE_FBUS.DLL.
Если же этот файл отсутствует, его необходимо скопировать в каталог \WINDOWS с внешнего
источника (например, из сети) самостоятельно. После этого драйвер готов к использованию.
Поскольку библиотека прикладного API загружает и устанавливает драйвер самостоятельно, не
следует вносить в реестр ключей для его автоматической установки при загрузке ОС. В случае, если
драйвер будет загружен системой, то его загрузка при инициализации библиотеки закончится
неудачей.
Помимо модуля драйвера ce_fbus.dll, в текущем каталоге запуска приложения или в каталоге
\WINDOWS должна присутствовать библиотека [Link], которая экспортирует функции
прикладного API FBUS.

3.1.3. Конфигурирование

Драйвер контроллера FBUS пытается загрузить конфигурационные параметры из ключа реестра с


именем HKLM\Drivers\Fastwel\FBUS, если ему это не удается – используются параметры по
умолчанию, приведенные в табл. 2.
Поскольку стандартный DMA контроллер i8237 использует фиксированные адреса портов,
параметры DmaSendIoBase и DmaRecvIoBase игнорируются драйвером, предназначенным для
i8237.
В случае использования специфического образа ОС, следует зарезервировать область памяти
размером 128 кбайт по любому адресу в пределах первых 16 Мбайт памяти (ограничение DMA
контроллеров) и указать в реестре базовый адрес выделенной области. Пример соответствующей
записи в файле [Link] образа Windows CE 5.0:
FBUSBUF 80C00000 00020000 RESERVED ; FBUS area

16
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 2. Параметры реестра драйвера FBUS для Windows CE 5.0


Имя значения Значение по Тип Назначение
умолчанию
IoBase 0x0311 DWORD Базовый адрес портов контроллера FBUS
0x2300 Базовый адрес канала DMA, используемого для
DmaSendIoBase DWORD посылки данных в сеть. Используется только для
ITE8888G DMA.
0x2100 Базовый адрес канала DMA, используемого для приема
DmaRecvIoBase DWORD данных в сеть. Используется только для ITE8888G
DMA.
0x05 Номер прерывания, используемого контроллером
Irq DWORD
FBUS.
0x00400000 Физический адрес буфера в памяти, используемого для
DmaBufPhyAddr DWORD DMA. Буфер должен быть зарезервирован при
создании образа ОС.

3.2. Драйвер для Windows XP

3.2.1. Общие сведения

Драйвер FBUS реализован в соответствии с моделью драйверов режима ядра Windows с


поддержкой PnP. Так как адаптер FBUS не поддерживает перемещение своих ресурсов (номеров
прерываний, номеров каналов DMA и т.д.), то PnP-функциональность реализована в ограниченной
форме.
Имеется два варианта драйвера:
[Link] – предназначен для использования со стандартным DMA-контроллером i8237
(CPM902-02, CPB902)
[Link] – предназначен для использования с контроллером DMA 8888G фирмы ITE (CPB905,
CPC150).
Помимо модуля драйвера, в текущем каталоге запуска приложения или в каталоге
\WINDOWS\SYSTEM32 должна присутствовать библиотека [Link], которая экспортирует
функции прикладного API FBUS.

3.2.2. Установка

Для установки драйвера FBUS для Windows XP:

1. Откройте Панель управления Windows (Start – Control Panel).


2. Дважды щелкните Add Hardware, нажмите Next
3. В появившемся после сканирования окне выберите пункт Yes, I have already connected
the hardware, как показано на рис 1, и нажмите Next.
4. В появившемся окне прокрутите список вниз до конца и выберите пункт Add a new
hardware device, как показано на рис. 2.
5. В появившемся окне выберите установку устройства вручную, как показано на рис. 3, и
нажмите Next.
6. В следующем диалоге выберите пункт Show all devices, как показано на рис. 4.
7. Нажмите Next, а затем, когда будет отображен список всех устройств, нажмите Have
disk.
8. Укажите путь к файлу [Link] или [Link] в зависимости от типа
процессорного модуля и выберите соответствующий пункт как показано на рис. 6.

17
2004 –2011 Fastwel Co Ltd. [Link]

Рис. 1. Диалог мастера установки устройств

Рис. 2. Выбор типа устройства

Рис. 3. Выбор типа установки (авто/ручная)

Рис. 4. Выбор типа добавляемого устройства

18
2004 –2011 Fastwel Co Ltd. [Link]

Рис. 5. Выбор драйвера для установки

Рис. 6. Выбор драйвера для установки


9. Нажмите Next, в ответ на все вопросы о копировании отвечайте утвердительно. В
случае появления диалога об отсутствии у драйвера цифровой подписи выберите пункт
Все равно продолжить (Continue anyway).
10. Если не возникло никаких сообщений о конфликтах, появится окно с информацией о
том, что установка ПО завершена, как показано на рис. 7.
11. В случае возникновения каких-либо ошибок при установке драйвера, а также
конфликтов с другими устройствами, обратитесь к системному администратору.

Рис. 7. Выбор драйвера для установки

19
2004 –2011 Fastwel Co Ltd. [Link]

3.2.3. Конфигурирование

Конфигурирование ресурсов, используемых драйвером, производится с помощью Менеджера


устройств (Device Manager) ОС Windows:
1. Щелкните правой кнопкой мыши над ярлыком My Computer на Рабочем столе и
выберите команду Manage.
2. В появившемся окне Computer Management выберите элемент древовидного списка
Device Manager.

Рис. 8. Менеджер устройств Windows


3. Двойной щелчок правой кнопки мыши по выбранному устройству открывает окно
свойств данного устройства, показанное на рис. 9. Следует открыть свойства адаптера
FBUS и перейти на вкладку Resources.

Рис. 9. Менеджер устройств Windows


Адаптер FBUS, подключенный к DMA-контроллеру, не допускает изменения своих ресурсов,
поэтому редактирование доступно только для адаптера, подключенного к DMA-контроллеру ITE
8888G. Поскольку DMA-контроллер ITE8888G является PCI-устройством, он позволяет перемещать
свои регистры в пространстве ввода-вывода, поэтому в ресурсах драйвера FBUS, предназначенного
для использования с DMA-контроллером ITE, появляются два дополнительных параметра I/O Range.
20
2004 –2011 Fastwel Co Ltd. [Link]

Ресурсы самого контроллера FBUS, а также номер IRQ недоступны для редактирования во всех
вариантах драйвера.
Для изменения базовых адресов портов DMA-контроллера ITE8888G следует выбрать второй (для
канала посылки данных в сеть) или третий (для канала приема данных из сети) диапазон портов в
списке Resource settings, нажать кнопку Change settings вкладки Resources, а затем задать новый
диапазон ввода-вывода, после чего, убедившись в отсутствии конфликтов, нажать ОК:

Рис. 10. Редактирование ресурсов


Драйвер FBUS (ITE8888G) предназначен только для использования в системах, построенных на
базе процессора AMD GeodeLX. При попытке установки драйвера в систему с другим процессором,
устройство не будет установлено, и в менеджере устройств появится восклицательный знак рядом с
устройством, соответствующим адаптеру FBUS.

3.3. Драйвер для QNX 6

3.3.1. Общие сведения

Драйвер адаптера FBUS для ОСРВ QNX 6 входит в состав динамической библиотеки API
прикладного уровня FBUS, поэтому никаких действий по установке драйвера от пользовательского
приложения не требуется. Библиотеку поддержки [Link] следует скопировать в каталог /lib/dll
целевой платформы, после чего можно использовать прикладное API шины FBUS. Поскольку
функциональность драйвера реализована в самой библиотеке, а библиотеку загружает использующее
ее пользовательское приложение, пользователь должен обладать правами администратора (root).

3.3.2. Конфигурирование

Конфигурирование ресурсов, используемых драйвером, может выполняться из файла fbus_drv.cfg,


расположенного в каталоге запускаемого приложения, использующего API FBUS. Параметры
задаются в виде командной строки, состоящей из набора элементов вида <параметр>:<значение>,
пример:
-IoBase:0x311 -DmaSendAddr:0x2600 -DmaRecvAddr:0x2100 -Irq:5

Допустимые значения параметров, а также значения по умолчанию, которые используются в


случае отсутствия файла либо отсутствия параметра в файле, приведены в табл. 3.
Таблица 3. Параметры для драйвера FBUS QNX
Имя параметра Значение по Назначение
умолчанию
IoBase 0x0311 Базовый адрес портов контроллера FBUS
0x2300 Базовый адрес канала DMA, используемого для
DmaSendAddr
посылки данных в сеть. Используется только для

21
2004 –2011 Fastwel Co Ltd. [Link]

ITE8888G DMA.
0x2100 Базовый адрес канала DMA, используемого для приема
DmaRecvAddr данных в сеть. Используется только для ITE8888G
DMA.
0x05 Номер прерывания, используемого контроллером
Irq
FBUS.

Драйвер FBUS (ITE8888G) предназначен только для использования в системах, построенных на


базе процессора AMD GeodeLX.

3.4. Драйвер для Linux

3.4.1. Общие сведения

На текущий момент, для Linux доступен драйвер адаптера FBUS для процессорного модуля
Fastwel CPC150 (МК150).
Драйвер реализован в соответствии с моделью драйверов режима ядра Linux. Имеется два
варианта кода драйвера для версий ядра 2.4(МСВС) и 2.6.
В текущей реализации драйвера для создания связи (интерфейса) модуля к /dev используется
метод register_chrdev() с символьным именем устройства "fbus" и динамическим выбором
старшего номера (major). Таким образом, процедура загрузки драйвера после инсталляции модуля
(insmod) должна выполнить чтение назначенного драйверу старшего номера из файла /proc/devices
и создание файла интерфейса устройства /dev/fbus0.
mknod /dev/fbus0 c major 0

Использование драйвера напрямую из приложений не предусматривается, работа с сетью FBUS


должна осуществляться исключительно через прикладной интерфейс библиотеки поддержки API
FBUS. Доступ к устройству из библиотеки осуществляется через файл /dev/fbus0.
Драйвер допускает работу только с одним клиентом в каждый момент времени, поэтому при
открытии файла проверяется, не открыт ли драйвер другим клиентом, и, если открыт, запрос на
открытие отклоняется.
Помимо загрузки модуля драйвера, в каталоге /usr/lib должна присутствовать библиотека
[Link] для Linux, которая экспортирует функции прикладного API FBUS.

3.4.2. Конфигурирование

Адаптер FBUS модуля CPC150 не поддерживает перемещение своих ресурсов (номера


прерывания, номеров каналов DMA и т.д.). Линия запроса прерывания используется устройством
монопольно. Это должно быть учтено в настройках конфигурации BIOS. Необходимая информация по
конфигурированию приведена в руководстве по эксплуатации на процессорный модуль CPC150.

3.5. Драйвер устройства NIM745

3.5.1. Общие сведения

Устройство NIM745 обеспечивает подключение модулей распределенной системы Fastwel IO к


системам сбора и обработки данных через интерфейс Ethernet TCP/IP.
Для всех поддерживаемых ОС драйвер устройства NIM745 входит в состав динамической
библиотеки API прикладного уровня FBUS, поэтому никаких действий по установке драйвера от
пользовательского приложения не требуется.

3.5.2. Конфигурирование

Конфигурирование ресурсов, используемых драйвером NIM745, выполняется из файла


fbus_tcp.cfg, расположенного в каталоге запускаемого приложения, использующего API FBUS.
Отсутствие конфигурационного файла означает отсутствие устройств NIM745 в системе.

22
2004 –2011 Fastwel Co Ltd. [Link]

Параметры каждого устройства NIM745 задаются в виде отдельной командной строки, состоящей
из набора элементов вида <-параметр>:<значение>, пример:
-IP:[Link] -Port:28 -WaitPeriod:3000

Драйвер допускает одновременную работу с несколькими устройствами NIM745. Номер


командной строки в конфигурационном файле (счет начинается с 1) соответствуют идентификатору
сети FBUS на базе NIM745. Идентификатор 0 зарезервирован для сетей на базе локальных адаптеров
FBUS. Идентификатор сети указывается в качестве первого параметра при ее открытии функцией API
FBUS fbusOpen.
Назначение параметров, а также значения по умолчанию, которые используются в случае
отсутствия параметра в командной строке, приведены в табл. 4.
Таблица 4. Параметры для драйвера NIM745
Имя параметра Значение по Назначение
умолчанию
ОТСУТСТВИЕ IP адрес модуля.
IP ЗНАЧЕНИЯ
НЕ ДОПУСКАЕТСЯ
Номер порта TCP/IP сервиса удаленного FBUS на
Port 28
модуле.
WaitPeriod 2000 Время ожидания ответа модуля в мс.

23
2004 –2011 Fastwel Co Ltd. [Link]

4. ОБЩИЕ СВЕДЕНИЯ ОБ ИНТЕРФЕЙСЕ FBUS

4.1. Общие сведения

Шина FBUS является системой последовательной передачи данных, которая предназначена для
организации обмена данными реального времени и конфигурационной информации между
вычислительным устройством (мастером FBUS) и МВВ (подчиненным устройством FBUS) в системе
распределенного ввода-вывода Fastwel-IO. Спецификация модели шины FBUS основана на базовой
эталонной модели открытых взаимодействующих систем согласно ISO 7498-1:1994 и определяет
функциональность физического, канального, сетевого, транспортного, сеансового, представительного
и прикладного уровней.
В настоящем разделе рассматриваются основные аспекты и функции прикладного уровня
спецификации FBUS.

4.2. Сервисы прикладного уровня

4.2.1. Структура сервисов прикладного уровня

На прикладном уровне определены следующие базовые сервисы:


1. Сервисы управления сетью.
2. Сервисы RPC.
3. Сервисы ввода-вывода (сервисы обмена данными реального времени).

4.2.2. Сервисы управления сетью

Управление сетью на прикладном уровне представлено следующими сервисами:


1. Сервис назначения сетевых идентификаторов подчиненным узлам – данный сервис
используется прикладной программой мастера при инициализации сети и служит для
распределения идентификаторов подчиненным узлам. По завершении работы данного
сервиса прикладная программа получает информацию о количестве подчиненных
узлов в сети и имеет возможность выполнять индивидуальные запросы к МВВ.
2. Сервис сброса подчиненных узлов – данный сервис позволяет в любой момент
выполнить перезапуск одного или всех подчиненных узлов путем использования
индивидуального или широковещательного запроса соответственно.
3. Сервис синхронизации ввода-вывода – сервис позволяет периодически осуществлять
актуализацию входных и выходных данных подчиненных узлов. Для активизации
данного сервиса в подчиненных узлах в процессе конфигурирования необходимо
настроить параметр синхронизирующего сообщения.
4. Сервис чтения параметров протокола – сервис позволяет получить информацию о
размерах коммуникационных буферов, областей специфических параметров и областей
входных и выходных данных подчиненного устройства.

4.2.3. Сервисы RPC

Процедуры RPC на прикладном уровне представлены следующими сервисами:


1. Сервис начального конфигурирования подчиненных узлов.
2. Сервис чтения области неизменяемых общих параметров подчиненного узла.
3. Сервисы чтения и записи области изменяемых общих параметров подчиненного узла.
4. Сервис чтения области неизменяемых специфических параметров подчиненного узла.
5. Сервисы чтения и записи области изменяемых специфических параметров
подчиненного узла.
6. Сервис сохранения конфигурационных параметров подчиненного узла в
энергонезависимой памяти МВВ.
24
2004 –2011 Fastwel Co Ltd. [Link]

4.2.4. Сервисы обмена данными реального времени

Чтение-запись данных реального времени подчиненных устройств прикладной программой,


выполняющейся на мастере, осуществляется с использованием следующих сервисов:
1. Сервис индивидуальной записи выходных данных подчиненного узла – данный сервис
предназначен для передачи прикладной программой мастера значений для каналов
вывода некоторого МВВ.
2. Сервис индивидуального чтения входных данных подчиненного узла – данный сервис
предназначен для получения прикладной программой мастера значений на входных
каналах некоторого МВВ.
3. Сервис групповой операции записи выходных данных и чтения входных данных –
данный сервис предназначен для обмена данными между прикладной программой
мастера и одним или несколькими МВВ с высокой утилизацией сети.
Прикладная программа должна периодически обращаться к перечисленным сервисам, выполняя
чтение и запись данных каналов подчиненных узлов.
Прикладные сервисы индивидуального чтения и записи обслуживают запросы прикладной
программы с использованием отношения «мастер/подчиненный» с подтверждением. Мастер передает
МВВ запрос, содержащий идентификатор подчиненного узла, команду индивидуального
чтения/записи, смещение в области входных/выходных данных и количество байт, которое требуется
считать/записать. МВВ передает запрошенное количество байт или признак ошибки. Данные сервисы
могут использоваться в любой момент после начального конфигурирования МВВ.
Прикладной сервис группового чтения и записи обслуживает запросы прикладной программы с
использованием отношения «производитель/потребитель» с выборкой по запросу потребителя.
Данный сервис может использоваться в случае, если при начальном конфигурировании МВВ в
область изменяемых общих параметров записана информация о группе, в которую включен данный
МВВ. При групповой операции мастер передает в сеть идентификатор группы, данные которой
требуется записать, и данные для всех МВВ, входящих в данную группу. МВВ, входящие в группу, по
конфигурационной информации о местонахождении относящихся к ним данных в групповой посылке
извлекают данные из посылки. Затем МВВ, входящие в группу, формируют общий ответ по очереди
выдавая в сеть данные из своей области входных данных, начиная со смещения и в количестве,
заданным в конфигурационной информации. Таким образом, при групповом обмене мастер выполняет
операции записи и чтения данных областей выходных и входных данных нескольких МВВ
одновременно за одну сетевую транзакцию.

4.3. Информационная модель устройства ввода-вывода FBUS

Информационная модель МВВ представлена следующими элементами и операциями:


1. Область входных данных – область памяти МВВ, содержащая текущие измеренные
и/или оцененные значения на входных каналах. Размер области в байтах равен
суммарной размерности всех входных каналов. Для каждого МВВ, в обязательном
порядке, первым определен диагностический канал размером в 1 байт, содержащий код
диагностики. Содержимое данной области обновляется значениями и состояниями на
входных каналах МВВ. Все содержимое или отдельные поля указанной области
передаются мастеру FBUS по запросу чтения входных данных МВВ.
2. Область выходных данных – область памяти МВВ, содержащая текущие значения и
состояния, которые должны быть выведены в выходные каналы МВВ. Размер области в
байтах равен суммарной размерности всех выходных каналов. Все содержимое или
отдельные поля указанной области обновляются мастером FBUS по запросу записи
выходных данных МВВ.
3. Область неизменяемых общих параметров – область памяти МВВ, содержащая
информацию о типе модуля, размерах областей входных и выходных данных, версии
встроенного программного обеспечения, версии протокола FBUS и т.п. Содержимое
данной области или ее отдельных полей передается мастеру по соответствующим
запросам RPC. Данная область имеет одинаковую структуру у модулей всех типов.
4. Область изменяемых общих параметров – область памяти МВВ, содержащая
идентификатор МВВ на шине FBUS, идентификатор конфигурационных данных,
25
2004 –2011 Fastwel Co Ltd. [Link]

интервал отсутствия запросов от мастера, по истечении которого МВВ переводит свои


выходы в безопасное состояние, номера сообщений синхронизации чтения и записи, а
также параметры групповых операций чтения и записи. Запись и чтение содержимого
данной области или ее отдельных полей осуществляется по соответствующим запросам
RPC. Данная область имеет одинаковую структуру у модулей всех типов. Имеется
специальный запрос RPC, по которому содержимое данной области сохраняется в
энергонезависимой памяти МВВ.
5. Область изменяемых специфических параметров – область памяти МВВ, в которой
находятся конфигурационные параметры, относящиеся к конкретному типу МВВ.
Запись и чтение содержимого данной области или ее отдельных полей осуществляется
по соответствующим запросам RPC. Структура данной области уникальна для каждого
типа МВВ. Имеется специальный запрос RPC, по которому содержимое данной
области сохраняется в энергонезависимой памяти МВВ.
6. Область неизменяемых специфических параметров – область памяти МВВ, в которой
находятся конфигурационные параметры конкретного типа МВВ, доступные только
для чтения (константы). Чтение содержимого данной области или ее отдельных полей
осуществляется по соответствующим запросам RPC. Структура данной области
уникальна для каждого типа МВВ.

26
2004 –2011 Fastwel Co Ltd. [Link]

5. ПРОГРАММНЫЙ ИНТЕРФЕЙС ПРИКЛАДНОГО УРОВНЯ

5.1. Общие сведения

Библиотека прикладного уровня API FBUS предоставляет прикладным программам


высокоуровневый интерфейс для работы с прикладными сервисами сети FBUS. В настоящем разделе
рассматриваются структуры и функции API FBUS, используемые для программного доступа к
прикладным сервисам сети FBUS из пользовательского приложения.
Заголовочные файлы, содержащие определения интерфейсных функций и типов библиотеки,
находятся в подкаталоге fbus каталога src FBUS SDK. В файлы исходных текстов программы следует
включать единственный заголовочный файл fbus.h и добавлять путь к каталогу fbus в список путей
заголовочных файлов при компиляции. При последующем изложении все ссылки на заголовочные
файлы будут указываться относительно каталога fbus.

5.2. Узлы FBUS

5.2.1. Общие сведения

Подчиненные узлы (модули ввода-вывода), подключаемые к шине FBUS, представляются единой


программной моделью, состоящей из ряда структур данных и операций, посредством которых
приложение может выполнить над каждым узлом следующие основные действия:
1. Чтение и запись конфигурации узла, состоящей из набора одинаковых для всех узлов
параметров, а также параметров, специфичных для узлов каждого типа.
2. Сохранение конфигурации узла в энергонезависимой памяти.
3. Чтение области входных данных узла, представляющей его физические и/или
виртуальные входные каналы.
4. Запись области выходных данных узла, представляющей его физические и/или
виртуальные выходные каналы.
5. Перезапуск (сброс) узла.
6. Актуализацию входных и выходных данных узла по синхронизирующим сообщениям.

5.2.2. Представление общей информации узла

Общая информация о подключаемом к шине FBUS модуле ввода-вывода представлена


структурой FIO_MODULE_DESC. Определение структуры содержится в заголовочном файле fb_api.h.
Описание полей структуры приведено в табл. 5.
Таблица 5. Описатель модуля ввода-вывода FIO_MODULE_DESC
Тип поля Имя поля Назначение
FIO_MODULE_TYPE type Тип модуля ввода-вывода
char[21] typeName Название модуля ввода-вывода. Заканчивающаяся 0 ASCII строка
uint32_t productionCode Уникальный код модели модуля ввода-вывода
uint32_t serialNumber Серийный номер изделия
uint8_t[2] fbusVer Версия FBUS: 0 – major, 1 – minor
uint8_t[2] fwVer Версия прошивки: 0 – major, 1 – minor
size_t specificRoSize Размер области неизменяемых специфических параметров
size_t specificRwSize Размер области изменяемых специфических параметров
size_t inputsSize Размер области входных данных (представляет входные каналы модуля)
size_t outputsSize Размер области выходных данных (представляет выходные каналы модуля)

5.2.3. Представление конфигурационной информации узла

Конфигурационная (изменяемая) информация подключаемого к шине FBUS МВВ состоит из


набора одинаковых для всех модулей параметров, а также параметров, специфичных для модулей
каждого типа. Набор общих изменяемых параметров представлен структурой FIO_MODULE_CONF.

27
2004 –2011 Fastwel Co Ltd. [Link]

Определение структуры содержится в заголовочном файле fbus/fb_api.h.Описание полей структуры


приведено в табл. 6 и 7.
Таблица 6. Описатель общих изменяемых параметров FIO_MODULE_CONF
Тип поля Имя поля Назначение
uint32_t configurationID Поле для хранения уникального идентификатора конфигурации
Интервал сторожевого таймера связи с мастером FBUS в секундах.
Используется в модулях, имеющих физические каналы аналогового
или дискретного вывода. Если значение данного параметра отлично от
uint8_t hostWatchdogInterval
нуля, и в течение заданного интервала от мастера FBUS не поступило
ни одного запроса в адрес данного узла, узел переводит свои выходные
каналы в предопределенное безопасное состояние.
Идентификатор синхронизирующего сообщения SYNC, при приеме
которого узел будет выводить данные из промежуточного буфера в
uint8_t outputSync
выходные каналы. Если не требуется использовать SYNC, данное поле
должно содержать FBUS_UNDEFINED_SYNC_ID (0xFF).
Идентификатор синхронизирующего сообщения SYNC, при приеме
которого узел будет вводить данные входных каналов в
uint8_t inputSync
промежуточный буфер. Если не требуется использовать SYNC, данное
поле должно содержать FBUS_UNDEFINED_SYNC_ID (0xFF).
FIO_MODULE_GROUP_CONF groupConf Параметры группового обмена (см. табл. 7).

Таблица 7. Структура FIO_MODULE_GROUP_CONF


Тип поля Имя поля Назначение
groupID Идентификатор группы. Если модуль не участвует в групповом обмене,
uint8_t
данное поле должно содержать FBUS_UNDEFINED_GROUP_ID (0xFF).
uint16_t outputPacketDataOffset Смещение сегмента данных модуля в цепочечном пакете к модулям.
uint8_t outputModuleDataLegth Длина сегмента данных модуля в цепочечном пакете к модулям.
outputModuleDataOffset Смещение в области выходных данных модуля, начиная с которого модуль
uint8_t
записывает принятую информацию.
uint16_t inputPacketCRCOffset Смещение поля общего CRC в цепочечном пакете от модулей.
uint16_t inputPacketDataOffset Смещение сегмента данных модуля в цепочечном пакете от модулей.
uint8_t inputModuleDataLegth Длина сегмента данных модуля в цепочечном пакете к модулям.
inputModuleDataOffset Смещение в области входных данных модуля, начиная с которого модуль
uint8_t
передает информацию.
uint16_t inputPacketCRCOffset Смещение поля общего CRC в цепочечном пакете от модулей.

Определения структур, представляющих области специфических изменяемых и неизменяемых


параметров МВВ содержатся в заголовочном файле fiom.h. Описание структур приведено в п. 5.5.

5.2.4. Представление областей входных и выходных каналов узла

Определения структур, представляющих области входных и выходных данных МВВ содержатся в


заголовочном файле fiom.h. Описание структур приведено в п. 5.5.

5.3. Функции интерфейса прикладного уровня

5.3.1. Общие сведения

Одной сети FBUS фактически соответствует один аппаратный адаптер шины FBUS. Адаптер
FBUS может входить в состав самого процессорного модуля или быть подключен к нему через
интерфейсный модуль NIM745. Текущая версия интерфейса прикладного программирования
поддерживает взаимодействие одновременно с несколькими сетями. Сеть FBUS, соответствующая
адаптеру в составе процессорного модуля, имеет идентификатор 0. Сети FBUS, соответствующие
модулям NIM745, имеют идентификаторы, начинающиеся с 1. Общее число одновременно открытых
для работы сетей FBUS определяется свободными ресурсами прикладной вычислительной системы.
Список основных функций интерфейса прикладного уровня приведен в табл. 8.
Таблица 8. Функции прикладного уровня FBUS
Имя функции Ссылка Описание
fbusGetVersion п. [Link] Функция возвращает номер версии библиотеки API FBUS
Инициализация сервиса п. 5.3.2 Инициализация и завершение работы с сервисом
fbusInitialize п. [Link] Инициализировать внутренние структуры сервиса FBUS. Данная функция

28
2004 –2011 Fastwel Co Ltd. [Link]

Имя функции Ссылка Описание


должна быть вызвана первой до вызова любой другой функции API FBUS.
fbusDeInitialize п. [Link] Завершить работу с сервисом FBUS
Управление сетью п. 5.3.3 Интерфейс сети FBUS
fbusOpen п. [Link] Открыть сеть и получить ее системный идентификатор
fbusClose п. [Link] Закрыть открытую сеть
Сканирование сети, назначение обнаруженным модулям идентификаторов и
fbusRescan п. [Link]
считывание текущей конфигурации из модулей
fbusGetNodesCount п. [Link] Получить количество узлов в сети
fbusGetNodeDescription п. [Link] Получить описание модуля
fbusReset п. [Link] Сброс одного или всех модулей сети
fbusSendSync п. [Link] Послать синхронизирующий пакет
Конфигурирование п. 5.3.4 Интерфейс записи, чтения и сохранения конфигурации узлов
fbusGetNodeCommonParameters п. [Link] Получить значения общих изменяемых параметров модуля из конфигурации сети
Установить значения общих изменяемых параметров модуля в конфигурации
fbusSetNodeCommonParameters п. [Link]
сети
Получить значения специфических изменяемых параметров модуля из
fbusGetNodeSpecificParameters п. [Link]
конфигурации сети
Установить значения специфических изменяемых параметров модуля в
fbusSetNodeSpecificParameters п. [Link]
конфигурации сети
fbusDeleteGroup п. [Link] Удалить группу из конфигурации сети
fbusDeleteAllGroups п. [Link] Удалить все группы из конфигурации сети
fbusAssignNodeToGroup п. [Link] Присоединить модуль к группе в конфигурации сети
Инициализировать параметры группового обмена всех модулей в конфигурации
fbusBuildGroups п. [Link]
сети
Прочитать значения конфигурационных параметров из модуля (модулей) в
fbusReadConfig п. [Link]
конфигурацию сети
Записать значения конфигурационных параметров из конфигурации сети в
fbusWriteConfig п. [Link]
модуль (модули)
fbusSaveConfig п. [Link] Сохранить конфигурацию в энергонезависимой памяти модуля (модулей)
Индивидуальные запросы п. 5.3.5 Интерфейс обмена данными с использованием индивидуальных запросов
fbusReadInputs п. [Link] Чтение области входных данных из модуля
fbusWriteOutputs п. [Link] Запись в область выходных данных модуля
Групповой обмен п. 5.3.6 Интерфейс группового обмена
fbusProcessGroup п. [Link] Выполнить групповой обмен с модулями
fbusGroupSetNodeOutputs п. [Link] Записать данные выходов модуля в выходной буфера группы
fbusGroupGetNodeInputs п. [Link] Прочитать данные входов модуля из входного буфера группы

Основной сценарий управления сетью FBUS и обмена данными с модулями ввода-вывода состоит
из следующих действий:
1. Выполнить глобальную инициализацию сервиса вызовом функции fbusInitialize.
2. Открыть сеть путем вызова функции fbusOpen. В первом параметре функции
передается идентификатор открываемой сети. Для сети, подключенной к адаптеру
FBUS в составе процессорного модуля, идентификатор равен 0. Идентификатор сети,
подключенной к модулю NIM745, соответствует номеру командной строки в
конфигурационном файле fbus_tcp.cfg. В качестве второго параметра pHandleNet
должен быть передан указатель на переменную типа FBUS_HANDLE, в которой будет
возвращен хэндл сети. Хэндл сети, полученный при успешном вызове fbusOpen, в
дальнейшем используется в качестве первого параметра при вызове всех функций
прикладного интерфейса при работе с данной сетью.
3. Выполнить процедуру поиска подчиненных узлов (модулей ввода-вывода) и
назначения им сетевых идентификаторов (адресов) путем вызова функции fbusRescan.
В качестве второго параметра (pNodesDetected) функции должен быть передан
указатель на переменную типа size_t, в которой будет возвращено количество
обнаруженных модулей.
При успешном выполнении fbusRescan будет создан внутренний объект конфигурации
сети, в который из всех обнаруженных модулей будут считаны текущие значения
конфигурационных параметров. В дальнейшем, считывать конфигурационные
параметры из физических модулей в созданный объект конфигурации сети можно
также фукцией fbusReadConfig.
4. Проверить, соответствует ли количество обнаруженных модулей ввода-вывода
ожидаемому прикладной программой. Получить количество обнаруженных модулей
можно также функцией fbusGetNodesCount.
29
2004 –2011 Fastwel Co Ltd. [Link]

5. Проверить, соответствуют ли типы и расположение обнаруженных модулей


ожидаемым программой. Для этого следует в цикле вызывать функцию
fbusGetNodeDescription и убедиться, что тип каждого обнаруженного модуля совпадает
с ожидаемым.
6. Проверить и, если нужно, переопределить значения общих и/или специфических
изменяемых параметров модулей ввода-вывода в конфигурации сети. Для этого
следует вызывать функции чтения (fbusGetNodeCommonParameters,
fbusGetNodeSpecificParameters) и записи (fbusSetNodeCommonParameters,
fbusSetNodeSpecificParameters) конфигурационных параметров для каждого модуля.
7. Если планируется использовать операции группового обмена, проверить и/или
настроить в конфигурации сети параметры групп. Создание, удаление и
конфигурирование групп может быть выполнено, непосредственно, редактированием
полей структуры FIO_MODULE_GROUP_CONF в секциях изменяемых общих
параметров модулей, и/или с помощью функций fbusDeleteGroup, fbusDeleteAllGroups,
fbusAssignNodeToGroup. При редактировании полей FIO_MODULE_GROUP_CONF
достаточно определять базовые параметры участия модуля в группе: идентификатор
группы groupID, длину outputModuleDataLength и смещение outputModuleDataOffset в
области выходных данных модуля (сегмент передаваемых модулю данных в области
его выходов), длину inputModuleDataLength и смещение inputModuleDataOffset в
области входных данных модуля (сегмент передаваемых из модуля данных в области
его входов). Остальные параметры будут настроены автоматически при создании
объектов групп функцией fbusBuildGroups.
8. Если планируется использовать операции группового обмена, создать объекты групп
путем вызова функции fbusBuildGroups.
9. Если были сделаны какие-либо изменения в конфигурации сети, записать информацию
в физические модули путем вызова функции fbusWriteConfig. После успешной записи,
при необходимости, выполнить сохранение конфигурации модулей в
энергонезависимой памяти путем вызова функции fbusSaveConfig.
10. После успешного выполнения предыдущих шагов можно приступить к обмену
данными с модулями путем выполнения индивидуальных запросов функциями
fbusReadInputs и fbusWriteOutputs или групповых запросов функцией fbusProcessGroup.
11. Завершить работу с сетью и освободить выделенные ресурсы вызовом функции
fbusClose.
12. Завершить работу приложения с сервисом FBUS вызовом функции fbusDeInitialize.
Вызовы функций открытия (получение хэндла сети – fbusOpen) и закрытия сетей (освобождение
хэндла сети – fbusClose) должны быть синхронизированы. Одновременное выполнение их из разных
потоков исполнения не допускается. В свою очередь, должны быть синхронизированы и вызовы
функций для работы с каждой отдельной сетью (функции, которые в качестве параметры принимают
одно значение хэндла сети). Выполнение указанных условий синхронизации должно быть обеспечено
пользователем, функциями сервиса производится только проверка выполнения этих условий.

5.3.2. Инициализация и завершение работы с сервисом

[Link]. Общие сведения


Перед началом работы прикладной программы с сервисом FBUS через описываемый в настоящем
документе интерфейс прикладного уровня приложению необходимо один раз вызвать функцию
fbusInitialize.
Перед завершением работы прикладной программы с сервисом FBUS следует вызвать функцию
fbusDeInitialize.

[Link]. fbusInitialize

Прототип
FBUS_RESULT fbusInitialize(void);

Заголовочный файл
#include <fbus.h>

30
2004 –2011 Fastwel Co Ltd. [Link]

Параметры

нет

Возвращаемое значение

Возвращает значение типа FBUS_RESULT (см. п.5.4). Последующая работа с API FBUS возможна
тогда, и только тогда, когда данная функция завершается успешно.
// Обязательный вызов перед началом работы
if(FBUS_RES_OK == fbusInitialize())
{
//Возможная дальнейшая работа с FBUS API
}

Комментарии

Выполняет необходимую инициализацию внутренних структур сервиса FBUS. Данная функция


должна вызываться один раз перед началом работы с сервисом FBUS.

[Link]. fbusDeInitialize

Прототип
FBUS_RESULT fbusDeInitialize(void);

Заголовочный файл
#include <fbus.h>

Параметры

нет

Возвращаемое значение

Возвращает значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Вызовом данной функции приложение должно завершать работу с сервисом FBUS. Функция не
закрывает открытые сети. На момент вызова fbusDeInitialize, все вызовы функций FBUS API должны
быть завершены, все объекты сети открытые функцией fbusOpen, должны быть закрыты
пользователем функцией fbusClose.

5.3.3. Интерфейс сети FBUS

[Link]. Общие сведения


Интерфейс сети FBUS представлен набором функций, предназначенных для управления
состоянием всей сети и ее отдельных подчиненных узлов.

[Link]. fbusOpen

Прототип
FBUS_RESULT fbusOpen(size_t netNumber, PFBUS_HANDLE pHandleNet);

Заголовочный файл
#include <fbus.h>

Параметры
size_t netNumber
Номер сети. 0 для адаптера, входящего в состав процессорного модуля. Начиная с 1
идентификатор сети подключенной к модулю NIM745. Идентификатор сети NIM745 соответствует
номеру командной строки в конфигурационном файле fbus_tcp.cfg.
PFBUS_HANDLE pHandleNet

31
2004 –2011 Fastwel Co Ltd. [Link]

Указатель на переменную типа FBUS_HANDLE в которой, в случае успешного вызова, будет


возвращен хэндл создаваемого функцией объекта сети FBUS.

Возвращаемое значение

Возвращает значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Открывает доступ к сети FBUS, подключенной к адаптеру с заданным номером. Создает


программный объект сети и возвращает его хэндл. Максимальное число одновременно открытых
приложением сетей FBUS лимитируется свободными ресурсами прикладной вычислительной
системы.

[Link]. fbusClose

Прототип
FBUS_RESULT fbusClose(FBUS_HANDLE hNet);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Системный идентификатор (хэндл) сети, ранее полученный при помощи функции fbusOpen.

Возвращаемое значение

Возвращает значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Завершает работу с сетью и освобождает выделенные для нее ресурсы.

[Link]. fbusRescan

Прототип
FBUS_RESULT fbusRescan(FBUS_HANDLE hNnet, size_t* pNodesDetected);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
size_t* pNodesDetected
Указатель на переменную, в которую будет помещено количество обнаруженных подчиненных
узлов (модулей ввода-вывода) в сети.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Сканирует сеть и назначает модулям сетевые идентификаторы (адреса). Создает список активных
узлов в объекте сети и производит считывание текущей конфигурации модулей.
Данная функция должна быть вызвана хотя бы один раз после включения питания системы после
получения доступа к сети функцией fbusOpen.

32
2004 –2011 Fastwel Co Ltd. [Link]

[Link]. fbusGetNodesCount

Прототип
FBUS_RESULT fbusGetNodesCount(FBUS_HANDLE hNet, size_t* pNodesDetected);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
size_t* pNodesDetected
Указатель на переменную, в которую будет помещено количество модулей ввода-вывода,
обнаруженных при последнем вызове fbusRescan.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Возвращает количество узлов, фактически присутствующих в сети. До вызова этой функции сеть
должна быть предварительно просканирована с использованием fbusRescan.

[Link]. fbusGetNodeDescription

Прототип
FBUS_RESULT fbusGetNodeDescription( FBUS_HANDLE hNet,
uint8_t id,
PFIO_MODULE_DESC pDest,
size_t szDest);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
PFIO_MODULE_DESC pDest
Указатель на переменную типа FIO_MODULE_DESC. Буфер для записи данных.
size_t szDest
Размер буфера, на который указывает pDest.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция записывает в переменную типа FIO_MODULE_DESC описание модуля с адресом id.

[Link]. fbusReset

Прототип
FBUS_RESULT fbusReset(FBUS_HANDLE hNet, uint8_t id);

Заголовочный файл

33
2004 –2011 Fastwel Co Ltd. [Link]

#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла, подлежащий сбросу (0–63). Если в качестве данного
параметра передать значение FBUS_MULTICAST_ID, будут сброшены все модули.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Выполняет сброс указанного одного или всех модулей в сети.

[Link]. fbusSendSync

Прототип
FBUS_RESULT fbusSendSync(FBUS_HANDLE hNet, uint8_t syncID);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t syncID
Идентификатор синхронизирующего сообщения SYNC, которое должно быть передано в сеть.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Все подчиненные узлы, для которых установлено данное значение идентификатора SYNC в
области изменяемых общих параметров, актуализируют свои выходные данные и скопируют в
коммуникационный буфер свои входные данные.

5.3.4. Интерфейс конфигурирования

[Link]. Общие сведения


Интерфейс конфигурирования представлен набором функций, предназначенных для
конфигурирования подчиненных узлов.

[Link]. fbusGetNodeCommonParameters

Прототип
FBUS_RESULT fbusGetNodeCommonParameters(FBUS_HANDLE hNet,
uint8_t id,
PFIO_MODULE_COMMON_CONF pDest,
size_t szDest);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet

34
2004 –2011 Fastwel Co Ltd. [Link]

Хэндл сети, ранее полученный при помощи функции fbusOpen.


uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
PFIO_MODULE_COMMON_CONF pDest
Указатель на переменную типа FIO_MODULE_COMMON_CONF, в которую будет помещено
содержимое конфигурационной секции общих изменяемых параметров модуля с адресом id.
size_t szDest
Размер буфера на который указывает pDest.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция записывает из объекта сети в буфер пользователя значения общих изменяемых


параметров модуля с указанным адресом.

[Link]. fbusSetNodeCommonParameters

Прототип
FBUS_RESULT fbusSetNodeCommonParameters(FBUS_HANDLE hNet,
uint8_t id,
PFIO_MODULE_COMMON_CONF pSrc,
size_t count);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Значение типа FBUS_RESULT (см. п.5.4).
PFIO_MODULE_COMMON_CONF pSrc
Указатель на переменную типа FIO_MODULE_COMMON_CONF, конфигурационная
информация из которой будет записана в соответствующие конфигурационные секции модуля с
адресом id объекта сети.
size_t count
Размер буфера на который указывает pSrc.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция записывает из буфера пользователя в объект сети значения общих изменяемых


параметров модуля с указанным адресом.

[Link]. fbusGetNodeSpecificParameters

Прототип
FBUS_RESULT fbusGetNodeSpecificParameters(FBUS_HANDLE hNet,
uint8_t id,
void* pDest,
size_t offset,
size_t count);

35
2004 –2011 Fastwel Co Ltd. [Link]

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
void* pDest
Указатель на буфер пользователя, в который будет помещено содержимое сегмента
конфигурационной секции специфических изменяемых параметров модуля с адресом id.
size_t offset
Смещение считываемого сегмента секции специфических изменяемых параметров модуля.
size_t count
Размер считываемого сегмента секции специфических изменяемых параметров модуля.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция записывает из объекта сети в буфер пользователя значения специфических изменяемых


параметров модуля с указанным адресом.

[Link]. fbusSetNodeSpecificParameters

Прототип
FBUS_RESULT fbusSetSpecificParameters(FBUS_HANDLE hNet,
uint8_t id,
void* pSrc,
size_t offset,
size_t count);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
void* pSrc
Указатель на буфер пользователя, из которого будут взяты данные для записи в сегмент
конфигурационной секции специфических изменяемых параметров модуля с адресом id.
size_t offset
Смещение записываемого сегмента секции специфических изменяемых параметров модуля.
size_t count
Размер записываемого сегмента секции специфических изменяемых параметров модуля.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

36
2004 –2011 Fastwel Co Ltd. [Link]

Функция записывает из буфера пользователя в объект сети значения специфических изменяемых


параметров модуля с указанным адресом.

[Link]. fbusDeleteGroup

Прототип
FBUS_RESULT fbusDeleteGroup(FBUS_HANDLE hNet, uint8_t groupID);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t groupID
Сетевой идентификатор группы.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Группа с ндентификатором groupID удаляется из конфигурации сети. Во всех МВВ у которых


идентификатор группы в параметрах группового обмена совпадает с groupID производится сброс
параметров группового обмена: идентификатор группы МВВ инициализируется значением
FBUS_UNDEFINED_GROUP_ID, остальные параметры значением 0.

[Link]. fbusDeleteAllGroups

Прототип
FBUS_RESULT fbusDeleteAllGroups(FBUS_HANDLE hNet);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Из конфигурации сети удаляются все группы. Во всех МВВ производится сброс параметров
группового обмена: идентификатор группы МВВ инициализируется значением
FBUS_UNDEFINED_GROUP_ID, остальные параметры значением 0.

[Link]. fbusAssignNodeToGroup

Прототип
FBUS_RESULT fbusAssignNodeToGroup(FBUS_HANDLE hNet,
uint8_t nodeID,
uint8_t groupID
size_t inputOffset,
size_t inputLength,
size_t outputOffset,
size_t outputLength);

Заголовочный файл

37
2004 –2011 Fastwel Co Ltd. [Link]

#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t nodeID
Сетевой идентификатор (адрес) узла (0–63).
uint8_t groupID
Сетевой идентификатор группы.
size_t inputOffset
Смещение сегмента принимаемых из МВВ данных в области его входов.
size_t inputLength
Длина сегмента принимаемых из МВВ данных в области его входов.
size_t outputOffset
Смещение сегмента передаваемых в МВВ данных в области его выходов.
size_t oututLength
Длина сегмента передаваемых в МВВ данных в области его выходов.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Узел с адресом nodeID добавляется в группу с ндентификатором groupID. Параметры группового


обмена в конфигурации МВВ инициализируются передаваемыми значениями.

[Link]. fbusBuildGroups

Прототип
FBUS_RESULT fbusBuildGroups(FBUS_HANDLE hNet);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Выполняется окончательная настройка параметров группового обмена в конфигурации всех МВВ


сети. Создаются низкоуровневые объекты групп.
После успешного завершения вызова данной функции приложение может выполнять операции
группового обмена с модулями сети.

[Link]. fbusReadConfig

Прототип
FBUS_RESULT fbusReadConfig(FBUS_HANDLE hNet, uint8_t id);

Заголовочный файл
#include <fbus.h>
38
2004 –2011 Fastwel Co Ltd. [Link]

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63) или всех узлов (FBUS_MULTICAST_ID).

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция выполняет операцию чтения значений конфигурационных параметров из физического


МВВ в объект конфигурации сети. Если id имеет значение FBUS_MULTICAST_ID операция
выполняется для всех модулей сети.
Функция блокирует выполнение вызывающего потока операционной системы до тех пор, пока
операция чтения конфигурации из МВВ с заданным адресом (или всех МВВ в сети) не завершится или
пока не будет зафиксирована ошибка.
Операция чтения конфигурации из физического МВВ в объект сети автоматически выполняется
для всех узлов при вызове функции fbusRescan, после завершения процедуры назначения модулям
сетевых идентификаторов.

[Link]. fbusWriteConfig

Прототип
FBUS_RESULT fbusWriteConfig(FBUS_HANDLE hNet, uint8_t id);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63) или всех узлов (FBUS_MULTICAST_ID).

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция выполняет операцию записи значений конфигурационных параметров из объекта


конфигурации сети в физический МВВ. Если id имеет значение FBUS_MULTICAST_ID операция
выполняется для всех модулей сети.
Функция блокирует выполнение вызывающего потока операционной системы до тех пор, пока
операция записи конфигурации в МВВ с заданным адресом (или всех МВВ в сети) не завершится или
пока не будет зафиксирована ошибка.

[Link]. fbusSaveConfig

Прототип
FBUS_RESULT fbusSaveConfig(FBUS_HANDLE hNet, uint8_t id);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
39
2004 –2011 Fastwel Co Ltd. [Link]

Хэндл сети, ранее полученный при помощи функции fbusOpen.


uint8_t id
Сетевой идентификатор (адрес) узла (0–63) или всех узлов (FBUS_MULTICAST_ID).

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция посылает одному модулю или всем модулям команду начать сохранение конфигурации
в энергонезависимой памяти и проверяет статус завершения операции.
Выполнение операции сохранения в энергонезависимой памяти может занимать длительное время
(порядка секунды). Функция блокирует выполнение вызывающего потока операционной системы до
тех пор, пока МВВ с заданным адресом (или все модули в сети) не завершит сохранение или пока не
будет зафиксирована ошибка.

5.3.5. Обмен данными с использованием индивидуальных запросов

[Link]. fbusReadInputs

Прототип
FBUS_SERVICE_RESULT fbusReadInputs(FBUS_HANDLE hNet,
uint8_t id,
void* pDest,
size_t offset,
size_t count);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
void* pDest
Буфер, в который требуется поместить результат чтения.
size_t offset
Смещение в области входных данных модуля, начиная с которого требуется читать данные.
size_t count
Длина данных, подлежащих чтению.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция выполняет чтение области входных данных модуля во внешний буфер.

[Link]. fbusWriteOutputs

Прототип
FBUS_SERVICE_RESULT fbusWriteOutputs(FBUS_HANDLE hNet,
uint8_t id,
void* pSrc,
size_t offset,
size_t count);

40
2004 –2011 Fastwel Co Ltd. [Link]

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t id
Сетевой идентификатор (адрес) узла (0–63).
void* pSrc
Буфер, содержащий данные, которые требуется записать в область выходных данных модуля.
size_t offset
Смещение в области выходных данных модуля, начиная с которого требуется записать данные.
size_t count
Длина данных, подлежащих записи.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Выполняет запись данных из внешнего буфера в область выходных данных указанного модуля.

5.3.6. Интерфейс группового обмена

[Link]. Общие сведения


Как указывалось в п.4.2.4, группы позволяют реализовать эффективный механизм обмена
данными между приложением и модулями ввода-вывода, подключенными к сети FBUS.
Количество и состав используемых в сети FBUS групп определяется логикой прикладного
алгоритма. Можно использовать разные группы для разных типов МВВ, можно разбивать МВВ на
группы в зависимости от требуемой частоты обмена данными с ними и т.п. Пограничными случаями
являются: использование одной группы для всех МВВ и создание одной группы для каждого МВВ
сети.
Использование одной группы для некоторого набора модулей обеспечивает наиболее высокую
пропускную способность шины при обмене данными с ними, однако сопряжено с возможностью
утраты связи сразу со всеми модулями набора при выходе из строя хотя бы одного из них. Создание
отдельной группы для каждого МВВ реализует наименее эффективный механизм группового обмена,
однако потеря связи с одним или несколькими модулями не приводит в данном случае к
невозможности группового обмена данными с остальными МВВ. Разумеется, всегда можно
парировать такие отказы в прикладной программе путем динамического перестроения набора и
состава групп. К тому же участие МВВ в группе не исключает возможности выполнения с ним
индивидуальных операций чтения-записи данных из областей ввода-вывода.
Пример создания групп и выполнения операций группового обмена представлен функцией
plain_api_group_sample в файле src\example\fb_sample.c.

[Link]. fbusGroup_setNodeOutputs

Прототип
FBUS_RESULT fbusGroup_setNodeOutputs(
FBUS_HANDLE hNet,
uint8_t groupID,
uint8_t nodeID,
size_t moduleDataOffset,
size_t moduleDataLength,
void* pSrc);

Заголовочный файл

41
2004 –2011 Fastwel Co Ltd. [Link]

#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t groupID
Сетевой идентификатор группы.
uint8_t nodeID
Сетевой идентификатор (адрес) узла (0–63).
size_t moduleDataOffset
Смещение в сегменте данных МВВ в буфере передачи группы, начиная с которого требуется
записать данные из внешнего буфера. Положение указанного сегмента данных МВВ относительно его
области выходов определено, в свою очередь, в конфигурации группового обмена МВВ значениями
параметров outputModuleDataOffset, outputModuleDataLength.
size_t moduleDataLength
Число байт которое требуется записать из внешнего буфера в буфер передачи группы.
void* pSrc
Указатель на внешний буфер из которого требуется записать данные в буфер передачи группы.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция обновляет данные в буфере передачи группы с идентификатором groupID (в буфере


передачи группы формируются данные, подлежащие передаче по сети к модулям ввода-вывода при
следующем выполнении группового запроса), данными из внешнего буфера на который указывает
pSrc. Обновляются выходные данные группы в сегменте узла с адресом nodeID. Смещение и длина,
обновляемых в указанном сегменте данных, определяется значениями аргументов moduleDataOffset и
moduleDataLength.
Функция вызывается перед запуском операции группового обмена функцией fbusProcessGroups в
случаях, когда требуется инициализировать/изменить состояние выходов МВВ.

[Link]. fbusGroup_getNodeInputs

Прототип
FBUS_RESULT fbusGroup_getNodeInputs(
FBUS_HANDLE hNet,
uint8_t groupID,
uint8_t nodeID,
size_t moduleDataOffset,
size_t moduleDataLength,
void* pDst);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t groupID
Сетевой идентификатор группы.
uint8_t nodeID
Сетевой идентификатор (адрес) узла (0–63).

42
2004 –2011 Fastwel Co Ltd. [Link]

size_t moduleDataOffset
Смещение в сегменте данных МВВ в приемном буфере группы, начиная с которого требуется
прочитать данные в внешний буфер. Положение указанного сегмента данных МВВ относительно его
области входов определено, в свою очередь, в конфигурации группового обмена МВВ значениями
параметров inputModuleDataOffset, inputModuleDataLength.
size_t moduleDataLength
Число байт которое требуется записать из буфера группы в внешний буфер.
void* pDst
Указатель на внешний буфер в который требуется записать данные из буфера группы.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция копирует данные узла с адресом nodeID из приемного буфера группы с


идентификатором groupID (в приемном буфере группы находятся данные принятые по сети от
модулей ввода-вывода при выполнении последнего группового запроса), в внешний буфер на который
указывает аргумент pDst. Смещение и длина данных, считываемых из указанного сегмента,
определяется значениями аргументов moduleDataOffset и moduleDataLength.

[Link]. fbusProcessGroup

Прототип
FBUS_RESULT fbus_exchangeGroup(FBUS_HANDLE hNet, uint8_t groupID);

Заголовочный файл
#include <fbus.h>

Параметры
FBUS_HANDLE hNet
Хэндл сети, ранее полученный при помощи функции fbusOpen.
uint8_t groupID
Сетевой идентификатор группы.

Возвращаемое значение

Значение типа FBUS_RESULT (см. п.5.4).

Комментарии

Функция выполняет операцию группового обмена. Данные из буфера передачи группы


передаются в выходные области модулей. Для записи данных, передаваемых модулям при групповом
обмене, используется функция fbusGroup_setNodeOutputs. Данные принятые из входных областей
модулей записываются в приемный буфер группы. Для чтения данных, принятых от модулей при
групповом обмене, используется функция fbusGroup_getNodeInputs.

5.4. Коды ошибок

Функции прикладного интерфейса FBUS API возвращают результат типа FBUS_RESULT.


Определение типа FBUS_RESULT содержится в заголовочном файле fbus/protocol/fbus2/api/fb_api.h.
Описание кодов ошибок приведено в табл. 9.
Таблица 9. Коды ошибок FBUS_RESULT
Код Описание
FBUS_RES_OK Успешное выполнение
Неверное состояние сети для вызова данной функции: закрытие
FBUS_RES _INVALID_STATE
активного объекта, одновременный доступ к объекту и т.п.
FBUS_RES_NO_MEM Недостаток системных ресурсов. Ошибка динамического выделения
43
2004 –2011 Fastwel Co Ltd. [Link]

Код Описание
памяти.
FBUS_RES_NO_SYSTEM_RESOURCE Недостаток системных ресурсов
FBUS_RES_INCORRECT_PARAM Неверные параметры
FBUS_RES_OPEN_ADAPTER Ошибка открытия устройства FBUS MASTER
FBUS_RES_GROUP_UNDEFINED Группа с данным идентификатором не определена
FBUS_RES_INVALID_GROUP_CONFIG Ошибка в параметрах конфигурации группы
FBUS_RES_GROUP_ALLOCATION_ERR Ошибка создания объекта группы
FBUS_RES_GROUP_CONFIG_NOT_SINCHRONIZED Несовпадение конфигурации в памяти и в физическом модуле
FBUS_RES_GROUP_NOT_CREATED Системная ошибка при создании группы
FBUS_RES_INVALID_GROUP_ID Неверный идентификатор группы
FBUS_RES_NODE_NOT_ASSIGNED_TO_GROUP Узел с не входит в группу
FBUS_RES_INVALID_EXCHANGE_REGION Ошибка задания параметров области обмена данными
FBUS_RES_RPC_ERROR Ошибка выполнения RPC запроса
FBUS_RES_TIMEOUT Таймаут запроса
FBUS_RES _USAGE Неверное состояние сети для вызова данной функции.
FBUS_RES_FRAME_ERROR Аппаратная ошибка транзакция
FBUS_RES_MODULE_NOT_ANSWER Модуль не отвечает
При групповой транзакции некоторый модуль обнаружил ошибку
FBUS_RES_MODULE_SAY_BAD_CRC
CRC
FBUS_RES_BAD_CRC Ошибка CRC
FBUS_RES_MODULE_BUSY Модуль занят
FBUS_RES_BYTES_MORE_THEN_NEED Принято байтов от модуля больше, чем ожидалось
FBUS_RES_MODULE_PENDING_ERROR Попытка запроса к модулю, который обрабатывает RPC-запрос
FBUS_RES_SYSTEM_ERROR Неизвестная системная ошибка

5.5. Представление типов модулей ввода-вывода

5.5.1. Общие сведения

Заголовочный файл fiom.h содержит макроопределения и структуры, представляющие области


специфических изменяемых параметров, входных и выходных данных конкретных модулей ввода-
вывода Fastwel I/O.
Данные структуры могут использоваться приложением для настройки специфических параметров
используемых модулей ввода-вывода, а также для доступа к данным каналов ввода-вывода модулей.
Каждый МВВ представляется структурами с выравниванием на 1 байт следующего вида:
// Предварительные декларации типов
typedef struct _ModuleTypeName ModuleTypeName;
typedef struct _ModuleTypeName_INPUTS ModuleTypeName_INPUTS;
typedef struct _ModuleTypeName_OUTPUTS ModuleTypeName_OUTPUTS;
typedef struct _ModuleTypeName_CONFIGURATION ModuleTypeName_CONFIGURATION;

// Структура входных каналов (области входных данных модуля)


struct _ModuleTypeName_INPUTS
{
// диагностический канал
uint8_t diagnostics;
// остальные входные каналы
};

// Структура выходных каналов (области выходных данных модуля)


// Если выходных каналов нет, то данный тип не генерируется
struct _ModuleTypeName_OUTPUTS
{
// выходные каналы модуля
};

// Структура области специфических изменяемых параметров модуля


// Если специфических изменяемых параметров нет, данный тип не генерируется
struct _ModuleTypeName_CONFIGURATION
{
// специфические параметры модуля
};

// Структура прикладных областей модуля


struct _ModuleTypeName
44
2004 –2011 Fastwel Co Ltd. [Link]

{
// область входных данных
ModuleTypeName_INPUTS inputs;
// область выходных данных (если есть)
ModuleTypeName_OUTPUTS outputs;
// область специфических изменяемых параметров (если есть)
ModuleTypeName_CONFIGURATION configuration;
};

Структуры прикладных областей всех модулей, как минимум, имеют поле inputs, поскольку
каждый модуль содержит диагностический виртуальный канал размером 1 байт.
Структуры прикладных областей модулей, оснащенных выходными каналами, имеют поле
outputs.
Для модулей, имеющих специфические изменяемые параметры, в структурах прикладных
областей присутствует поле configuration.

5.5.2. Модули дискретного ввода

[Link]. Общие структуры модулей дискретного ввода


Для большинства модулей дискретного ввода определены одинаковые структуры областей
входных данных и специфических изменяемых параметров, представленные в табл. 10–12.
Таблица 10. Структура DIM_INPUTS
Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля. Должен быть равен 0.
Логическое состояние входных каналов модуля. Количество значащих бит зависит от
uint8_t inputStates
количества физических входных каналов, реализованных в конкретном модуле.

Таблица 11. Структура DIM_INPUTS_COUNTERS


Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля. Должен быть равен 0.
Логическое состояние входных каналов модуля. Количество значащих бит зависит от
uint8_t inputStates
количества физических входных каналов, реализованных в конкретном модуле.
Значение суммирующего циклического счетчика передних фронтов на 1-м счетном канале,
uint16_t counter0
если разрешен режим счета на каналах.
Значение суммирующего циклического счетчика передних фронтов на 2-м счетном канале,
uint16_t counter1
если разрешен режим счета на каналах.
uint8_t countersState Зарезервировано.

Таблица 12. Структура DIM_CONFIGURATION


Тип поля Имя поля Назначение
Режим антидребезга:
DIM_DEBOUNCE_NODEBOUNCE (0) антидребезг выключен
DIM_DEBOUNCE_DEBOUNCE_200US (1) антидребезг 200 мкс
uint8_t debounce
DIM_DEBOUNCE_DEBOUNCE_3MS (2) антидребезг 3 мс.
Если поле enableCounting равно 1, данному параметру должно быть присвоено значение
DIM_DEBOUNCE_NODEBOUNCE
При равенстве 1 активизирует счетчики передних фронтов на счетных каналах
uint8_t enableCounting
(антидребезг должен быть выключен).
26 байт резерв резерв

[Link]. DIM710
Структура представляет модуль измерения периода DIM710 и имеет следующий вид:
struct _DIM710
{
DIM710_INPUTS inputs;
DIM710_CONFIGURATION configuration;
};

Описание полей структуры DIM710_INPUTS приведено в табл. 13

45
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 13. Структура DIM710_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Младшие разряды предназначены для индикации наличия сигнала на соответствующем входе
uint8_t diagnostics модуля. Логический ноль в разряде с первого по четвертый свидетельствует о наличии
сигнала на соответствующем входе модуля. Если разряд (с первого по четвертый) содержит
логическую единицу, это свидетельствует об отсутствии сигнала на соответствующем входе.
Значение периода входного сигнала на 1-м канале, выраженное в микросекундах. Для расчета
значения частоты входного сигнала должна использоваться формула:
double frequencyValue = 1000000.0/(double)channelValue
uint32_t channel0 где:
frequencyValue – значение частоты в Гц типа
channelValue – значение на канале
Если сигнал на вход не поступает, channelValue = 0xFFFFFFFF
В режиме измерения периода – значение периода входного сигнала на 2-м канале,
выраженное в микросекундах. Для расчета значения частоты входного сигнала должна
использоваться формула:
double frequencyValue = 1000000.0/(double)channelValue
где:
frequencyValue – значение частоты в Гц
channelValue – значение на канале
В режиме ввода сигнала шифратора приращений, – длительность в микросекундах между
uint32_t channel1 передними фронтами сигналов на первом и втором каналах модуля.
Для расчета значения сдвига фазы между передними фронтами сигналов на первом и втором
каналах модуля должна использоваться формула:
phaseShift = 360.0 * (double)ch2/(double)ch1;
где:
phaseShift – значение сдвига фазы в градусах;
ch1 – значение на первом канале модуля;
ch2 – значение на втором канале модуля;
Если сигнал на вход не поступает, ch2 = 0xFFFFFFFF
Значение периода входного сигнала на 3-м канале, выраженное в микросекундах. Для расчета
значения частоты входного сигнала должна использоваться формула:
double frequencyValue = 1000000.0/(double)channelValue
uint32_t channel2 где:
frequencyValue – значение частоты в Гц типа
channelValue – значение на канале
Если сигнал на вход не поступает, channelValue = 0xFFFFFFFF
В режиме измерения периода – значение периода входного сигнала на 4-м канале,
выраженное в микросекундах. Для расчета значения частоты входного сигнала должна
использоваться формула:
double frequencyValue = 1000000.0/(double)channelValue
где:
frequencyValue – значение частоты в Гц
channelValue – значение на канале
В режиме ввода сигнала шифратора приращений, – длительность в микросекундах между
uint32_t channel3 передними фронтами сигналов на третьем и четвертом каналах модуля.
Для расчета значения сдвига фазы между передними фронтами сигналов на третьем и
четвертом каналах модуля должна использоваться формула:
phaseShift = 360.0 * (double)ch4/(double)ch3;
где:
phaseShift – значение сдвига фазы в градусах;
ch3 – значение на третьем канале модуля;
ch4 – значение на четвертом канале модуля;
Если сигнал на вход не поступает, channelValue = 0xFFFFFFFF
В режиме измерения периода: нарастающий счетчик передних фронтов на канале 0. При
uint16_t counter0 достижении 65535 сбрасывается в 0.
В режиме шифратора приращений: 0
В режиме измерения периода: нарастающий счетчик передних фронтов на канале 1. При
uint16_t counter1 достижении 65535 сбрасывается в 0.
В режиме шифратора приращений: 0
В режиме измерения периода: нарастающий счетчик передних фронтов на канале 2. При
uint16_t counter2 достижении 65535 сбрасывается в 0.
В режиме шифратора приращений: 0
В режиме измерения периода: нарастающий счетчик передних фронтов на канале 3. При
uint16_t counter3 достижении 65535 сбрасывается в 0.
В режиме шифратора приращений: 0

46
2004 –2011 Fastwel Co Ltd. [Link]

Описание полей структуры DIM710_CONFIGURATION приведено в табл. 14.


Таблица 14. Структура DIM710_CONFIGURATION
Тип поля Имя поля Назначение
Определяет режим измерения. Если задано значение
DIM710_MODE_FREQUENCYMETERMODE (0), то модуль функционирует в режиме
uint8_t mode
измерения периода. При выборе значения DIM710_MODE_ENCODERMODE (1) модуль
функционирует в режиме приема сигналов шифратора приращений

[Link]. DIM714
Структура представляет 4-канальный модуль дискретного ввода (0–5 В) и имеет следующий вид:
struct _DIM714
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

[Link]. DIM715
Структура представляет 2-канальный модуль ввода дискретных сигналов переменного тока
высокого напряжения. Уровень логического нуля – от 0 до 40 В переменного тока. Уровень
логической единицы – от 79 до 250 В переменного тока.
struct _DIM715
{
DIM_INPUTS inputs;
};

Описание полей структуры приведено в п. [Link].

[Link]. DIM716
Структура представляет 2-канальный модуль дискретного ввода (0–30 В) и имеет следующий вид:
struct _DIM716
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

[Link]. DIM717
Структура представляет 8-канальный модуль дискретного ввода (0–30 В, активный уровень
высокий) и имеет следующий вид:
struct _DIM717
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

[Link]. DIM760
Структура представляет 4-канальный модуль дискретного ввода (0–30 В) с индивидуальной
развязкой каналов и имеет следующий вид:
struct _DIM760
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

47
2004 –2011 Fastwel Co Ltd. [Link]

[Link]. DIM761
Структура представляет 4-канальный модуль дискретного ввода (0–48 В) с индивидуальной
развязкой каналов и имеет следующий вид:
struct _DIM761
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

[Link]. DIM762
Структура представляет 8-канальный модуль дискретного ввода (0–30 В, активный уровень
низкий) и имеет следующий вид:
struct _DIM762
{
DIM_INPUTS_COUNTERS inputs;
DIM_CONFIGURATION configuration;
};

Описание полей структуры приведено в п. [Link].

5.5.3. Модули дискретного вывода

[Link]. DIM711
Структура представляет 4-канальный модуль дискретного вывода (24 В, до 2 А) и имеет
следующий вид:
struct _DIM711
{
DIM711_INPUTS inputs;
DIM711_OUTPUTS outputs;
DIM711_CONFIGURATION configuration;
};

Описание полей структуры области входных данных DIM711_INPUTS приведено в табл. 15.
Таблица 15. Структура DIM711_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Логическая единица в некотором бите данного канала означает обнаружение
uint8_t diagnostics
короткого замыкания нагрузки, перегрева или перегрузки по соответствующему
выходному каналу.
Биты данного канала отражают текущее состояние соответствующих выходных
uint8_t channelsStates
каналов модуля. Логическая 1 соответствует включенному состоянию канала.
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM0
1-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM0
1-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM1
2-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM1
2-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM2
3-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM2
3-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM3
4-м канале модуля в единицах с весом, определяемым параметром Mode
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM3
4-м канале модуля в единицах с весом, определяемым параметром Mode

Описание полей структуры области выходных данных DIM711_OUTPUTS приведено в табл. 16.

48
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 16. Структура DIM711_OUTPUTS


Тип поля Имя поля Назначение
Биты данного канала предназначены для управления выходными каналами модуля.
uint8_t digitalOutputs
Логическая 1 соответствует включению канала.
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM0
1-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM0
1-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM1
2-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM1
2-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM2
3-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM2
3-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM3
4-м канале модуля в единицах с весом, определяемым параметром Mode
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM3
4-м канале модуля в единицах с весом, определяемым параметром Mode

Описание полей структуры области специфических изменяемых параметров


DIM711_CONFIGURATION приведено в табл. 17.
Таблица 17. Структура DIM711_CONFIGURATION
Тип поля Имя поля Назначение
Начальное состояние каналов дискретного вывода после включения питания до
uint8_t initialOutputStates
первого изменения индивидуальным или групповым запросом.
Если значение hostWatchdogInterval в области общих изменяемых параметров
модуля (см. табл. 6) отлично от нуля, то при отсутствии запросов к модулю по FBUS
uint8_t outputSafeStates
в течение времени, превышающего hostWatchdogInterval (в секундах), каналы
модуля будут переведены в состояние, заданное полем outputSafeStates
Режим работы модуля. Младшие четыре бита имеют следующее назначение:
Бит0: если =1, то для 1-го канала включен режим формирования ШИМ-
последовательности.
Бит1: если =1, то для 2-го канала включен режим формирования ШИМ-
последовательности.
Бит2: если =1, то для 3-го канала включен режим формирования ШИМ-
uint8_t mode
последовательности.
Бит3: если =1, то для 4-го канала включен режим формирования ШИМ-
последовательности.
Старшие четыре бита определяют вес длительности полуволны ШИМ:
=0: 50 мкс;
=1: 12,5 мкс.

[Link]. DIM712
Структура представляет 2-канальный модуль релейной коммутации с перекидными контактами и
имеет следующий вид:
struct _DIM712
{
DIM_INPUTS inputs;
DIM_OUTPUTS outputs;
DIGITAL_OUTPUT_CONFIGURATION configuration;
};

Структура полей inputs и outputs приведена в табл. 18–19 соответственно.


Таблица 18. Структура DIM_INPUTS
Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля. Должен быть равен 0.
uint8_t inputStates Текущее состояние выходных каналов модуля. Действительны два младших бита.

Таблица 19. Структура DIM_OUTPUTS


Тип поля Имя поля Назначение
uint8_t outputsControl Управление состоянием выходных каналов модуля. Действительны два младших бита.

49
2004 –2011 Fastwel Co Ltd. [Link]

Структура поля configuration приведена в табл. 20.


Таблица 20. Структура DIM_OUTPUT_CONFIGURATION
Тип поля Имя поля Назначение
Начальное состояние выходных каналов после включения питания до первого
uint8_t initialOutputStates
изменения индивидуальным или групповым запросом.
Если значение hostWatchdogInterval в области общих изменяемых параметров
модуля (см. табл. 6) отлично от нуля, то при отсутствии запросов к модулю по FBUS
uint8_t outputSafeStates
в течение времени, превышающего hostWatchdogInterval (в секундах), каналы
модуля будут переведены в состояние, заданное полем outputSafeStates

[Link]. DIM713
Структура представляет 2-канальный модуль релейной коммутации и имеет следующий вид:
struct _DIM713
{
DIM_INPUTS inputs;
DIM_OUTPUTS outputs;
DIGITAL_OUTPUT_CONFIGURATION configuration;
};

Структура полей inputs и outputs приведена в табл. 21–22 соответственно.


Таблица 21. Структура DIM_INPUTS
Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля. Должен быть равен 0.
uint8_t inputStates Текущее состояние выходных каналов модуля. Действительны два младших бита.

Таблица 22. Структура DIM_OUTPUTS


Тип поля Имя поля Назначение
uint8_t outputsControl Управление состоянием выходных каналов модуля. Действительны два младших бита.

Структура поля configuration приведена в табл. 23.


Таблица 23. Структура DIM_OUTPUT_CONFIGURATION
Тип поля Имя поля Назначение
Начальное состояние выходных каналов после включения питания до первого
uint8_t initialOutputStates
изменения индивидуальным или групповым запросом.
Если значение hostWatchdogInterval в области общих изменяемых параметров
модуля (см. табл. 6) отлично от нуля, то при отсутствии запросов к модулю по FBUS
uint8_t outputSafeStates
в течение времени, превышающего hostWatchdogInterval (в секундах), каналы
модуля будут переведены в состояние, заданное полем outputSafeStates

[Link]. DIM718
Структура представляет 8-канальный модуль дискретного вывода (24 В, до 500 мА, high-side
switching) и имеет следующий вид:
struct _DIM718
{
DIM719_INPUTS inputs;
DIM719_OUTPUTS outputs;
DIM718_CONFIGURATION configuration;
};

Описание полей структуры области входных данных DIM719_INPUTS приведено в табл. 24.

50
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 24. Структура DIM719_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Логическая единица в некотором бите данного канала означает обнаружение
uint8_t diagnostics
короткого замыкания нагрузки, перегрева или перегрузки по соответствующему
выходному каналу.
Биты данного канала отражают текущее состояние соответствующих выходных
uint8_t channelsStates
каналов модуля. Логическая 1 соответствует включенному состоянию канала.
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM0
1-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM0
1-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM1
2-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM1
2-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM2
3-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM2
3-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM3
4-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM3
4-м канале модуля в единицах с весом 50 мкс

Описание полей структуры области выходных данных DIM719_OUTPUTS приведено в табл. 25.
Таблица 25. Структура DIM719_OUTPUTS
Тип поля Имя поля Назначение
Биты данного канала предназначены для управления выходными каналами модуля.
uint8_t digitalOutputs
Логическая 1 соответствует включению канала.
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM0
1-м канале модуля в единицах с весом 50 мкс.
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM0
1-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM1
2-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM1
2-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM2
3-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM2
3-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM3
4-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM3
4-м канале модуля в единицах с весом 50 мкс

ВНИМАНИЕ! Минимальное допустимое ненулевое значение, которое можно записывать в


выходы PWM составляет 8!
Описание полей структуры области специфических изменяемых параметров
DIM718_CONFIGURATION приведено в табл. 26.

51
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 26. Структура DIM718_CONFIGURATION


Тип поля Имя поля Назначение
Начальное состояние каналов дискретного вывода после включения питания до
uint8_t initialOutputStates
первого изменения индивидуальным или групповым запросом.
Если значение hostWatchdogInterval в области общих изменяемых параметров
модуля (см. табл. 6) отлично от нуля, то при отсутствии запросов к модулю по FBUS
uint8_t outputSafeStates
в течение времени, превышающего hostWatchdogInterval (в секундах), каналы
модуля будут переведены в состояние, заданное полем outputSafeStates
Режим работы модуля. Младшие четыре бита имеют следующее назначение:
Бит0: если =1, то для 1-го канала включен режим формирования ШИМ-
последовательности.
Бит1: если =1, то для 2-го канала включен режим формирования ШИМ-
uint8_t mode последовательности.
Бит2: если =1, то для 3-го канала включен режим формирования ШИМ-
последовательности.
Бит3: если =1, то для 4-го канала включен режим формирования ШИМ-
последовательности.

[Link]. DIM719
Структура представляет 8-канальный модуль дискретного вывода (24 В, до 500 мА, low-side
switching) и имеет следующий вид:
struct _DIM719
{
DIM719_INPUTS inputs;
DIM719_OUTPUTS outputs;
DIM718_CONFIGURATION configuration;
};

Описание полей структуры в точности совпадает с приведенным для модуля DIM718 (см. п.
[Link]). Однако данный модуль не имеет ограничения на минимальное ненулевое значение,
записываемое в выходные каналы формирования ШИМ-последовательностей.

[Link]. DIM763
Структура представляет 4-канальный модуль опто-реле (до 60 В, 500 мА постоянного или
переменного тока) и имеет следующий вид:
struct _DIM763
{
DIM763_INPUTS inputs;
DIM763_OUTPUTS outputs;
DIM763_CONFIGURATION configuration;
};

Описание полей структуры области входных данных DIM763_INPUTS приведено в табл. 27.
Таблица 27. Структура DIM763_INPUTS
Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля.
Биты данного канала отражают текущее состояние соответствующих выходных
uint8_t channelsStates
каналов модуля. Логическая 1 соответствует включенному состоянию канала.
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM0
1-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM0
1-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM1
2-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM1
2-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM2
3-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM2
3-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDutyState_PWM3
4-м канале модуля в единицах с весом 50 мкс
Текущее значение длительности 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDutyState_PWM3
4-м канале модуля в единицах с весом 50 мкс

52
2004 –2011 Fastwel Co Ltd. [Link]

Описание полей структуры области выходных данных DIM763_OUTPUTS приведено в табл. 28.
Таблица 28. Структура DIM763_OUTPUTS
Тип поля Имя поля Назначение
Биты данного канала предназначены для управления выходными каналами модуля.
uint8_t digitalOutputs
Логическая 1 соответствует включению канала.
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM0
1-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM0
1-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM1
2-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM1
2-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM2
3-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM2
3-м канале модуля в единицах с весом 50 мкс
Длительность 1-й полуволны ШИМ-последовательности на
uint16_t firstHalfDuty_PWM3
4-м канале модуля в единицах с весом 50 мкс
Длительность 2-й полуволны ШИМ-последовательности на
uint16_t secondHalfDuty_PWM3
4-м канале модуля в единицах с весом 50 мкс

Описание полей структуры области специфических изменяемых параметров


DIM763_CONFIGURATION приведено в табл. 29.
Таблица 29. Структура DIM763_CONFIGURATION
Тип поля Имя поля Назначение
Начальное состояние каналов дискретного вывода после включения питания до
uint8_t initialOutputStates
первого изменения индивидуальным или групповым запросом.
Если значение hostWatchdogInterval в области общих изменяемых параметров
модуля (см. табл. 6) отлично от нуля, то при отсутствии запросов к модулю по FBUS
uint8_t outputSafeStates
в течение времени, превышающего hostWatchdogInterval (в секундах), каналы
модуля будут переведены в состояние, заданное полем outputSafeStates
Режим работы модуля. Младшие четыре бита имеют следующее назначение:
Бит0: если =1, то для 1-го канала включен режим формирования ШИМ-
последовательности.
Бит1: если =1, то для 2-го канала включен режим формирования ШИМ-
uint8_t mode последовательности.
Бит2: если =1, то для 3-го канала включен режим формирования ШИМ-
последовательности.
Бит3: если =1, то для 4-го канала включен режим формирования ШИМ-
последовательности.

ВНИМАНИЕ! Минимальное допустимое ненулевое значение, которое можно записывать в


выходы PWM для первой полуволны составляет 20 (около 1 мс). Минимальное допустимое ненулевое
значение, которое можно записывать в выходы PWM для второй полуволны составляет 60 (около 3
мс).

5.5.4. Модули аналогового ввода

[Link]. AIM720
Структура представляет модуль аналогового ввода AIM720 (3 канала измерения напряжения и 3
канала измерения тока) и имеет следующий вид:
struct _AIM720
{
AIM720_INPUTS inputs;
AIM720_CONFIGURATION configuration;
};

Описание полей структуры AIM720_INPUTS приведено в табл. 30

53
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 30. Структура AIM720_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен
uint8_t diagnostics
быть равен 0.
Код АЦП на 1-м канале ввода напряжения. Действительны первые 12 разрядов. Для расчета
значения напряжения должна использоваться формула:
double voltageValue = ((double)((i16)adcValue)) * 0.001220703125
uint16_t voltageInput0
где:
voltageValue – значение напряжения в вольтах типа double
adcValue – значение на канале
uint16_t voltageInput1 Код АЦП на 2-м канале ввода напряжения.
uint16_t voltageInput2 Код АЦП на 3-м канале ввода напряжения.
Код АЦП на 1-м канале ввода тока. Действительны первые 12 разрядов. Для расчета значения
тока должна использоваться формула:
currentValue = ((double)adcValue) * 0.0049622
uint16_t currentInput0
где:
currentValue – значение тока в миллиамперах типа double
adcValue – значение на канале
uint16_t currentInput1 Код АЦП на 2-м канале ввода тока.
uint16_t currentInput2 Код АЦП на 3-м канале ввода тока.
uint16_t halfScaleReference Код АЦП, соответствующий опорному напряжению АЦП (около 2,5 В)

Описание полей структуры AIM720_CONFIGURATION приведено в табл. 31.


Таблица 31. Структура AIM720_CONFIGURATION
Тип поля Имя поля Назначение
Определяет диапазон входного сигнала для всех каналов модуля из следующего ряда:
AIM720_RANGE__0_5V (0) – 0…5 В;
AIM720_RANGE__0_10V (1) – 0…10 В;
uint8_t inputsRange AIM720_RANGE__M5_5V (2) – –5…5 В
AIM720_RANGE__M10_10V (3) – –10…10 В.
При использовании каналов ввода токовых сигналов должен быть установлен диапазон
0…5 В
Период опроса всех каналов модуля в единицах, кратных 256 мкс (1 – 256 мкс; 2 – 512 мкс;
uint16_t scanPeriod
…; 65535 – 16,7 c)
Количество отсчетов в скользящем окне фильтра. Диапазон от 0 до 10. Значения 0 и 1
отключают фильтр. Фильтрация осуществляется по следующей формуле:
n
6i 2n 2
yn* yi ,
uint8_t filterDepth i 1 n(n 1)
где
n – количество отсчетов;
y*n – текущий результат фильтрации;
yi – i-й нефильтрованный отсчет.

[Link]. AIM721
Структура представляет модуль ввода токовых сигналов AIM721 (4 канала, 0...20 мА) и имеет
следующий вид:
struct _AIM721
{
AIM72X_4_INPUTS inputs;
AIM72X_4_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_4_INPUTS приведено в табл. 32

54
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 32. Структура AIM72X_4_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован. Значение 2
uint8_t diagnostics в первых двух битах означает, что уровень сигнала на 1-м канале измерения тока превысил
20,2 мА. Оставшиеся 3 пары битов содержат статус 2-го, 3-го и 4-го каналов соответственно.
Код АЦП на 1-м канале измерения тока. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double currentValue := ((double)adcValue) * 2.40802793E-006
uint32_t input0
где:
currentValue – значение напряжения в мА типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения тока.
uint32_t input2 Код АЦП на 3-м канале измерения тока.
uint32_t input3 Код АЦП на 4-м канале измерения тока.

Описание полей структуры AIM72X_4_CONFIGURATION приведено в табл. 33.


Таблица 33. Структура AIM72X_4_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0 AIM72X_FILTER__100HZ (4) 100 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
AIM72X_FILTER__25HZ (5) 25 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала
uint8_t filterOptions2 Частота режекторного фильтра 3-го канала
uint8_t filterOptions3 Частота режекторного фильтра 4-го канала

[Link]. AIM722
Структура представляет модуль ввода токовых сигналов AIM722 (2 дифференциальных канала,
0...20 мА) и имеет следующий вид:
struct _AIM722
{
AIM72X_2_INPUTS inputs;
AIM72X_2_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_2_INPUTS приведено в табл. 34.


Таблица 34. Структура AIM72X_2_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Представляет сумму битовых масок:
0x01 : на 1-м канале напряжение на входе превысило 1 В
uint8_t diagnostics 0x02 : на 1-м канале ток превысил 20.2 мА
0x04 : на 2-м канале напряжение превысило 1 В
0x08 : на 2-м канале ток превысил 20.2 мА
0x00 : все в порядке
Код АЦП на 1-м канале измерения тока. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double currentValue := ((double)adcValue) * 2.40802793E-006
uint32_t input0
где:
currentValue – значение напряжения в мА типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения тока.

Описание полей структуры AIM72X_2_CONFIGURATION приведено в табл. 35.

55
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 35. Структура AIM72X_2_CONFIGURATION


Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0 AIM72X_FILTER__100HZ (4) 100 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
AIM72X_FILTER__25HZ (5) 25 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала

[Link]. AIM723
Структура представляет модуль ввода токовых сигналов AIM723 (4 канала, 4...20 мА) и имеет
следующий вид:
struct _AIM723
{
AIM72X_4_INPUTS inputs;
AIM72X_4_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_4_INPUTS приведено в табл. 36.


Таблица 36. Структура AIM72X_4_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован. Значение 2
в первых двух битах означает, что уровень сигнала на 1-м канале измерения тока превысил
uint8_t diagnostics 20,2 мА. Значение 1 в первых двух битах означает, что уровень сигнала на 1-м канале
измерения тока не достигает 4,0 мА. Оставшиеся 3 пары битов содержат статус 2-го, 3-го и 4-
го каналов соответственно.
Код АЦП на 1-м канале измерения тока. Действительны первые 22 разряда. Для расчета
значения тока должна использоваться формула:
double currentValue = 4.0 + 1.93119072E-006 * ((double)((i32)adcValue))
uint32_t input0
где:
currentValue – значение напряжения в мА типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения тока.
uint32_t input2 Код АЦП на 3-м канале измерения тока.
uint32_t input3 Код АЦП на 4-м канале измерения тока.

Описание полей структуры AIM72X_4_CONFIGURATION приведено в табл. 37.


Таблица 37. Структура AIM72X_4_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0 AIM72X_FILTER__100HZ (4) 100 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
AIM72X_FILTER__25HZ (5) 25 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала
uint8_t filterOptions2 Частота режекторного фильтра 3-го канала
uint8_t filterOptions3 Частота режекторного фильтра 4-го канала

[Link]. AIM724
Структура представляет 2-канальный модуль приема сигналов термопар AIM724 и имеет
следующий вид:
struct _AIM724
{
AIM724_5_INPUTS inputs;
AIM724_5_OUTPUTS outputs;
AIM724_CONFIGURATION configuration;
};

Описание полей структуры AIM724_5_INPUTS приведено в табл. 38.

56
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 38. Структура AIM724_5_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Первые два бита содержат признак достоверности показаний по первому и второму
uint8_t diagnostics измерительным каналам. Если бит установлен, это свидетельствует о недостоверности
показаний по соответствующему каналу.
Единица в третьем бите свидетельствует о неисправности измерительного тракта.
Значение в выбранном диапазоне на первом канале в единицах физической величины.
Допускается использовать значение только в случае, если сброшены нулевой и второй биты
uint32_t channel0 диагностического виртуального канала.
Приведение значения к типу float выполняется следующим образом:
float temperature0 = *((float*)&((AIM724_5_INPUTS*)pInputs)->inputs.channel0);
Значение в выбранном диапазоне на втором канале в единицах физической величины.
Допускается использовать значение только в случае, если сброшены первый и второй биты
uint32_t channel1 диагностического виртуального канала.
Приведение значения к типу float выполняется следующим образом:
float temperature1 = *((float*)&((AIM724_5_INPUTS*)pInputs)->inputs.channel1);
Значение температуры холодного спая, измеренное встроенным датчиком.
uint32_t cjcInput Приведение значения к типу float выполняется следующим образом:
float cjcValue = *((float*)&((AIM724_5_INPUTS*)pInputs)->inputs. cjcInput);

Поле outputs типа AIM724_5_OUTPUTS не используется в текущей версии прошивки модуля.


Описание полей структуры AIM724_CONFIGURATION приведено в табл. 39.
Таблица 39. Структура AIM724_CONFIGURATION
Тип поля Имя поля Назначение
uint8_t scanRate Зарезервировано, должно быть равно 0
Режим компенсации температуры холодного спая:
AIM724_5_CJC_MODE__CJC_DISABLED (2) не используется
uint8_t cjc_mode
AIM724_5_CJC_MODE__CJC_INTERNAL_SENSOR (3) используется встроенный датчик
AIM724_5_CJC_MODE__CJC_EXTERNAL_SOURCE (1) зарезервировано
Диапазон входного сигнала или тип подключаемой термопары:
AIM724_RANGE__MV_DIFF20 (0) 10 мВ
AIM724_RANGE__MV_DIFF50 (1) 50 мВ
AIM724_RANGE__MV_DIFF100 (2) 100 мВ
AIM724_RANGE__MV_DIFF200 (3) 200 мВ
AIM724_RANGE__TC_J (9) TC типа J
uint8_t inputRange AIM724_RANGE__TC_K (10) TC типа K
AIM724_RANGE__TC_N (11) TC типа N
AIM724_RANGE__TC_T (12) TC типа T
AIM724_RANGE__TC_E (13) TC типа E
AIM724_RANGE__TC_R (14) TC типа R
AIM724_RANGE__TC_S (15) TC типа S
AIM724_RANGE__TC_B (16) TC типа B

[Link]. AIM725
Структура представляет 2-канальный модуль приема сигналов термометров сопротивления и
измерения сопротивления AIM725 и имеет следующий вид:
struct _AIM725
{
AIM725_INPUTS inputs;
AIM725_CONFIGURATION configuration;
};;

Описание полей структуры AIM725_INPUTS приведено в табл. 40.

57
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 40. Структура AIM725_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован.
Первые два бита содержат признак достоверности показаний по первому и второму
uint8_t diagnostics измерительным каналам. Если бит установлен, это свидетельствует о недостоверности
показаний по соответствующему каналу.
Единица в третьем бите свидетельствует о неисправности измерительного тракта.
Значение в выбранном диапазоне на первом канале в единицах физической величины.
Допускается использовать значение только в случае, если сброшены нулевой и второй биты
uint32_t channel0 диагностического виртуального канала.
Приведение значения к типу float выполняется следующим образом:
float temperature0 = *((float*)&((AIM725_INPUTS*)pInputs)->inputs.channel0);
Значение в выбранном диапазоне на втором канале в единицах физической величины.
Допускается использовать значение только в случае, если сброшены первый и второй биты
uint32_t channel1 диагностического виртуального канала.
Приведение значения к типу float выполняется следующим образом:
float temperature1 = *((float*)&((AIM725_INPUTS*)pInputs)->inputs.channel1);

Описание полей структуры AIM725_CONFIGURATION приведено в табл. 41.


Таблица 41. Структура AIM725_CONFIGURATION
Тип поля Имя поля Назначение
uint8_t scanRate Зарезервировано, должно быть равно 0
Отключение измерения по отдельным каналам:
AIM724_5_USE_BOTH_CHANNELS (0) измерение выполняется по двум каналам
uint8_t channels_selection
AIM724_5_USE_FIRST_CHANNELS (1) измерение выполняется только по 1-му каналу
AIM724_5_USE_SECOND_CHANNELS (2) измерение выполняется только по 2-му каналу
Диапазон входного сигнала или тип подключаемого термометра:
AIM725_RANGE___PT50 (13) Pt50 (W100=1,3850)
AIM725_RANGE___PT100 (0) Pt100 (W100=1,3850)
AIM725_RANGE__PT200 (1) Pt200 (W100=1,3850)
AIM725_RANGE__PT500 (2) Pt500 (W100=1,3850)
AIM725_RANGE__PT1000 (3) Pt1000 (W100=1,3850)
AIM725_RANGE__NI100 (4) Ni100 (W100=1,6710)
uint8_t inputRange
AIM725_RANGE__NI120 (5) Ni120 (W100=1,6710)
AIM725_RANGE__CU50 (7) Cu50 (W100=1,4260)
AIM725_RANGE__OHM_0_150 (8) 0...150 Ом
AIM725_RANGE__OHM_0_300 (9) 0...300 Ом
AIM725_RANGE__OHM_0_600 (10) 0...600 Ом
AIM725_RANGE__OHM_0_1500 (11) 0...1500 Ом
AIM725_RANGE__OHM_0_3000 (12) 0...3000 Ом
Способ подключения источника сигнала:
uint8_t connectionType AIM725_CONNECTION__TWOWIRE (0) 2-проводное подключение
AIM725_CONNECTION__THREEWIRE (1) 3-проводное подключение

[Link]. AIM726
Структура представляет 2-канальный модуль ввода сигналов напряжения AIM726 (0...40 В) и
имеет следующий вид:
struct _AIM726
{
AIM72X_2_INPUTS inputs;
AIM72X_2_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_2_INPUTS приведено в табл. 42.


Таблица 42. Структура AIM72X_2_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен
uint8_t diagnostics
быть равен 0.
Код АЦП на 1-м канале ввода напряжения. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double voltageValue = ((double)adcValue) * 4.768372E-006;
uint32_t input0
где:
voltageValue – значение напряжения в вольтах типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения напряжения
58
2004 –2011 Fastwel Co Ltd. [Link]

Описание полей структуры AIM72X_2_CONFIGURATION приведено в табл. 43.


Таблица 43. Структура AIM72X_2_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0
AIM72X_FILTER__500HZ (1) 500 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала

[Link]. AIM727
Структура представляет 4-канальный модуль ввода сигналов напряжения AIM727 (0...40 В) и
имеет следующий вид:
struct _AIM727
{
AIM72X_4_INPUTS inputs;
AIM72X_4_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_4_INPUTS приведено в табл. 44.


Таблица 44. Структура AIM72X_4_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен
uint8_t diagnostics
быть равен 0.
Код АЦП на 1-м канале ввода напряжения. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double voltageValue = ((double)adcValue) * 4.768372E-006;
uint32_t input0
где:
voltageValue – значение напряжения в вольтах типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения напряжения
uint32_t input2 Код АЦП на 3-м канале измерения напряжения
uint32_t input3 Код АЦП на 4-м канале измерения напряжения

Описание полей структуры AIM72X_4_CONFIGURATION приведено в табл. 45.


Таблица 45. Структура AIM72X_4_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0
AIM72X_FILTER__500HZ (1) 500 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала
uint8_t filterOptions2 Частота режекторного фильтра 3-го канала
uint8_t filterOptions3 Частота режекторного фильтра 4-го канала

[Link]. AIM728
Структура представляет 4-канальный модуль ввода сигналов напряжения AIM728 (–20...+20 В) и
имеет следующий вид:
// AIM728 Declarations
struct _AIM728
{
AIM72X_4_INPUTS inputs;
AIM72X_4_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_4_INPUTS приведено в табл. 46.

59
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 46. Структура AIM72X_4_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен
uint8_t diagnostics
быть равен 0.
Код АЦП на 1-м канале ввода напряжения. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double voltageValue = ((double)((i32)adcValue)) * 2.3841861E-006;
uint32_t input0
где:
voltageValue – значение напряжения в вольтах типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения напряжения
uint32_t input2 Код АЦП на 3-м канале измерения напряжения
uint32_t input3 Код АЦП на 4-м канале измерения напряжения

Описание полей структуры AIM72X_4_CONFIGURATION приведено в табл. 47.


Таблица 47. Структура AIM72X_4_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0
AIM72X_FILTER__500HZ (1) 500 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала
uint8_t filterOptions2 Частота режекторного фильтра 3-го канала
uint8_t filterOptions3 Частота режекторного фильтра 4-го канала

[Link]. AIM729
Структура представляет 2-канальный модуль ввода сигналов напряжения AIM729 (–20...+20 В) и
имеет следующий вид:
struct _AIM729
{
AIM72X_2_INPUTS inputs;
AIM72X_2_CONFIGURATION configuration;
};

Описание полей структуры AIM72X_2_INPUTS приведено в табл. 48.


Таблица 48. Структура AIM72X_2_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен
uint8_t diagnostics
быть равен 0.
Код АЦП на 1-м канале ввода напряжения. Действительны первые 22 разряда. Для расчета
значения напряжения должна использоваться формула:
double voltageValue = ((double)((i32)adcValue)) * 2.3841861E-006;
uint32_t input0
где:
voltageValue – значение напряжения в вольтах типа double
adcValue – значение на канале
uint32_t input1 Код АЦП на 2-м канале измерения напряжения

Описание полей структуры AIM72X_2_CONFIGURATION приведено в табл. 49.


Таблица 49. Структура AIM72X_2_CONFIGURATION
Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0
AIM72X_FILTER__500HZ (1) 500 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала

[Link]. AIM733
Структура представляет 4-канальный модуль ввода сигналов напряжения с высоким входным
сопротивлением AIM733 (0–5 В или 0,0–2,5 В) и имеет следующий вид:

60
2004 –2011 Fastwel Co Ltd. [Link]

struct _AIM733
{
AIM72X_4_INPUTS inputs;
AIM733_CONFIGURATION configuration;
};

Описание полей структур inputs и configuration приведено в табл. 50-51.


Таблица 50. Структура AIM72X_4_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, при
равенстве 0 можно анализировать и использовать данные на каналах input0–input3.
Если значение не равно 0, то первые два бита имеют следующее назначение:
uint8_t diagnostics
Бит 0 =1: АЦП функционирует неправильно, поскольку не выполнена проверка
пропорциональности времен измерения при частотах фильтра 50 и 500 Гц
Бит 1 =1: потеряна связь с АЦП
Код АЦП и диагностика 1-го канала ввода напряжения. Действительны первые 22 разряда.
Результат измерения АЦП для 1-го канала
Расчет значения напряжения в диапазоне от 0 до 5 В выполняется по формуле:
Байт 0–2 double V = (double)(adcValue & 0xFFFFFFUL) * 5.960465188829E-007
Расчет значения напряжения в диапазоне от 0 до 2,5 В выполняется по формуле:
double V = (double)(adcValue & 0xFFFFFFUL) * 2.980232594040E-007
uint32_t input0 Содержит диагностическую информацию о канале. Если равен нулю, то
результат измерения, находящийся в байтах 0-2, может быть использован для
вычисления напряжения на канале.
Байт 3 Назначение отдельных битовых полей:
Бит 0 =1: напряжение на входе выше верхней границы диапазона.
Бит 1 =1: напряжение на входе ниже нижней границы диапазона
Бит 7 =1: не было выполнено ни одного измерения по данному каналу
uint32_t input1 Код АЦП на 2-м канале измерения напряжения
uint32_t input2 Код АЦП на 3-м канале измерения напряжения
uint32_t input3 Код АЦП на 4-м канале измерения напряжения

Таблица 51. Структура AIM733_CONFIGURATION


Тип поля Имя поля Назначение
Частота режекторного фильтра 1-го канала:
AIM72X_FILTER__1000HZ (2) 1000 Гц
uint8_t filterOptions0
AIM72X_FILTER__500HZ (1) 500 Гц
AIM72X_FILTER__50HZ (0) 50 Гц
uint8_t filterOptions1 Частота режекторного фильтра 2-го канала
uint8_t filterOptions2 Частота режекторного фильтра 3-го канала
uint8_t filterOptions3 Частота режекторного фильтра 4-го канала
Диапазон измерения 1-го канала:
uint8_t range0 AIM733_INPUT_RANGE_RANGE733_0_5V (0) 0...5 В
AIM733_INPUT_RANGE_RANGE733_0_2D5V (1) 0,0...2,5 В
uint8_t range1 Диапазон измерения 2-го канала
uint8_t range2 Диапазон измерения 3-го канала
uint8_t range3 Диапазон измерения 4-го канала

61
2004 –2011 Fastwel Co Ltd. [Link]

5.5.5. Модули аналогового вывода

[Link]. AIM730
Структура представляет 2-канальный модуль аналогового вывода AIM730 (0...20 мА/4...20 мА) и
имеет следующий вид:
struct _AIM730
{
AIM73X_INPUTS inputs;
AIM73X_OUTPUTS outputs;
AIM730_CONFIGURATION configuration;
};

Описание полей структуры AIM73X_INPUTS приведено в табл. 52.


Таблица 52. Структура AIM73X_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован. Отдельные
биты имеют следующее назначение:
бит0: установлен при перегрузке на 1-м канале. Сбрасывается после каждой записи в канал;
бит1: установлен при перегрузке на 2-м канале. Сбрасывается после каждой записи в канал;
uint8_t diagnostics
бит2: установлен, если для 1-го канала задан диапазон 4...20 мА, и сброшен, если для 1-го
канала задан диапазон 0...20 мА;
бит3: установлен, если для 2-го канала задан диапазон 4...20 мА, и сброшен, если для 2-го
канала задан диапазон 0...20 мА
Текущее значение сигнала на первом канале. Значение тока I (мА) по коду вычисляется
следующим образом:
uint16_t outputValue0
I = Код * 0,00030517 для диапазона 0...20 мА
I = 4,0 + Код * 0, 00024414для диапазона 4...20 мА
uint16_t outputValue0 Текущее значение сигнала на втором канале

Описание полей структуры AIM73X_OUTPUTS приведено в табл. 53.


Таблица 53. Структура AIM73X_OUTPUTS
Тип поля Имя поля Назначение
Устанавливаемое значение на выходе первого канала. Код, записываемый в канал по
значению тока I (мА) вычисляется следующим образом:
uint16_t output0
диапазон 0...20 мА Код = I / 0,00030517
диапазон 4...20 мА Код = (I – 4,0) / 0,00024414
Устанавливаемое значение на выходе второго канала. Код, записываемый в канал по
значению тока I (мА) вычисляется следующим образом:
uint16_t output1
диапазон 0...20 мА Код = I / 0,00030517
диапазон 4...20 мА Код = (I – 4,0) / 0,00024414

Описание полей структуры AIM730_CONFIGURATION приведено в табл. 54.


Таблица 54. Структура AIM730_CONFIGURATION
Тип поля Имя поля Назначение
Начальное значение на 1-м канале сразу после включения питания до первой записи в
uint16_t outputInitialValue0 канал индивидуальным или групповым запросом. Вычисляется в соответствии с
соотношениями в табл. 53.
Начальное значение на 2-м канале сразу после включения питания до первой записи в
uint16_t outputInitialValue1 канал индивидуальным или групповым запросом. Вычисляется в соответствии с
соотношениями в табл. 53.
Безопасное значение на 1-м канале при отсутствии запросов со стороны мастера FBUS
в течение времени, заданного параметром hostWatchdogInterval в области общих
uint16_t outputSafeValue0
изменяемых параметров модуля (см. табл. 6). Вычисляется в соответствии с
соотношениями в табл. 53.
Безопасное значение на 2-м канале при отсутствии запросов со стороны мастера FBUS
в течение времени, заданного параметром hostWatchdogInterval в области общих
uint16_t outputSafeValue1
изменяемых параметров модуля (см. табл. 6). Вычисляется в соответствии с
соотношениями в табл. 53.
uint8_t temperatureZonesSupport зарезервировано
Диапазон выходного сигнала 1-го канала:
uint8_t outputRange0 AIM730_OUTPUT_RANGE___0_20MA (0) 0...20 мА
AIM730_OUTPUT_RANGE___4_20MA (1) 4...20 мА

62
2004 –2011 Fastwel Co Ltd. [Link]

Тип поля Имя поля Назначение


Диапазон выходного сигнала 2-го канала:
uint8_t outputRange1 AIM730_OUTPUT_RANGE___0_20MA (0) 0...20 мА
AIM730_OUTPUT_RANGE___4_20MA (1) 4...20 мА
Ограничение скорости нарастания выходного сигнала на 1-м канале. При равенстве 0
uint8_t slewRateLimit0 ограничение не используется. См. макроопределения AIM730_SLEW_RATE__DAC в
заголовочном файле fbus/applayer/fiom.h
Ограничение скорости нарастания выходного сигнала на 1-м канале. При равенстве 0
uint8_t slewRateLimit1 ограничение не используется. См. макроопределения AIM730_SLEW_RATE__DAC в
заголовочном файле fbus/applayer/fiom.h

[Link]. AIM731
Структура представляет 2-канальный модуль аналогового вывода AIM731 (0...10 В/–10...+10 В) и
имеет следующий вид:
struct _AIM731
{
AIM73X_INPUTS inputs;
AIM73X_OUTPUTS outputs;
AIM731_CONFIGURATION configuration;
};

Описание полей структуры AIM73X_INPUTS приведено в табл. 55.


Таблица 55. Структура AIM73X_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован. Отдельные
биты имеют следующее назначение:
бит0: установлен при перегрузке на 1-м канале. Сбрасывается после каждой записи в канал;
бит1: установлен при перегрузке на 2-м канале. Сбрасывается после каждой записи в канал;
uint8_t diagnostics
бит2: установлен, если для 1-го канала задан диапазон 10 В, и сброшен, если для 1-го канала
задан диапазон 0...10 В;
бит3: установлен, если для 2-го канала задан диапазон 10 В, и сброшен, если для 2-го канала
задан диапазон 0...10 В.
Текущее значение сигнала на первом канале. Значение напряжения U (В) по коду
вычисляется следующим образом:
uint16_t outputValue0
U = Код * 0,00015259 для диапазона 0...10 В
U = Код * 0,00030518 – 10,0 для диапазона –10...+10 В
uint16_t outputValue0 Текущее значение сигнала на втором канале

Описание полей структуры AIM73X_OUTPUTS приведено в табл. 56.


Таблица 56. Структура AIM73X_OUTPUTS
Тип поля Имя поля Назначение
Устанавливаемое значение на выходе первого канала. Код, записываемый в канал по
значению тока U (В) вычисляется следующим образом:
uint16_t output0
диапазон 0...10 В Код = U / 0,00015259
диапазон –10...+10 В Код = (U + 10,0)/0,00030518
Устанавливаемое значение на выходе второго канала. Код, записываемый в канал по
значению тока U (В) вычисляется следующим образом:
uint16_t output1
диапазон 0...10 В Код = U / 0,00015259
диапазон –10...+10 В Код = (U + 10,0)/0,00030518

Описание полей структуры AIM731_CONFIGURATION приведено в табл. 57.


Таблица 57. Структура AIM731_CONFIGURATION
Тип поля Имя поля Назначение
Начальное значение на 1-м канале сразу после включения питания до первой записи в
uint16_t outputInitialValue0 канал индивидуальным или групповым запросом. Вычисляется в соответствии с
соотношениями в табл. 56.
Начальное значение на 2-м канале сразу после включения питания до первой записи в
uint16_t outputInitialValue1 канал индивидуальным или групповым запросом. Вычисляется в соответствии с
соотношениями в табл. 56.
Безопасное значение на 1-м канале при отсутствии запросов со стороны мастера FBUS
в течение времени, заданного параметром hostWatchdogInterval в области общих
uint16_t outputSafeValue0
изменяемых параметров модуля (см. табл. 6). Вычисляется в соответствии с
соотношениями в табл. 56.
uint16_t outputSafeValue1 Безопасное значение на 2-м канале при отсутствии запросов со стороны мастера FBUS

63
2004 –2011 Fastwel Co Ltd. [Link]

Тип поля Имя поля Назначение


в течение времени, заданного параметром hostWatchdogInterval в области общих
изменяемых параметров модуля (см. табл. 6). Вычисляется в соответствии с
соотношениями в табл. 56.
uint8_t temperatureZonesSupport зарезервировано
Диапазон выходного сигнала 1-го канала:
uint8_t outputRange0 AIM731_OUTPUT_RANGE___0_10V (0) 0...10 В
AIM731_OUTPUT_RANGE___DIFF10V (1) –10...+10 В
Диапазон выходного сигнала 2-го канала:
uint8_t outputRange1 AIM731_OUTPUT_RANGE___0_10V (0) 0...10 В
AIM731_OUTPUT_RANGE___DIFF10V (1) –10...+10 В
Ограничение скорости нарастания выходного сигнала на 1-м канале. При равенстве 0
uint8_t slewRateLimit0 ограничение не используется. См. макроопределения AIM731_SLEW_RATE__DAC в
заголовочном файле fbus/applayer/fiom.h
Ограничение скорости нарастания выходного сигнала на 1-м канале. При равенстве 0
uint8_t slewRateLimit1 ограничение не используется. См. макроопределения AIM731_SLEW_RATE__DAC в
заголовочном файле fbus/applayer/fiom.h

5.5.6. Специальные модули

[Link]. OM751
Структура представляет модуль ввода напряжения на ножевые контакты распределения
потенциала питания входных и выходных цепей многоканальных модулей Fastwel I/O.
struct _OM751
{
DIM_INPUTS inputs;
};

Таблица 58. Структура DIM_INPUTS


Тип поля Имя поля Назначение
uint8_t diagnostics Диагностический виртуальный канал модуля. Должен быть равен 0.
Битовая маска диагностики напряжения питания:
Бит0 =1: отсутствует или вышел из строя предохранитель, уровень входного напряжения
uint8_t inputStates ниже 12 В
Бит1 =1: предохранитель исправен и уровень входного напряжения выше 15 В
Бит2 =1: уровень входного напряжения выше 30 В

Модуль не имеет специфических изменяемых параметров.

[Link]. NIM741
Структура представляет модуль универсального асинхронного адаптера последовательного
интерфейса (UART) RS-485 NIM741.
struct _NIM741
{
NIM74X_INPUTS inputs;
NIM74X_OUTPUTS outputs;
NIM74X_CONFIGURATION configuration;
};

Описание структур областей модуля приведено в табл. 59–61.

64
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 59. Структура NIM74X_INPUTS


Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен быть
uint8_t diagnostics
равен 0.
Бит0 Статус буфера приема модуля: =0 – нет данных; =1 – есть данные
Статус буфера передачи модуля: =0 – нет данных; =1 – есть данные, не переданные в
Бит1
RS-485
Признак переполнения буфера приема модуля: =0 – нет переполнения; =1 – есть
Бит2
переполнение
Признак переполнения буфера передачи модуля: =0 – нет переполнения; =1 – есть
Бит3
переполнение
Признак переполнения сдвигового регистра UART: =1 – микропрограмма не успевает
Бит4
извлекать данные из UART
uint16_t status
Бит5 Признак ошибки кадра: =1 – Frame Error
Бит6 Признак ошибки четности: =1 – Parity Error
Бит синхронизации команд управления. Последнее значение бита управления
передачей команд модулю (Бит0 в канале управления модулем control), полученное
Бит7
модулем от приложения, для которого модуль выполнил
команду управления.
Последнее значение tx_Control области выходных данных, полученное модулем по
Бит8..15 шине FBUS, для которого модуль передает или передал tx_Data[0]..tx_Data[31] в канал
RS-485
uint16_t FIFOLength Количество байт в буфере приема модуля
Канал управления приемом. Модуль при очередной передаче данных из FIFO в
uint8_t rx_Control
rx_Data[0]…rx_Data[31] изменяет значение rx_Control (увеличивает по кругу)
Количество байт данных из внутреннего буфера приема, передаваемых модулем в текущем цикле
uint8_t rx_Length обмена по FBUS. Диапазон значений: от 0 до 32. При нулевом значении программе пользователя
не требуется забирать данные из соответствующих каналов модуля и как-либо интерпретировать.
uint8_t rx_Data[32] Принятые данные. Количество «полезных» байт определяется значением rx_Length.

Таблица 60. Структура NIM74X_OUTPUTS


Тип поля Имя поля Назначение
Канал управления модулем
Бит управления передачей команд модулю. Изменение данного бита прикладной
программой сигнализирует модулю о том, что он должен выполнить команды
Бит0 управления. Признаки команд содержатся в битах Бит1…15 данного канала. После
выполнения команд, модуль копирует его значение в бит синхронизации команд
управления статусного канала (бит 7 поля status области входных данных).
Признак команды передачи данных из FIFO приема модуля в область
rx_Data[0]…rx_Data[31]. Если модуль определяет поступление новой команды
управления по изменению бита 0 поля control, и данный бит установлен, модуль
Бит1
переписывает данные из FIFO приема в rx_Data[0]…rx_Data[31] и устанавливает новое
значение rx_Length. В противном случае содержимое rx_Data[0]…rx_Data[31] и
rx_Length не изменяется.
Признак команды запрещения/разрешения передачи данных из FIFO передачи в UART.
uint16_t control
Если модуль определяет поступление новой команды управления по изменению бита 0
Бит2 поля control, производится анализ значения данного бита. Если он установлен,
передача исходящих данных из FIFO передачи в UART запрещается, а если сброшен –
разрешается.
Признак команды сброса FIFO приема. Если модуль определяет поступление новой
команды управления (изменен бит управления передачей команд – бит0 поля control) и
Бит3
данный бит установлен, модуль удаляет из буфера приема все принятые на данный
момент данные.
Признак команды сброса FIFO передачи. Если модуль определяет поступление новой
команды управления (изменен бит управления передачей команд – бит0 поля control) и
Бит4
данный бит установлен, модуль удаляет из FIFO передачи все находящиеся в нем на
данный момент данные.
Бит5..15 Резерв
Канал управления передачей. Содержит значение счетчика, изменение которого сигнализирует
uint8_t tx_Control модулю о том, что он должен взять байты из массива tx_Data в количестве, заданном полем
tx_Length, и записать в FIFO передачи.
uint8_t tx_Length Количество байт, которые модуль должен взять из массива tx_Data и записать в FIFO передачи
Данные для записи в FIFO передачи. Количество «полезных» байт определяется значением
uint8_t tx_Data[32]
tx_Length.

65
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 61. Структура NIM74X_CONFIGURATION


Тип поля Имя поля Назначение
Режим функционирования:
uint8_t mode UART_MODE__RS485 (0) RS-485
UART_MODE__RS422 (1) зарезервировано
Скорость обмена:
UART_BAUDRATE__300BPS (0) 300 бит/с
UART_BAUDRATE__1200BPS (1) 1200 бит/с
UART_BAUDRATE__2400BPS (2) 2400 бит/c
UART_BAUDRATE__4800BPS (3) 4800 бит/c
uint8_t baudrate UART_BAUDRATE__9600BPS (4) 9600 бит/c
UART_BAUDRATE__14400BPS (5) 14400 бит/c
UART_BAUDRATE__19200BPS (6) 19200 бит/c
UART_BAUDRATE__38400BPS (7) 38400 бит/c
UART_BAUDRATE__57600BPS (8) 57600 бит/c
UART_BAUDRATE__115200BPS (9) 115200 бит/c
Количество бит данных:
uint8_t databits UART_DATABITS__8BITS (0) 8
UART_DATABITS__7BITS (1) 7
Количество стоповых бит:
uint8_t stopbits UART_STOPBITS__1BIT (0) 1
UART_STOPBITS__2BITS (1) 2
Режим контроля четности:
UART_PARITY_NONE (0) нет
uint8_t parity
UART_PARITY_EVEN (1) Even
UART_PARITY_ODD (2) Odd

[Link]. NIM742
Структура представляет модуль универсального асинхронного адаптера последовательного
интерфейса (UART) RS-232C NIM742.
struct _NIM742
{
NIM74X_INPUTS inputs;
NIM74X_OUTPUTS outputs;
NIM742_CONFIGURATION configuration;
};

Описание полей структур NIM74X_INPUTS и NIM74X_OUTPUTS приведено в табл. 59–60 п.


[Link].
Структура NIM742_CONFIGURATION совпадает с NIM74X_CONFIGURATION (см. табл. 61 п.
[Link]), за исключением значений поля mode, для которого определены следующие значения режима
управления потоком обмена:
// Управление осуществляется прикладной программой
#define UART_FLOW_CONTROL_MODE__NONE 0
// Управление осуществляется аппаратно
#define UART_FLOW_CONTROL_MODE__HARDWARE 1

[Link]. DIM764_0_0
Структура представляет универсальный модуль дискретного ввода DIM764 исполнений –01 и –02,
который содержит 8 каналов счёта входных импульсов. Каналы разбиты на пары "ведущий-ведомый".
Каждый канал может работать в следующих режимах:
1. Измерение периода входного сигнала;
2. Измерение интервала между импульсами на соседних каналах пары;
3. Измерение сдвига фазы сигнала в паре ведущий-ведомый (только ведомый канал);
4. Безусловный счётчик входных импульсов (условный счётчик доступен для ведущих
каналов, подсчёт импульсов в ведущем канале будет производиться при наличии
активного сигнала на входе ведомого канала).
В модуле предусмотрена возможность фильтрации входного сигнала для каждого канала. Частота
дискретизации фильтра может быть установлена равной 50 МГц, 5 МГц либо 2,5 МГц.
При измерении периода, интервала или фазы частота заполнения счётчика канала равна 50 МГц.
66
2004 –2011 Fastwel Co Ltd. [Link]

struct _DIM764_0_0
{
DIM764_0_0_INPUTS inputs;
DIM764_0_0_OUTPUTS outputs;
DIM764_0_0_CONFIGURATION configurations;
};

Описание структур областей модуля приведено в табл. 62–64.


Таблица 62. Структура области входных данных DIM764_0_0_INPUTS
Тип поля Имя поля Назначение
Диагностический виртуальный канал модуля. В модуле физически не реализован, должен быть
равен 0. Остальные значения канала:
1 инициализация записи прошивки FPGA
uint8_t diagnostics 2 выполняется запись прошивки в FPGA
3 подготовка к запуску FPGA
4 FPGA не сконфигурирована
5 не найдена требуемая прошивка для FPGA
uint8_t controlState Последнее значение поля control, полученное модулем по FBUS
Состояние каналов. Двоичная единица в битовой позиции, соответствующей номеру входа,
uint8_t channelsState сигнализирует о неопределенном состоянии канала (отсутствие несущей, либо пропуск импульсов
в ведомом канале в режиме измерения фазы))
Массив значений на каналах. Ниже описывается назначение пары элементов массива values для
uint32_t values[8]
смежных каналов с четным и нечетным номерам. Назначение остальных пар аналогично.
В режиме счетчика импульсов: количество импульсов на канале
В режиме измерения периода: количество импульсов частоты заполнения 50 МГц,
укладывающихся в период входного сигнала.
Частота в Гц вычисляется по формуле:
double frequencyValue = 50000000.0/ ((double)channelValue);
где:
frequencyValue – значение частоты в Гц типа double
values[0]
channelValue – значение на канале
В режиме измерения интервала: количество импульсов частоты заполнения 50 МГц,
укладывающихся между соседними фронтами входного сигнала. Временной интервал в мкс
вычисляется по формуле:
T = channelValue * 50;
В режиме измерения сдвига фазы значение на данном канале используется в качестве делителя
при вычислении сдвига фазы в градусах
В режимах измерения периода, интервала и счета импульсов соответствует тому, что указано
для values[0]
В режиме измерения фазового сдвига значение сдвига между сигналами на каналах 0 и 1
вычисляется по формуле:
values[1] double phaseShift = 360.0 * ((double)ch2)/ ((double)ch1);
где:
phaseShift – значение сдвига фазы в градусах;
ch1 – значение на первом канале;
ch2 – значение на втором канале

Таблица 63. Структура области выходных данных DIM764_0_0_OUTPUTS


Тип поля Имя поля Назначение
uint8_t control Контрольный код обновления данных выходов. Должен быть равен control + 1.
Байт сброса счётчиков каналов(только для каналов функционирующих в режиме счёта входных
uint8_t resetCounters импульсов). Двоичная единица в битовой позиции, соответствующей номеру дискретного канала,
сбрасывает счётчик данного канала. Реальный сброс произойдет при изменении control.

Таблица 64. Структура области специфических изменяемых параметров DIM764_0_0_CONFIGURATION


Тип поля Имя поля Назначение
uint8_t version Код типа прошивки FPGA. Должен быть равен 0.
uint8_t subVersionКод исполнения прошивки FPGA. Должен быть равен 0.
Частота фильтрации/заполнения:
DIM764_0_0_FILTER_OPTIONS_50Hz (0) 50,0 Гц
uint8_t filterOption
DIM764_0_0_FILTER_OPTIONS_25Hz (1) 25,0 Гц
DIM764_0_0_FILTER_OPTIONS_2_5Hz (2) 2,5 Гц
DIM764_0_0_CHANNEL_CFG channelsConfig[8] Конфигурация отдельных входных каналов (см. табл. 76).

67
2004 –2011 Fastwel Co Ltd. [Link]

Таблица 65. Структура конфигурации входного канала DIM764_0_0_CHANNEL_CFG


Тип поля Имя поля Назначение
Режим работы пары смежных каналов:
DIM764_0_0_INPUT_MODE_PERIOD (0) Измерение периода
DIM764_0_0_INPUT_MODE_INTERVAL (1) Измерение интервала между двумя
последовательными импульсами входного
сигнала
uint8_t inputMode DIM764_0_0_INPUT_MODE_PHASE (2) Измерение сдвига фазы сигнала в паре ведущий-
ведомый. Данный режим доступен только у
ведомого канала. Ведущий должен быть настроен
на режим измерения периода.
DIM764_0_0_INPUT_MODE_COUNTER (3) Счетчик импульсов
DIM764_0_0_INPUT_MODE_DISABLED (4) Отключен
Битовая маска параметров канала:
Бит 0 =1: Устанавливается только для ведущего канала. Подсчёт импульсов на ведущем канале
производится только если на входе ведомого канала установлен разрешающий
uint8_t paramsMask сигнал(активная полярность сигнала определяется настройкой ведомого канала)
Бит 1 =1: Использовать фильтрацию входного сигнала
Бит 2 =0: активный уровень высокий/передний фронт
=1: активный уровень низкий/задний фронт

68
2004 –2011 Fastwel Co Ltd. [Link]

ПРИЛОЖЕНИЕ A . ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ


Версия Дата Ссылка Статус Примечания
2.00 03.07.2010 Документ создан

изменен Реализована поддержка системы базовых типов pstdint.h.


2.10 14.06.2011 Документ Изменен путь и имя к заголовочному файлу API с
fbus/fp_app.h на fbus/protocol/fbus2/app/f2_app.h.

Полностью переработаны структура и состав прикладного


API. Асинхронный интерфейс группового обмена заменен на
синхронный, исключен собственный поток исполнения.
2.20 26.04.2012 Документ изменен
Реализована поддержка модуля NIM745 для операционных
систем Windows XP, Windows CE 5.0, QNX 6, Linux.
Добавлен драйвер адаптера FBUS CPC150 для Linux.

69

Вам также может понравиться