Skip to content
  1. Aug 21, 2018
    • Lars Bensmann's avatar
      mb2hal: call modbus_flush() on transaction error · 0828f36f
      Lars Bensmann authored
      When a communication error happens and a transaction is just partially
      read the modbus link can get out of sync. The next transaction gets the
      unconsumed data from the transaction before and so on and the link does
      not recover form this. modbus_flush() prevents this behaviour.
      0828f36f
  2. Aug 19, 2018
  3. Jan 22, 2018
    • Sebastian Kuzminsky's avatar
      Merge remote-tracking branch 'origin/2.7' · b620e895
      Sebastian Kuzminsky authored
      Conflicts:
      	docs/man/man1/halstreamer.1
      	lib/python/gladevcp/combi_dro.py
      	src/emc/motion/command.c
      	src/emc/task/emccanon.cc
      	src/emc/usr_intf/emcrsh.cc
      	src/emc/usr_intf/gmoccapy/getiniinfo.py
      	src/hal/components/biquad.comp
      	src/hal/components/orient.comp
      	src/hal/components/streamer.c
      b620e895
  4. Jan 21, 2018
  5. Sep 15, 2017
  6. Jul 01, 2017
  7. Aug 20, 2016
  8. Jul 04, 2016
  9. Jul 27, 2014
  10. Sep 06, 2013
    • Jeff Epler's avatar
      mb2hal: compute timeouts with integer math · d226fd5c
      Jeff Epler authored
      The prior code uses questionable casts to do what can be done with
      modulo integer math.
      
      The new code does not give *exactly* the same timeout, because the
      calculation
          (int)(float)(this_mb_tx->mb_response_timeout_ms / 1000.0)
      is subject to rounding errors, while
          timeout.tv_sec  = this_mb_tx->mb_response_timeout_ms / 1000;
      is not.  For example for a response timeout of 2001ms, the old code
      would actually give a timeout of 2.000999 seconds, while the new code
      gives the correct result of 2.001000 seconds.  The new code begins
      giving "radically" different (but again more correct) values around
      65536 seconds due to the loss of precision in float arithmetic
      (65536.000f == 65536.001f when you have a 24-bit mantissa)
      
      Tested by cut&paste of old and new code into a test harness:
      
      struct timeval fold(long arg)
      {
          struct timeval timeout;
          timeout.tv_sec  = (int)(float)(arg / 1000.0);  //int part of the float
          timeout.tv_usec = ((float)(arg / 1000.0) - timeout.tv_sec) * 1000000;
          return timeout;
      }
      
      struct timeval fnew(long arg)
      {
          struct timeval timeout;
          timeout.tv_sec  = arg / 1000;
          timeout.tv_usec = (arg % 1000) * 1000;
          return timeout;
      }
      
      void check(long timeout) {
          struct timeval ta = fold(timeout);
          struct timeval tb = fnew(timeout);
      
          double a = ta.tv_sec + ta.tv_usec * 1e-6;
          double b = tb.tv_sec + tb.tv_usec * 1e-6;
          if(fabs(a - b) > .001) {
          // if(ta.tv_sec != tb.tv_sec || ta.tv_usec != tb.tv_usec) {
              printf("fail tv_sec %lu: %lu.%06lu != %lu.%06lu\n", timeout,
                  (long) ta.tv_sec, (long) ta.tv_usec,
                  (long) tb.tv_sec, (long) tb.tv_usec);
          }
      }
      
      int main() {
          long i;
          for(i=0; i<1000*1000*1000; i += 500) {
              check(i);
              check(i+1);
              check(i+499);
          }
      }
      d226fd5c
  11. Jun 05, 2013
    • Sebastian Kuzminsky's avatar
      configure: require libmodbus3 · c2c5c067
      Sebastian Kuzminsky authored
      By default, configure will now look for libmodbus (installed from a
      separate deb, provided by Ubuntu for Precise and by the linuxcnc.org
      debian archive for Hardy and Lucid) and error out if it can't be found.
      
      The user can disable this check (and disable compilation of all drivers
      that use libmodbus) by configuring with "--without-libmodbus".
      c2c5c067
  12. Mar 27, 2013
  13. Nov 13, 2012
    • Victor Rocco's avatar
      mb2hal: added functionallity, including arduino example. · c4e41765
      Victor Rocco authored
      
      
      - Arduino example added.
        Tested with Arduino Mega 2560 R3 using Modbusino over USB at 115200 bps.
      - New parameters in config file.
        HAL_MODULE_NAME, MB_RESPONSE_TIMEOUT_MS and MB_BYTE_TIMEOUT_MS.
      - New HAL pin "num_errors" for each transaction. num_errors = 0 if last
        transaction OK, else the count of failed transactions.
      - Fix a bug, OPTIONAL's parameters may be 0 instead of default value if
        not specified in 1st transaction.
      
      Signed-off-by: default avatarMichael Haberler <git@mah.priv.at>
      c4e41765
    • Victor Rocco's avatar
      mb2hal: now using libmodbus3, added improvements. · 7bea47a3
      Victor Rocco authored
      
      
      - Mb2hal now uses libmodbus3 instead of the old libmodbus file
        located in src/hal/user_comps/modbus.c used by gs2_vfd.c
        # Also fix a TIMEOUT bug (due to this unpatched old libmodbus file).
      - Better INI file documentation (HOW-TO).
      - Better Submakefile.
      - Source code cleaned and reordered.
        # Now is posible to add new functionallity.
      
      See LogBook.txt for more information.
      
      Signed-off-by: default avatarMichael Haberler <git@mah.priv.at>
      7bea47a3
  14. Nov 01, 2012
  15. Oct 27, 2012
  16. Oct 24, 2012
Loading