testDI function

sortsort slovakia
Hello all I would like to know what is the real difference between these two lines
IF DI_mySignal THEN

and  the same using IF TesetDI(DI_mySignal) THEN

Both are working but what is the real differenece?

Thank you

Tagged:

Comments

  • DenisFRDenisFR FRANCE ✭✭
    Hello,
    You can write it like this too:
    IF DI_mysignal=1 THEN
    or
    IF DI_mysignal=high THEN

    But if you define badly DI_mysignal nothing happens in syntax check.
    TestDI have a signaldi parameter, so it have to be defined as this.
    And TestDI handles errors:
    Error handling

    The following recoverable errors are generated and can be handled in an error handler. The system variable ERRNO will be set to:

    Name

    Cause of error

    ERR_NO_ALIASIO_DEF

    The signal variable is a variable declared in RAPID. It has not been connected to an I/O signal defined in the I/O configuration with instruction AliasIO.

    ERR_NORUNUNIT

    There is no contact with the I/O device.

    ERR_SIG_NOT_VALID

    The I/O signal cannot be accessed. The reasons can be that the I/O device is not running or an error in the configuration (only valid for ICI field bus).


  • MickyMicky Germany ✭✭✭
    Hello,

    the difference is that function "TESTDI" returns a boolean value (True or False) instead of "high" and "low".
    I think there is no additional error check inside this function.

    The function will probably look like this:
    FUNC bool TESTDI(VAR signaldi Signal)
    RETURN Signal = high;
    ERROR
    RAISE;
    ENDFUNC
    I think if you use an "IF" statement in your code, it will be faster than calling the TESTDI function.

    BR
    Micky


  • lemster68lemster68 United States ✭✭✭
    I found this code in an older mediapool for S4 generation controllers:

     ! Test Digital Input
     FUNC bool TestDI(VAR signaldi Signal)
      IF Signal = 1 THEN
       RETURN TRUE;
      ELSE
       RETURN FALSE;
      ENDIF
     ENDFUNC


    Lee Justice
  • DenisFRDenisFR FRANCE ✭✭
    I take the text from documentation.
  • lemster68lemster68 United States ✭✭✭
    I see, Denis.  Makes me curious if the error is generated in the routine that calls the function or if the function has its error handler which RAISES the error.
    Lee Justice
Sign In or Register to comment.