ЖУРНАЛ СТА №2/2023

языке программирования ST. Язык про- граммирования ST относится к группе языков со строгой, статической, явной типизацией переменных. Все переменные до использования в тексте программы должны быть объ- явлены в отдельной секции описания переменных. Переменные не могут ме- нять свой тип по ходу выполнения про- граммы, в выражениях типы не приво- дятся по умолчанию (только с помощью специальных функций), в выражениях литералы должны иметь вид, соответ- ствующий типу переменной. В окне описания переменных описы- ваем переменные программы DIO_AIO. Нам будет достаточно использовать ло- кальные переменные, объявленные в блоке VAR ... END_VAR и имеющие область видимости только внутри POU. Для доступа к портам ввода и вывода дискретных и аналоговых сигналов в языках стандарта ГОСТ Р МЭК 61131-3 (IEC 61131-3) [6] используются так на- зываемые прямо-адресуемые перемен- ные (2.4.5. Directly represented variables руководства OPEN PCS [9]). Для входных сигналов адреса регистров расположе- ны в области I. Для выходных сигналов адреса регистров расположены в обла- сти Q. Для модулей GCAN cопоставле- ние адресов регистров и контактов це- пей модулей ввода и вывода описаны в соответствующих руководствах по экс- плуатации [2], [3], [4], [5] в разделах 2.4. При подключении нескольких моду- лей задача программиста заключает- ся в определении соответствующих смещений групп адресов для каждого модуля. На рис. 20 приведены рассчитанные группы адресов, зарезервированных контроллером для модулей GC-1018, GC- 2018, GC-3624, GC-4662 и проецируемых на области I и Q в проекте DIO_AIO. На рис. 21 приведён текст объявления переменных для работы с входами и выходами модулей GC-1018, GC-2018, GC- 3624, GC-4662. Большая часть перемен- ных не используется в коде программы и приведена лишь для иллюстрации принципа прямой адресации. Алгоритм работы Текст программы DIO_AIO приведён на рис. 9. Программа написана на язы- ке программирования ST. В основе язы- ка ST лежат проверенные временем и обоснованные теоретически идеи структурного программирования, за- фиксированные в отношении програм- мируемых контроллеров в стандарте ГОСТ Р МЭК 61131-3-2016 [6], идентич- ном международному стандарту МЭК 61131-3:2013* Контроллеры программи- руемые. Часть 3. Языки программиро- вания (IEC 61131-3:2013, “Programmable controllers – Part 3: Programming languages”, IDT). С основами языка мож- но познакомиться в книгах Петрова [7] и Романова [8]. Об особенностях реали- зации языка ST для контроллеров GCAN можно узнать в руководстве OpenPCS Programing System. User Manual [9]. Программа намеренно упрощена и иллюстрирует процесс ввода и вывода дискретных и аналоговых сигналов. СТА 2/2023 25 www.cta.ru ОБ ЗОРЫ Рис. 19. Назначение контроллера GCAN целевой платформой (ресурсом) (* --- Аппаратная конфигурация --- PLC-510 input output ----------------------------------------------------------- GC 1018 AT%I0.0 ... I0.7 GC 2018 AT%Q0.0 ... Q0.7 GC 3624 AT%I1.0,I3.0,I5.0,I7.0 GC 4662 AT%Q1.0, Q3.0 ----------------------------------------------------------- *) VAR (*----- Модуль DI GC1018 -----*) DI0 AT%I0.0:BOOL; (* дискретный вход 1 GC1018 *) DI1 AT%I0.1:BOOL; (* дискретный вход 2 GC1018 *) DI2 AT%I0.2:BOOL; (* дискретный вход 3 GC1018 На входе переключатель. Программно управляем дискретным выходом №3 GC2018*) DI3 AT%I0.3:BOOL; DI4 AT%I0.4:BOOL; DI5 AT%I0.5:BOOL; DI6 AT%I0.6:BOOL; DI7 AT%I0.7:BOOL; (*----- Модуль DO GC2018 -----*) DO0 AT%Q0.0:BOOL; (* дискретный выход 1 GC2018. Программно мерцаем светодиодом с частотой 2 Гц *) DO1 AT%Q0.1:BOOL; (* дискретный выход 2 GC2018.*) DO2 AT%Q0.2:BOOL; (* дискретный выход 3 GC2018. Программно управляем с дискретного входа №3 GC1018 *) DO3 AT%Q0.3:BOOL; DO4 AT%Q0.4:BOOL; DO5 AT%Q0.5:BOOL; DO6 AT%Q0.6:BOOL; DO7 AT%Q0.7:BOOL; (*----- Модуль AI GC3624. Переменные int -32767~+32767 +/-10В. -----*) AI0 AT%I1.0:int; (* аналоговый вход 1 GC3624. Напряжение подаётся с выхода №1 GC4662*) AI1 AT%I3.0:int; (* аналоговый вход 2 GC3624 *) V_AI0:real; (* Напряжение в вольтах на первом канале GC3624 *) (*----- Модуль GC4662. Переменные uint0~+65535 0/5В. -----*) AO0 AT%Q1.0:uint; (* Аналоговый выход 1 GC4662. Подаётся на вход №1GC3624*) AO1 AT%Q3.0:uint; (* Аналоговый выход 1 GC4662 *) V_AO0:real; (* Напряжение в вольтах на первом канале GC4662 *) END_VAR Рис. 20. Объявление переменных программы DIO_AIO. Аппаратная конфигурация Рис. 21. Объявление переменных программы DIO_AIO

RkJQdWJsaXNoZXIy MTQ4NjUy