Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 7 » TRACE MODE 7 бесплатная базовая версия / TRACE MODE 7 free basic version » Программа ST

   
Автор / Author Тема / Topic: Программа ST
remotebob
Junior Member / Новичок
Участник № / Member № 9315


Icon 1 отправлено / posted      Профиль для / Profile for remotebob           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Писал программу на языке ST для алгоритма включения индикаторов разных состояний процесса.
Всего 3 состояния (н-р, пуск, протяжка, финиш), создал для них 3 параметра типа out, тип данных bool. Также создал внутренние переменные (также 3 и типа bool).
Алгоритм перехода включения и выключения индикаторов данных состояний зависит от 2-х параметров скоростей (скорость_текущая и скорость_заданная). Скорость_зад задается оператором через ГЭ, а скорость_текущая изменяется с получения сигнала от ПЛК.

Хотел написать сюда код программы, но нет разрешения.

Алгоритм для включения состояния ПУСК: если не был вкл pusk, и скорость_тек не равна скорости_зад, и скорость_тек > 4 (условие чисто для примера) у нас принимает значение 1 пуск_1 и пуск, данное значение должно запомниться.

Алгоритм для вкл состояния ПРОТЯЖКИ: если pusk = 1, и не vibeg = 1, и скорость_тек = скорости_зад, тогда vibeg, vibeg_1 = 1.

Алгоритм для вкл состояния ФИНИШ: если vibeg = 1, и не finish = 1, и скорость_тек < скорости_зад, вкл finish_1, finish = 1.

Если скорость_зад != 0 и скорость_тек 0 тогда все индикаторы выкл => все аргументы состояний и внутр переменные принимают значение 0.

При проверке программы и написания значения скорости_зад у меня моментально включается индикатор ВЫБЕГ. Если в начале программы я задаю не скорость_зад, а скорость_тек у меня вкл индикатор ПУСК, далее запишу в скорости_зад значение, у меня вкл инд ВЫБЕГ. Индикатор ФИНИШ вообще не работает при тех условиях, которые написаны в программе.

Вопрос: может быть я не правильно поставил типы параметром и типы данных для них, либо в самом коде что-то неверное, либо сам алгоритм ужасен?

Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
-внутренние переменные откуда берут свое значение ?
-сделайте их аргументами тогда их значение
между вызовами будет сохраняться

Сообщения / Posts 921 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
remotebob
Junior Member / Новичок
Участник № / Member № 9315


Icon 1 отправлено / posted      Профиль для / Profile for remotebob           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
а вот насчет присвоения значения времени к аргументу как выполнить?
пишу в программе arg := time#20s; или t#20s; у меня компиляция не проходит, если добавлю ; вот так time#20s;; тогда компиляция пройдет, но код будет работать не так как нужно.

Сообщения / Posts 6 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342


Icon 1 отправлено / posted      Профиль для / Profile for Nico           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
ARG:=20
Сообщения / Posts 921 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
а вот насчет присвоения значения времени к аргументу как выполнить?

Присвоение метки времени или интервала времени?

arg := t#20s;; - присвоение интервала. Оно приводится к целочисленному (например, lint).

arg_005 = "12.09.2017 16:44:55" - присвоение метки времени.

код будет работать не так как нужно.
Код работает так как написано.
Если код работает не так как нужно, то так написано.

Рекомендую использовать пошаговую отладку кода.
Для этого используйте специальные кнопки (4 кнопки, на которых изображены стрелки с точкой), правее "пуска отладки" (зеленый треугольник)

Сообщения / Posts 17426 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2