Changeset 9440 for trunk/MagicSoft


Ignore:
Timestamp:
05/09/09 16:31:40 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/aposs/MAGIC II.exp

    r8878 r9440  
    22
    33(* @PATH := '\/Kommunikation' *)
    4 (* @SYMFILEFLAGS := '59392' *)
    5 PROGRAM Ethernet
     4(* @SYMFILEFLAGS := '2048' *)
     5PROGRAM EthernetIn
    66
    77VAR
    8         Empfangszaehler                 :DINT;
    9         Sendezaehler                            :DINT;
    10         SendezaehlerZyklisch    :DINT;
    11         Ret_Send1                               :DINT;
    12         Ret_Send2                               :DINT;
    13 
    148        VerbindungBesteht               :BOOL :=FALSE;
    159
    16         fdsFdSet                                        :SOCKET_FD_SET;
    17         fdsTime                                 :SOCKET_TIMEVAL;
    1810        SockKomm                                :DINT;
    1911        SockadrKomm                     :SOCKADDRESS;
    2012        SockadrKommSize         :DINT;
    2113
    22         SockadrKomm2                    :SOCKADDRESS;
    23         SockadrKommSize2                :DINT;
     14        fdsFdSet                                        :SOCKET_FD_SET;
     15        fdsTime                                 :SOCKET_TIMEVAL;
     16
     17        RC_SysSockSelect                :DINT;
     18        RC_SysSockSelect3               :DINT;
     19        RC_SysSockRecv                  :DINT;
     20        RC_SysSockClose         :BOOL;
     21
    2422        Catch                                           :BOOL;
    25         RC_SysSockConnect               :BOOL :=FALSE;
    26         RC_SysSockClose         :BOOL;
    27         RC_SysSockSelect                :DINT;
    28         RC_SysSockRecv                  :DINT;
    29         RC_SysSockSelect2               :DINT;
    30         RC_SysSockSelect3               :DINT;
     23
     24        Empfangszaehler                 :DINT;
    3125END_VAR
     26
     27
    3228(* @END_DECLARATION := '0' *)
    3329(* Auf Verbi ndung warten *)
     
    4945END_IF
    5046
    51 
    5247(* Daten empfangen *)
    5348IF VerbindungBesteht=TRUE THEN
     
    7267        END_IF
    7368END_IF
    74 
    75 
     69END_PROGRAM
     70
     71
     72(* @PATH := '\/Kommunikation' *)
     73(* @SYMFILEFLAGS := '59392' *)
     74PROGRAM EthernetOut
     75
     76VAR
     77        SockadrKomm2:                   SOCKADDRESS;
     78        SockadrKommSize2:               DINT;
     79
     80        RC_SysSockConnect:      BOOL :=FALSE;
     81        RC_SysSockSelect2:              DINT;
     82        Ret_Send1:                              DINT;
     83        Ret_Send2:                              DINT;
     84
     85        fdsFdSet:                                       SOCKET_FD_SET;
     86        fdsTime:                                        SOCKET_TIMEVAL;
     87
     88        Sendezaehler:                           DINT;
     89        SendezaehlerZyklisch:   DINT;
     90
     91        ulBlockMode:                            DINT := 1;
     92
     93        RC_Ioctl:                                       DINT;
     94END_VAR
     95
     96
     97(* @END_DECLARATION := '0' *)
    7698(* Daten Senden *)
    77 (* IF DatenSenden THEN *)
    78         SockadrKomm2.sin_addr:=SysSockHtonl(IP_Address);        (*192.168.0.3*)
    79         SockadrKomm2.sin_family:=2;
    80         SockadrKomm2.sin_port:=SysSockHtons(Socket_Out_Port);
    81         SockadrKommSize2 := SIZEOF(SockadrKomm2);
     99
     100SockadrKomm2.sin_addr:=SysSockHtonl(IP_Address);        (*192.168.0.3*)
     101SockadrKomm2.sin_family:=2;
     102SockadrKomm2.sin_port:=SysSockHtons(Socket_Out_Port);
     103SockadrKommSize2 := SIZEOF(SockadrKomm2);
    82104
    83105IF NOT RC_SysSockConnect THEN
     
    85107END_IF
    86108
    87         (*TRUE=success*)
    88         RC_SysSockSelect2:=-1;
    89         IF RC_SysSockConnect THEN
    90                 fdsFdSet.fd_count       :=1;
    91                 fdsFdSet.fd_array[0]:=SendSock;
    92                 fdsTime.tv_sec          :=0;
    93                 fdsTime.tv_usec         :=0;
    94                 RC_SysSockSelect2:=SysSockSelect(diWidth:=SIZEOF(fdsFdSet), fdRead:=0, fdWrite:=ADR(fdsFdSet), fdExcept:=0, ptvTimeout:=ADR(fdsTime));
    95                 (*1=success*, 0=time-out, -1=error*)
     109RC_SysSockSelect2:=-1;
     110IF RC_SysSockConnect THEN (* SysSockConnect==True dann nuetzt auch ein Cosy-Neustart nicht *)
     111        fdsFdSet.fd_count       :=1;
     112        fdsFdSet.fd_array[0]:=SendSock;
     113        fdsTime.tv_sec          :=0;
     114        fdsTime.tv_usec         :=0;
     115        RC_SysSockSelect2:=SysSockSelect(diWidth:=SIZEOF(fdsFdSet), fdRead:=0, fdWrite:=ADR(fdsFdSet), fdExcept:=0, ptvTimeout:=ADR(fdsTime));
     116        (*1=success*, 0=time-out, -1=error*)
     117END_IF
     118
     119Ret_Send1:=-1;
     120Ret_Send2:=-1;
     121
     122IF RC_SysSockSelect2>0 THEN
     123        Ret_Send1:=0;
     124        Ret_Send2:=0;
     125        IF DatenSenden THEN
     126                Ret_Send1:=SysSockSend(diSocket:=SendSock, pbyBuffer:=ADR(ByteBufferTX), diBufferSize:=11, diFlags:=0);
    96127        END_IF
    97         Ret_Send1:=-1;
    98         Ret_Send2:=-1;
    99         IF RC_SysSockSelect2>0 THEN
    100                 Ret_Send1:=0;
    101                 Ret_Send2:=0;
    102                 IF DatenSenden THEN
    103                         Ret_Send1:=SysSockSend(diSocket:=SendSock, pbyBuffer:=ADR(ByteBufferTX), diBufferSize:=11, diFlags:=0);
    104                 END_IF
    105                 IF ZyklischeDatenSenden THEN
    106                         Ret_Send2:=SysSockSend(diSocket:=SendSock, pbyBuffer:=ADR(ByteBufferTXzyklisch), diBufferSize:=11, diFlags:=0);
    107                 END_IF
    108         END_IF
    109 
    110         IF Ret_Send1=-1 OR Ret_Send2=-1 THEN
    111                 SysSockClose(diSocket:=SendSock);
    112         END_IF
    113         (* Socket 'gracefully closed' (Ret_Send1=0) NOT existing(?) in SPS! *)
    114         IF Ret_Send1<0 OR Ret_Send2<0 OR SendSock<0 THEN
    115                 SendSock:=SysSockCreate(diAddressFamily:=SOCKET_AF_INET, diType:=SOCKET_STREAM, diProtocol:=SOCKET_IPPROTO_IP);
    116                 RC_SysSockConnect := FALSE;
    117         END_IF
    118         IF Ret_Send1>0 THEN
    119                 DatenSenden:=FALSE;
    120                 Sendezaehler:=Sendezaehler+1;
    121         END_IF
    122         IF Ret_Send2>0 THEN
    123                 ZyklischeDatenSenden:=FALSE;
    124                 SendezaehlerZyklisch:=SendezaehlerZyklisch+1;
    125         END_IF
    126 
    127 (* END_IF *)
    128 
    129 
    130 (* Zyklische Daten Senden *)
    131 (*
    132 IF ZyklischeDatenSenden THEN
    133         SockadrKomm2.sin_addr:=SysSockHtonl(IP_Address);        (*192.168.0.3*)
    134         SockadrKomm2.sin_family:=2;
    135         SockadrKomm2.sin_port:=SysSockHtons(Socket_Out_Port);
    136         SockadrKommSize2 := SIZEOF(SockadrKomm2);
    137         SysSockConnect(diSocket:=SendSock, pSockAddr:=ADR(SockadrKomm2), diSockAddrSize:=SockadrKommSize2);
    138         Ret_Send2:=SysSockSend(diSocket:=SendSock, pbyBuffer:=ADR(ByteBufferTXzyklisch), diBufferSize:=11, diFlags:=0);
    139         IF Ret_Send2=-1 THEN
    140                 SysSockClose(diSocket:=SendSock);
    141                 SendSock:=SysSockCreate(diAddressFamily:=SOCKET_AF_INET, diType:=SOCKET_STREAM, diProtocol:=SOCKET_IPPROTO_IP);
    142         ELSE
    143                 ZyklischeDatenSenden:=FALSE;
    144                 SendezaehlerZyklisch:=SendezaehlerZyklisch+1;
     128        IF ZyklischeDatenSenden THEN
     129                Ret_Send2:=SysSockSend(diSocket:=SendSock, pbyBuffer:=ADR(ByteBufferTXzyklisch), diBufferSize:=11, diFlags:=0);
    145130        END_IF
    146131END_IF
    147 *)
     132
     133IF Ret_Send1=-1 OR Ret_Send2=-1 THEN
     134        SysSockClose(diSocket:=SendSock);
     135       (*SendSock:=0;*)
     136
     137        (* Socket 'gracefully closed' (Ret_Send1=0) NOT existing(?) in SPS! *)
     138
     139        SendSock:=SysSockCreate(diAddressFamily:=SOCKET_AF_INET, diType:=SOCKET_STREAM, diProtocol:=SOCKET_IPPROTO_IP);
     140        (* ------------------------- NEW NEW NEW NEW NEW ------------------------- *)
     141        (* Set newly created socket to non-blocking mode to make sure SysSockConnect doesn' t block infinitly *)
     142        (* Unix ioctl documentation says: On error -1 is returned, 0 ususally in case of success                                        *)
     143        RC_Ioctl:=SysSockIoctl(diSocket:=SendSock, diCommand:=SOCKET_FIONBIO, piParameter:=ADR(ulBlockMode));
     144        (* ------------------------------------------------------------------------------------------ *)
     145        RC_SysSockConnect := FALSE;
     146END_IF
     147
     148IF Ret_Send1>0 THEN
     149        DatenSenden:=FALSE;
     150        Sendezaehler:=Sendezaehler+1;
     151END_IF
     152
     153IF Ret_Send2>0 THEN
     154        ZyklischeDatenSenden:=FALSE;
     155        SendezaehlerZyklisch:=SendezaehlerZyklisch+1;
     156END_IF
    148157END_PROGRAM
    149158
     
    156165        TX_COB_ID                                                       :WORD;  (* Enthält NODE_ID und FUNCTION_CODE *)
    157166        TX_NODE_ID                                                      :WORD;  (* 1 = Motor drehen, 3 = Motor kippen, 4 = Encoder Kippen 1, 5 = Encoder Kippen 2, 6 = Encoder Drehen *)
    158         (* Globale konstante Variablen:
    159         NODE_ID_Mac_Az: BYTE:=1;
    160         NODE_ID_Mac_Zd: BYTE:=3;
    161         NODE_ID_SE_Az: BYTE:=16;
    162         NODE_ID_SE_Zd1: BYTE:=17;
    163         NODE_ID_SE_Zd2: BYTE:=18;
    164         *)
    165167        TX_FUNCTION_CODE                                :WORD;  (* 3=PDO1 5=PDO2 7=PDO3 *)
     168
    166169        TX1M_LEER1                                                      :BYTE;
    167170        TX1M_LEER2                                                      :BYTE;
     
    183186
    184187        Zyklus                                                                  :INT;
     188
    185189        X_Err_ID_Old                                                    :WORD;
    186190        Z_Err_ID_Old                                                    :WORD;
    187         TX3M_STATUS_OldX                                        :BYTE;
    188         TX3M_STATUS_OldZ                                        :BYTE;
    189         TX2E_POSITION_OldX                              :DINT;
    190         TX2E_POSITION_OldY                              :DINT;
    191         TX2E_POSITION_OldZ                              :DINT;
    192         TX2E_GESCHWINDIGKEIT_OldX       :INT;
    193         TX2E_GESCHWINDIGKEIT_OldY       :INT;
    194         TX2E_GESCHWINDIGKEIT_OldZ       :INT;
    195191END_VAR
    196192(* @END_DECLARATION := '0' *)
     
    198194(* Jeder Zyklus ist 10-mal pro Sekunde dran .........!!!!Oder100mal???*)
    199195Zyklus:=Zyklus+1;
    200 IF Zyklus>10 THEN
     196IF Zyklus>6 THEN
    201197        Zyklus:=1;
    202198END_IF
     
    223219        TX_NODE_ID:=NODE_ID_Mac_Az;                             (* Motor 1 drehen *)
    224220        TX_FUNCTION_CODE:=3;                                            (* PDO1 *)
    225         TX1M_POSITION:=-X_Pos_ist;                                      (*X_Pos_ist;           nehmen an, dass die SE schon genau genug.*)
    226         TX1M_STATUS.1:= (NOT X_in_Standstill OR NOT X_in_AntriebHalt) AND ( (NOT X_PC_VStart AND NOT X_in_Pos) OR X_PC_StartMovement);
    227         TX1M_STATUS.2:=X_PC_VStart;
    228         TX1M_STATUS.6:=NOT X_ist_freigegeben;
    229         TX1M_STATUS2.0:=X_EinmaligeFreigabe;
     221
     222        TX1M_POSITION:=X_pos_ist;                                       (*X_Pos_ist;           nehmen an, dass die SE schon genau genug.*)
     223        TX2E_POSITION:=X_Pos_Geber2;
     224
    230225        ZyklischeDatenSenden:=TRUE;
    231226END_IF
     
    234229        TX_NODE_ID:=NODE_ID_Mac_Zd;                             (* Motor 3 kippen *)
    235230        TX_FUNCTION_CODE:=3;                                            (* PDO1 *)
    236         TX1M_POSITION:=-Z_Pos_ist;                                      (*Z_Pos_ist;           nehmen an, dass die SE schon genau genug.*)
    237         TX1M_STATUS.1:=(NOT Z_in_Standstill OR NOT Z_in_AntriebHalt) AND ((NOT Z_PC_VStart AND NOT Z_in_Pos) OR Z_PC_StartMovement);
    238         TX1M_STATUS.2:=Z_PC_VStart;
    239         TX1M_STATUS.6:=NOT Z_ist_freigegeben;
    240         TX1M_STATUS2.0:=Z_EinmaligeFreigabe;
     231
     232        TX1M_POSITION:=Z_pos_ist;                                       (*X_Pos_ist;           nehmen an, dass die SE schon genau genug.*)
     233        TX2E_POSITION:=Z_Pos_Geber2;
     234
    241235        ZyklischeDatenSenden:=TRUE;
    242236END_IF
     
    273267        TX_NODE_ID:=NODE_ID_Mac_Az;                             (* Motor 1 drehen *)
    274268        TX_FUNCTION_CODE:=7;                                            (* PDO3 *)
     269
     270        TX1M_STATUS.1:= ((NOT X_in_Standstill OR NOT X_in_AntriebHalt) AND (NOT X_PC_VStart AND NOT X_in_Pos)) OR X_PC_AnnounceStartMovement (*OR X_PC_StartMovement*);
     271        TX1M_STATUS.2:=X_PC_VStart;
     272        TX1M_STATUS.6:=NOT X_ist_freigegeben;
     273        TX1M_STATUS2.0:=X_EinmaligeFreigabe;
     274
    275275        TX3M_STATUS.0:=X_ist_betriebsbereit;
    276276        TX3M_STATUS.1:=Leistung_DKC_IO;
     
    279279        TX3M_STATUS.4:=NOT IN_PC_Betrieb;
    280280        TX3M_STATUS.5:=X_ist_freigegeben;
    281         TX3M_STATUS.6:=Zusatz_Bremse_Z;
    282         IF TX3M_STATUS<>TX3M_STATUS_OldX THEN
     281        TX3M_STATUS.6:=IN_Zusatz_Bremse_Z;
     282        TX3M_STATUS.7:=Leistung_Ein;
     283
     284        IF TX1M_STATUS<>TX1M_STATUS_OldX OR TX3M_STATUS<>TX3M_STATUS_OldX OR X_PC_ForcePDO3 THEN
    283285                ZyklischeDatenSenden:=TRUE;
    284286        END_IF
     287        X_PC_ForcePDO3 :=FALSE;
     288        TX1M_STATUS_OldX:=TX1M_STATUS;
    285289        TX3M_STATUS_OldX:=TX3M_STATUS;
     290
     291        X_PC_AnnounceStartMovement := FALSE;
    286292END_IF
    287293
     
    289295        TX_NODE_ID:=NODE_ID_Mac_Zd;                             (* Motor 3 kippen *)
    290296        TX_FUNCTION_CODE:=7;                                            (* PDO3 *)
     297
     298        TX1M_POSITION:=Z_Pos_ist;                                       (*Z_Pos_ist;           nehmen an, dass die SE schon genau genug.*)
     299        TX1M_STATUS.1:=((NOT Z_in_Standstill OR NOT Z_in_AntriebHalt) AND (NOT Z_PC_VStart AND NOT Z_in_Pos))  OR Z_PC_AnnounceStartMovement (*OR Z_PC_StartMovement*);
     300        TX1M_STATUS.2:=Z_PC_VStart;
     301        TX1M_STATUS.6:=NOT Z_ist_freigegeben;
     302        TX1M_STATUS2.0:=Z_EinmaligeFreigabe;
     303
    291304        TX3M_STATUS.0:=Z_ist_betriebsbereit;
    292305        TX3M_STATUS.1:=Leistung_DKC_IO;
     
    295308        TX3M_STATUS.4:=NOT IN_PC_Betrieb;
    296309        TX3M_STATUS.5:=Z_ist_freigegeben;
    297         TX3M_STATUS.6:=Zusatz_Bremse_Z;
    298         IF TX3M_STATUS<>TX3M_STATUS_OldZ THEN
     310        TX3M_STATUS.6:=IN_Zusatz_Bremse_Z;
     311        TX3M_STATUS.7:=Leistung_Ein;
     312
     313        IF TX1M_STATUS<>TX1M_STATUS_OldZ OR TX3M_STATUS<>TX3M_STATUS_OldZ  OR Z_PC_ForcePDO3 THEN
    299314                ZyklischeDatenSenden:=TRUE;
    300315        END_IF
     316        Z_PC_ForcePDO3 :=FALSE;
     317        TX1M_STATUS_OldZ:=TX1M_STATUS;
    301318        TX3M_STATUS_OldZ:=TX3M_STATUS;
     319
     320        Z_PC_AnnounceStartMovement := FALSE;
    302321END_IF
    303322
    304 (*-------------------------------------------------------------------ENCODER-------------------------------------------------------------------*)
    305 
    306323IF Zyklus=7 THEN
    307         TX_NODE_ID:=NODE_ID_SE_Az;                              (* Encoder 3 drehen *)
    308         TX_FUNCTION_CODE:=5;                                            (* PDO2 *)
    309         TX2E_POSITION:=X_Pos_Geber2;
    310         TX2E_GESCHWINDIGKEIT:=DINT_TO_INT(1*(TX2E_POSITION-TX2E_POSITION_OldX)/1000);
    311         TX2E_BESCHLEUNIGUNG:=1*(TX2E_GESCHWINDIGKEIT-TX2E_GESCHWINDIGKEIT_OldX);
    312         IF (TX2E_POSITION_OldX<>TX2E_POSITION) OR (TX2E_GESCHWINDIGKEIT_OldX<>TX2E_GESCHWINDIGKEIT) THEN
    313                 ZyklischeDatenSenden:=TRUE;
    314         END_IF
    315         TX2E_POSITION_OldX:=TX2E_POSITION;
    316         TX2E_GESCHWINDIGKEIT_OldX:=TX2E_GESCHWINDIGKEIT;
    317 END_IF
    318 
    319 IF Zyklus=8 THEN
    320         TX_NODE_ID:=NODE_ID_SE_Zd1;                             (* Encoder 1 kippen *)
    321         TX_FUNCTION_CODE:=5;                                            (* PDO2 *)
    322         TX2E_POSITION:=Z_Pos_Geber2;
    323         TX2E_GESCHWINDIGKEIT:=DINT_TO_INT(1*(TX2E_POSITION-TX2E_POSITION_OldY)/1000);
    324         TX2E_BESCHLEUNIGUNG:=1*(TX2E_GESCHWINDIGKEIT-TX2E_GESCHWINDIGKEIT_OldY);
    325         IF (TX2E_POSITION_OldY<>TX2E_POSITION) OR (TX2E_GESCHWINDIGKEIT_OldY<>TX2E_GESCHWINDIGKEIT) THEN
    326                 ZyklischeDatenSenden:=TRUE;
    327         END_IF
    328         TX2E_POSITION_OldY:=TX2E_POSITION;
    329         TX2E_GESCHWINDIGKEIT_OldY:=TX2E_GESCHWINDIGKEIT;
    330 END_IF
    331 
    332 IF Zyklus=9 THEN
    333         TX_NODE_ID:=NODE_ID_SE_Zd2;                             (* Encoder 2 kippen *)
    334         TX_FUNCTION_CODE:=5;                                            (* PDO2 *)
    335         TX2E_POSITION:=-Z_Pos_Geber2;
    336         TX2E_GESCHWINDIGKEIT:=DINT_TO_INT(1*(TX2E_POSITION-TX2E_POSITION_OldZ)/1000);
    337         TX2E_BESCHLEUNIGUNG:=1*(TX2E_GESCHWINDIGKEIT-TX2E_GESCHWINDIGKEIT_OldZ);
    338         IF (TX2E_POSITION_OldZ<>TX2E_POSITION) OR (TX2E_GESCHWINDIGKEIT_OldZ<>TX2E_GESCHWINDIGKEIT) THEN
    339                 ZyklischeDatenSenden:=TRUE;
    340         END_IF
    341         TX2E_POSITION_OldZ:=TX2E_POSITION;
    342         TX2E_GESCHWINDIGKEIT_OldZ:=TX2E_GESCHWINDIGKEIT;
    343 END_IF
    344 
    345 IF Zyklus=10 THEN
    346324        TX_NODE_ID:=0;
    347325        TX_FUNCTION_CODE:=0;
     
    359337(* spezifischer Teil - Motor PDO 1 *)
    360338IF (TX_NODE_ID=NODE_ID_Mac_Az OR TX_NODE_ID=NODE_ID_Mac_Zd) AND TX_FUNCTION_CODE=3 THEN
    361         ByteBufferTXzyklisch[3]:=TX1M_LEER1;
    362         ByteBufferTXzyklisch[4]:=TX1M_LEER2;
    363         ByteBufferTXzyklisch[5]:=TX1M_STATUS2;
    364         ByteBufferTXzyklisch[6]:=TX1M_STATUS;
    365         ByteBufferTXzyklisch[7]:=DWORD_TO_BYTE(TX1M_POSITION AND 16#000000FF);
    366         ByteBufferTXzyklisch[8]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#0000FF00,8));
    367         ByteBufferTXzyklisch[9]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#00FF0000,16));
    368         ByteBufferTXzyklisch[10]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#FF000000,24));
     339        ByteBufferTXzyklisch[3]:=DWORD_TO_BYTE(TX1M_POSITION AND 16#000000FF);
     340        ByteBufferTXzyklisch[4]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#0000FF00,8));
     341        ByteBufferTXzyklisch[5]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#00FF0000,16));
     342        ByteBufferTXzyklisch[6]:=DWORD_TO_BYTE(SHR(TX1M_POSITION AND 16#FF000000,24));
     343
     344        ByteBufferTXzyklisch[7]:=DWORD_TO_BYTE(TX2E_POSITION AND 16#000000FF);
     345        ByteBufferTXzyklisch[8]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#0000FF00,8));
     346        ByteBufferTXzyklisch[9]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#00FF0000,16));
     347        ByteBufferTXzyklisch[10]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#FF000000,24));
     348
    369349END_IF
    370350
     
    383363(* spezifischer Teil - Motor PDO 3 *)
    384364IF (TX_NODE_ID=NODE_ID_Mac_Az OR TX_NODE_ID=NODE_ID_Mac_Zd) AND TX_FUNCTION_CODE=7 THEN
    385         ByteBufferTXzyklisch[3]:=TX3M_LEER1;
    386         ByteBufferTXzyklisch[4]:=TX3M_LEER2;
    387         ByteBufferTXzyklisch[5]:=TX3M_LEER3;
    388         ByteBufferTXzyklisch[6]:=TX3M_STATUS;
    389         ByteBufferTXzyklisch[7]:=DWORD_TO_BYTE(TX3M_LEER4 AND 16#000000FF);
    390         ByteBufferTXzyklisch[8]:=DWORD_TO_BYTE(SHR(TX3M_LEER4 AND 16#0000FF00,8));
    391         ByteBufferTXzyklisch[9]:=DWORD_TO_BYTE(SHR(TX3M_LEER4 AND 16#00FF0000,16));
    392         ByteBufferTXzyklisch[10]:=DWORD_TO_BYTE(SHR(TX3M_LEER4 AND 16#FF000000,24));
     365        ByteBufferTXzyklisch[3]:=TX3M_STATUS;(*TX1M_LEER1;*)
     366        ByteBufferTXzyklisch[4]:=16#FE; (*TX1M_LEER2;*)
     367        ByteBufferTXzyklisch[5]:=TX1M_STATUS2;
     368        ByteBufferTXzyklisch[6]:=TX1M_STATUS;
    393369END_IF
    394370
    395 (* spezifischer Teil - Encoder PDO 2 *)
    396 IF (TX_NODE_ID=NODE_ID_SE_Az OR TX_NODE_ID=NODE_ID_SE_Zd1 OR TX_NODE_ID=NODE_ID_SE_Zd2) AND TX_FUNCTION_CODE=5 THEN
    397         ByteBufferTXzyklisch[3]:=DWORD_TO_BYTE(TX2E_POSITION AND 16#000000FF);
    398         ByteBufferTXzyklisch[4]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#0000FF00,8));
    399         ByteBufferTXzyklisch[5]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#00FF0000,16));
    400         ByteBufferTXzyklisch[6]:=DWORD_TO_BYTE(SHR(TX2E_POSITION AND 16#FF000000,24));
    401         ByteBufferTXzyklisch[7]:=WORD_TO_BYTE(TX2E_GESCHWINDIGKEIT AND 16#00FF);
    402         ByteBufferTXzyklisch[8]:=WORD_TO_BYTE(SHR(TX2E_GESCHWINDIGKEIT AND 16#FF00,8));
    403         ByteBufferTXzyklisch[9]:=WORD_TO_BYTE(TX2E_BESCHLEUNIGUNG AND 16#00FF);
    404         ByteBufferTXzyklisch[10]:=WORD_TO_BYTE(SHR(TX2E_BESCHLEUNIGUNG AND 16#FF00,8));
    405 END_IF
    406371END_PROGRAM
    407372
     
    442407IF NeueDatenDa THEN
    443408        NeueDatenDa:=FALSE;
    444 
     409(*
    445410         IF X_PC_AntriebHalt THEN
    446411                X_PC_StartMovement := FALSE;
     
    449414                Z_PC_StartMovement := FALSE;
    450415        END_IF
    451 
     416 *)
    452417        (* Empfangenes Telegramm zerlegen *)
    453418        (* Angabe der Nutzbytes im ersten Byte wird ignoriert *)
     
    463428        IF RX_NODE_ID<>NODE_ID_Mac_Az
    464429                        AND RX_NODE_ID<>NODE_ID_Mac_Zd
    465                         AND RX_NODE_ID<>NODE_ID_SE_Az
     430                        (*AND RX_NODE_ID<>NODE_ID_SE_Az
    466431                        AND RX_NODE_ID<>NODE_ID_SE_Zd1
    467                         AND RX_NODE_ID<>NODE_ID_SE_Zd2
     432                        AND RX_NODE_ID<>NODE_ID_SE_Zd2*)
    468433                 THEN RETURN;
    469434        END_IF
    470435
    471         IF ((RX_NODE_ID=NODE_ID_Mac_Az OR RX_NODE_ID=NODE_ID_Mac_Zd) AND NOT IN_PC_Betrieb) OR
     436(*      IF ((RX_NODE_ID=NODE_ID_Mac_Az OR RX_NODE_ID=NODE_ID_Mac_Zd) AND NOT IN_PC_Betrieb) OR
    472437            (RX_NODE_ID=NODE_ID_Mac_Az AND (NOT X_ist_betriebsbereit OR NOT X_in_Referenz OR NOT X_ist_freigegeben)) OR
    473438           (RX_NODE_ID=NODE_ID_Mac_Zd AND (NOT Z_ist_betriebsbereit OR NOT Z_in_Referenz OR NOT Z_ist_freigegeben))
    474439                THEN RETURN;
     440        END_IF*)
     441(*
     442        IF ((RX_NODE_ID=NODE_ID_Mac_Az AND  NOT (X_IsOnline AND Y_IsOnline)) OR
     443           (RX_NODE_ID=NODE_ID_Mac_Zd AND NOT Z_IsOnline))
     444                THEN RETURN;
    475445        END_IF
    476 
     446*)
    477447        (* Antworttelegramm mit Daten aus empfangenen Telegramm vorbesetzen *)
    478448        TX_NODE_ID                              :=RX_NODE_ID;
     
    488458
    489459        (* Auf ausgewählte Telegramme antworten *)
     460
     461(*
    490462(*-----------------------------------------------------------------------------------------------------------------ENCODER----------------------------------------------------------*)
    491463        (*IF RX_NODE_ID>=4 AND RX_NODE_ID<=6 THEN       (* Encoder *)      durch konstant globale Variablen ersetzt *)
     464
    492465        IF RX_NODE_ID=NODE_ID_SE_Az
    493466                        OR RX_NODE_ID=NODE_ID_SE_Zd1
    494467                        OR RX_NODE_ID=NODE_ID_SE_Zd2 THEN
    495 
    496468                (* ---------------------------------------------------------------------PC will Antwort haben------------------------------------------------*)
     469
    497470                IF RX_COMMAND=16#40     THEN
    498471                        TX_COMMAND:=16#43;                                                      (* 4-Byte-Antwort *)
     
    514487                                                        CASE RX_NODE_ID OF
    515488                                                                NODE_ID_SE_Zd1: TX_VALUE:=Z_Pos_Geber2(*+Z_Offset_Geber2*);
    516                                                                 NODE_ID_SE_Zd2: TX_VALUE:=-Z_Pos_Geber2(*-Z_Offset_Geber2*);
    517489                                                                NODE_ID_SE_Az: TX_VALUE:=X_Pos_Geber2(*+X_Offset_Geber2*);
    518490                                                        END_CASE;
    519                                                         DatenSenden:=TRUE;
    520                                 (* Dummy's *)
    521                                 16#100C, 16#100D, 16#100E:      TX_VALUE:=16#00000000;
    522491                                                        DatenSenden:=TRUE;
    523492                        END_CASE;
     
    553522                END_IF
    554523        END_IF
    555 
     524*)
    556525(*-----------------------------------------------------------------------------------------------MOTOREN-------------------------------------------------------------------------------------------*)
    557526
     
    564533                        CASE RX_INDEX OF
    565534                                (* 0=Einmalige Freigabe erteilt, 1=Nicht *)
    566                                 16#1000:        IF RX_SUBINDEX=1 THEN
    567                                                                 CASE RX_NODE_ID OF
    568                                                                         NODE_ID_Mac_Az: IF X_EinmaligeFreigabe=FALSE THEN TX_VALUE:=16#00000000; ELSE TX_VALUE:=16#00000001; END_IF
    569                                                                         NODE_ID_Mac_Zd: IF Z_EinmaligeFreigabe=FALSE THEN TX_VALUE:=16#00000000; ELSE TX_VALUE:=16#00000001; END_IF
    570                                                                 END_CASE
    571                                                                 DatenSenden:=TRUE;
    572                                                         END_IF
     535                                16#1000:        CASE RX_NODE_ID OF
     536                                                                NODE_ID_Mac_Az: IF X_EinmaligeFreigabe=FALSE THEN TX_VALUE:=16#00000000; ELSE TX_VALUE:=16#00000001; END_IF
     537                                                                NODE_ID_Mac_Zd: IF Z_EinmaligeFreigabe=FALSE THEN TX_VALUE:=16#00000000; ELSE TX_VALUE:=16#00000001; END_IF
     538                                                        END_CASE
     539                                                        DatenSenden:=TRUE;
    573540                                (* Letzter Fehler *)
    574                                 16#1003:        IF RX_SUBINDEX=2 THEN
    575                                                                 CASE RX_NODE_ID OF
    576                                                                         NODE_ID_Mac_Az:         TX_VALUE:=SHL(WORD_TO_DWORD(X_Err_ID),16) OR 16#FF;
    577                                                                         NODE_ID_Mac_Zd:         TX_VALUE:=SHL(WORD_TO_DWORD(Z_Err_ID),16) OR 16#FF;
    578                                                                 END_CASE
    579                                                                 DatenSenden:=TRUE;
    580                                                         END_IF
    581                                 (* 1 zurückgeben *)
    582                                 16#1004:        IF RX_SUBINDEX=1 THEN
    583                                                                 TX_VALUE:=16#00000001;
    584                                                                 DatenSenden:=TRUE;
    585                                                         END_IF
    586                                 (* 0 zurückgeben *)
    587                                                         IF RX_SUBINDEX=1 THEN
    588                                                                 TX_VALUE:=16#00000000;
    589                                                                 DatenSenden:=TRUE;
    590                                                         END_IF
    591                                 (* 1 zurückgeben *)
    592                                                         IF RX_SUBINDEX=2 THEN
    593                                                                 TX_VALUE:=16#00000001;
    594                                                                 DatenSenden:=TRUE;
    595                                                         END_IF
    596                                 (* 0x4080 zurückgeben *)
    597                                 16#1005:        TX_VALUE:=16#00004080;
     541                                16#1003:        CASE RX_NODE_ID OF
     542                                                                NODE_ID_Mac_Az:         TX_VALUE:=SHL(WORD_TO_DWORD(X_Err_ID),16) OR 16#FF;
     543                                                                NODE_ID_Mac_Zd:         TX_VALUE:=SHL(WORD_TO_DWORD(Z_Err_ID),16) OR 16#FF;
     544                                                        END_CASE
    598545                                                        DatenSenden:=TRUE;
    599546                                (* Node-Nr 1 oder 3 zurückgeben *)
     
    602549                                (* Version, Subversion zurückgeben, je ein wort *)
    603550                                16#100A:        TX_VALUE:=16#00010002;
    604                                                         DatenSenden:=TRUE;
    605                                 (* 0 zurückgeben *)
    606                                 16#100C, 16#100D, 16#100E:      TX_VALUE:=16#00000000;
    607                                                         DatenSenden:=TRUE;
    608                                 (* 1 zurückgeben *)
    609                                 16#1010:        TX_VALUE:=16#00000001;
    610                                                         DatenSenden:=TRUE;
    611                                 (* 0 zurückgeben *)
    612                                 16#1011:        TX_VALUE:=16#00000000;
    613551                                                        DatenSenden:=TRUE;
    614552                                (* Gesetzte Geschwindigkeit für Pos-Betrieb *)
     
    619557                                                        DatenSenden:=TRUE;
    620558                                (* Gesetzte Beschleunigung für nächsten Fahrbefehl (Nur für Pos) *)
    621                                 16#2003:        IF RX_SUBINDEX=0 THEN
    622                                                                 CASE RX_NODE_ID OF
    623                                                                         NODE_ID_Mac_Az: TX_VALUE:=X_PC_PosBeschleunigung;
    624                                                                         NODE_ID_Mac_Zd: TX_VALUE:=Z_PC_PosBeschleunigung;
    625                                                                 END_CASE;
    626                                                                 DatenSenden:=TRUE;
    627                                                         END_IF
    628                                 (* Gesetzte Verzögerung für nächsten Fahrbefehl (Nur für Pos) *)
    629                                                         IF RX_SUBINDEX=1 THEN
    630                                                                 CASE RX_NODE_ID OF
    631                                                                         NODE_ID_Mac_Az: TX_VALUE:=X_PC_PosVerzoegerung;
    632                                                                         NODE_ID_Mac_Zd: TX_VALUE:=Z_PC_PosVerzoegerung;
    633                                                                 END_CASE;
    634                                                                 DatenSenden:=TRUE;
    635                                                         END_IF
    636                                 (* Einheit der Geschwindigkeit *)
    637                                 16#6002:        TX_VALUE:= VelocityResolution; (*16#00000000;*)
     559                                16#2003:        CASE RX_NODE_ID OF
     560                                                                NODE_ID_Mac_Az: TX_VALUE:=X_PC_PosBeschleunigung;
     561                                                                NODE_ID_Mac_Zd: TX_VALUE:=Z_PC_PosBeschleunigung;
     562                                                        END_CASE;
     563                                                        DatenSenden:=TRUE;
     564                                (* Unit of Velocity *)
     565                                16#6002:        TX_VALUE:=VelocityResolution;
     566                                                        DatenSenden:=TRUE;
     567                                (* Maximum Velocity *)
     568                                16#6003:        CASE RX_NODE_ID OF
     569                                                                NODE_ID_Mac_Az: TX_VALUE:=X_MaximumVelocity;
     570                                                                NODE_ID_Mac_Zd: TX_VALUE:=Z_MaximumVelocity;
     571                                                        END_CASE;
    638572                                                        DatenSenden:=TRUE;
    639573                                (* Aktuelle Position *)
    640574                                16#6004:        IF RX_SUBINDEX=0 THEN
    641575                                                                CASE RX_NODE_ID OF
    642                                                                         NODE_ID_Mac_Az: TX_VALUE:=-X_Pos_ist;           (*X_Pos_ist;            nehmen an, SE schon genau genug*)
    643                                                                         NODE_ID_Mac_Zd: TX_VALUE:=-Z_Pos_ist;           (*Z_Pos_ist;            nehmen an, SE schon genau genug*)
     576                                                                        NODE_ID_Mac_Az: TX_VALUE:=X_Pos_ist;            (*X_Pos_ist;            nehmen an, SE schon genau genug*)
     577                                                                        NODE_ID_Mac_Zd: TX_VALUE:=Z_Pos_ist;            (*Z_Pos_ist;            nehmen an, SE schon genau genug*)
    644578                                                                END_CASE;
    645579                                                                DatenSenden:=TRUE;
    646580                                                        END_IF
     581                                                        IF RX_SUBINDEX=1 THEN
     582                                                                CASE RX_NODE_ID OF
     583                                                                        NODE_ID_Mac_Az: TX_VALUE:=X_Pos_Geber2;         (*X_Pos_ist;            nehmen an, SE schon genau genug*)
     584                                                                        NODE_ID_Mac_Zd: TX_VALUE:=Z_Pos_Geber2;         (*Z_Pos_ist;            nehmen an, SE schon genau genug*)
     585                                                                END_CASE;
     586                                                                DatenSenden:=TRUE;
     587                                                        END_IF
     588
    647589                                (* Anzahl der Striche pro Umdrehung *)
    648                                 16#6501:        TX_VALUE:=RotaryEncoderResolution;
     590                                16#6501:        TX_VALUE:=ShaftEncoderResolution;
    649591                                                        DatenSenden:=TRUE;
    650592                                (* Geschwindigkeitsmaximalwert (den für Testzwecke) ausgeben *)
     
    666608                        CASE RX_INDEX OF
    667609                                (* Einmalige Freigabe etwas zu machen *)
    668                                 16#1000:        IF RX_SUBINDEX=1 AND RX_VALUE=1 THEN
    669                                                                 CASE RX_NODE_ID OF
    670                                                                         NODE_ID_Mac_Az: X_EinmaligeFreigabe:=TRUE;
    671                                                                         NODE_ID_Mac_Zd: Z_EinmaligeFreigabe:=TRUE;
    672                                                                 END_CASE
    673                                                                 TX_VALUE:=16#00000000;
    674                                                                 DatenSenden:=TRUE;
    675                                                         END_IF
    676                                 (* Fehler löschen *)
     610                                16#1000:        CASE RX_NODE_ID OF
     611                                                                NODE_ID_Mac_Az:
     612                                                                        IF RX_VALUE=1 THEN
     613                                                                                X_EinmaligeFreigabe:=TRUE;
     614                                                                        ELSE
     615                                                                                X_EinmaligeFreigabe:=FALSE;
     616                                                                        END_IF
     617                                                                NODE_ID_Mac_Zd:
     618                                                                        IF RX_VALUE=1 THEN
     619                                                                                Z_EinmaligeFreigabe:=TRUE;
     620                                                                        ELSE
     621                                                                                Z_EinmaligeFreigabe:=FALSE;
     622                                                                        END_IF
     623                                                        END_CASE
     624                                                        TX_VALUE:=16#00000000;
     625                                                        DatenSenden:=TRUE;
     626                                16#1001:        CASE RX_NODE_ID OF
     627                                                                NODE_ID_Mac_Az:
     628                                                                        IF RX_VALUE=1 THEN
     629                                                                                X_PC_ForcePDO3:=TRUE;
     630                                                                        END_IF
     631                                                                NODE_ID_Mac_Zd:
     632                                                                        IF RX_VALUE=1 THEN
     633                                                                                Z_PC_ForcePDO3:=TRUE;
     634                                                                        END_IF
     635                                                        END_CASE
     636                                                        TX_VALUE:=16#00000000;
     637                                                        DatenSenden:=TRUE;
     638                                (* Fehler löschen
    677639                                16#1003:        IF RX_SUBINDEX=0 AND RX_VALUE=0 THEN
    678640                                                                TX_VALUE:=16#00000000;
    679641                                                                DatenSenden:=TRUE;
    680                                                         END_IF
    681                                 (* Set guard time*)
    682                                 16#100C:        TX_VALUE:=16#00000000;
    683                                                         DatenSenden:=TRUE;
    684                                 (* Set lifetime factor*)
    685                                 16#100D:        TX_VALUE:=16#00000000;
    686                                                         DatenSenden:=TRUE;
    687                                 (* Selbstständig PDO's schicken *)
    688                                 16#1800:        IF RX_SUBINDEX=1 THEN
    689                                                                 TX_VALUE:=16#00000000;
    690                                                                 DatenSenden:=TRUE;
    691                                                         END_IF
     642                                                        END_IF*)
    692643                                (* Geschwindigkeit für nächsten Fahrbefehl (Nur für Pos) *)
    693644                                (* Wenn noch nie eine gesetzt 1% *)
     
    699650                                                        DatenSenden:=TRUE;
    700651                                (* Beschleunigung für nächsten Fahrbefehl (Nur für Pos) 600.000.000 ist Maximum *)
    701                                 16#2003:        IF RX_SUBINDEX=0 THEN
    702                                                                 CASE RX_NODE_ID OF
    703                                                                         NODE_ID_Mac_Az: X_PC_PosBeschleunigung:=RX_VALUE;
    704                                                                         NODE_ID_Mac_Zd: Z_PC_PosBeschleunigung:=RX_VALUE;
    705                                                                 END_CASE
    706                                                                 TX_VALUE:=16#00000000;
    707                                                                 DatenSenden:=TRUE;
    708                                                         END_IF
    709                                 (* Verzögerung für nächsten Fahrbefehl (Nur für Pos) 600.000.000 ist Maximum *)
    710                                                         IF RX_SUBINDEX=1 THEN
    711                                                                 CASE RX_NODE_ID OF
    712                                                                         NODE_ID_Mac_Az: X_PC_PosVerzoegerung:=RX_VALUE;
    713                                                                         NODE_ID_Mac_Zd: Z_PC_PosVerzoegerung:=RX_VALUE;
    714                                                                 END_CASE
    715                                                                 TX_VALUE:=16#00000000;
    716                                                                 DatenSenden:=TRUE;
    717                                                         END_IF
     652                                16#2003:        CASE RX_NODE_ID OF
     653                                                                NODE_ID_Mac_Az: X_PC_PosBeschleunigung:=RX_VALUE;
     654                                                                NODE_ID_Mac_Zd: Z_PC_PosBeschleunigung:=RX_VALUE;
     655                                                        END_CASE
     656                                                        TX_VALUE:=16#00000000;
     657                                                        DatenSenden:=TRUE;
    718658                                (* Wenn VALUE= 'p' 'o' 't' 's' dann Fahrbefehl abbrechen (Pos und V-Regelung) *)
    719659                                16#3000:        CompareDwordString4_IDB(D:=RX_VALUE, Str:='stop');
     
    733673                                (* Wenn einmalige Freigabe nicht da -> Error *)
    734674                                (* Wenn VALUE= 'p' 'o' 't' 's' dann Geschwindigkeitsregelung stoppen *)
    735                                 16#3006:        IF RX_SUBINDEX=0 THEN
    736                                                                 CompareDwordString4_IDB(D:=RX_VALUE, Str:='stop');
    737                                                                 IF CompareDwordString4_IDB.Ergebnis THEN
    738                                                                         CASE RX_NODE_ID OF
    739                                                                                 NODE_ID_Mac_Az:
    740                                                                                         X_PC_VStart:=FALSE;
    741                                                                                         X_PC_AntriebHalt:=TRUE;
    742                                                                                         X_PC_StartMovement:=FALSE; (* maybe not necessary *)
    743                                                                                         (*X_PC_PosZiel:=X_Pos_ist;*)
    744                                                                                 NODE_ID_Mac_Zd:
    745                                                                                         Z_PC_VStart:=FALSE;
    746                                                                                         Z_PC_AntriebHalt:=TRUE;
    747                                                                                         Z_PC_StartMovement:=FALSE; (* maybe not necessary *)
    748                                                                                         (*Z_PC_PosZiel:=Z_Pos_ist;*)
    749                                                                         END_CASE
    750                                                                         DatenSenden:=TRUE;
    751                                                                 END_IF
    752                                                                 CompareDwordString4_IDB(D:=RX_VALUE, Str:='strt');
    753                                                                 IF CompareDwordString4_IDB.Ergebnis THEN
    754                                                                         CASE RX_NODE_ID OF
    755                                                                                 NODE_ID_Mac_Az:                         (*IF X_EinmaligeFreigabe THEN*)
    756                                                                                                 X_PC_VStart:=TRUE;
    757                                                                                                 X_PC_AntriebHalt:=FALSE;
    758                                                                                                 X_PC_VGeschwindigkeit:=0;
    759                                                                                                 (*X_PC_StartMovement:=TRUE;*)
    760                                                                                         (*END_IF*)
    761                                                                                 NODE_ID_Mac_Zd:                         (*IF Z_EinmaligeFreigabe THEN*)
    762                                                                                                 Z_PC_VStart:=TRUE;
    763                                                                                                 Z_PC_AntriebHalt:=FALSE;
    764                                                                                                 Z_PC_VGeschwindigkeit:=0;
    765                                                                                                 (*Z_PC_StartMovement:=TRUE;     war auskmmentiert*)
    766                                                                                         (*END_IF*)
    767                                                                         END_CASE
    768                                                                         DatenSenden:=TRUE;                              (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
    769                                                                 END_IF
    770                                                                 TX_VALUE:=16#00000000;
    771                                                         END_IF
    772                                 (* Geschwindigkeit für Geschwindigkeitsregelung *)
    773                                                         IF RX_SUBINDEX=1 THEN
     675                                16#3006:        CompareDwordString4_IDB(D:=RX_VALUE, Str:='stop');
     676                                                        IF CompareDwordString4_IDB.Ergebnis THEN
    774677                                                                CASE RX_NODE_ID OF
    775678                                                                        NODE_ID_Mac_Az:
    776                                                                   IF (X_PC_VGeschwindigkeit>=0 AND RX_VALUE<0) OR (X_PC_VGeschwindigkeit<=0 AND RX_VALUE>0) THEN
    777                                                                                         X_PC_StartMovement:=TRUE;
    778                                                                                 END_IF
    779                                                                                 X_PC_VGeschwindigkeit:=RX_VALUE;
     679                                                                                X_PC_VStart:=FALSE;
     680                                                                                X_PC_AntriebHalt:=TRUE;
     681                                                                                (*X_PC_StartMovement:=FALSE; *)(* maybe not necessary *)
     682                                                                                (*X_PC_PosZiel:=X_Pos_ist;*)
    780683                                                                        NODE_ID_Mac_Zd:
    781                                                                   IF (Z_PC_VGeschwindigkeit>=0 AND RX_VALUE<0) OR (Z_PC_VGeschwindigkeit<=0 AND RX_VALUE>0) THEN
    782                                                                                         Z_PC_StartMovement:=TRUE;
    783                                                                                 END_IF
    784                                                                                 Z_PC_VGeschwindigkeit:=RX_VALUE;
    785                                                                                 (*Z_PC_StartMovement:=TRUE;      Kommentar ersatzweise fuer den oben*)
     684                                                                                Z_PC_VStart:=FALSE;
     685                                                                                Z_PC_AntriebHalt:=TRUE;
     686                                                                                (*Z_PC_StartMovement:=FALSE;*) (* maybe not necessary *)
     687                                                                                (*Z_PC_PosZiel:=Z_Pos_ist;*)
    786688                                                                END_CASE
    787                                                                 TX_VALUE:=16#00000000;
    788689                                                                DatenSenden:=TRUE;
    789690                                                        END_IF
     691                                                        CompareDwordString4_IDB(D:=RX_VALUE, Str:='strt');
     692                                                        IF CompareDwordString4_IDB.Ergebnis THEN
     693                                                                CASE RX_NODE_ID OF
     694                                                                        NODE_ID_Mac_Az:                         (*IF X_EinmaligeFreigabe THEN*)
     695                                                                                        X_PC_VStart:=TRUE;
     696                                                                                        X_PC_IsRelative:=TRUE;
     697                                                                                        X_PC_AntriebHalt:=FALSE;
     698                                                                                        X_PC_VGeschwindigkeit:=0;
     699                                                                                        X_AnnounceStartMovement:=TRUE;
     700                                                                                        (*X_PC_StartMovement:=TRUE;*)
     701                                                                                (*END_IF*)
     702                                                                        NODE_ID_Mac_Zd:                         (*IF Z_EinmaligeFreigabe THEN*)
     703                                                                                        Z_PC_VStart:=TRUE;
     704                                                                                        Z_PC_IsRelative:=TRUE;
     705                                                                                        Z_PC_AntriebHalt:=FALSE;
     706                                                                                        Z_PC_VGeschwindigkeit:=0;
     707                                                                                        Z_AnnounceStartMovement:=TRUE;
     708                                                                                        (*Z_PC_StartMovement:=TRUE;     war auskmmentiert*)
     709                                                                                (*END_IF*)
     710                                                                END_CASE
     711                                                                DatenSenden:=TRUE;                              (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
     712                                                        END_IF
     713                                                        TX_VALUE:=16#00000000;
     714                                (* Geschwindigkeit für Geschwindigkeitsregelung *)
     715                                16#3007:        CASE RX_NODE_ID OF
     716                                                                NODE_ID_Mac_Az:
     717                                                                 IF (X_PC_VGeschwindigkeit>=0 AND DWORD_TO_DINT(RX_VALUE)<0) OR (X_PC_VGeschwindigkeit<=0 AND DWORD_TO_DINT(RX_VALUE)>0) THEN
     718                                                                                X_PC_StartMovement := NOT X_PC_StartMovement;
     719                                                                        END_IF
     720                                                                        X_PC_VGeschwindigkeit:=RX_VALUE;
     721                                                                NODE_ID_Mac_Zd:
     722                                                                 IF (Z_PC_VGeschwindigkeit>=0 AND DWORD_TO_DINT(RX_VALUE)<0) OR (Z_PC_VGeschwindigkeit<=0 AND DWORD_TO_DINT(RX_VALUE)>0) THEN
     723                                                                                Z_PC_StartMovement := NOT Z_PC_StartMovement;
     724                                                                        END_IF
     725                                                                        Z_PC_VGeschwindigkeit:=RX_VALUE;
     726                                                                        (*Z_PC_StartMovement:=TRUE;      Kommentar ersatzweise fuer den oben*)
     727                                                        END_CASE
     728                                                        TX_VALUE:=16#00000000;
     729                                                        DatenSenden:=TRUE;
    790730                                (* absolute Position & Fahrbefehl starten (Nur für Pos) *)
    791731                                (* Wenn einmalige Freigabe nicht da -> Error *)
    792                                 16#6004:        (*IF RX_SUBINDEX=0 THEN
    793                                                                 CASE RX_NODE_ID OF
    794                                                                         NODE_ID_Mac_Az:
    795                                                                 IF X_EinmaligeFreigabe THEN
    796                                                                                         X_PC_PosZiel:=RX_VALUE;
    797                                                                                         X_PC_AntriebHalt:=FALSE;
    798                                                                                         X_PC_StartMovement:=TRUE;
    799                                                                                         TX_VALUE:=16#00000000;
    800                                                                                 ELSE
    801                                                                                         TX_VALUE:=16#00000001;
    802                                                                                 END_IF
    803                                                                                 DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
    804                                                                         NODE_ID_Mac_Zd:
    805                                                                                 IF Z_EinmaligeFreigabe THEN
    806                                                                                         Z_PC_PosZiel:=RX_VALUE;
    807                                                                                         Z_PC_AntriebHalt:=FALSE;
    808                                                                                         Z_PC_StartMovement:=TRUE;
    809                                                                                         TX_VALUE:=16#00000000;
    810                                                                                 ELSE
    811                                                                                         TX_VALUE:=16#00000001;
    812                                                                                 END_IF
    813                                                                                 DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
    814                                                                 END_CASE
    815                                                         END_IF*)
     732                                16#6004:        CASE RX_NODE_ID OF
     733                                                                NODE_ID_Mac_Az:
     734                                                                IF X_EinmaligeFreigabe THEN
     735                                                                                X_PC_IsRelative:=FALSE;
     736                                                                                X_PC_PosZiel:=RX_VALUE;
     737                                                                                X_PC_AntriebHalt:=FALSE;
     738                                                                                X_PC_StartMovement := NOT X_PC_StartMovement;
     739                                                                                X_PC_AnnounceStartMovement := TRUE;
     740                                                                                X_AnnounceStartMovement := TRUE;
     741                                                                                TX_VALUE:=16#00000000;
     742                                                                        ELSE
     743                                                                                TX_VALUE:=16#00000001;
     744                                                                        END_IF
     745                                                                        DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
     746                                                                NODE_ID_Mac_Zd:
     747                                                                        IF Z_EinmaligeFreigabe THEN
     748                                                                                Z_PC_IsRelative:=FALSE;
     749                                                                                Z_PC_PosZiel:=RX_VALUE;
     750                                                                                Z_PC_AntriebHalt:=FALSE;
     751                                                                                Z_PC_StartMovement := NOT Z_PC_StartMovement;
     752                                                                                Z_PC_AnnounceStartMovement := TRUE;
     753                                                                                Z_AnnounceStartMovement := TRUE;
     754                                                                                TX_VALUE:=16#00000000;
     755                                                                        ELSE
     756                                                                                TX_VALUE:=16#00000001;
     757                                                                        END_IF
     758                                                                        DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
     759                                                        END_CASE
    816760                                (* relative Position & Fahrbefehl starten (Nur für Pos) *)
    817761                                (* Wenn einmalige Freigabe nicht da -> Error *)
    818                                                         IF RX_SUBINDEX=1 THEN
    819                                                                 CASE RX_NODE_ID OF
    820                                                                         NODE_ID_Mac_Az:
    821                                                                                 IF X_EinmaligeFreigabe THEN
    822                                                                                         X_PC_PosZiel:=-REAL_TO_DWORD(DWORD_TO_REAL(RX_VALUE)*RotationalPositionResolution/RotaryEncoderResolution/ArbitraryMACFactor);
    823                                                                                         X_PC_AntriebHalt:=FALSE;
    824                                                                                         X_PC_StartMovement:=TRUE;
    825                                                                                         TX_VALUE:=16#00000000;
    826                                                                                 ELSE
    827                                                                                         TX_VALUE:=16#00000001;
    828                                                                                 END_IF
    829                                                                                 DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
    830                                                                         NODE_ID_Mac_Zd:
    831                                                                                 IF Z_EinmaligeFreigabe THEN
    832                                                                                         Z_PC_PosZiel:=-REAL_TO_DWORD(DWORD_TO_REAL(RX_VALUE)*RotationalPositionResolution/RotaryEncoderResolution/ArbitraryMACFactor);
    833                                                                                         Z_PC_AntriebHalt:=FALSE;
    834                                                                                         Z_PC_StartMovement:=TRUE;
    835                                                                                         TX_VALUE:=16#00000000;
    836                                                                                 ELSE
    837                                                                                         TX_VALUE:=16#00000001;
    838                                                                                 END_IF
    839                                                                                 DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
    840                                                                 END_CASE
    841                                                         END_IF
     762                                16#6005:        CASE RX_NODE_ID OF
     763                                                                NODE_ID_Mac_Az:
     764                                                                        IF X_EinmaligeFreigabe THEN
     765                                                                                X_PC_IsRelative:=TRUE;
     766                                                                                (*X_PC_PosZiel:=REAL_TO_DWORD(DWORD_TO_REAL(RX_VALUE)*RotationalPositionResolution/RotaryEncoderResolution/ArbitraryMACFactor);*)
     767                                                                                X_PC_PosZiel:=RX_VALUE;
     768                                                                                X_PC_AntriebHalt:=FALSE;
     769                                                                                X_PC_StartMovement := NOT X_PC_StartMovement;
     770                                                                                X_PC_AnnounceStartMovement := TRUE;
     771                                                                                X_AnnounceStartMovement := TRUE;
     772                                                                                TX_VALUE:=16#00000000;
     773                                                                        ELSE
     774                                                                                TX_VALUE:=16#00000001;
     775                                                                        END_IF
     776                                                                        DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
     777                                                                NODE_ID_Mac_Zd:
     778                                                                        IF Z_EinmaligeFreigabe THEN
     779                                                                                Z_PC_IsRelative:=TRUE;
     780                                                                                (*Z_PC_PosZiel:=REAL_TO_DWORD(DWORD_TO_REAL(RX_VALUE)*RotationalPositionResolution/RotaryEncoderResolution/ArbitraryMACFactor);*)
     781                                                                                Z_PC_PosZiel:=RX_VALUE;
     782                                                                                Z_PC_AntriebHalt:=FALSE;
     783                                                                                Z_PC_StartMovement := NOT Z_PC_StartMovement;
     784                                                                                Z_PC_AnnounceStartMovement := TRUE;
     785                                                                                Z_AnnounceStartMovement := TRUE;
     786                                                                                TX_VALUE:=16#00000000;
     787                                                                        ELSE
     788                                                                                TX_VALUE:=16#00000001;
     789                                                                        END_IF
     790                                                                        DatenSenden:=TRUE;                      (* Wenn keine einmalige Freigabe bleibt dieses Bit auf FALSE -> Error-Telegramm *)
     791                                                        END_CASE
    842792                                (* Maximale Geschwindigkeit begrenzen (für Beides) (Nur zu Testzwecken) *)
    843793                                16#6502:        CASE RX_NODE_ID OF
     
    845795                                                                NODE_ID_Mac_Zd: Z_PC_Maximalgeschwindigkeit:=RX_VALUE;
    846796                                                        END_CASE
    847                                                         TX_VALUE:=16#00000000;
    848                                                         DatenSenden:=TRUE;
    849                                 (* Dummy's *)
    850                                 16#6002,16#6200,16#6500:
    851797                                                        TX_VALUE:=16#00000000;
    852798                                                        DatenSenden:=TRUE;
     
    881827
    882828(*-----------------------------------------------------------------------------------------------Zusatzbedingungen-------------------------------------------------------------------------------------------*)
    883 IF X_PC_Maximalgeschwindigkeit<X_PC_PosGeschwindigkeit THEN
     829(*IF X_PC_Maximalgeschwindigkeit<X_PC_PosGeschwindigkeit THEN
    884830        X_PC_PosGeschwindigkeit:=X_PC_Maximalgeschwindigkeit;
    885831END_IF
     
    896842Z_PC_VGeschwindigkeit:=Z_PC_Maximalgeschwindigkeit;
    897843END_IF
     844*)
    898845
    899846IF NOT X_EinmaligeFreigabe THEN
     
    11791126
    11801127END_PROGRAM
    1181 
    1182 
    1183 (* @PATH := '\/Unterprogramme' *)
    1184 (* @SYMFILEFLAGS := '2048' *)
    1185 FUNCTION_BLOCK AccMACStoDKC
    1186 
    1187 VAR_INPUT
    1188         MACS            :DWORD;
    1189 END_VAR
    1190 
    1191 VAR_OUTPUT
    1192         DKC             :DWORD;
    1193 END_VAR
    1194 (* @END_DECLARATION := '0' *)
    1195 (*DKC:=REAL_TO_DWORD(DWORD_TO_REAL(MACS)*PI/MaximumVelocity+0.5);*)
    1196 DKC:=REAL_TO_DWORD(DWORD_TO_REAL(MACS)*PI/MaximumVelocity*ArbitraryMACFactor+0.5);
    1197 END_FUNCTION_BLOCK
    11981128
    11991129
     
    14221352_POSITIV
    14231353IN_FB_Betrieb
    1424 _FUNCTIONBLOCK
     1354_FUNCTION
     1355_BOX_EXPR : 1
     1356_OPERATOR
     1357_BOX_EXPR : 3
     1358_OPERATOR
     1359_BOX_EXPR : 2
     1360_OPERATOR
     1361_BOX_EXPR : 1
     1362_OPERATOR
     1363_BOX_EXPR : 2
     1364_OPERAND
     1365_EXPRESSION
     1366_POSITIV
     1367Pos_ist
     1368_OPERAND
     1369_EXPRESSION
     1370_POSITIV
     1371Pos_soll
     1372_EXPRESSION
     1373_POSITIV
     1374SUB
     1375_EXPRESSION
     1376_POSITIV
     1377ABS
     1378_OPERAND
     1379_EXPRESSION
     1380_POSITIV
     1381-1000
     1382_EXPRESSION
     1383_POSITIV
     1384LT
     1385_OPERAND
     1386_EXPRESSION
     1387_POSITIV
     1388PC_PosBeschleunigung
     1389_OPERAND
     1390_EXPRESSION
     1391_POSITIV
     1392PC_PosVerzoegerung
     1393_EXPRESSION
     1394_POSITIV
     1395SEL
     1396_EXPRESSION
     1397_POSITIV
    14251398AccMACStoDKC
    1426 _BOX_EXPR : 1
    1427 _OPERATOR
    1428 _BOX_EXPR : 3
    1429 _OPERATOR
    1430 _BOX_EXPR : 2
    1431 _OPERATOR
    1432 _BOX_EXPR : 1
    1433 _OPERATOR
    1434 _BOX_EXPR : 2
    1435 _OPERAND
    1436 _EXPRESSION
    1437 _POSITIV
    1438 Pos_ist
    1439 _OPERAND
    1440 _EXPRESSION
    1441 _POSITIV
    1442 Pos_soll
    1443 _EXPRESSION
    1444 _POSITIV
    1445 SUB
    1446 _EXPRESSION
    1447 _POSITIV
    1448 ABS
    1449 _OPERAND
    1450 _EXPRESSION
    1451 _POSITIV
    1452 -1000
    1453 _EXPRESSION
    1454 _POSITIV
    1455 LT
    1456 _OPERAND
    1457 _EXPRESSION
    1458 _POSITIV
    1459 PC_PosBeschleunigung
    1460 _OPERAND
    1461 _EXPRESSION
    1462 _POSITIV
    1463 PC_PosVerzoegerung
    1464 _EXPRESSION
    1465 _POSITIV
    1466 SEL
    1467 _EXPRESSION
    1468 _POSITIV
    1469 AccMACStoDKC
    1470 _OUTPUTS : 0
    14711399_OPERAND
    14721400_EXPRESSION
     
    15731501
    15741502VAR_INPUT
    1575         Betriebsart_1                   :BOOL;
    1576         Betriebsart_2                   :BOOL;
    1577         Sammelstoerung          :BOOL;
     1503        Betriebsart_1:                  BOOL;
     1504        Betriebsart_2:                  BOOL;
     1505        Sammelstoerung:         BOOL;
    15781506END_VAR
    15791507
    15801508VAR_OUTPUT
    1581         Betriebszustand_ok                      :BOOL;
     1509        Betriebszustand_ok:                     BOOL;
    15821510END_VAR
    15831511
    15841512VAR
    1585         Betriebsart_aktiv                               :BOOL;
    1586         FL_pos: R_TRIG;
    1587         FL_neg: F_TRIG;
    1588         Betriebszustand_geaendert       :BOOL;
     1513        Betriebsart_aktiv:                              BOOL;
     1514        DetectEdge:                                     RF_TRIG;
    15891515END_VAR
    15901516(* @END_DECLARATION := '0' *)
    15911517_FBD_BODY
    1592 _NETWORKS : 3
     1518_NETWORKS : 2
    15931519_NETWORK
    15941520
     
    16241550
    16251551_COMMENT
    1626 Flankenauswertung Automatik
     1552
    16271553_END_COMMENT
    16281554_ASSIGN
     
    16301556_BOX_EXPR : 2
    16311557_FUNCTIONBLOCK
    1632 FL_pos
     1558DetectEdge
    16331559_BOX_EXPR : 1
    16341560_OPERAND
     
    16371563Betriebsart_aktiv
    16381564_EXPRESSION
    1639 _POSITIV
    1640 R_TRIG
     1565_NEGATIV
     1566RF_TRIG
    16411567_OUTPUTS : 0
    1642 _FUNCTIONBLOCK
    1643 FL_neg
    1644 _BOX_EXPR : 1
    1645 _OPERAND
    1646 _EXPRESSION
    1647 _POSITIV
    1648 Betriebsart_aktiv
    1649 _EXPRESSION
    1650 _POSITIV
    1651 F_TRIG
    1652 _OUTPUTS : 0
    1653 _EXPRESSION
    1654 _POSITIV
    1655 OR
    1656 _EXPRESSION
    1657 _POSITIV
    1658 _OUTPUTS : 1
    1659 _OUTPUT
    1660 _POSITIV
    1661 _NO_SET
    1662 Betriebszustand_geaendert
    1663 _NETWORK
    1664 
    1665 _COMMENT
    1666 
    1667 _END_COMMENT
    1668 _ASSIGN
    1669 _OPERATOR
    1670 _BOX_EXPR : 2
    1671 _OPERAND
    1672 _EXPRESSION
    1673 _NEGATIV
    1674 Betriebszustand_geaendert
    16751568_OPERAND
    16761569_EXPRESSION
     
    16961589
    16971590VAR_INPUT
    1698         D                       :DWORD;
    1699         Str                     :STRING(4);
     1591        D:                      DWORD;
     1592        Str:                    STRING(4);
    17001593END_VAR
    17011594
    17021595VAR_OUTPUT
    1703         Ergebnis        :BOOL;
     1596        Ergebnis:       BOOL;
    17041597END_VAR
    17051598
    17061599VAR
    1707         i                       :INT;
    1708         B1                      :BYTE;
    1709         B2                      :BYTE;
    1710       ptr                       :POINTER TO BYTE;
     1600        i:                      INT;
     1601        B1:                     BYTE;
     1602        B2:                     BYTE;
     1603      ptr:                      POINTER TO BYTE;
    17111604END_VAR
    17121605(* @END_DECLARATION := '0' *)
     
    17841677
    17851678VAR_INPUT
    1786         Freigabe                                                :BOOL;                  (*Antriebstatus Uebergang Ab -> Ah*)
    1787         ReleaseAntriebHalt                      :BOOL;                          (*Explicitly release Antrieb Halt*)
    1788         FehlerQuittieren                                :BOOL;                  (*Stoerung quittieren*)
    1789         Absolutmasssetzen                       :BOOL;                          (*Absolutmass setzen*)
    1790         TippenAn                                                :BOOL;                          (*Betriebart Tippen ausgewaehlt*)
    1791         TippenPlus                                      :BOOL;                  (*Tippen vorwaerts*)
    1792         TippenMinus                                     :BOOL;                  (*Tippen rueckwaerts*)
    1793         Start                                                   :BOOL;                  (*Positionierung starten*)
     1679        Freigabe:                                               BOOL;                   (*Antriebstatus Uebergang Ab -> Ah*)
     1680        ReleaseAntriebHalt:                     BOOL;                           (*Explicitly release Antrieb Halt*)
     1681        FehlerQuittieren:                               BOOL;                   (*Stoerung quittieren*)
     1682        Absolutmasssetzen:                      BOOL;                           (*Absolutmass setzen*)
     1683        TippenAn:                                               BOOL;                           (*Betriebart Tippen ausgewaehlt*)
     1684        TippenPlus:                                     BOOL;                   (*Tippen vorwaerts*)
     1685        TippenMinus:                                    BOOL;                   (*Tippen rueckwaerts*)
     1686        Start:                                                  BOOL;                   (*Positionierung starten*)
    17941687        RelativesPositionieren:                 BOOL;
    1795         SollwertPosition                                :DINT;                          (*Soll-Position*)
    1796         SollwertGeschwindigkeit         :DINT;                          (*Soll-Geschwindigkeit*)
     1688        Geschwindigkeitsregelung:       BOOL;
     1689        SollwertPosition:                               DINT;                           (*Soll-Position*)
     1690        SollwertGeschwindigkeit:                DINT;                           (*Soll-Geschwindigkeit*)
    17971691       PositionierBeschleunigung:       DWORD;                  (*PositionierBeschleunigung*)
    17981692        PC_Mode:                                                BOOL;
    1799         Zusatzfenster_POS_OK            :DINT;                          (*POS_OK Fenster in der SPS*)
    1800         PEW1                                                    :WORD;                  (*Eingangswort 1*)
    1801         PEW2                                                    :WORD;                  (*Eingangswort 2*)
    1802         PEW3                                                    :WORD;                  (*Eingangswort 3*)
    1803         PEW4                                                    :WORD;                  (*Eingangswort 4*)
    1804         PEW5                                                    :WORD;                  (*Eingangswort 5*)
    1805         PEW6                                                    :WORD;                  (*Eingangswort 6*)
    1806         PEW7                                                    :WORD;                  (*Eingangswort 7*)
    1807         PEW8                                                    :WORD;                  (*Eingangswort 8*)
    1808         PEW9                                                    :WORD;                  (*Eingangswort 9*)
    1809 END_VAR
    1810 
    1811 VAR_IN_OUT
     1693        PEW1:                                                   WORD;                   (*Eingangswort 1*)
     1694        PEW2:                                                   WORD;                   (*Eingangswort 2*)
     1695        PEW3:                                                   WORD;                   (*Eingangswort 3*)
     1696        PEW4:                                                   WORD;                   (*Eingangswort 4*)
     1697        PEW5:                                                   WORD;                   (*Eingangswort 5*)
     1698        PEW6:                                                   WORD;                   (*Eingangswort 6*)
     1699        PEW7:                                                   WORD;                   (*Eingangswort 7*)
     1700        PEW8:                                                   WORD;                   (*Eingangswort 8*)
     1701        PEW9:                                                   WORD;                   (*Eingangswort 9*)
    18121702        StartMovement                           :BOOL;
    18131703END_VAR
     
    18281718        IstwertGeschwindigkeit          :DINT;                          (*Aktuelle Geschwindigkeit, actual velocity*)
    18291719        PositionFeedback2                       :DINT;
     1720       IsOnline                                         :BOOL;                    (* Drive is online on the bus *)
    18301721        PAW1                                                    :WORD;                  (*Ausgangswort 1*)
    18311722        PAW2                                                    :WORD;                  (*Ausgangswort 2*)
     
    18401731
    18411732VAR
    1842         ek_in_eco:                                      struct_ek_in_eco;       (*Feldbusschnittstelle-Eingänge*)
    1843         ek_out_eco:                                     struct_ek_out_eco;      (*Feldbusschnittstelle-Eingänge*)
    1844         INTERN_FRG:                             BOOL;
    1845         INTERN_JOG_FORWARD:     BOOL;
    1846         INTERN_JOG_BACKWARD:    BOOL;
    1847         INTERN_POS_START:               BOOL;
    1848         Negate:                                         NEG;
    1849         RStest:                                                 RS;
    1850         PC_Start_pos:                           BOOL;
    1851         Decoder:                                                Decode;
    1852         Encoder:                                                Encode;
    1853         Delay_StartMovement:            TON;
    1854         SetpointAcknowledgment:         RF_TRIG;
    1855         FA: BOOL;
    1856         Dummy: TOF;
    1857         RStest2: RS;
     1733        ek_in_eco:                                              struct_ek_in_eco;               (*Feldbusschnittstelle-Eingänge*)
     1734        ek_out_eco:                                             struct_ek_out_eco;      (*Feldbusschnittstelle-Eingänge*)
     1735        INTERN_FRG:                                     BOOL;
     1736        INTERN_JOG_FORWARD:             BOOL;
     1737        INTERN_JOG_BACKWARD:            BOOL;
     1738        INTERN_POS_START:                       BOOL;
     1739        Negate:                                                 NEG;
     1740        RStest:                                                         RS;
     1741        PC_Start_pos:                                   BOOL;
     1742        Decoder:                                                        Decode;
     1743        Encoder:                                                        Encode;
     1744        DelayResetOfStartMovement:      TON;
     1745        ToggleStartMovement: BLINK;
     1746        DelayInPosition: TON;
     1747        PositionFeedback1: DINT;
     1748        DelayStartMovementTon: TON;
     1749        DelayStartMovementTof: TOF;
     1750        dummy: BOOL;
     1751        dummys: BOOL;
    18581752END_VAR
    18591753(* @END_DECLARATION := '0' *)
    18601754_FBD_BODY
    1861 _NETWORKS : 48
     1755_NETWORKS : 51
    18621756_NETWORK
    18631757
     
    19741868_ASSIGN
    19751869_FUNCTIONBLOCK
    1976 Negate
    1977 _BOX_EXPR : 1
    1978 _FUNCTIONBLOCK
    19791870Decoder
    19801871_BOX_EXPR : 2
     
    19931884_EXPRESSION
    19941885_POSITIV
    1995 NEG
    1996 _OUTPUTS : 0
    1997 _EXPRESSION
    1998 _POSITIV
    19991886_OUTPUTS : 1
    20001887_OUTPUT
     
    20021889_NO_SET
    20031890PositionFeedback2
     1891_NETWORK
     1892
     1893_COMMENT
     1894
     1895_END_COMMENT
     1896_ASSIGN
     1897_OPERAND
     1898_EXPRESSION
     1899_POSITIV
     1900ek_in_eco.pos_act
     1901_EXPRESSION
     1902_POSITIV
     1903_OUTPUTS : 1
     1904_OUTPUT
     1905_POSITIV
     1906_NO_SET
     1907PositionFeedback1
    20041908_NETWORK
    20051909
     
    22332137_POSITIV
    22342138_NO_SET
    2235 INTERN_JOG_FORWARD
     2139INTERN_JOG_BACKWARD
    22362140_NETWORK
    22372141
     
    22672171_POSITIV
    22682172_NO_SET
    2269 INTERN_JOG_BACKWARD
     2173INTERN_JOG_FORWARD
    22702174_NETWORK
    22712175
     
    25082412_END_COMMENT
    25092413_ASSIGN
     2414_OPERATOR
     2415_BOX_EXPR : 2
     2416_OPERAND
     2417_EXPRESSION
     2418_POSITIV
     2419PositionFeedback1
     2420_OPERATOR
     2421_BOX_EXPR : 2
     2422_OPERAND
     2423_EXPRESSION
     2424_POSITIV
     2425SollwertPosition
     2426_OPERAND
     2427_EXPRESSION
     2428_POSITIV
     2429PositionFeedback2
     2430_EXPRESSION
     2431_POSITIV
     2432SUB
     2433_EXPRESSION
     2434_POSITIV
     2435ADD
     2436_EXPRESSION
     2437_POSITIV
     2438_OUTPUTS : 1
     2439_OUTPUT
     2440_POSITIV
     2441_NO_SET
     2442ek_out_eco.pos_cmd
     2443_NETWORK
     2444
     2445_COMMENT
     2446
     2447_END_COMMENT
     2448_ASSIGN
    25102449_OPERAND
    25112450_EXPRESSION
     
    25282467_EXPRESSION
    25292468_POSITIV
    2530 RelativesPositionieren
     2469Geschwindigkeitsregelung
    25312470_EXPRESSION
    25322471_POSITIV
     
    25562495
    25572496_COMMENT
    2558 This checks whether the DKC is in the third operating mode (ek_in_eco.a_operating_mode_Bit0=1 AND ek_in_eco.a_operating_mode_Bit1=0).
     2497 This checks whether the DKC is in the third operating mode (ek_in_eco.a_operating_mode_Bit0=1 AND ek_in_eco.a_operating_mode_Bit1=0).
    25592498This construction assures that ek_out_eco.setpoint_acceptance is only set in the right operating mode. Afterwards it is toggled so that there are edges to be detected.
     2499It seems that the setpoint_acknowledge doesn't really toggle if the it was accepted (Dummy was ek_out_eco.setpoint_acceptance, dummys was StartMovement)
    25602500_END_COMMENT
    25612501_ASSIGN
     
    25842524StartMovement
    25852525_EXPRESSION
    2586 _POSITIV
     2526_NEGATIV
    25872527AND
    25882528_EXPRESSION
     
    25922532_POSITIV
    25932533_NO_SET
    2594 ek_out_eco.setpoint_acceptance
    2595 _NETWORK
    2596 
    2597 _COMMENT
    2598 
    2599 _END_COMMENT
    2600 _ASSIGN
     2534dummy
     2535_NETWORK
     2536
     2537_COMMENT
     2538Reset the StartMovement such that the setpoint_accept bit gets toggled back to false in the next cycle. The delay is a workaround which makes sure that the axis
     2539as "moving" in the PDOs (StartMoving==TRUE) already if it is still standing still and hasn' t start its movement yet. Please not that within this second no new
     2540positioning command can be accepted.
     2541_END_COMMENT
     2542_ASSIGN
     2543_FUNCTIONBLOCK
     2544DelayResetOfStartMovement
     2545_BOX_EXPR : 2
    26012546_FUNCTIONBLOCK
    26022547RStest
     
    26092554_EXPRESSION
    26102555_POSITIV
    2611 ek_out_eco.setpoint_acceptance
     2556dummy
    26122557_EXPRESSION
    26132558_POSITIV
    26142559RS
    26152560_OUTPUTS : 0
    2616 _EXPRESSION
    2617 _POSITIV
    2618 _OUTPUTS : 1
    2619 _OUTPUT
    2620 _POSITIV
    2621 _NO_SET
     2561_OPERAND
     2562_EXPRESSION
     2563_POSITIV
     2564T#50ms
     2565_EXPRESSION
     2566_POSITIV
     2567TON
     2568_OUTPUTS : 1
     2569_OUTPUT
     2570_POSITIV
     2571_NO_SET
     2572_EMPTY
     2573_EXPRESSION
     2574_POSITIV
     2575_OUTPUTS : 1
     2576_OUTPUT
     2577_POSITIV
     2578_NO_SET
     2579dummys
     2580_NETWORK
     2581
     2582_COMMENT
     2583
     2584_END_COMMENT
     2585_ASSIGN
     2586_OPERATOR
     2587_BOX_EXPR : 3
     2588_OPERATOR
     2589_BOX_EXPR : 2
     2590_OPERAND
     2591_EXPRESSION
     2592_POSITIV
     2593RelativesPositionieren
     2594_OPERAND
     2595_EXPRESSION
     2596_POSITIV
     2597TRUE
     2598_EXPRESSION
     2599_POSITIV
     2600OR
     2601_OPERATOR
     2602_BOX_EXPR : 2
     2603_FUNCTIONBLOCK
     2604ToggleStartMovement
     2605_BOX_EXPR : 3
     2606_OPERAND
     2607_EXPRESSION
     2608_POSITIV
     2609TRUE
     2610_OPERAND
     2611_EXPRESSION
     2612_POSITIV
     2613t#250ms
     2614_OPERAND
     2615_EXPRESSION
     2616_POSITIV
     2617t#15ms
     2618_EXPRESSION
     2619_POSITIV
     2620BLINK
     2621_OUTPUTS : 0
     2622_OPERATOR
     2623_BOX_EXPR : 2
     2624_OPERATOR
     2625_BOX_EXPR : 1
     2626_OPERATOR
     2627_BOX_EXPR : 2
     2628_OPERAND
     2629_EXPRESSION
     2630_POSITIV
     2631SollwertPosition
     2632_OPERAND
     2633_EXPRESSION
     2634_POSITIV
     2635PositionFeedback2
     2636_EXPRESSION
     2637_POSITIV
     2638SUB
     2639_EXPRESSION
     2640_POSITIV
     2641ABS
     2642_OPERAND
     2643_EXPRESSION
     2644_POSITIV
     2645500000
     2646_EXPRESSION
     2647_POSITIV
     2648GT
     2649_EXPRESSION
     2650_POSITIV
     2651AND
     2652_OPERAND
     2653_EXPRESSION
     2654_POSITIV
    26222655StartMovement
    2623 _NETWORK
    2624 
    2625 _COMMENT
    2626 Reset the StartMovement command whenever the new setpoint was acknowledged (DOESN'T WORK, WHY?)
    2627 _END_COMMENT
    2628 _ASSIGN
     2656_EXPRESSION
     2657_POSITIV
     2658SEL
     2659_EXPRESSION
     2660_POSITIV
     2661_OUTPUTS : 1
     2662_OUTPUT
     2663_POSITIV
     2664_NO_SET
     2665dummys
     2666_NETWORK
     2667
     2668_COMMENT
     2669
     2670_END_COMMENT
     2671_ASSIGN
     2672_OPERATOR
     2673_BOX_EXPR : 2
    26292674_FUNCTIONBLOCK
    2630 RStest2
     2675DelayStartMovementTon
     2676_BOX_EXPR : 2
     2677_FUNCTIONBLOCK
     2678DelayStartMovementTof
    26312679_BOX_EXPR : 2
    26322680_OPERAND
     
    26342682_POSITIV
    26352683StartMovement
    2636 _FUNCTIONBLOCK
    2637 SetpointAcknowledgment
    2638 _BOX_EXPR : 1
    2639 _OPERATOR
    2640 _BOX_EXPR : 2
    2641 _OPERAND
    2642 _EXPRESSION
    2643 _POSITIV
    2644 ek_out_eco.setpoint_acknowledge
    2645 _OPERAND
    2646 _EXPRESSION
    2647 _POSITIV
    2648 FALSE
     2684_OPERAND
     2685_EXPRESSION
     2686_POSITIV
     2687t#25ms
     2688_EXPRESSION
     2689_POSITIV
     2690TOF
     2691_OUTPUTS : 1
     2692_OUTPUT
     2693_POSITIV
     2694_NO_SET
     2695_EMPTY
     2696_OPERAND
     2697_EXPRESSION
     2698_POSITIV
     2699t#25ms
     2700_EXPRESSION
     2701_POSITIV
     2702TON
     2703_OUTPUTS : 1
     2704_OUTPUT
     2705_POSITIV
     2706_NO_SET
     2707_EMPTY
     2708_OPERAND
     2709_EXPRESSION
     2710_POSITIV
     2711TRUE
    26492712_EXPRESSION
    26502713_POSITIV
     
    26522715_EXPRESSION
    26532716_POSITIV
    2654 RF_TRIG
    2655 _OUTPUTS : 0
    2656 _EXPRESSION
    2657 _POSITIV
    2658 RS
    2659 _OUTPUTS : 0
    2660 _EXPRESSION
    2661 _POSITIV
    2662 _OUTPUTS : 1
    2663 _OUTPUT
    2664 _POSITIV
    2665 _NO_SET
    2666 StartMovement
     2717_OUTPUTS : 1
     2718_OUTPUT
     2719_POSITIV
     2720_NO_SET
     2721ek_out_eco.setpoint_acceptance
    26672722_NETWORK
    26682723
     
    26712726_END_COMMENT
    26722727_ASSIGN
    2673 _OPERATOR
    2674 _BOX_EXPR : 1
    2675 _OPERATOR
    2676 _BOX_EXPR : 2
    2677 _OPERATOR
    2678 _BOX_EXPR : 2
    2679 _OPERATOR
    2680 _BOX_EXPR : 1
    26812728_OPERAND
    26822729_EXPRESSION
     
    26852732_EXPRESSION
    26862733_POSITIV
    2687 DWORD_TO_REAL
    2688 _OPERAND
    2689 _EXPRESSION
    2690 _POSITIV
    2691 -RotaryEncoderResolution
    2692 _EXPRESSION
    2693 _POSITIV
    2694 MUL
    2695 _OPERAND
    2696 _EXPRESSION
    2697 _POSITIV
    2698 ShaftEncoderResolution
    2699 _EXPRESSION
    2700 _POSITIV
    2701 DIV
    2702 _EXPRESSION
    2703 _POSITIV
    2704 REAL_TO_DWORD
    2705 _EXPRESSION
    2706 _POSITIV
    27072734_OUTPUTS : 1
    27082735_OUTPUT
     
    27132740
    27142741_COMMENT
    2715 Istwerte anzeigen
    2716 _END_COMMENT
    2717 _ASSIGN
     2742
     2743_END_COMMENT
     2744_ASSIGN
     2745_OPERAND
     2746_EXPRESSION
     2747_POSITIV
     2748ek_in_eco.vel_act
     2749_EXPRESSION
     2750_POSITIV
     2751_OUTPUTS : 1
     2752_OUTPUT
     2753_POSITIV
     2754_NO_SET
     2755IstwertGeschwindigkeit
     2756_NETWORK
     2757
     2758_COMMENT
     2759
     2760_END_COMMENT
     2761_ASSIGN
     2762_OPERAND
     2763_EXPRESSION
     2764_POSITIV
     2765ek_in_eco.diagnosis
     2766_EXPRESSION
     2767_POSITIV
     2768_OUTPUTS : 1
     2769_OUTPUT
     2770_POSITIV
     2771_NO_SET
     2772Diagnosewort
     2773_NETWORK
     2774
     2775_COMMENT
     2776
     2777_END_COMMENT
     2778_ASSIGN
     2779_OPERAND
     2780_EXPRESSION
     2781_POSITIV
     2782ek_in_eco.drive_Error_ZKL1
     2783_EXPRESSION
     2784_POSITIV
     2785_OUTPUTS : 1
     2786_OUTPUT
     2787_POSITIV
     2788_NO_SET
     2789FehlerStehtAn
     2790_NETWORK
     2791
     2792_COMMENT
     2793
     2794_END_COMMENT
     2795_ASSIGN
     2796_OPERAND
     2797_EXPRESSION
     2798_POSITIV
     2799ek_in_eco.in_reference
     2800_EXPRESSION
     2801_POSITIV
     2802_OUTPUTS : 1
     2803_OUTPUT
     2804_POSITIV
     2805_NO_SET
     2806InReferenz
     2807_NETWORK
     2808
     2809_COMMENT
     2810
     2811_END_COMMENT
     2812_ASSIGN
     2813_OPERAND
     2814_EXPRESSION
     2815_POSITIV
     2816ek_in_eco.setpoint_reached
     2817_EXPRESSION
     2818_POSITIV
     2819_OUTPUTS : 1
     2820_OUTPUT
     2821_POSITIV
     2822_NO_SET
     2823InPosition
     2824_NETWORK
     2825
     2826_COMMENT
     2827
     2828_END_COMMENT
     2829_ASSIGN
     2830_OPERAND
     2831_EXPRESSION
     2832_POSITIV
     2833ek_in_eco.in_standstill
     2834_EXPRESSION
     2835_POSITIV
     2836_OUTPUTS : 1
     2837_OUTPUT
     2838_POSITIV
     2839_NO_SET
     2840InStillstand
     2841_NETWORK
     2842
     2843_COMMENT
     2844Endschalter erreicht (*ueberfluessig*)
     2845_END_COMMENT
     2846_ASSIGN
     2847_OPERATOR
     2848_BOX_EXPR : 4
     2849_OPERATOR
     2850_BOX_EXPR : 2
     2851_OPERAND
     2852_EXPRESSION
     2853_POSITIV
     2854Diagnosewort
     2855_OPERAND
     2856_EXPRESSION
     2857_POSITIV
     285816#E829
     2859_EXPRESSION
     2860_POSITIV
     2861EQ
     2862_OPERATOR
     2863_BOX_EXPR : 2
     2864_OPERAND
     2865_EXPRESSION
     2866_POSITIV
     2867Diagnosewort
     2868_OPERAND
     2869_EXPRESSION
     2870_POSITIV
     287116#E843
     2872_EXPRESSION
     2873_POSITIV
     2874EQ
     2875_OPERATOR
     2876_BOX_EXPR : 2
     2877_OPERAND
     2878_EXPRESSION
     2879_POSITIV
     2880Diagnosewort
     2881_OPERAND
     2882_EXPRESSION
     2883_POSITIV
     288416#F643
     2885_EXPRESSION
     2886_POSITIV
     2887EQ
     2888_OPERATOR
     2889_BOX_EXPR : 2
     2890_OPERATOR
     2891_BOX_EXPR : 2
     2892_OPERAND
     2893_EXPRESSION
     2894_POSITIV
     2895Diagnosewort
     2896_OPERAND
     2897_EXPRESSION
     2898_POSITIV
     289916#E831
     2900_EXPRESSION
     2901_POSITIV
     2902EQ
     2903_OPERAND
     2904_EXPRESSION
     2905_POSITIV
     2906INTERN_JOG_FORWARD
     2907_EXPRESSION
     2908_POSITIV
     2909AND
     2910_EXPRESSION
     2911_POSITIV
     2912OR
     2913_EXPRESSION
     2914_POSITIV
     2915_OUTPUTS : 1
     2916_OUTPUT
     2917_POSITIV
     2918_NO_SET
     2919EndschalterPlus
     2920_NETWORK
     2921
     2922_COMMENT
     2923Ueberfluessig
     2924_END_COMMENT
     2925_ASSIGN
     2926_OPERATOR
     2927_BOX_EXPR : 4
     2928_OPERATOR
     2929_BOX_EXPR : 2
     2930_OPERAND
     2931_EXPRESSION
     2932_POSITIV
     2933Diagnosewort
     2934_OPERAND
     2935_EXPRESSION
     2936_POSITIV
     293716#E830
     2938_EXPRESSION
     2939_POSITIV
     2940EQ
     2941_OPERATOR
     2942_BOX_EXPR : 2
     2943_OPERAND
     2944_EXPRESSION
     2945_POSITIV
     2946Diagnosewort
     2947_OPERAND
     2948_EXPRESSION
     2949_POSITIV
     295016#E844
     2951_EXPRESSION
     2952_POSITIV
     2953EQ
     2954_OPERATOR
     2955_BOX_EXPR : 2
     2956_OPERAND
     2957_EXPRESSION
     2958_POSITIV
     2959Diagnosewort
     2960_OPERAND
     2961_EXPRESSION
     2962_POSITIV
     296316#F644
     2964_EXPRESSION
     2965_POSITIV
     2966EQ
     2967_OPERATOR
     2968_BOX_EXPR : 2
     2969_OPERATOR
     2970_BOX_EXPR : 2
     2971_OPERAND
     2972_EXPRESSION
     2973_POSITIV
     2974Diagnosewort
     2975_OPERAND
     2976_EXPRESSION
     2977_POSITIV
     297816#E831
     2979_EXPRESSION
     2980_POSITIV
     2981EQ
     2982_OPERAND
     2983_EXPRESSION
     2984_POSITIV
     2985INTERN_JOG_BACKWARD
     2986_EXPRESSION
     2987_POSITIV
     2988AND
     2989_EXPRESSION
     2990_POSITIV
     2991OR
     2992_EXPRESSION
     2993_POSITIV
     2994_OUTPUTS : 1
     2995_OUTPUT
     2996_POSITIV
     2997_NO_SET
     2998EndschalterMinus
     2999_NETWORK
     3000
     3001_COMMENT
     3002
     3003_END_COMMENT
     3004_ASSIGN
     3005_OPERATOR
     3006_BOX_EXPR : 2
     3007_OPERAND
     3008_EXPRESSION
     3009_POSITIV
     3010Diagnosewort
    27183011_OPERAND
    27193012_EXPRESSION
     
    272130140
    27223015_EXPRESSION
    2723 _POSITIV
    2724 _OUTPUTS : 1
    2725 _OUTPUT
    2726 _POSITIV
    2727 _NO_SET
    2728 IstwertPosition
    2729 _NETWORK
    2730 
    2731 _COMMENT
    2732 
    2733 _END_COMMENT
    2734 _ASSIGN
    2735 _OPERAND
    2736 _EXPRESSION
    2737 _POSITIV
    2738 ek_in_eco.vel_act
    2739 _EXPRESSION
    2740 _POSITIV
    2741 _OUTPUTS : 1
    2742 _OUTPUT
    2743 _POSITIV
    2744 _NO_SET
    2745 IstwertGeschwindigkeit
    2746 _NETWORK
    2747 
    2748 _COMMENT
    2749 
    2750 _END_COMMENT
    2751 _ASSIGN
    2752 _OPERAND
    2753 _EXPRESSION
    2754 _POSITIV
    2755 ek_in_eco.diagnosis
    2756 _EXPRESSION
    2757 _POSITIV
    2758 _OUTPUTS : 1
    2759 _OUTPUT
    2760 _POSITIV
    2761 _NO_SET
    2762 Diagnosewort
    2763 _NETWORK
    2764 
    2765 _COMMENT
    2766 
    2767 _END_COMMENT
    2768 _ASSIGN
    2769 _OPERAND
    2770 _EXPRESSION
    2771 _POSITIV
    2772 ek_in_eco.drive_Error_ZKL1
    2773 _EXPRESSION
    2774 _POSITIV
    2775 _OUTPUTS : 1
    2776 _OUTPUT
    2777 _POSITIV
    2778 _NO_SET
    2779 FehlerStehtAn
    2780 _NETWORK
    2781 
    2782 _COMMENT
    2783 
    2784 _END_COMMENT
    2785 _ASSIGN
    2786 _OPERAND
    2787 _EXPRESSION
    2788 _POSITIV
    2789 ek_in_eco.in_reference
    2790 _EXPRESSION
    2791 _POSITIV
    2792 _OUTPUTS : 1
    2793 _OUTPUT
    2794 _POSITIV
    2795 _NO_SET
    2796 InReferenz
    2797 _NETWORK
    2798 
    2799 _COMMENT
    2800 
    2801 _END_COMMENT
    2802 _ASSIGN
    2803 _OPERAND
    2804 _EXPRESSION
    2805 _POSITIV
    2806 ek_in_eco.setpoint_reached
    2807 _EXPRESSION
    2808 _POSITIV
    2809 _OUTPUTS : 1
    2810 _OUTPUT
    2811 _POSITIV
    2812 _NO_SET
    2813 InPosition
    2814 _NETWORK
    2815 
    2816 _COMMENT
    2817 
    2818 _END_COMMENT
    2819 _ASSIGN
    2820 _OPERAND
    2821 _EXPRESSION
    2822 _POSITIV
    2823 ek_in_eco.in_standstill
    2824 _EXPRESSION
    2825 _POSITIV
    2826 _OUTPUTS : 1
    2827 _OUTPUT
    2828 _POSITIV
    2829 _NO_SET
    2830 InStillstand
    2831 _NETWORK
    2832 
    2833 _COMMENT
    2834 Endschalter erreicht (*ueberfluessig*)
    2835 _END_COMMENT
    2836 _ASSIGN
    2837 _OPERATOR
    2838 _BOX_EXPR : 4
    2839 _OPERATOR
    2840 _BOX_EXPR : 2
    2841 _OPERAND
    2842 _EXPRESSION
    2843 _POSITIV
    2844 Diagnosewort
    2845 _OPERAND
    2846 _EXPRESSION
    2847 _POSITIV
    2848 16#E829
    2849 _EXPRESSION
    2850 _POSITIV
     3016_NEGATIV
    28513017EQ
    2852 _OPERATOR
    2853 _BOX_EXPR : 2
    2854 _OPERAND
    2855 _EXPRESSION
    2856 _POSITIV
    2857 Diagnosewort
    2858 _OPERAND
    2859 _EXPRESSION
    2860 _POSITIV
    2861 16#E843
    2862 _EXPRESSION
    2863 _POSITIV
    2864 EQ
    2865 _OPERATOR
    2866 _BOX_EXPR : 2
    2867 _OPERAND
    2868 _EXPRESSION
    2869 _POSITIV
    2870 Diagnosewort
    2871 _OPERAND
    2872 _EXPRESSION
    2873 _POSITIV
    2874 16#F643
    2875 _EXPRESSION
    2876 _POSITIV
    2877 EQ
    2878 _OPERATOR
    2879 _BOX_EXPR : 2
    2880 _OPERATOR
    2881 _BOX_EXPR : 2
    2882 _OPERAND
    2883 _EXPRESSION
    2884 _POSITIV
    2885 Diagnosewort
    2886 _OPERAND
    2887 _EXPRESSION
    2888 _POSITIV
    2889 16#E831
    2890 _EXPRESSION
    2891 _POSITIV
    2892 EQ
    2893 _OPERAND
    2894 _EXPRESSION
    2895 _POSITIV
    2896 INTERN_JOG_FORWARD
    2897 _EXPRESSION
    2898 _POSITIV
    2899 AND
    2900 _EXPRESSION
    2901 _POSITIV
    2902 OR
    2903 _EXPRESSION
    2904 _POSITIV
    2905 _OUTPUTS : 1
    2906 _OUTPUT
    2907 _POSITIV
    2908 _NO_SET
    2909 EndschalterPlus
    2910 _NETWORK
    2911 
    2912 _COMMENT
    2913 Ueberfluessig
    2914 _END_COMMENT
    2915 _ASSIGN
    2916 _OPERATOR
    2917 _BOX_EXPR : 4
    2918 _OPERATOR
    2919 _BOX_EXPR : 2
    2920 _OPERAND
    2921 _EXPRESSION
    2922 _POSITIV
    2923 Diagnosewort
    2924 _OPERAND
    2925 _EXPRESSION
    2926 _POSITIV
    2927 16#E830
    2928 _EXPRESSION
    2929 _POSITIV
    2930 EQ
    2931 _OPERATOR
    2932 _BOX_EXPR : 2
    2933 _OPERAND
    2934 _EXPRESSION
    2935 _POSITIV
    2936 Diagnosewort
    2937 _OPERAND
    2938 _EXPRESSION
    2939 _POSITIV
    2940 16#E844
    2941 _EXPRESSION
    2942 _POSITIV
    2943 EQ
    2944 _OPERATOR
    2945 _BOX_EXPR : 2
    2946 _OPERAND
    2947 _EXPRESSION
    2948 _POSITIV
    2949 Diagnosewort
    2950 _OPERAND
    2951 _EXPRESSION
    2952 _POSITIV
    2953 16#F644
    2954 _EXPRESSION
    2955 _POSITIV
    2956 EQ
    2957 _OPERATOR
    2958 _BOX_EXPR : 2
    2959 _OPERATOR
    2960 _BOX_EXPR : 2
    2961 _OPERAND
    2962 _EXPRESSION
    2963 _POSITIV
    2964 Diagnosewort
    2965 _OPERAND
    2966 _EXPRESSION
    2967 _POSITIV
    2968 16#E831
    2969 _EXPRESSION
    2970 _POSITIV
    2971 EQ
    2972 _OPERAND
    2973 _EXPRESSION
    2974 _POSITIV
    2975 INTERN_JOG_BACKWARD
    2976 _EXPRESSION
    2977 _POSITIV
    2978 AND
    2979 _EXPRESSION
    2980 _POSITIV
    2981 OR
    2982 _EXPRESSION
    2983 _POSITIV
    2984 _OUTPUTS : 1
    2985 _OUTPUT
    2986 _POSITIV
    2987 _NO_SET
    2988 EndschalterMinus
    2989 _NETWORK
    2990 
    2991 _COMMENT
    2992 Ausgangssignale an Profibus schreiben
    2993 _END_COMMENT
    2994 _ASSIGN
    2995 _OPERAND
    2996 _EXPRESSION
    2997 _POSITIV
    2998 ek_out_eco.steuerwort
    2999 _EXPRESSION
    3000 _POSITIV
    3001 _OUTPUTS : 1
    3002 _OUTPUT
    3003 _POSITIV
    3004 _NO_SET
    3005 PAW1
     3018_EXPRESSION
     3019_POSITIV
     3020_OUTPUTS : 1
     3021_OUTPUT
     3022_POSITIV
     3023_NO_SET
     3024IsOnline
    30063025_NETWORK
    30073026
     
    30943113_NO_SET
    30953114PAW7
     3115_NETWORK
     3116
     3117_COMMENT
     3118Ausgangssignale an Profibus schreiben
     3119_END_COMMENT
     3120_ASSIGN
     3121_OPERAND
     3122_EXPRESSION
     3123_POSITIV
     3124ek_out_eco.steuerwort
     3125_EXPRESSION
     3126_POSITIV
     3127_OUTPUTS : 1
     3128_OUTPUT
     3129_POSITIV
     3130_NO_SET
     3131PAW1
    30963132_NETWORK
    30973133
     
    32213257
    32223258VAR_INPUT
    3223         In              :DWORD;
     3259        In:             DWORD;
    32243260END_VAR
    32253261
    32263262VAR_OUTPUT
    3227         Out             :DWORD;
     3263        Out     :       DWORD;
    32283264END_VAR
    32293265
     
    32473283END_VAR
    32483284VAR
    3249         RaisingEdge: R_TRIG;
     3285        RaisingEdge:    R_TRIG;
    32503286        FallingEdge:    F_TRIG;
    32513287END_VAR
     
    33023338
    33033339VAR
    3304         Antrieb_1                               :       Ecodrive_7W_Antr_Gef_Pos;
    3305         Beschleunigung          :       DINT;
    3306         X_AccMACStoDKC  :       AccMACStoDKC;
    3307         X_Stehengeblieben:              R_TRIG;
    3308         X_ResetAH_after_move:   RS;
     3340        Antrieb_1:                                      Ecodrive_7W_Antr_Gef_Pos;
     3341        Beschleunigung:                 DINT;
     3342        X_AntriebHalt_Delay:            TOF;
    33093343END_VAR
    33103344(* @END_DECLARATION := '0' *)
    33113345_FBD_BODY
    3312 _NETWORKS : 6
     3346_NETWORKS : 8
    33133347_NETWORK
    33143348
     
    33843418_EXPRESSION
    33853419_NEGATIV
     3420x_PC_AntriebHalt
     3421_EXPRESSION
     3422_POSITIV
     3423AND
     3424_OPERAND
     3425_EXPRESSION
     3426_POSITIV
     3427X_Pos_Geber2
     3428_OPERATOR
     3429_BOX_EXPR : 3
     3430_OPERAND
     3431_EXPRESSION
     3432_POSITIV
     3433X_PC_VStart
     3434_OPERATOR
     3435_BOX_EXPR : 3
     3436_OPERAND
     3437_EXPRESSION
     3438_POSITIV
     3439X_PC_IsRelative
     3440_OPERAND
     3441_EXPRESSION
     3442_POSITIV
     3443X_PC_PosZiel
     3444_OPERATOR
     3445_BOX_EXPR : 2
     3446_OPERAND
     3447_EXPRESSION
     3448_POSITIV
     3449X_PC_PosZiel
     3450_OPERAND
     3451_EXPRESSION
     3452_POSITIV
     3453X_Pos_Geber2
     3454_EXPRESSION
     3455_POSITIV
     3456ADD
     3457_EXPRESSION
     3458_POSITIV
     3459SEL
     3460_OPERATOR
     3461_BOX_EXPR : 3
     3462_OPERATOR
     3463_BOX_EXPR : 2
     3464_OPERAND
     3465_EXPRESSION
     3466_POSITIV
     3467X_PC_VGeschwindigkeit
     3468_OPERAND
     3469_EXPRESSION
     3470_POSITIV
     34710
     3472_EXPRESSION
     3473_POSITIV
     3474LT
     3475_OPERAND
     3476_EXPRESSION
     3477_POSITIV
     3478576580649
     3479_OPERAND
     3480_EXPRESSION
     3481_POSITIV
     3482-576580649
     3483_EXPRESSION
     3484_POSITIV
     3485SEL
     3486_EXPRESSION
     3487_POSITIV
     3488SEL
     3489_EXPRESSION
     3490_POSITIV
     3491SEL
     3492_EXPRESSION
     3493_POSITIV
     3494_OUTPUTS : 1
     3495_OUTPUT
     3496_POSITIV
     3497_NO_SET
     3498X_Pos_soll
     3499_NETWORK
     3500
     3501_COMMENT
     3502In first MUL 1 was ArbitraryMACFactor
     3503_END_COMMENT
     3504_ASSIGN
     3505_OPERATOR
     3506_BOX_EXPR : 3
     3507_OPERAND
     3508_EXPRESSION
     3509_POSITIV
     3510X_PC_VStart
     3511_OPERAND
     3512_EXPRESSION
     3513_POSITIV
     3514X_PC_PosGeschwindigkeit
     3515_OPERATOR
     3516_BOX_EXPR : 1
     3517_OPERAND
     3518_EXPRESSION
     3519_POSITIV
     3520X_PC_VGeschwindigkeit
     3521_EXPRESSION
     3522_POSITIV
     3523ABS
     3524_EXPRESSION
     3525_POSITIV
     3526SEL
     3527_EXPRESSION
     3528_POSITIV
     3529_OUTPUTS : 1
     3530_OUTPUT
     3531_POSITIV
     3532_NO_SET
     3533X_Vel_soll
     3534_NETWORK
     3535
     3536_COMMENT
     3537Beschleunigung wird auch fuer Tipp-Betrieb gesetzt
     3538_END_COMMENT
     3539_ASSIGN
     3540_OPERATOR
     3541_BOX_EXPR : 3
     3542_OPERAND
     3543_EXPRESSION
     3544_POSITIV
     3545IN_FB_Betrieb
     3546_OPERAND
     3547_EXPRESSION
     3548_POSITIV
     3549X_PC_PosBeschleunigung
     3550_OPERAND
     3551_EXPRESSION
     3552_POSITIV
     3553X_HandBeschl
     3554_EXPRESSION
     3555_POSITIV
     3556SEL
     3557_EXPRESSION
     3558_POSITIV
     3559_OUTPUTS : 1
     3560_OUTPUT
     3561_POSITIV
     3562_NO_SET
     3563Beschleunigung
     3564_NETWORK
     3565
     3566_COMMENT
     3567Set AntriebHalt whenever PC signal moving is reset with a delay of 3s
     3568_END_COMMENT
     3569_ASSIGN
     3570_OPERATOR
     3571_BOX_EXPR : 2
     3572_FUNCTIONBLOCK
     3573X_AntriebHalt_Delay
     3574_BOX_EXPR : 2
     3575_OPERATOR
     3576_BOX_EXPR : 2
     3577_OPERATOR
     3578_BOX_EXPR : 2
     3579_OPERATOR
     3580_BOX_EXPR : 2
     3581_OPERAND
     3582_EXPRESSION
     3583_NEGATIV
     3584X_in_Standstill
     3585_OPERAND
     3586_EXPRESSION
     3587_NEGATIV
     3588X_in_AntriebHalt
     3589_EXPRESSION
     3590_POSITIV
     3591OR
     3592_OPERAND
     3593_EXPRESSION
     3594_NEGATIV
     3595X_in_Pos
     3596_EXPRESSION
     3597_POSITIV
     3598AND
     3599_OPERAND
     3600_EXPRESSION
     3601_POSITIV
     3602X_AnnounceStartMovement
     3603_EXPRESSION
     3604_POSITIV
     3605OR
     3606_OPERAND
     3607_EXPRESSION
     3608_POSITIV
     3609T#3s
     3610_EXPRESSION
     3611_NEGATIV
     3612TOF
     3613_OUTPUTS : 1
     3614_OUTPUT
     3615_POSITIV
     3616_NO_SET
     3617_EMPTY
     3618_OPERAND
     3619_EXPRESSION
     3620_POSITIV
    33863621X_PC_AntriebHalt
    33873622_EXPRESSION
    33883623_POSITIV
    3389 AND
    3390 _OPERAND
    3391 _EXPRESSION
    3392 _POSITIV
    3393 0
    3394 _OPERATOR
    3395 _BOX_EXPR : 3
    3396 _OPERAND
    3397 _EXPRESSION
    3398 _POSITIV
    3399 X_PC_VStart
    3400 _OPERAND
    3401 _EXPRESSION
    3402 _POSITIV
    3403 X_PC_PosZiel
    3404 _OPERATOR
    3405 _BOX_EXPR : 3
    3406 _OPERATOR
    3407 _BOX_EXPR : 2
    3408 _OPERAND
    3409 _EXPRESSION
    3410 _POSITIV
    3411 X_PC_VGeschwindigkeit
    3412 _OPERAND
    3413 _EXPRESSION
    3414 _POSITIV
    3415 0
    3416 _EXPRESSION
    3417 _POSITIV
    3418 LT
    3419 _OPERAND
    3420 _EXPRESSION
    3421 _POSITIV
    3422 -576580649
    3423 _OPERAND
    3424 _EXPRESSION
    3425 _POSITIV
    3426 576580649
    3427 _EXPRESSION
    3428 _POSITIV
    3429 SEL
    3430 _EXPRESSION
    3431 _POSITIV
    3432 SEL
    3433 _EXPRESSION
    3434 _POSITIV
    3435 SEL
    3436 _EXPRESSION
    3437 _POSITIV
    3438 _OUTPUTS : 1
    3439 _OUTPUT
    3440 _POSITIV
    3441 _NO_SET
    3442 X_Pos_soll
    3443 _NETWORK
    3444 
    3445 _COMMENT
    3446 In first MUL 1 was ArbitraryMACFactor
    3447 _END_COMMENT
    3448 _ASSIGN
    3449 _OPERATOR
    3450 _BOX_EXPR : 3
    3451 _OPERAND
    3452 _EXPRESSION
    3453 _POSITIV
    3454 X_PC_VStart
    3455 _OPERAND
    3456 _EXPRESSION
    3457 _POSITIV
    3458 X_PC_PosGeschwindigkeit
    3459 _OPERATOR
    3460 _BOX_EXPR : 1
    3461 _OPERATOR
    3462 _BOX_EXPR : 2
    3463 _OPERAND
    3464 _EXPRESSION
    3465 _POSITIV
    3466 X_PC_VGeschwindigkeit
    3467 _OPERAND
    3468 _EXPRESSION
    3469 _POSITIV
    3470 1
    3471 _EXPRESSION
    3472 _POSITIV
    3473 MUL
    3474 _EXPRESSION
    3475 _POSITIV
    3476 ABS
    3477 _EXPRESSION
    3478 _POSITIV
    3479 SEL
    3480 _EXPRESSION
    3481 _POSITIV
    3482 _OUTPUTS : 1
    3483 _OUTPUT
    3484 _POSITIV
    3485 _NO_SET
    3486 X_Vel_soll
    3487 _NETWORK
    3488 
    3489 _COMMENT
    3490 Beschleunigung wird auch fuer Tipp-Betrieb gesetzt
    3491 _END_COMMENT
    3492 _ASSIGN
    3493 _OPERATOR
    3494 _BOX_EXPR : 3
    3495 _OPERAND
    3496 _EXPRESSION
    3497 _POSITIV
    3498 IN_FB_Betrieb
    3499 _FUNCTIONBLOCK
    3500 X_AccMACStoDKC
    3501 _BOX_EXPR : 1
    3502 _OPERATOR
    3503 _BOX_EXPR : 3
    3504 _OPERATOR
    3505 _BOX_EXPR : 2
    3506 _OPERATOR
    3507 _BOX_EXPR : 1
    3508 _OPERATOR
    3509 _BOX_EXPR : 2
    3510 _OPERAND
    3511 _EXPRESSION
    3512 _POSITIV
    3513 X_Pos_ist
    3514 _OPERAND
    3515 _EXPRESSION
    3516 _POSITIV
    3517 X_Pos_soll
    3518 _EXPRESSION
    3519 _POSITIV
    3520 SUB
    3521 _EXPRESSION
    3522 _POSITIV
    3523 ABS
    3524 _OPERAND
    3525 _EXPRESSION
    3526 _POSITIV
    3527 -1000
    3528 _EXPRESSION
    3529 _POSITIV
    3530 LT
    3531 _OPERAND
    3532 _EXPRESSION
    3533 _POSITIV
    3534 X_PC_PosBeschleunigung
    3535 _OPERAND
    3536 _EXPRESSION
    3537 _POSITIV
    3538 X_PC_PosVerzoegerung
    3539 _EXPRESSION
    3540 _POSITIV
    3541 SEL
    3542 _EXPRESSION
    3543 _POSITIV
    3544 AccMACStoDKC
    3545 _OUTPUTS : 0
    3546 _OPERAND
    3547 _EXPRESSION
    3548 _POSITIV
    3549 X_HandBeschl
    3550 _EXPRESSION
    3551 _POSITIV
    3552 SEL
    3553 _EXPRESSION
    3554 _POSITIV
    3555 _OUTPUTS : 1
    3556 _OUTPUT
    3557 _POSITIV
    3558 _NO_SET
    3559 Beschleunigung
     3624OR
     3625_EXPRESSION
     3626_POSITIV
     3627_OUTPUTS : 1
     3628_OUTPUT
     3629_POSITIV
     3630_NO_SET
     3631X_PC_AntriebHalt
     3632_NETWORK
     3633
     3634_COMMENT
     3635
     3636_END_COMMENT
     3637_ASSIGN
     3638_OPERAND
     3639_EXPRESSION
     3640_POSITIV
     3641FALSE
     3642_EXPRESSION
     3643_POSITIV
     3644_OUTPUTS : 1
     3645_OUTPUT
     3646_POSITIV
     3647_NO_SET
     3648X_AnnounceStartMovement
    35603649_NETWORK
    35613650
     
    36013690_EXPRESSION
    36023691_POSITIV
    3603 TRUE
     3692X_PC_IsRelative
     3693_OPERAND
     3694_EXPRESSION
     3695_POSITIV
     3696X_PC_VStart
    36043697_OPERAND
    36053698_EXPRESSION
     
    36213714_EXPRESSION
    36223715_POSITIV
    3623 X_Pos_Fenster
    3624 _OPERAND
    3625 _EXPRESSION
    3626 _POSITIV
    36273716%IW100
    36283717_OPERAND
     
    36653754_POSITIV
    36663755Ecodrive_7W_Antr_Gef_Pos
    3667 _OUTPUTS : 22
     3756_OUTPUTS : 23
    36683757_OUTPUT
    36693758_POSITIV
     
    37183807_NO_SET
    37193808X_Pos_Geber2
     3809_OUTPUT
     3810_POSITIV
     3811_NO_SET
     3812X_IsOnline
    37203813_OUTPUT
    37213814_POSITIV
     
    39184011_EXPRESSION
    39194012_POSITIV
     4013???
     4014_OPERAND
     4015_EXPRESSION
     4016_POSITIV
    39204017X_Pos_soll
    39214018_OPERAND
     
    39344031_EXPRESSION
    39354032_POSITIV
    3936 X_Pos_Fenster
    3937 _OPERAND
    3938 _EXPRESSION
    3939 _POSITIV
    39404033%IW100
    39414034_OPERAND
     
    39784071_POSITIV
    39794072Ecodrive_7W_Antr_Gef_Pos
    3980 _OUTPUTS : 22
     4073_OUTPUTS : 23
    39814074_OUTPUT
    39824075_POSITIV
     
    40314124_NO_SET
    40324125X_Pos_Geber2
     4126_OUTPUT
     4127_POSITIV
     4128_NO_SET
     4129_EMPTY
    40334130_OUTPUT
    40344131_POSITIV
     
    40834180
    40844181VAR
    4085         Antrieb_2                               :Ecodrive_7W_Antr_Gef_Pos;
    4086       Dummy:                            BOOL;
     4182        Antrieb_2:                              Ecodrive_7W_Antr_Gef_Pos;
    40874183        ReleaseAH_Slave:        BOOL;
    40884184        ReleaseAH_Delay:        TOF;
     
    42134309_EXPRESSION
    42144310_POSITIV
     4311FALSE
     4312_OPERAND
     4313_EXPRESSION
     4314_POSITIV
    421543150
    42164316_OPERAND
     
    42294329_EXPRESSION
    42304330_POSITIV
    4231 0
    4232 _OPERAND
    4233 _EXPRESSION
    4234 _POSITIV
    42354331%IW140
    42364332_OPERAND
     
    42694365_EXPRESSION
    42704366_POSITIV
    4271 Dummy
     4367FALSE
    42724368_EXPRESSION
    42734369_POSITIV
    42744370Ecodrive_7W_Antr_Gef_Pos
    4275 _OUTPUTS : 22
     4371_OUTPUTS : 23
    42764372_OUTPUT
    42774373_POSITIV
     
    43264422_NO_SET
    43274423_EMPTY
     4424_OUTPUT
     4425_POSITIV
     4426_NO_SET
     4427Y_IsOnline
    43284428_OUTPUT
    43294429_POSITIV
     
    43714471
    43724472VAR
    4373         Antrieb_3                               :       Ecodrive_7W_Antr_Gef_Pos;
    4374         Time_Brake                      :       TON;
    4375         Beschleunigung          :       DINT;
    4376         Z_AccMACStoDKC  :       AccMACStoDKC;
    4377         Z_Stehengeblieben:              R_TRIG;
    4378         Z_ResetAH_after_move:   RS;
     4473        Antrieb_3:                                      Ecodrive_7W_Antr_Gef_Pos;
     4474        Time_Brake:                             TON;
     4475        Beschleunigung:                 DINT;
     4476        Z_AntriebHalt_Delay:            TOF;
    43794477END_VAR
    43804478(* @END_DECLARATION := '0' *)
    43814479_FBD_BODY
    4382 _NETWORKS : 7
     4480_NETWORKS : 9
    43834481_NETWORK
    43844482
     
    44614559_EXPRESSION
    44624560_POSITIV
     4561Z_Pos_Geber2
     4562_OPERATOR
     4563_BOX_EXPR : 3
     4564_OPERAND
     4565_EXPRESSION
     4566_POSITIV
     4567Z_PC_VStart
     4568_OPERATOR
     4569_BOX_EXPR : 3
     4570_OPERAND
     4571_EXPRESSION
     4572_POSITIV
     4573Z_PC_IsRelative
     4574_OPERAND
     4575_EXPRESSION
     4576_POSITIV
     4577Z_PC_PosZiel
     4578_OPERATOR
     4579_BOX_EXPR : 2
     4580_OPERAND
     4581_EXPRESSION
     4582_POSITIV
     4583Z_PC_PosZiel
     4584_OPERAND
     4585_EXPRESSION
     4586_POSITIV
     4587Z_Pos_Geber2
     4588_EXPRESSION
     4589_POSITIV
     4590ADD
     4591_EXPRESSION
     4592_POSITIV
     4593SEL
     4594_OPERATOR
     4595_BOX_EXPR : 3
     4596_OPERATOR
     4597_BOX_EXPR : 2
     4598_OPERAND
     4599_EXPRESSION
     4600_POSITIV
     4601Z_PC_VGeschwindigkeit
     4602_OPERAND
     4603_EXPRESSION
     4604_POSITIV
    446346050
     4606_EXPRESSION
     4607_POSITIV
     4608LT
     4609_OPERAND
     4610_EXPRESSION
     4611_POSITIV
     4612175256485
     4613_OPERAND
     4614_EXPRESSION
     4615_POSITIV
     4616-175256485
     4617_EXPRESSION
     4618_POSITIV
     4619SEL
     4620_EXPRESSION
     4621_POSITIV
     4622SEL
     4623_EXPRESSION
     4624_POSITIV
     4625SEL
     4626_EXPRESSION
     4627_POSITIV
     4628_OUTPUTS : 1
     4629_OUTPUT
     4630_POSITIV
     4631_NO_SET
     4632Z_Pos_soll
     4633_NETWORK
     4634
     4635_COMMENT
     4636In first MUL 1 was ArbitraryMACFactor
     4637_END_COMMENT
     4638_ASSIGN
    44644639_OPERATOR
    44654640_BOX_EXPR : 3
     
    44714646_EXPRESSION
    44724647_POSITIV
    4473 Z_PC_PosZiel
     4648Z_PC_PosGeschwindigkeit
     4649_OPERATOR
     4650_BOX_EXPR : 1
     4651_OPERAND
     4652_EXPRESSION
     4653_POSITIV
     4654Z_PC_VGeschwindigkeit
     4655_EXPRESSION
     4656_POSITIV
     4657ABS
     4658_EXPRESSION
     4659_POSITIV
     4660SEL
     4661_EXPRESSION
     4662_POSITIV
     4663_OUTPUTS : 1
     4664_OUTPUT
     4665_POSITIV
     4666_NO_SET
     4667Z_Vel_soll
     4668_NETWORK
     4669
     4670_COMMENT
     4671Beschleunigung wird auch fuer Tipp-Betrieb gesetzt
     4672_END_COMMENT
     4673_ASSIGN
    44744674_OPERATOR
    44754675_BOX_EXPR : 3
    4476 _OPERATOR
    4477 _BOX_EXPR : 2
    4478 _OPERAND
    4479 _EXPRESSION
    4480 _POSITIV
    4481 Z_PC_VGeschwindigkeit
    4482 _OPERAND
    4483 _EXPRESSION
    4484 _POSITIV
    4485 0
    4486 _EXPRESSION
    4487 _POSITIV
    4488 LT
    4489 _OPERAND
    4490 _EXPRESSION
    4491 _POSITIV
    4492 -175256485
    4493 _OPERAND
    4494 _EXPRESSION
    4495 _POSITIV
    4496 175256485
     4676_OPERAND
     4677_EXPRESSION
     4678_POSITIV
     4679IN_FB_Betrieb
     4680_OPERAND
     4681_EXPRESSION
     4682_POSITIV
     4683Z_PC_PosBeschleunigung
     4684_OPERAND
     4685_EXPRESSION
     4686_POSITIV
     4687Z_HandBeschl
    44974688_EXPRESSION
    44984689_POSITIV
     
    45004691_EXPRESSION
    45014692_POSITIV
    4502 SEL
    4503 _EXPRESSION
    4504 _POSITIV
    4505 SEL
    4506 _EXPRESSION
    4507 _POSITIV
    4508 _OUTPUTS : 1
    4509 _OUTPUT
    4510 _POSITIV
    4511 _NO_SET
    4512 Z_Pos_soll
    4513 _NETWORK
    4514 
    4515 _COMMENT
    4516 In first MUL 1 was ArbitraryMACFactor
    4517 _END_COMMENT
    4518 _ASSIGN
    4519 _OPERATOR
    4520 _BOX_EXPR : 3
    4521 _OPERAND
    4522 _EXPRESSION
    4523 _POSITIV
    4524 Z_PC_VStart
    4525 _OPERAND
    4526 _EXPRESSION
    4527 _POSITIV
    4528 Z_PC_PosGeschwindigkeit
    4529 _OPERATOR
    4530 _BOX_EXPR : 1
    4531 _OPERATOR
    4532 _BOX_EXPR : 2
    4533 _OPERAND
    4534 _EXPRESSION
    4535 _POSITIV
    4536 Z_PC_VGeschwindigkeit
    4537 _OPERAND
    4538 _EXPRESSION
    4539 _POSITIV
    4540 1
    4541 _EXPRESSION
    4542 _POSITIV
    4543 MUL
    4544 _EXPRESSION
    4545 _POSITIV
    4546 ABS
    4547 _EXPRESSION
    4548 _POSITIV
    4549 SEL
    4550 _EXPRESSION
    4551 _POSITIV
    4552 _OUTPUTS : 1
    4553 _OUTPUT
    4554 _POSITIV
    4555 _NO_SET
    4556 Z_Vel_soll
    4557 _NETWORK
    4558 
    4559 _COMMENT
    4560 Beschleunigung wird auch fuer Tipp-Betrieb gesetzt
    4561 _END_COMMENT
    4562 _ASSIGN
    4563 _OPERATOR
    4564 _BOX_EXPR : 3
    4565 _OPERAND
    4566 _EXPRESSION
    4567 _POSITIV
    4568 IN_FB_Betrieb
     4693_OUTPUTS : 1
     4694_OUTPUT
     4695_POSITIV
     4696_NO_SET
     4697Beschleunigung
     4698_NETWORK
     4699
     4700_COMMENT
     4701Set AntriebHalt whenever PC signal moving is reset with a delay of 3s
     4702_END_COMMENT
     4703_ASSIGN
     4704_OPERATOR
     4705_BOX_EXPR : 2
    45694706_FUNCTIONBLOCK
    4570 Z_AccMACStoDKC
    4571 _BOX_EXPR : 1
    4572 _OPERATOR
    4573 _BOX_EXPR : 3
    4574 _OPERATOR
    4575 _BOX_EXPR : 2
    4576 _OPERATOR
    4577 _BOX_EXPR : 1
    4578 _OPERATOR
    4579 _BOX_EXPR : 2
    4580 _OPERAND
    4581 _EXPRESSION
    4582 _POSITIV
    4583 Z_Pos_ist
    4584 _OPERAND
    4585 _EXPRESSION
    4586 _POSITIV
    4587 Z_Pos_soll
    4588 _EXPRESSION
    4589 _POSITIV
    4590 SUB
    4591 _EXPRESSION
    4592 _POSITIV
    4593 ABS
    4594 _OPERAND
    4595 _EXPRESSION
    4596 _POSITIV
    4597 -1000
    4598 _EXPRESSION
    4599 _POSITIV
    4600 LT
    4601 _OPERAND
    4602 _EXPRESSION
    4603 _POSITIV
    4604 Z_PC_PosBeschleunigung
    4605 _OPERAND
    4606 _EXPRESSION
    4607 _POSITIV
    4608 Z_PC_PosVerzoegerung
    4609 _EXPRESSION
    4610 _POSITIV
    4611 SEL
    4612 _EXPRESSION
    4613 _POSITIV
    4614 AccMACStoDKC
    4615 _OUTPUTS : 0
    4616 _OPERAND
    4617 _EXPRESSION
    4618 _POSITIV
    4619 Z_HandBeschl
    4620 _EXPRESSION
    4621 _POSITIV
    4622 SEL
    4623 _EXPRESSION
    4624 _POSITIV
    4625 _OUTPUTS : 1
    4626 _OUTPUT
    4627 _POSITIV
    4628 _NO_SET
    4629 Beschleunigung
     4707Z_AntriebHalt_Delay
     4708_BOX_EXPR : 2
     4709_OPERATOR
     4710_BOX_EXPR : 2
     4711_OPERATOR
     4712_BOX_EXPR : 2
     4713_OPERATOR
     4714_BOX_EXPR : 2
     4715_OPERAND
     4716_EXPRESSION
     4717_NEGATIV
     4718Z_in_Standstill
     4719_OPERAND
     4720_EXPRESSION
     4721_NEGATIV
     4722Z_in_AntriebHalt
     4723_EXPRESSION
     4724_POSITIV
     4725OR
     4726_OPERAND
     4727_EXPRESSION
     4728_NEGATIV
     4729Z_in_Pos
     4730_EXPRESSION
     4731_POSITIV
     4732AND
     4733_OPERAND
     4734_EXPRESSION
     4735_POSITIV
     4736Z_AnnounceStartMovement
     4737_EXPRESSION
     4738_POSITIV
     4739OR
     4740_OPERAND
     4741_EXPRESSION
     4742_POSITIV
     4743T#3s
     4744_EXPRESSION
     4745_NEGATIV
     4746TOF
     4747_OUTPUTS : 1
     4748_OUTPUT
     4749_POSITIV
     4750_NO_SET
     4751_EMPTY
     4752_OPERAND
     4753_EXPRESSION
     4754_POSITIV
     4755Z_PC_AntriebHalt
     4756_EXPRESSION
     4757_POSITIV
     4758OR
     4759_EXPRESSION
     4760_POSITIV
     4761_OUTPUTS : 1
     4762_OUTPUT
     4763_POSITIV
     4764_NO_SET
     4765Z_PC_AntriebHalt
     4766_NETWORK
     4767
     4768_COMMENT
     4769
     4770_END_COMMENT
     4771_ASSIGN
     4772_OPERAND
     4773_EXPRESSION
     4774_POSITIV
     4775FALSE
     4776_EXPRESSION
     4777_POSITIV
     4778_OUTPUTS : 1
     4779_OUTPUT
     4780_POSITIV
     4781_NO_SET
     4782Z_AnnounceStartMovement
    46304783_NETWORK
    46314784
     
    46714824_EXPRESSION
    46724825_POSITIV
    4673 TRUE
     4826Z_PC_IsRelative
     4827_OPERAND
     4828_EXPRESSION
     4829_POSITIV
     4830Z_PC_VStart
    46744831_OPERAND
    46754832_EXPRESSION
     
    46914848_EXPRESSION
    46924849_POSITIV
    4693 Z_Pos_Fenster
    4694 _OPERAND
    4695 _EXPRESSION
    4696 _POSITIV
    46974850%IW180
    46984851_OPERAND
     
    47354888_POSITIV
    47364889Ecodrive_7W_Antr_Gef_Pos
    4737 _OUTPUTS : 22
     4890_OUTPUTS : 23
    47384891_OUTPUT
    47394892_POSITIV
     
    47884941_NO_SET
    47894942Z_Pos_Geber2
     4943_OUTPUT
     4944_POSITIV
     4945_NO_SET
     4946Z_IsOnline
    47904947_OUTPUT
    47914948_POSITIV
     
    51015258_EXPRESSION
    51025259_POSITIV
     5260???
     5261_OPERAND
     5262_EXPRESSION
     5263_POSITIV
    51035264Z_Pos_soll
    51045265_OPERAND
     
    51175278_EXPRESSION
    51185279_POSITIV
    5119 Z_Pos_Fenster
    5120 _OPERAND
    5121 _EXPRESSION
    5122 _POSITIV
    51235280%IW180
    51245281_OPERAND
     
    51615318_POSITIV
    51625319Ecodrive_7W_Antr_Gef_Pos
    5163 _OUTPUTS : 22
     5320_OUTPUTS : 23
    51645321_OUTPUT
    51655322_POSITIV
     
    52145371_NO_SET
    52155372Z_Pos_Geber2
     5373_OUTPUT
     5374_POSITIV
     5375_NO_SET
     5376_EMPTY
    52165377_OUTPUT
    52175378_POSITIV
     
    52665427
    52675428VAR
    5268         Blinkgen        :BLINK;
     5429        Blinkgen:       BLINK;
    52695430END_VAR
    52705431(* @END_DECLARATION := '0' *)
     
    52745435
    52755436_COMMENT
    5276 
     5437Blinks an led (digital output) on the module to signal that the SPS is properly running
    52775438_END_COMMENT
    52785439_ASSIGN
     
    52985459_EXPRESSION
    52995460_POSITIV
    5300 _OUTPUTS : 2
     5461_OUTPUTS : 1
    53015462_OUTPUT
    53025463_POSITIV
    53035464_NO_SET
    53045465Visual_1Hz
    5305 _OUTPUT
    5306 _POSITIV
    5307 _NO_SET
    5308 Blink_1_I
    5309 _NETWORK
    5310 
    5311 _COMMENT
    5312 Zykluszähler
     5466_NETWORK
     5467
     5468_COMMENT
     5469Counts the number of cycles executed already
    53135470_END_COMMENT
    53145471_ASSIGN
     
    54795636(* @END_DECLARATION := '0' *)
    54805637_FBD_BODY
    5481 _NETWORKS : 9
     5638_NETWORKS : 10
    54825639_NETWORK
    54835640
     
    55625719_EXPRESSION
    55635720_POSITIV
    5564 Ethernet
     5721EthernetIn
    55655722_OUTPUTS : 0
    55665723_NETWORK
     
    55745731_EXPRESSION
    55755732_POSITIV
    5576 Protokoll_SDO
     5733EthernetOut
    55775734_OUTPUTS : 0
    55785735_NETWORK
     
    55865743_EXPRESSION
    55875744_POSITIV
     5745Protokoll_SDO
     5746_OUTPUTS : 0
     5747_NETWORK
     5748
     5749_COMMENT
     5750
     5751_END_COMMENT
     5752_FUNCTIONBLOCK
     5753???
     5754_BOX_EXPR : 0
     5755_EXPRESSION
     5756_POSITIV
    55885757Protokoll_PDO
    55895758_OUTPUTS : 0
     
    56035772
    56045773VAR
    5605         ST_Not          :RS;
    5606         ST_Vers         :RS;
    5607         ST_X                    :RS;
    5608         ST_Y                    :RS;
    5609         ST_Z                    :RS;
    5610         ST_24V          :RS;
    5611         ST_Brems                :RS;
     5774        ST_Not:         RS;
     5775        ST_Vers:                RS;
     5776        ST_X:                   RS;
     5777        ST_Y:                   RS;
     5778        ST_Z:                   RS;
     5779        ST_24V:         RS;
     5780        ST_Brems        :       RS;
    56125781END_VAR
    56135782(* @END_DECLARATION := '0' *)
     
    59516120(* @SYMFILEFLAGS := '2048' *)
    59526121VAR_GLOBAL CONSTANT
    5953         a_operating_mode_Bit0           :INT:=8;
    5954         a_operating_mode_Bit1           :INT:=9;
    5955         setpoint_acknowledge            :INT:=10;
    5956         message_ZKL3                            :INT:=11;
    5957         warning_ZKL2                            :INT:=12;
    5958         drive_Error_ZKL1                                :INT:=13;
    5959         ready_to_operate_Bit0           :INT:=14;
    5960         ready_to_operate_Bit1           :INT:=15;
    5961         o_mode_acknowledge_Bit0 :INT:=0;
    5962         o_mode_acknowledge_Bit1 :INT:=1;
    5963         in_reference                                    :INT:=2;
    5964         in_standstill                                   :INT:=3;
    5965         setpoint_reached                                :INT:=4;
    5966         command_change_bit              :INT:=5;
    5967         operating_mode_error            :INT:=6;
    5968         status_setpoint_process         :INT:=7;
    5969 
    5970         set_operating_mode_Bit0 :INT:=8;
    5971         set_operating_mode_Bit1 :INT:=9;
    5972         reserved                                                :INT:=10;
    5973         reserved1                                               :INT:=11;
    5974         IPOSYNC                                         :INT:=12;
    5975         drive_halt                                              :INT:=13;
    5976         drive_enable                                    :INT:=14;
    5977         drive_on                                                :INT:=15;
    5978         setpoint_acceptance                     :INT:=0;                        (*????!!!!! WHY???*)
    5979         operating_mode_set                      :INT:=1;
    5980         drive_to_zero_point                     :INT:=2;
    5981         absolute_relative                               :INT:=3;
    5982         immediate_block_change  :INT:=4;
    5983         error_delete                                    :INT:=5;
    5984         jog_forward                                     :INT:=6;
    5985         jog_backwards                           :INT:=7;
    5986 
    5987         Signal_Absolutmasssetzen        :INT:=96;
     6122        o_mode_acknowledge_Bit0:        INT :=   0;
     6123        o_mode_acknowledge_Bit1:        INT :=   1;
     6124        in_reference:                                   INT :=   2;
     6125        in_standstill:                                  INT :=   3;
     6126        setpoint_reached:                               INT :=   4;
     6127        command_change_bit:             INT :=   5;
     6128        operating_mode_error:           INT :=   6;
     6129        status_setpoint_process:        INT :=   7;        (* "Status Sollwert Verarbeitung", 1=Antrieb folgt sollwert nicht, 0=Antrieb folgt Sollwert, Antrieb folgt Sollwert, erst dann Fahrbefehl schicken *)
     6130        a_operating_mode_Bit0:          INT :=   8;
     6131        a_operating_mode_Bit1:          INT :=   9;
     6132        setpoint_acknowledge:           INT := 10;
     6133        message_ZKL3:                           INT := 11;
     6134        warning_ZKL2:                           INT := 12;
     6135        drive_Error_ZKL1:                               INT := 13;
     6136        ready_to_operate_Bit0:          INT := 14;
     6137        ready_to_operate_Bit1:          INT := 15;
     6138
     6139        setpoint_acceptance:                    INT :=   0;                     (*????!!!!! WHY???*)
     6140        operating_mode_set:                     INT :=   1;
     6141        drive_to_zero_point:                    INT :=   2;
     6142        absolute_relative:                              INT :=   3;
     6143        immediate_block_change: INT :=   4;
     6144        error_delete:                                   INT :=   5;
     6145        jog_forward:                                    INT :=   6;
     6146        jog_backwards:                          INT :=   7;
     6147        set_operating_mode_Bit0:        INT :=   8;
     6148        set_operating_mode_Bit1:        INT :=   9;
     6149        reserved:                                               INT := 10;
     6150        reserved1:                                              INT := 11;
     6151        IPOSYNC:                                                INT := 12;
     6152        drive_halt:                                             INT := 13;
     6153        drive_enable:                                   INT := 14;
     6154        drive_on:                                               INT := 15;
     6155
     6156        Signal_Absolutmasssetzen:       INT := 96;
    59886157
    59896158(* IP Communication parameters *)
    5990         IP_Address:                                             UDINT :=16#C0A80003;                                                    (* IP Address to send the data to *)
     6159        IP_Address:                                             UDINT := 16#C0A80003;                                                   (* IP Address to send the data to *)
    59916160        Socket_Out_Port:                                        WORD := 5358;                                                                   (* Port to send the data to *)
    59926161        Socket_In_Port:                                 WORD := 5357;                                                                   (* Port to listen at *)
     
    60006169
    60016170(* Zeitverzoegerung zur Brermsfreigabe nach Leistung_ein; war t#1s *)
    6002         DelayTime_Brake:                                TIME    :=T#1s;                                                                 (*Zeitverzoegerung zur Brermsfreigabe nach Leistung_ein; war t#1s*)
     6171        DelayTime_Brake:                                TIME    := T#1s;                                                                        (*Zeitverzoegerung zur Brermsfreigabe nach Leistung_ein; war t#1s*)
    60036172
    60046173(* Gear Ratio as set in DKC -- to be read from DKC via SDO *)
    6005         X_Gear:                                                 UINT    := 1340;
    6006         Z_Gear:                                                         UINT    :=        1;
    6007 
    6008 (* Aceleration values for both axes in remote control mode *)
    6009         X_HandBeschl:                                   UDINT   :=   12600;                                                                     (*Skalierung 10^-3, war 25000, max 50000 bei 3000rpm*)
    6010         Z_HandBeschl:                                   UDINT   :=   12600;                                                                     (* War 50000*)
     6174        (* X_Gear:                                                      UINT    := 1340; *)
     6175        (* Z_Gear:                                                      UINT    := 1140; *)  (* Between  1200 at 100deg and 0deg and 1140 between, TO BE CHECKED *)
     6176
     6177(* Aceleration values for both axes in remote control mode  Unit: 1/1000 rad/s^2 of load axis *)
     6178        X_HandBeschl:                                   UDINT   :=   10000000;                                                          (* Maximum 300.000 to reach 2.85rpm  (allowed: 0.03 - 0.01 *)
     6179        Z_HandBeschl:                                   UDINT   :=   1000;                                                                      (*  *)
     6180
     6181(* Position:    360.000.000 = 360deg = 1 revolution *)
     6182(* Velocity:     100.000.000 = 1 rpm                              *)
     6183(* Acc/Dec:                 1.000 = 1 rad/s^2                        *)
    60116184
    60126185(* Output resolution of the Motor and Shaftencoder values, as the output and DKC velocity scale *)
    6013         RotationalPositionResolution:   UDINT :=  360000;                                                               (*S-0-0079 from DKC*)
    6014         ShaftEncoderResolution:                 UDINT :=  RotationalPositionResolution;         (*14: (*14 Bit Resolution = 16384 ticks*)*)
    6015         RotaryEncoderResolution:                UDINT   :=  1500;                                                                       (*RotationalPositionResolution;                         (* 9;   (*9 Bit Resolution = 512 ticks*)*)*)
    6016         MaximumVelocity:                                        UINT    :=  3000;                                                                       (*Einheit ist U/min, analog zu VELMAX in den MACS*)
    6017         DKC_Velocity_Scale:                             UINT    := 10000;                                                                       (*0.0001U/min*)
    6018         VelocityResolution:                             UDINT := 30000000;                                                              (*DKC_Velocity_Scale*MaximumVelocity*)
     6186        ShaftEncoderResolution:                 UDINT :=  360000000;            (* ticks per load   revolution  (* Magic I: 16384 *)     *)
     6187        X_MaximumVelocity:                              UDINT   :=  280000000;                                                                (* rpm in DKC units (1/1000 rpm) max allowed vel of load axis (* Absolute maximum possible 4000/1340=2.95rpm *) (* Magic I similar: VELMAX in MACS, rpm of motor *)  *)
     6188        Z_MaximumVelocity:                              UDINT   :=  315000000;                                                                (* rpm in DKC units (1/1000 rpm) max allowed vel of load axis (* Absolute maximum possible 4000/1340=2.95rpm *) (* Magic I similar: VELMAX in MACS, rpm of motor *)  *)
     6189        VelocityResolution:                             UDINT := 100000000;                                                             (* 1 U/min *)
    60196190
    60206191(* Maximum velocity to initialize with *)
    6021         PC_V_max_START:                         DINT    := 45000000;
     6192        PC_V_max_START:                         DINT    := 250000000;         (* Load RPM in DKC units (i.e. *DKC_Velocity_Scale) , Maximum allowed velocity set by PC, can be overwritten for test purpose, SDO 0x6502 *)
    60226193
    60236194(* An arbitrary factor coming from an oddity of the MACS *)
    6024         ArbitraryMACFactor:                             BYTE    := 4;                                                                           (*No longer in use for velocity*)
     6195        ArbitraryMACFactor:                             BYTE    := 1;                                                                           (*No longer in use for velocity, no longer in use for acc/pos, was 4*)
    60256196END_VAR
    60266197(* @OBJECT_END := 'Globale_Variablen' *)
     
    60386209
    60396210(* Daten X-Achse *)
    6040         X_Pos_soll                      :DINT;          (* Sollposition X-Achse für Positionierung *)
    6041         X_Vel_soll                              :DINT;          (* Sollvorgabe Geschwindigkeit *)
    6042         X_Pos_ist                               :DINT;          (* Istposition X-Achse *)
    6043         X_Vel_ist                               :DINT;          (* Istgeschwindigkeit X-Achse *)
    6044         X_Err_ID                                :WORD;  (* Fehler Nr. ECo-Drive *)
    6045         X_Pos_Fenster           :DINT;
    6046         X_Pos_Geber2            :DINT;
     6211        X_Pos_soll:                             DINT;           (* Sollposition X-Achse für Positionierung *)
     6212        X_Vel_soll:                             DINT;           (* Sollvorgabe Geschwindigkeit *)
     6213        X_Pos_ist:                                      DINT;           (* Istposition X-Achse *)
     6214        X_Vel_ist:                                      DINT;           (* Istgeschwindigkeit X-Achse *)
     6215        X_Err_ID:                                       WORD;   (* Fehler Nr. Eco-Drive *)
     6216        X_Pos_Geber2:                   DINT;
    60476217
    60486218(*Allgemein für Drive 01 - Ecodrive*)
    6049         X_Fehler                                :BOOL;          (* 1= Regler meldet über Profibus Störung *)
    6050         X_StandStill                    :BOOL;          (* 1= Regler meldet Stillstand  *)
    6051         X_Pos_Start                     :BOOL;          (* 1= Positionierung starten Achse X    *)
    6052         X_Pos_ready                     :BOOL;          (* 1= Positionierung fertig Achse X     *)
    6053         X_Pos_active                    :BOOL;          (* 1= Positionierung aktiv Achse X      *)
    6054         X_Auto_Start                    :BOOL;          (* 1= Auto Positionieren Start X *)
    6055         X_Jog_pos                       :BOOL;          (* 1= Tippen Achse X pos *)
    6056         X_Jog_neg                       :BOOL;          (* 1= Tippen Achse X neg *)
    6057         X_Homing                                :BOOL;          (* 1= Anrtieb referenzieren aktiv *)
    6058         X_in_pos                                :BOOL;          (* 1= Anrtieb in Position *)
    6059         X_ist_freigegeben       :BOOL;          (* 1= Anrtieb Rückmeldung Freigabe *)
    6060         X_in_Ref                                :BOOL;          (* 1= Anrtieb Rückmeldung in Referenz *)
    6061         X_in_Standstill         :BOOL;          (* 1= Anrtieb Rückmeldung in Stillstand *)
    6062         X_ist_betriebsbereit    :BOOL;
    6063         X_in_AntriebHalt: BOOL;
    6064         X_PC_StartMovement: BOOL;
     6219        X_Fehler:                                                       BOOL;           (* 1= Regler meldet über Profibus Störung *)
     6220        X_Jog_pos:                                              BOOL;           (* 1= Tippen Achse X pos *)
     6221        X_Jog_neg:                                              BOOL;           (* 1= Tippen Achse X neg *)
     6222        X_Homing:                                               BOOL;           (* 1= Antrieb referenzieren aktiv *)
     6223        X_in_pos:                                                       BOOL;           (* 1= Antrieb in Position *)
     6224        X_ist_freigegeben:                              BOOL;           (* 1= Antrieb Rückmeldung Freigabe *)
     6225        X_in_Ref:                                                       BOOL;           (* 1= Antrieb Rückmeldung in Referenz *)
     6226        X_in_Standstill:                                        BOOL;           (* 1= Antrieb Rückmeldung in Stillstand *)
     6227        X_ist_betriebsbereit:                           BOOL;
     6228        X_IsOnline:                                             BOOL;        (* 1= Antrieb connected to bus *)
     6229        X_in_AntriebHalt:                                       BOOL;
     6230        X_EinmaligeFreigabe:                    BOOL;
     6231        X_in_Referenz:                                  BOOL;
     6232        X_AnnounceStartMovement:                BOOL := FALSE;
     6233
     6234        X_PC_PosGeschwindigkeit:                DINT;
     6235        X_PC_PosBeschleunigung:         UDINT;
     6236        X_PC_PosZiel:                                   DINT;
     6237        X_PC_VGeschwindigkeit:                  DINT;
     6238        X_PC_Maximalgeschwindigkeit:    DINT;
     6239        X_PC_IsRelative:                                        BOOL;
     6240        X_PC_VStart:                                            BOOL := FALSE;
     6241        X_PC_AntriebHalt:                               BOOL := TRUE;
     6242        X_PC_StartMovement:                     BOOL := FALSE;
     6243        X_PC_AnnounceStartMovement:     BOOL := FALSE;
     6244        X_PC_ForcePDO3:                         BOOL := FALSE;
    60656245END_VAR
    60666246
     
    60816261
    60826262(*Allgemein für Drive 01 - Ecodrive*)
    6083         Y_Fehler                                :BOOL;          (* 1= Regler meldet über Profibus Störung *)
    6084         Y_ist_freigegeben       :BOOL;          (* 1= Anrtieb Rückmeldung Freigabe *)
    6085         Y_in_Standstill         :BOOL;          (* 1= Anrtieb Rückmeldung in Stillstand *)
    6086         Y_ist_betriebsbereit    :BOOL;
     6263        Y_Fehler:                               BOOL;           (* 1= Regler meldet über Profibus Störung *)
     6264        Y_ist_freigegeben:      BOOL;           (* 1= Antrieb Rückmeldung Freigabe *)
     6265        Y_in_Standstill:                BOOL;           (* 1= Antrieb Rückmeldung in Stillstand *)
     6266        Y_ist_betriebsbereit:   BOOL;
     6267        Y_IsOnline:                     BOOL;        (* 1= Antrieb connected to bus *)
    60876268END_VAR
    60886269
     
    61016282
    61026283(* Daten X-Achse *)
    6103         Z_Pos_soll                      :DINT;          (* Sollposition X-Achse für Positionierung *)
    6104         Z_Vel_soll                              :DINT;          (* Sollvorgabe Geschwindigkeit *)
    6105         Z_Pos_ist                               :DINT;          (* Istposition X-Achse *)
    6106         Z_Vel_ist                               :DINT;          (* Istgeschwindigkeit X-Achse *)
    6107         Z_Err_ID                                :WORD;  (* Fehler Nr. ECo-Drive *)
    6108         Z_Pos_Fenster           :DINT;
    6109         Z_Pos_Geber2            :DINT;
     6284        Z_Pos_soll:                             DINT;           (* Sollposition X-Achse für Positionierung *)
     6285        Z_Vel_soll:                             DINT;           (* Sollvorgabe Geschwindigkeit *)
     6286        Z_Pos_ist:                                      DINT;           (* Istposition X-Achse *)
     6287        Z_Vel_ist:                                      DINT;           (* Istgeschwindigkeit X-Achse *)
     6288        Z_Err_ID:                                       WORD;   (* Fehler Nr. ECo-Drive *)
     6289        Z_Pos_Geber2:                   DINT;
    61106290
    61116291(*Allgemein für Drive 01 - Ecodrive*)
    6112         Z_Fehler                                :BOOL;          (* 1= Regler meldet über Profibus Störung *)
    6113         Z_StandStill                    :BOOL;          (* 1= Regler meldet Stillstand *)
    6114         Z_Pos_Start                     :BOOL;          (* 1= Positionierung starten Achse X *)
    6115         Z_Pos_ready                     :BOOL;          (* 1= Positionierung fertig Achse X *)
    6116         Z_Pos_active                    :BOOL;          (* 1= Positionierung aktiv Achse X *)
    6117         Z_Auto_Start                    :BOOL;          (* 1= Auto Positionieren Start X *)
    6118         Z_Jog_pos                       :BOOL;          (* 1= Tippen Achse X pos *)
    6119         Z_Jog_neg                       :BOOL;          (* 1= Tippen Achse X neg *)
    6120         Z_in_pos                                :BOOL;          (* 1= Anrtieb in Position *)
    6121         Z_ist_freigegeben       :BOOL;          (* 1= Anrtieb Rückmeldung Freigabe *)
    6122         Z_in_Ref                                :BOOL;          (* 1= Anrtieb Rückmeldung in Referenz *)
    6123         Z_in_Standstill         :BOOL;          (* 1= Anrtieb Rückmeldung in Stillstand *)
    6124         Z_ist_betriebsbereit    :BOOL;
    6125         Z_PC_StartMovement: BOOL;
     6292        Z_Fehler:                                                       BOOL;           (* 1= Regler meldet über Profibus Störung *)
     6293        Z_Jog_pos:                                              BOOL;           (* 1= Tippen Achse X pos *)
     6294        Z_Jog_neg:                                              BOOL;           (* 1= Tippen Achse X neg *)
     6295        Z_in_pos:                                                       BOOL;           (* 1= Antrieb in Position *)
     6296        Z_ist_freigegeben:                              BOOL;           (* 1= Antrieb Rückmeldung Freigabe *)
     6297        Z_in_Ref:                                                       BOOL;           (* 1= Antrieb Rückmeldung in Referenz *)
     6298        Z_in_Standstill:                                        BOOL;           (* 1= Antrieb Rückmeldung in Stillstand *)
     6299        Z_ist_betriebsbereit:                           BOOL;
     6300        Z_IsOnline:                                             BOOL;           (* 1= Antrieb connected to bus *)
     6301        Z_EinmaligeFreigabe:                    BOOL;
     6302        Z_in_AntriebHalt:                                       BOOL;
     6303        Z_in_Referenz:                                  BOOL;
     6304        Z_AnnounceStartMovement:                BOOL := FALSE;
     6305
     6306        Z_PC_PosGeschwindigkeit:                DINT;
     6307        Z_PC_PosBeschleunigung:         UDINT;
     6308        Z_PC_PosZiel:                                   DINT;
     6309        Z_PC_VGeschwindigkeit:                  DINT;
     6310        Z_PC_Maximalgeschwindigkeit:    DINT;
     6311        Z_PC_IsRelative:                                        BOOL;
     6312        Z_PC_StartMovement:                     BOOL := FALSE;
     6313        Z_PC_VStart:                                            BOOL := FALSE;
     6314        Z_PC_AntriebHalt:                               BOOL := TRUE;
     6315        Z_PC_AnnounceStartMovement:     BOOL := FALSE;
     6316        Z_PC_ForcePDO3:                         BOOL := FALSE;
    61266317END_VAR
    61276318
     
    61446335        Stoerung_MSS_Bremse:                    BOOL;           (*      1= Störung MSS Bremse   *)
    61456336        Sammelstoerung:                                 BOOL;           (*      1= Sammelstoerung ist aktiv     *)
    6146 
    6147 (*      Blinktakte              *)
    6148         Blink_1_I:                                                      BOOL;           (*      Blinktakt 1Hz Impuls    *)
    61496337
    61506338(*  Ethernet *)
     
    61586346        ByteBufferTXzyklisch:                           ARRAY[0..99] OF BYTE;
    61596347
    6160 (*  PC-Daten  *)
    6161         X_EinmaligeFreigabe:                    BOOL;
    6162         Z_EinmaligeFreigabe:                    BOOL;
     6348(* Daten  *)
    61636349        Zykluszaehler:                                          DINT;
    6164         X_PC_PosGeschwindigkeit:                DINT;
    6165         X_PC_PosBeschleunigung:         DINT;
    6166         X_PC_PosVerzoegerung:                   DINT;
    6167         X_PC_PosZiel:                                   DINT;
    6168         X_PC_VGeschwindigkeit:                  DINT;
    6169         X_PC_VStart:                                            BOOL;
    6170         X_PC_Maximalgeschwindigkeit:    DINT;
    6171         Z_PC_PosGeschwindigkeit:                DINT;
    6172         Z_PC_PosBeschleunigung:         DINT;
    6173         Z_PC_PosVerzoegerung:                   DINT;
    6174         Z_PC_PosZiel:                                   DINT;
    6175         Z_PC_VGeschwindigkeit:                  DINT;
    6176         Z_PC_VStart:                                            BOOL;
    6177         Z_PC_Maximalgeschwindigkeit:    DINT;
    61786350        Betriebszustand_FB_ok:                  BOOL;
    61796351        Betriebszustand_PC_ok:                  BOOL;
    61806352        Soll_Freigabe:                                  BOOL;
    6181         X_PC_PosRelative:                               BOOL;
    6182         Z_PC_PosRelativ:                                BOOL;
    6183         X_PC_AntriebHalt:                               BOOL := TRUE;
    6184         Z_PC_AntriebHalt:                               BOOL := TRUE;
    6185         Z_in_AntriebHalt:                                       BOOL;
    6186         X_in_Referenz:                                  BOOL;
    6187         Z_in_Referenz:                                  BOOL;
     6353
     6354(* Communication *)
     6355        TX1M_STATUS_OldX                                        :BYTE:=16#FF;
     6356        TX1M_STATUS_OldZ                                        :BYTE:=16#FF;
     6357        TX3M_STATUS_OldX                                        :BYTE:=16#FF;
     6358        TX3M_STATUS_OldZ                                        :BYTE:=16#FF;
     6359        TX2E_POSITION_OldX                              :DINT:=0;
     6360        TX2E_POSITION_OldY                              :DINT:=0;
     6361        TX2E_GESCHWINDIGKEIT_OldX       :INT:=0;
     6362        TX2E_GESCHWINDIGKEIT_OldY       :INT:=0;
    61886363END_VAR
    61896364
     
    62266401
    62276402LIBRARY
    6228 Iecsfc.lib 28.10.05 07:59:00
     6403Iecsfc.lib 28.10.05 08:59:00
    62296404(* @LIBRARYSYMFILEINFO := '0' *)
    62306405NumOfPOUs: 1
     
    62356410
    62366411LIBRARY
    6237 oscat14.lib 8.2.07 14:40:30
     6412oscat14.lib 8.2.07 15:40:30
    62386413(* @LIBRARYSYMFILEINFO := '0' *)
    62396414NumOfPOUs: 203
     
    64486623
    64496624LIBRARY
    6450 RIL_Check.lib 20.1.05 13:40:00
     6625RIL_Check.lib 20.1.05 14:40:00
    64516626(* @LIBRARYSYMFILEINFO := '0' *)
    64526627NumOfPOUs: 8
     
    64646639
    64656640LIBRARY
    6466 RIL_CommonTypes.lib 14.6.05 09:08:58
     6641RIL_CommonTypes.lib 14.6.05 10:08:58
    64676642(* @LIBRARYSYMFILEINFO := '0' *)
    64686643NumOfPOUs: 1
     
    64746649
    64756650LIBRARY
    6476 RIL_UTILITIES.lib 31.3.05 11:30:44
     6651RIL_ProfibusDP.lib 23.7.04 09:36:48
     6652(* @LIBRARYSYMFILEINFO := '0' *)
     6653NumOfPOUs: 17
     6654DP_ADDR: 51200
     6655DP_ID: 51200
     6656DP_RDIAG: 51200
     6657DP_RDIAG_EXT: 2048
     6658DP_RDREC: 51200
     6659DP_SLOT: 51200
     6660DP_SYCFR: 2048
     6661DP_WRREC: 51200
     6662fbdBaudrateGet: 51200
     6663fbdBmErrorGet: 51200
     6664fbdBmInfoGet: 51200
     6665fbdBmStateGet: 51200
     6666fbdKsdListGet: 51200
     6667fbdPdTypeGet: 51200
     6668fbdPrjSlaveListGet: 51200
     6669fbdSlaveDiagListGet: 51200
     6670Version_RIL_ProfibusDP_01V01: 2048
     6671NumOfGVLs: 1
     6672Globale_Variablen: 0
     6673END_LIBRARY
     6674
     6675LIBRARY
     6676RIL_UTILITIES.lib 31.3.05 12:30:44
    64776677(* @LIBRARYSYMFILEINFO := '0' *)
    64786678NumOfPOUs: 34
     
    65166716
    65176717LIBRARY
    6518 Standard.lib 28.10.05 07:59:00
     6718Standard.lib 28.10.05 08:59:00
    65196719(* @LIBRARYSYMFILEINFO := '0' *)
    65206720NumOfPOUs: 21
     
    65446744
    65456745LIBRARY
    6546 SYSLIBCALLBACK.LIB 28.10.05 07:59:00
     6746SYSLIBCALLBACK.LIB 28.10.05 08:59:00
    65476747(* @LIBRARYSYMFILEINFO := '0' *)
    65486748NumOfPOUs: 2
     
    65536753
    65546754LIBRARY
    6555 SysLibSockets.lib 28.10.05 07:59:00
     6755SysLibSockets.lib 28.10.05 08:59:00
    65566756(* @LIBRARYSYMFILEINFO := '0' *)
    65576757NumOfPOUs: 25
     
    65866786
    65876787LIBRARY
    6588 SysLibSocketsAsync.lib 28.10.05 07:59:00
     6788SysLibSocketsAsync.lib 28.10.05 08:59:00
    65896789(* @LIBRARYSYMFILEINFO := '0' *)
    65906790NumOfPOUs: 25
     
    66196819
    66206820LIBRARY
    6621 SysLibTime.lib 28.10.05 07:59:00
     6821SysLibTime.lib 28.10.05 08:59:00
    66226822(* @LIBRARYSYMFILEINFO := '0' *)
    66236823NumOfPOUs: 2
     
    66296829
    66306830LIBRARY
    6631 SysTaskInfo.lib 28.10.05 07:59:00
     6831SysTaskInfo.lib 28.10.05 08:59:00
    66326832(* @LIBRARYSYMFILEINFO := '0' *)
    66336833NumOfPOUs: 1
     
    66386838
    66396839LIBRARY
    6640 Util.lib 28.10.05 07:59:00
     6840Util.lib 28.10.05 08:59:00
    66416841(* @LIBRARYSYMFILEINFO := '0' *)
    66426842NumOfPOUs: 24
     
    70547254
    70557255MACRO
    7056 MacroName: '??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? Diagnosis.mac'
     7256MacroName: '??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? Diagnosis.mac'
    70577257END_MACRO
    70587258
Note: See TracChangeset for help on using the changeset viewer.