Программируем контроллер модульной линейки FASTWEL I/O CPM713 — АСУ ТП: сообщество инженеров

Программируем контроллер модульной линейки FASTWEL I/O CPM713

В статье приводятся ответы на часто задаваемые вопросы пользователей системы FASTWEL I/O CPM713. Описываются готовые решения в области подключения, диагностики и программирования контроллера.

Вопрос

Как оценить уровень загрузки процессора CPM713?

Ответ

Оценить уровень загрузки процессора СРМ713 можно следующими способами.
Способ 1: визуально оценить степень свечения верхних светодиодов RUN/ERR и APP на панели индикаторов (рис. 1).

Рис. 1. Панель индикаторов

Если светодиод RUN/ERR светится красным цветом, то в приложении имеется более одной циклической задачи и ни одна из них не укладывается в заданный период. Если индикатор светится зелёным цветом, то в приложении имеется единственная циклическая задача и она хотя бы иногда успевает укладываться в заданный период, либо в приложении имеется более одной циклической задачи и хотя бы одна из них хотя бы иногда укладывается в заданный период. Прерывистое свечение красным цветом индикатора APP означает, что все циклические задачи никогда не успевают укладываться в заданный период и хотя бы одна циклическая задача иногда успевает укладываться в заданный период. Зелёный цвет индикатора АРР означает, что все циклические задачи всегда успевают укладываться в заданный период.
Способ 2: программным путём проверить статус битовых полей диагностики исполнения приложения и счётчики циклов и запаздываний (рис. 2).

Рис. 2. Диагностические каналы среды исполнения CODESYS

В конфигурации контроллера имеется секция Diagnostics–Application, в которой определены два входных канала, позволяющих приложению во время выполнения получить общее количество циклов всех циклических задач и общее количество циклов, во время которых циклические задачи не успели завершить исполнение в течение заданных периодов. Назначение каналов представлено в табл. 1.

Таблица 1. Описание секции Diagnostics–Application конфигурации контроллера узла

Способ 3: воспользоваться функцией F_IecTasks_getInfo из библиотеки FastwelTasksExchange.lib. Данная функция принимает указатель на переменную типа F_TASK_INFO в качестве первого параметра и возвращает диагностическую информацию о задаче, номер которой передан вторым параметром. Если задача с данным номером отсутствует в системе, функция возвращает 0.
Структура F_TASK_INFO определена следующим образом:

TYPE F_TASK_INFO :
STRUCT
period_us : DWORD;

(* период циклической задачи в мкс или для ациклической задачи – 16#FFFFFFFF *)

cyclesCount : DWORD;

(* количество циклов, выполненных задачей *)

overrunsCount : DWORD;

(* количество запаздываний циклической задачи *)

minExecutionTime_us : DWORD;

(* минимальное время ввода данных и выполнения пользовательского кода, мкс *)

maxExecutionTime_us : DWORD;

(* максимальное время ввода данных и выполнения пользовательского кода, мкс *)

name : STRING(23);

(* имя задачи *)

startCycleTickCount_us : DWORD;

(* счётчик микросекунд в момент последнего запуска задачи перед вызовом F_IecTasks_getInfo *)

lastExecutionTime_us : DWORD;

(* время ввода данных и выполнения пользовательского кода в мкс в цикле, предшествующем вызову F_IecTasks_getInfo *)

END_STRUCT
END_TYPE

Номер задачи, передаваемый в качестве второго параметра, является индексом задачи (начиная с 0) в древовидном списке ресурса Task Configuration среды разработки CODESYS.
При вызове F_IecTasks_getInfo в контексте какой-либо циклической задачи в качестве номера может использоваться значение 16#FFFF. В этом случае функция вернёт статистику для текущей циклической задачи. Пример программы с использованием функции F_IecTasks_getInfo приведён на рис. 3 и 4.

Рис. 3. Пример использования функции F_IecTasks_getInfo

Для рассмотренной в примере задачи:

period_us = 80000

– период выполнения, мкс;

cyclesCount = 695

– количество циклов, выполненных задачей;

overrunsCount = 0

– количество циклов, на которых задача не уложилась в заданный период исполнения;

minExecutionTime_us = 40

– минимальное время исполнения, мкс;

maxExecutionTime_us = 74

– максимальное время исполнения, мкс;

name = ‘NewTask’

– имя задачи;

startCycleTickCount_us = 907070686

– счётчик микросекунд в момент последнего запуска задачи перед вызовом F_IecTasks_getInfo;

lastExecutionTime_us = 45

– время ввода данных и выполнения пользовательского кода в мкс в цикле, предшествующем вызову F_IecTasks_getInfo.

Вопрос

Как установить связь с контроллером CPM713 в среде программирования CODESYS V2.3?

Ответ

Если контроллер новый, только что распакован, то соединиться с ним можно по адресу 10.0.0.1 (маска 255.0.0.0). Также с контроллером можно соединиться по интерфейсу «точка–точка» (P2P) через COM-порт с помощью кабеля, входящего в комплект поставки.
В случае если контроллер CPM713 уже использовался ранее, но по каким-то причинам нет информации о его коммуникационных параметрах и отсутствует рабочий проект, загруженный ранее, то для установки связи с контроллером необходимо выполнить следующую последовательность действий.

  1. Перевести контроллер в безопасный режим:
    1.1. Перевести первый переключатель в положение ON (вправо).
    1.2. Выключить, а затем включить питание контроллера.
    1.3. Дождаться загрузки контроллера (попеременное свечение индикатора RUN/ERR зелёным и красным цветом).
    1.4. Вернуть первый переключатель в положение OFF (влево), чтобы при следующей перезагрузке питания контроллер не ушёл в безопасный режим.
    1.5. Проверить подключение к контроллеру: IP 10.0.0.1, маска подсети 255.0.0.0.
    Если рабочий проект существует, то дополнительно к п. 1 необходимо сделать следующее.
  2. Загрузить рабочий проект в контроллер:
    2.1. Открыть проект в среде программирования CODESYS V2.3.
    2.2. На вкладке Ресурсы (Resourсes) в окне Конфигурация ПЛК (PLC Configuration) в поле Ethernet Multiprotocol Port установить допустимые в используемом сегменте сети параметры со значениями IP-адреса, маски подсети и адреса шлюза (рис. 5).
Рис. 5. Окно сетевых параметров
  1. .3. Открыть окно Параметры подключения (Communication Parameters) из меню Онлайн (Online). Добавить новое соединение (New) и выбрать пункт Modbus TCP (Fastwel Modbus TCP). По умолчанию в строке Address указывается заводской адрес контроллера 10.0.0.1.
    2.4. Загрузить проект в контроллер командой Онлайн (Online)/Подключение (Login).
    2.5. После загрузки проекта связь среды с контроллером оборвётся, потому что IP-адрес контроллера изменится на новый.
    2.6. Чтобы подключиться ещё раз, необходимо в окне Параметры коммуникации в строке Address изменить адрес контроллера с 10.0.0.1 на нужный.

Вопрос

Можно ли программным способом установить и прочитать пользовательский серийный номер контроллера CPM713 или его MAC-адрес с целью привязать программу к данному контроллеру?

Ответ

Установить, а затем прочитать пользовательский серийный номер контроллера CPM713 можно с помощью функций FwPlatformSetSerialNumber и FwPlatformGetSerialNumber системной библиотеки FastwelPlatformControl.lib. Пример использования этих функций показан на рис. 6 и 7.

Рис. 6. Пример использования функций библиотеки FastwelPlatformControl.lib
Рис. 7. Результат выполнения программного кода

Установить и прочитать MAC-адрес контроллера невозможно.

Вопрос

Существуют ли у контроллеров CPM713 какие-либо ограничения на запись значений через указатель POINTER в переменные Modbus?
В пояснение вопроса рассмотрим пример кода:

pt_write[1]:=ADR(Out_m_Data01);
pt_write[1]^:=Data_out[1];
pt_write[2]:= pt_write[1]+2;
pt_write[2]^:= Data_out[2];

Out_m_Data01 – выходная переменная Modbus.
Считаем её адрес. Затем к этому адресу прибавляем 2 (2 байта) и получаем адрес второй выходной переменной Modbus.
В самой среде CODESYS показано, что значения предаются на выход (рис. 8):

Рис. 8. Окно «Конфигурация ПЛК»

Но в ОРС-сервере передаётся значение только для первой переменной (рис. 9):

Рис. 9. Окно «Конфигурация ОРС-сервера»

В чём может быть проблема?
Например, задача состоит в том, что существует некий внутренний массив данных Data_internal[i], и пользователь хочет из этого массива передавать данные на выходные переменные Modbus.
Если там большое количество переменных Modbus, то вручную это не очень удобно делать.

Ответ

Использование этого приема:

pt_write[1]:=ADR(Out_m_Data01);

(* и т.д. *)
без специальных мер приводит к тому, что среда разработки CODESYS сгенерирует единственную ссылку на выходную часть образа процесса, соответствующую Out_m_Data01, а остальная область Input Registers не будет обновляться из приложения.
В результате изменения по Modbus будут видны только для первого регистра.
«Специальные меры» состоят в том, чтобы явно сослаться на желаемую область адресов в образе процесса. Скажем, если есть такое объявление:

VAR CONSTANT
ARRAY_SZ : INT := 3;
END_VAR
VAR
Area:ARRAY[1..ARRAY_SZ] OF WORD:=5,6,7;
MbSlaveArea AT %QB2561 : ARRAY [1..ARRAY_SZ] OF WORD;
p_mb : POINTER TO WORD;
idx : INT;
END_VAR,

то в теле программы достаточно написать:

MbSlaveArea;

а затем работать с указателями по следующему примеру:

p_mb := ADR(MbSlaveArea[1]);
FOR idx := 1 TO ARRAY_SZ DO
p_mb^ := Area[idx];
p_mb := p_mb + SIZEOF(p_mb^);
END_FOR

Результат выполнения программного кода представлен на рис.10.

Рис. 10. Результат выполнения программного кода

На рис. 11 показано окно программы “Fastwel Modbus OPC Server”, где отображаются значения трёх переменных.

Рис. 11. Окно программы «Fastwel Modbus OPC Server»

Вопрос

При разработке модели «Синусоида» выводятся графики в окне цифровой трассировки (рис. 12).

Рис. 12. Окно цифровой трассировки

В режиме с отключённым многоканальным видом не получается задать фиксированный диапазон по оси Y. Как можно этого добиться? Работа ведётся в эмуляторе.

Ответ

Для задания фиксированного диапазона необходимо:

  1. В процессе трассировки щёлкнуть правой кнопкой над областью трассировки и выбрать Масштаб по Y (рис. 13).
Рис. 13. Контекстно-зависимое меню в окне цифровой трассировки

В диалоговой панели Масштаб по оси Y снять флажок Автоматически (рис. 14).

Рис. 14. Окно «Масштаб по оси Y»

Затем ввести номер трассы в поле Канал, требуемые минимальное и максимальное значения в соответствующие поля и нажать ОК. Область отображения трассы для соответствующего канала будет визуализирована в заданных пределах (рис. 15).

Рис. 15. Отображение трассы

Более подробная информация приведена в справочной системе и документации на CODESYS 2.3 (рис. 16). ●

Рис. 16. Окно справочной системы CODESYS 2.3

Источник: https://www.cta.ru/articles/spravochnik/voprosy-otvety/124337/

🔗 Программируем контроллер модульной линейки FASTWEL I/O CPM713

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.

Прокрутить вверх