Модули KM6551 позволяют организовать беспроводной канал связи (стандарт IEEE 802.15.4) между ПЛК. Расстояние – до 300 м в зоне прямой видимости. Вариантов организации сети три: «точка-точка», «главный-ведомый» (до 7 ведомых), «широковещательный» (7+ ведомых). В последнем случае данные передаёт только главный модуль, ведомые являются только «слушателями» сети, ничего не отдавая. Вещание ведётся на частотах 2405, 2410, 2415… 2480 МГц. Примерный цикл обмена – 20*N мс, где N – количество ведомых.
Программная реализация беспроводного обмена начинается с библиотеки
В нашем примере используется тип
Создаётся «Multi link» к его «Inputs/Outputs» (к слову, на момент написания этого поста нигде в документации об этом ничего не сказано), ведущий на наши массивы
Жмём OK. Активируем конфигурацию и приступаем к разбору программы главного ПЛК. Тут всё ещё проще. Сначала инициализируем канал (в нашем случае №1):
Затем организуем передачу/приём данных от ведомого:
Для ведомого (в моём случае это BC9050) разрабатывается полностью аналогичный проект за исключением одной детали. В качестве ФБ приёма/передачи данных используется
Программная реализация беспроводного обмена начинается с библиотеки
TcKM6551.lib
. Для главного ПЛК (у меня это CX1010-0111) используются два фукциональных блока: один (fb_KM6551_MAIN
) – для инициализации канала, второй (fb_KM6551_Master_10BYTE
) – для циклического записи/чтения. Как видно, за один программный цикл главный передаёт и принимает по 10 байт данных. Это 80 переменных типа BOOL
, 5 переменных типа WORD/INT
, или же 2 переменные типа DWORD/DINT
.(*Объявление ФБ и переменных*)
fbMainKM6551: fb_KM6551_MAIN;
fbMasterKM6551: fb_KM6551_Master_10BYTE;
KM6551_DATA_IN AT %I*: ARRAY [1..12] OF BYTE;
KM6551_DATA_OUT AT %Q*: ARRAY [1..12] OF BYTE;
DATA_IN: ARRAY [0..4] OF INT;
DATA_OUT: ARRAY [0..4] OF INT;
В нашем примере используется тип
INT
, отсюда размерность массива [0..4]
– пять переменных. Следует обратить внимание, что входыfb_KM6551_MAIN.KM6551_IN
и fb_KM6551_MAIN.KM6551_OUT
есть ни что иное, как «process data» нашего радио-модуля KM6551. Они должны быть привязаны к нашей конфигурации. Для этого в System Manager’e выбирается искомый модуль (на рисунке – «Term 9(KM6551)»):Создаётся «Multi link» к его «Inputs/Outputs» (к слову, на момент написания этого поста нигде в документации об этом ничего не сказано), ведущий на наши массивы
KM6551_DATA_IN
и KM6551_DATA_OUT
:Жмём OK. Активируем конфигурацию и приступаем к разбору программы главного ПЛК. Тут всё ещё проще. Сначала инициализируем канал (в нашем случае №1):
(*Инициализация канала*)
fbMainKM6551(
bActivate := TRUE,
iChannal_Set := 1,
KM6551_IN := KM6551_DATA_IN,
KM6551_OUT := KM6551_DATA_OUT);
Затем организуем передачу/приём данных от ведомого:
(*Приём/передача*)
fbMasterKM6551(
bStart := fbMasterKM6551.bActive,
iSlaveAddr := 1,
strLinkData := fbMasterKM6551.strLinkData,
ptData_IN := ADR(DATA_IN),
iLenData_IN := SIZEOF(DATA_IN),
ptData_OUT := ADR(DATA_OUT),
iLenData_OUT := SIZEOF(DATA_OUT));
Для ведомого (в моём случае это BC9050) разрабатывается полностью аналогичный проект за исключением одной детали. В качестве ФБ приёма/передачи данных используется
fb_KM6551_Slave_10BYTE
.
Комментариев нет:
Отправить комментарий