С чего Вы решили что проблема в этом ? Разве файл SysFile не относится к System ? (просто интересно)
Вид для печати
Здравствуйте!
Подскажите, пожалуйста, библиотеку для перевода числа из десятичной системы в шестнадцатиричную.
Подскажите как возможно реализовать детектор Импульсов (дискретного сигнала)
Задача:
3 входных сигнала (импульсных) - необходимо определить кто из них сработал первый.
Я предполагаю сделать следующим образом.
Генератор импульса (генерируемый импульс = одному такту работы ПЛК)
Если сигнал пришел в течении данного такта (к примеру одного) то фиксируем значение тригером, как только на тригере появляется 1 останавливаем генератор импульса.
Подскажите вообще имеется ли встроенный детектор например в библиотеке OSCAT или как возможно это реализовать ?
Добрый день.
Если я правильно Вас понял, то в библиотеке Standard.lib есть детекторы импульсов (триггеры) R_TRIG - детектор переднего фронта импульса и F_TRIG - детектор заднего фронта импульса.
В Вашем случае может сработать за один цикл контроллера больше одного дискретного входа?
Если нет, то код проверки будет выглядеть примерно так:
1. Объявление переменных
2. ФБ по определению первого сработанного входа (к примеру ФБ - DiscretInputsDetector);Код:var_input
xIsFirstInputLocked : BOOL; // Признак того, что первый вход сработал
xIsSecondInputLocked : BOOL; // Признак того, что второй вход сработал
xIsThirdInputLocked : BOOL; // Признак того, что третий вход сработал
end_var
var_output
m_uiFirstWorkedInput : UINT; // Номер выхода, который замкнулся первым
end_var
var
m_fb_FirstInputDetector : R_TRIG; // Детектор переднего фронта 1-го входа
m_fb_SecondInputDetector : R_TRIG; // Детектор переднего фронта 2-го входа
m_fb_ThirdInputDetector : R_TRIG; // Детектор переднего фронта 3-го входа
end_var
Но такой подход сработает только если у Вас одновременно не могут замкнуться два входа.Код:m_fb_FirstInputDetector (IN := xIsFirstInputLocked);
m_fb_SecondInputDetector (IN := xIsSecondInputLocked);
m_fb_ThirdInputDetector (IN := xIsThirdInputLocked);
if m_fb_FirstInputDetector.Q then
m_uiFirstWorkedInput := 1;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 2;
elsif m_fb_SecondInputDetector.Q then
m_uiFirstWorkedInput := 3;
else
m_uiFirstWorkedInput := 0;
end_if
Т.к. при замыкании входа с более низким порядковым номером, входы с более высоким номером уже будут игнорироваться.
Примерно такую логику я сейчас и начинаю реализовывать, но блокирую входы других тригеров при появлении сигналов. Но столкнулся с такой проблемой.
1. Создал POU (FB) (переименовал в "AI_TIR")" в котором описал входы (сигнализацию HiHi, Hi, LoLo, Lo: BOOL;) и выходы.
2. В PLC_PRG создал копию моего FB A1: AI_TIR;
3. Создал POU (переименовал в "TriggerD") на языке ST.
4. Добавил в MainTask мой новый POU Trigger
5. Теперь написании когда на ST в POU Trigger выходит ошибка
Пытаюсь сделать такое
VAr_In: PLC_PRG.A1.HiHi
Компилятор пишет неизветсный тип PLC_PRG.A1.HiHi
Я же обьявил его в главном PLC_PRG
СПК107 модернизированный с Ethernet. Контроллер подключен к сети, через роутер с динамической сим-картой. По сути имеет доступ в интернет.
Существует ли возможность отправки e-mail сообщений при возникновении события? Например через SMTP
На релизной прошивке такая возможность будет - в ней поддержана cURL.
В рамках бета-теста этот функционал еще не был доступен.