Можно ли изменять время включения вывода цифрового выхода ПЛК через структурированный текст?

Я пытаюсь смоделировать выходной сигнал ШИМ от только цифрового ПЛК. Так можно ли определить время включения и выключения вывода цифрового выхода в каждом цикле?

Заранее спасибо.

1 ответ

Большинство ПЛК с транзисторными выходами имеют генератор импульсов, который вы можете использовать. Например, в ПЛК Schneider вы можете использовать PTO (выход серии импульсов). Например, если вы использовали сигнал для перемещения двигателя, вы можете определить, какая скорость эквивалентна частоте импульсов, а затем в коде вы можете определить скорость для движения.

VAR
 MC_MoveVelocity_PTO_0: MC_MoveVelocity_PTO;    
 Powerd: MC_Power_PTO;  
 mcPositive: MC_DIRECTION;
END_VAR

//enable pulse train output
Powerd(Axis:=PTO_0,Enable:=TRUE,DriveReady:=TRUE);
//command 
MC_MoveVelocity_PTO_0(Axis:=PTO_0,Execute:=%IX1.1,ContinuousUpdate:=TRUE,Velocity:=100,Acceleration:=1000,Deceleration:=1000,Direction:=mcPositive);

Этот код должен выполняться каждый цикл, поэтому вам не нужно обновлять время включения и выключения каждого цикла. Вы можете настроить скорость, с которой он работает на каждом цикле, если вы действительно этого хотите.

Или, если вы хотите получить базовые знания, вы можете использовать таймер для включения и выключения вашего выхода.

VAR
 PWM_Timer: BLINK;
 DigitalOutput: BOOL;
 offTime: TIME := t#10ms;
 onTime: TIME:=t#10ms;
END_VAR

PWM_Timer(ENABLE:=TRUE , TIMELOW:=offTime , TIMEHIGH:=onTime , OUT=>DigitalOutput );

где таймер, который я использовал, указывает время включения и выключения, которое вы можете настроить. Но вам не нужно включать и выключать выход каждый цикл. PLC позаботится об этом за вас.

Если вы хотите поиграть с включением / выключением выхода каждый цикл, чтобы посмотреть, что он будет делать, вы можете сделать что-то вроде

IF DigitalOutput THEN
    DigitalOutput:=FALSE;
ELSE
    DigitalOutput:=TRUE;
END_IF;

Итак, когда plc Проходит сканирование, он увидит, что выход выключен, и включит его. В следующем цикле он увидит, что он включен, и выключит его.

Надеюсь это поможет.

Другие вопросы по тегам