Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2015, 22:24   #1
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию C в FBD

Здравствуйте. Подскажите новичку в FBD как записать код?

unsigned int n=5;

int main(void){if(n>0){n--;}}

Если я правильно понимаю то блок представляет собой функцию вида:
int f(unsigned int i){if(i>0){i--;}}

или

unsigned int n=5;

int f(){if(n>0){n--;}}
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 08:20   #2
Max2114
Senior Member
 
Регистрация: Jun 2007
Адрес: Tyumen
Сообщения: 2 052
Благодарил(а): 20 раз(а)
Поблагодарили: 21 раз(а) в 21 сообщениях
По умолчанию Ответ: C в FBD

Цитата
Сообщение от Airborne Посмотреть сообщение
Здравствуйте. Подскажите новичку в FBD как записать код?

unsigned int n=5;

int main(void){if(n>0){n--;}}

Если я правильно понимаю то блок представляет собой функцию вида:
int f(unsigned int i){if(i>0){i--;}}

или

unsigned int n=5;

int f(){if(n>0){n--;}}
т.е. Вам надо выполнить какие-то действия в течении 5 циклов? Вы лучше опишите что хотите сделать...
Max2114 вне форума   Ответить с цитированием
Старый 13.08.2015, 10:40   #3
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Мне нужно чтобы n раз выполнилось действие с интервалом dt.
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 13:57   #4
ViS
Senior Member
 
Регистрация: Aug 2010
Сообщения: 718
Благодарил(а): 1 раз(а)
Поблагодарили: 15 раз(а) в 12 сообщениях
По умолчанию Ответ: C в FBD

Два счетчика. Один на dt, второй на n.
ViS вне форума   Ответить с цитированием
Старый 13.08.2015, 17:53   #5
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD



Так?
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 18:34   #6
djaval
Senior Member
 
Регистрация: Nov 2013
Адрес: Санкт-Петербург
Сообщения: 213
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Нет. У вас первый счётчик выдаст 1 на QU только один раз, после того как отсчитает n тиков. И после этого 2ой счётчик отсчитает ещё dt секунд и будет 1 на выходе Выход.
djaval вне форума   Ответить с цитированием
Старый 13.08.2015, 18:48   #7
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Вот я и не пойму как сделать
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 19:00   #8
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

А если так?

Миниатюры
Нажмите на картинку для увеличения

Название:  n раз за dt.jpg
Просмотров: 95
Размер:  48.7 Кбайт  
serg-el вне форума   Ответить с цитированием
Старый 13.08.2015, 19:15   #9
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD



Так?
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 19:40   #10
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Не так.
И вообще, условия задачи не расписаны.
Какое мин и макс dt?
Сколько мин и макс n?

Пред загрузка и сброс при старте?

Подробнее !
serg-el вне форума   Ответить с цитированием
Старый 13.08.2015, 19:48   #11
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Допустим 1<=dt<=60сек, 1=<n<=10. Я не пойму как измененную переменную в макросе снова загнать в макрос.


Могу на си написать.
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 19:52   #12
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Цитата
Сообщение от Airborne Посмотреть сообщение
Я не пойму как измененную переменную в макросе снова загнать в макрос.
Могу на си написать.

На Си не шпрехаю.
Какую переменную? В какой макрос? Опять ничего не понятно.
serg-el вне форума   Ответить с цитированием
Старый 13.08.2015, 19:58   #13
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

FBD блоки каждый цикл выполняются по порядку? Пусть при первом проходе на входе блока n=6. При его выполнении с n производятся математические операции и на выходе блока измененная n. При следующем цикле нужно измененную n подать на вход того же блока.
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 20:03   #14
serg-el
Senior Member
 
Регистрация: Aug 2013
Адрес: Москва
Сообщения: 600
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Так подай с выхода на вход - и всё делов. В первом цикле вычисление - в следующем - вычисление с предыдущим итогом.
На жёлтую линию не обращать внимания.
serg-el вне форума   Ответить с цитированием
Старый 13.08.2015, 20:05   #15
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

Напишу, что нужно сделать. Нужно запустить насос, через 1 сек опросить датчик протока, если 0 запустить таймер на dt времени. Через dt времени повторить попытку сначала и так n раз пока на датчике протока 0.
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 20:16   #16
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD



Так можно делать, а то я думал нельзя
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 20:53   #17
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: C в FBD

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

Цитата
Сообщение от Airborne Посмотреть сообщение
Напишу, что нужно сделать. Нужно запустить насос, через 1 сек опросить датчик протока, если 0 запустить таймер на dt времени. Через dt времени повторить попытку сначала и так n раз пока на датчике протока 0.
Странная задача однако. Защита от сухого хода с контрольными выстрелами? Одной секунды не маловато будет?
ATS вне форума   Ответить с цитированием
Старый 13.08.2015, 21:05   #18
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

А первый раз там будет 0?
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 21:44   #19
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

ATS, 1 сек - это условно, хотя в моем случае 1 сек достаточно. Будет переменная.
Airborne вне форума   Ответить с цитированием
Старый 13.08.2015, 22:09   #20
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: C в FBD

Цитата
Сообщение от Airborne Посмотреть сообщение
А первый раз там будет 0?
Ну да...

Цитата 1 сек - это условно, хотя в моем случае 1 сек достаточно. Будет переменная.
А насосом будем хлопать через это время?
ATS вне форума   Ответить с цитированием
Старый 14.08.2015, 08:35   #21
Airborne
Новичок
 
Регистрация: Aug 2015
Сообщения: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: C в FBD

ATS, если на реле протока 0 насос выключится.
Airborne вне форума   Ответить с цитированием
Старый 14.08.2015, 23:33   #22
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: C в FBD

Цитата
Сообщение от Airborne Посмотреть сообщение
Напишу, что нужно сделать. Нужно запустить насос, через 1 сек опросить датчик протока, если 0 запустить таймер на dt времени. Через dt времени повторить попытку сначала и так n раз пока на датчике протока 0.
Двойной цикл-то для этого зачем? Запускайте насос и через n секунд, если состояние входа не придёт в заданное, формируйте отказ.

Один счётчик, один блок AND и, может быть, один блок NOT.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод FBD программы на FBD Logix atp-service Вопросы о программировании 5 28.07.2022 19:13
Отсутствует связь по RS-485 при управлении параметрами из FBD АндрейЛ Связь с внешним миром 16 15.05.2018 14:15
Кнопки в SMArt, управление из FBD (решено) dp38 SMLogix 5 24.04.2017 18:33
Прошу помощи, как будет на FBD partner Вопросы о программировании 9 13.05.2014 15:27
Управление окнами из FBD Сергей_М SMArt 3 26.11.2013 13:25


Часовой пояс GMT +4, время: 21:38.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023