1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

FStudio Синтаксис команд в макросах if, case, for, ...

Панели оператора F, FE, FPad и FlexSCADA

Модераторы: Глоб.модераторы, специалисты Flexem

Ответить

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение demonlibra »

В документации по FStudio очень не хватает развитого примера со всевозможными командами.

Существует ли шпаргалка или примеры написания команд в макросах?
Например, какой синтаксис у команд if, case, for, ... ???
Как писать логические выражения AND, OR, XOR ???

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение demonlibra »

Какие типы данных можно определять кроме unsigned int?

Andreyit
не первый раз у нас
не первый раз у нас
Сообщения: 395
Зарегистрирован: 06 фев 2020, 16:09
Имя: Андрей
город/регион: Екатеринбург
Поблагодарили: 69 раз

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение Andreyit »

Макросы в fstudio это C язык. И вся логика идет от C.
И там же есть помощник ввода (read write functions), где видно что есть bool, unsigned short, unsigned int, float, int, short, char.

se_sib
специалист по FLEXEM
специалист по FLEXEM
Сообщения: 315
Зарегистрирован: 14 дек 2015, 12:15
Имя: Евгений
Страна: Россия
город/регион: Краснодар
Благодарил (а): 7 раз
Поблагодарили: 84 раза

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение se_sib »

В FStudio язык макросов C.
Возьмите любой справочник по синтаксису C.

В этой теме выложил ссылки на видео по FStudio с оф.ютуб канала Flexem:
viewtopic.php?t=20009
Там есть ролик - Flexem FStudio tutorial - Macro & Submacro

В конце руководства по FStudio есть раздел - 19 Appendix C-System Information
Это руководство открывается в формате pdf, при нажатии кнопки Help из редактора макросов.
C-System Information.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение demonlibra »

Добавил несколько ссылок, чтобы не искать каждый раз

Размеры основных типов
Ограничения для целочисленных констант
Ограничения на константы с плавающей запятой

Операторы if, case, for, while, ...
[+] Пример функции деления целых чисел с округлением до ближайшего целого
Только для положительных чисел.

Определение функции:

Код: Выделить всё

int divRound(const int x, const int y) {return (x + y/2)y;}
Вызов функции:

Код: Выделить всё

unsigned short A=5;
unsigned short B=2;
unsigned short C;

C = divRound(A, B);

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение demonlibra »

[+] Функции без аргументов

Код: Выделить всё

unsigned short x;
unsigned short y = 10;

void myFunc() {
    x = x + y;
}

if (x>0) {
    myFunc();
}
[+] Перебор элементов массива в цикле

Код: Выделить всё

unsigned short x[10] = {0};
unsigned char i;

for (i=0; i<=9; i++) {
    x[i] = x[i] + 1;
}

teewoon
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 27 сен 2023, 16:03
Имя: Илья
Страна: Беларусь
город/регион: Витебск
Благодарил (а): 2 раза
Поблагодарили: 6 раз

FStudio Синтаксис команд в макросах if, case, for, ...

Сообщение teewoon »

IMHO оптимальным в макросах будет использование типа short, он же short int. Для целочисленных дел. Потому что PSoC от TI на Cortex. А Cortex лобит 16-битное, хоть и родом из 32, да и аргументы/результаты вызовов библиотечных функций на это намекают. Плюс регистры LW/SRW, Modbus такие же.

Приколюха. Если функции GetMem() скормить в качестве адреса ссылку на битовый регистр типа LB/SRB, то оно считывает биты и заливает подряд в область памяти/массив переменные, что позволяет потом битовыми инструментами языка работать с ними. Или можно обратно залить целую поляну битовых регистров.
[+]

Код: Выделить всё

// @update_locks@ = LB1000
...
short update_locks;
GetMem(&update_locks,@update_locks@,0,2);
for(i=0;i<10;i++){
		m = update_locks & k;
		if(!m){
                        // творим всякое добро   
			//SetWord(@update_cnts@,i,0);
			//SetWord(@local_regs@,i,regs[i]);
			//SetWord(@local_regs@,i,regs[i]);
			//SetWord(@update_cnts@,i,1);
		}
	}
...
Ответить

Вернуться в «ЧМИ, SCADA»