Herunterladen Inhalt Inhalt Diese Seite drucken

Beckhoff BX3100 Dokumentation Seite 122

Busklemmen-controller für profibus
Inhaltsverzeichnis

Werbung

Programmierung
5.13.2.6.5 Beispiel
Beispiel Programm in ST
Download (https://infosys.beckhoff.com/content/1031/bx3100/Resources/zip/3207320715.zip)
PROGRAM MAIN
VAR
(* EXAMPLE - BRIDGE between PIN 7 and 8 from X01 COM 2 Port*)
   fb_COMPortOpen_1               : FB_COMPortOpen;
   stCOMConfig_1                  : ST_COMConfig;
   hCOM                           : WORD;
   Result_R                       : INT;
   Result_W                       : INT;
   Var_M                          : ARRAY[0..9] OF BYTE:=11,22,0,33,0(6);
   Var_R                          : ARRAY[0..9] OF BYTE;
   Value                          : INT;
   Counter_V                      : BYTE; (* It is all OK, this value counts up *)
   i                              : INT;
   i_k                            : INT;
   fbTimer                        : TON;
END_VAR
stCOMConfig_1.cbRxBufferLen :=300;
stCOMConfig_1.cbTxBufferLen :=300;
stCOMConfig_1.dwMode :=0;
stCOMConfig_1.BaudRate :=19200;
stCOMConfig_1.eCommPort :=COM2;
stCOMConfig_1.eDataBits:=EIGHT_DATABITS;
stCOMConfig_1.eParity:=EVEN;
stCOMConfig_1.eStoppBits:=ONE_STOPPBIT;
CASE i OF
(* Open Port *)
0:  fb_COMPortOpen_1(bOpen:=TRUE , stCOMConfig:=stCOMConfig_1);
    IF NOT fb_COMPortOpen_1.bBusy THEN
        IF NOTfb_COMPortOpen_1.bError THEN
           hCOM:=fb_COMPortOpen_1.iHandle ;
           i:=i+1;
        ELSE
           
i:=100;
        END_IF
    END_IF
(* Write data*)
1:  fbTimer(IN:=FALSE);
    Result_W:=F_COMPortWrite(hCom, 4,ADR(Var_M[0]));
    IF Result_W>0 THEN
        i:=i+1;
       Var_M[2]:=Var_M[2]+1;
    ELSE
        i:=101;
   END_IF
(*Receive data*)
2:  Result_R:=F_COMPortRead(hCom, 100,ADR(Var_R[Value]));
    IF Result_R<>0 THEN
       Value:=Result_R+Value;
    END_IF
    IF Value>=4 THEN
        FOR i_k:=0 TO Value DO(*Check protocol*)
           IF Var_R[i_k-4]=11 AND Var_R[i_k-3]=22 AND Var_R[i_k-1]=33 THEN
               Counter_V:=Var_R[i_k-2];
               i:=1;
               Value:=0;
           END_IF
        END_FOR
    END_IF
    fbTimer(IN:=TRUE,PT:=t#1s); (*Watchdog receive*)
    IF fbTimer.Q THEN
       fbTimer(IN:=FALSE);
        i:=102;
    END_IF
100: ; (*ERROR open port*)
122
Version: 2.2.0
BX3100

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis