PCS7: исходник PO_UPDAT – блок для принудительного обновления выходных модулей

По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.

plc4good.org.ua/view_post.php?id=271

PO_UPDAT

Блок позволяющий немедленно обновить значения выходных модулей, для всех 16-ти разделов отображения.
Взят из PCS7 Basic library v8.

PO_UPDAT
Функция взята из PCS 7 Basis Library V8.0 (ссылка на библиотеку внизу материала)

Блок PO_UPDAT поддерживает функции выходных модулей ‘Удерживать последнее значение’ и ‘Применить предустановленное значение’

В PCS7, данный блок PO_UPDAT, используется в блоке OB100, после того как CH_DO и CH_AO блоки установят все сигналы в process image и записывает их оттуда в выходные модули.

Кроме этого блок формирует в переменной PO_MAP признаки наличия всех активных областей имиджа процеса из 16 возможных.

Name: FC279
Symbolic Name: PO_UPDAT
Symbol Comment: Update Process Output
Family: @SYSTEM
Version: 7.0
Author: DRIVER80
Last modified: 02/02/2011
Use: SFC27
Size: 256 byte
Signature: generiert vom SCL bersetzer Version: SCLCOMP K05.03.06.00_01.03.00.01 release

 

{
Scl_ResetOptions ,
Scl_OverwriteBlocks:=           ‘y’ ,
Scl_GenerateReferenceData :=    ‘y’ ,
Scl_S7ServerActive:=            ‘y’ ,
Scl_CreateObjectCode:=          ‘y’ ,
Scl_OptimizeObjectCode:=        ‘y’ ,
Scl_MonitorArrayLimits:=        ‘n’ ,
Scl_CreateDebugInfo :=          ‘n’ ,
Scl_SetOKFlag:=                 ‘n’ ,
Scl_SetMaximumStringLength:=    ‘254’
}

FUNCTION FC1279 : VOID
TITLE =‘Update Process Output’
{ S7_hardware :=‘rack’, S7_tasklist := ‘OB100’ }
AUTHOR : DRIVER80
FAMILY : ‘@SYSTEM’
NAME : PO_UPDAT
VERSION : ‘7.0’

VAR_OUTPUT
PO_MAP { S7_visible := ‘false’ }: WORD ,    //Map of Updated Process Outputs
END_VAR
VAR_TEMP
PCOUNT : INT ,    //Zдhlvariable
RCODE : INT ,    //Returnwert von SFC UPDAT_PO
HELP : WORD ,    //Hilfsvariable
PAA : WORD ,    //Bitfeld der aktualisierten ProzeЯabbilder
END_VAR
BEGIN

FOR PCOUNT:=0 TO 15 BY 1 DO
RCODE:=UPDAT_PO(PART := INT_TO_BYTE(PCOUNT)
             ,FLADDR := HELP
),
HELP:=1,
HELP:=SHL(IN:=HELP,N:=PCOUNT),

IF INT_TO_WORD(RCODE)=W#16#0 OR INT_TO_WORD(RCODE)=W#16#80A0 THEN
PAA:=PAA OR HELP,
ELSE
        PAA:=NOT HELP AND PAA,
    END_IF,
END_FOR,
PO_MAP:=PAA,
END_FUNCTION

PO_UPDAT
Block checksum оригинального и восстановленного блока совпадает.

Блок интересен примером использования SFC27.

Оригинальная библиотека PCS7 (BasisLibrary (V8.0) (zip, 1.3Mb) https://disk.yandex.ru/d/jHx335YiOeRMjw
Документация на блок (PCS 7 Basis Library V8.0 Function Manual, 11/2011) (pdf, 2Mb) – https://disk.yandex.ru/i/hS57erMvAkXtYQ

0 0 голоса

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии