Страница 613 из 1041 ПерваяПервая ... 113513563603611612613614615623663713 ... ПоследняяПоследняя
Показано с 6,121 по 6,130 из 10404

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #6121
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,089

    По умолчанию

    Цитата Сообщение от GTS Посмотреть сообщение
    Буду признателен за помощь!
    Такой вопросик - к часу надо привязываться, т.е. расход с часу до двух, с двух до трех и т.д. или просто от момента включения?

  2. #6122
    Пользователь
    Регистрация
    16.08.2012
    Адрес
    Воронеж
    Сообщений
    146

    По умолчанию

    Да, расход за час, ну то-есть с часу до двух, с двух до трех и т.д., общий накопленный уже есть.

  3. #6123
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,089

    По умолчанию

    Ну, как вариант
    Вложение 34031

  4. #6124
    Пользователь
    Регистрация
    16.08.2012
    Адрес
    Воронеж
    Сообщений
    146

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Ну, как вариант
    Вложение 34031

    Понял ваш вариант, но у меня немного другие обстоятельства. У меня час, день, месяц - ваша minute всегда будет больше 0. Я беру время из плк с помощью библиотеки. Мне нужно фиксировать изменение времени, прошу прощения за туфтологию. Например переменная hour (час) увеличилась на 1 час (то есть прошел 1 час) срабатывает бит, по которому я пишу в архив накопленный расход за этот час, далее часовой расход обнуляется и накапливается на следующий час и т.д. Точно также мне нужно фиксировать изменение суток и месяца. Вроде все просто но никак не дойду,как это провернуть. Кто делал архив расхода, может есть другие способы?

  5. #6125
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Я беру время из плк с помощью библиотеки. Мне нужно фиксировать изменение времени, прошу прощения за туфтологию. Например переменная hour (час) увеличилась на 1 час (то есть прошел 1 час) срабатывает бит, по которому я пишу в архив накопленный расход за этот час, далее часовой расход обнуляется и накапливается на следующий час и т.д.
    Такие вещи элементарно делаются если вместо отдельно взятых ЧЧ ММ СС использовать время в формате TOD (TIME_OF_DAY).
    Соберите время суток в секунды, результат разделите по модулю 86400. Получите нолик строго в момент начала очередного часа. Т.к. длительность нолика - 1 сек, то нужно еще добавить F_TRIGGEG - получите нужный импульс.
    А начало суток получите в момент когда TOD = 0.
    Вложение 34034
    А для того, чтобы фиксировать изменение недели, месяца, или года нужно использовать время в формате TD(TIME_AND_DATE).
    Только упаковка времени в TOD немного по хитрее будет.

    ЗЫ.
    Почитайте на досуге статью И.Петрова "Программируем временные сложности" http://prolog-plc.ru/docs/TimeExperience.pdf
    Я думаю, что это Вам поможет
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6126
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    1,089

    По умолчанию

    Хорошо, тогда так
    Вложение 34040
    как только час поменяется, будет импульс. Аналогично можно сделать для дня, недели, месяца и года. Только здесь важен порядок блоков - MOVE должен исполняться последним

  7. #6127
    Пользователь
    Регистрация
    16.08.2012
    Адрес
    Воронеж
    Сообщений
    146

    По умолчанию

    Всем спасибо за помощь, буду пробовать.

  8. #6128

    По умолчанию

    как в кодесис можно реализовать резервирование подсетей? Ситуация следующая. У меня на одном компьютере трудится ОРС сервер кодесис, и проект АРМ мастер скада. В ОРС сервере настроены две подсети до одного контрлоллера.Вложение 34081 Мастер скада не позволяет резервировать подстеи в таком случае, только когда используется удалённый ОРС. можно ли в кодесис настроить одну группу тегов которая бы общалась с двумя подсетями и при выдёргивании одного из шнурков из адаптера автоматически подтягивал данные с другого адаптера?

  9. #6129
    Пользователь Аватар для Rednaxel
    Регистрация
    15.05.2015
    Адрес
    Минск
    Сообщений
    19

    По умолчанию Управление битом из разных мест программы

    Довольно часто встречается вроде бы несложная ситуация: нужно управлять одним выходом по сигналу с 2х и более битовых переменных (например DI или ModBus), а также синхронизировать состояние этого выхода с управляющими переменными.
    Сейчас решаю следующим способом:
    Вложение 34125

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

    Может быть есть более элегантное (эффективное) решение, подскажите пожалуйста?

  10. #6130
    Пользователь Аватар для Rednaxel
    Регистрация
    15.05.2015
    Адрес
    Минск
    Сообщений
    19

    Cool

    Цитата Сообщение от Rednaxel Посмотреть сообщение
    ....
    Сейчас решаю следующим способом: Вложение 34125

    Оно конечно работает, но как то уж очень громоздко выходит: куча переменных и триггеров, а когда таких выходов много, разбираться становится тяжело, невольно вспоминается слово "быдлокод"
    Иногда достаточно спросить у кого-нибудь, чтобы додуматься самому
    В результате переделал алгоритм на ST и оформил в виде блока:
    Вложение 34130
    Получилось 20 переменных и 20 строк -- уже веселее, хотя на мой взгляд все еще как на кировце огород пахать...
    Let it be, поскольку других идей все равно больше нет.

    Скрытый текст:
    (*Задаем начальные значения*)
    Q_Set:=FALSE;
    Q_SetBit:=FALSE;
    Q_ReSet:=FALSE;
    Q_ReSetBit:=FALSE;
    (*Устанавливаем триггеры*)
    RT01(CLK:=SwIn); (*Передний фронт SwIn*)
    FT01(CLK:=SwIn); (*Задний фронт SwIn*)
    RT01in(clk:=BitIn); (*Передний фронт BitIn*)
    FT01in(clk:=BitIn); (*Задний фронт BitIn*)
    RT01Sync(clk:=Sync_In); (*Передний фронт управляющей переменной для синхизации*)
    FT01Sync(clk:=Sync_In); (*Задний фронт управляющей переменной для синхизаци*)

    (*Анализируем триггеры*)
    IF RT01.Q THEN Q_Set:=TRUE;
    ELSIF FT01.Q THEN Q_ReSet:=TRUE;
    ELSIF RT01in.Q THEN Q_Set:=TRUE;
    ELSIF FT01in.Q THEN Q_ReSet:=TRUE;
    ELSIF RT01Sync.Q THEN Q_SetBit:=TRUE;
    ELSIF FT01Sync.Q THEN Q_ReSetBit:=TRUE;
    END_IF

Страница 613 из 1041 ПерваяПервая ... 113513563603611612613614615623663713 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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