Advanced Search

Search Results (Searched for: )

  • Bertho
  • Bertho
28 Jun 2025 21:29

How to write multipule data ( byte) mesambccc

Category: General LinuxCNC Questions

Hello, (author of the hm2_modbus driver calling...)

First, what is the error code generated? See the hm2_modbus.0.command.NN.error-code pins.

Second, what LCNC version are you using?

Just a comment on the attached documentation image:
Reading and writing registers are, in modbus terms, always multiples of word (2-byte) quantities. The image with the "Home position return speed" at register address 0x6099 states a /single byte/ and then two 4-byte words. The documentation is slightly misleading. It states in the next column that 5 registers are actually involved, so that would indicate that the first is masked to a byte sized value (masking is not supported or performed by the hm2_modbus driver). The 5-register statement in the table would also fix the problem of having 32-bit words seemingly on a odd address boundary. But with 5 registers, then the "number of entries" value is at address 0x6099 and the two 32-bit words are at 0x609a and 0x609c resp.. BTW, I notice the interesting mixed endianess of the 32-bit values...

The read operation seems to work as intended, but the write operation fails. The failure is apparently not a problem of the mbccs file. It is an error message of the hm2_modbus driver that indicates something odd is happening.

When compiling the mbccs file I get a couple of warnings (using first file below):
mrje70a.mbccs: warning: Multi-register type 'U_CDAB' not aligned to natural boundary in commands/command[1]/pin[2]
mrje70a.mbccs: warning: Multi-register type 'U_CDAB' not aligned to natural boundary in commands/command[1]/pin[3]
mrje70a.mbccs: warning: Multi-register type 'U_CDAB' not aligned to natural boundary in commands/command[2]/pin[2]
mrje70a.mbccs: warning: Multi-register type 'U_CDAB' not aligned to natural boundary in commands/command[2]/pin[3]

But, that should not be the case. This is an error in mesambccc not being able to count correctly. Using the --verbose option clearly shows the address to be even. I have to investigate and see what is happening. I am guessing that the hm2_modbus error is secondary to an error in mesambccc when setting the command and pin fields for the command lists. As a temporary fix: splitting the read and write commands into two separate commands makes the warnings go away (second source below). It /might/ fix the read/write issue you are having. The downside is that the read/write no longer is one single modbus transaction. That may or may not be a problem, depending the device.

The way you wrote the definition should work. I'd write it like:
[code][code][code]<?xml version="1.0" encoding="UTF-8"?>
[code]<mesamodbus baudrate="115200" parity="E" stopbits="1">
  <devices><device address="0x02" name="mrje70a"/></devices>
  <initlist />
  <commands>
    <command device="mrje70a" function="R_REGISTERS" address="0x6099" haltype="HAL_U32">
      <pin name="rnumentries" modbustype="U_AB"/>
      <pin name="rspeedss" modbustype="U_CDAB"/>
      <pin name="rspeedsz" modbustype="U_CDAB"/>
    </command>
    <command device="mrje70a" function="W_REGISTERS" address="0x6099" haltype="HAL_U32">
      <pin name="wnumentries" modbustype="U_AB"/>
      <pin name="wspeedss" modbustype="U_CDAB"/>
      <pin name="wspeedsz" modbustype="U_CDAB"/>
    </command>
  </commands>
</mesamodbus>

---

<?xml version="1.0" encoding="UTF-8"?>
<mesamodbus baudrate="115200" parity="E" stopbits="1">
  <devices><device address="0x02" name="mrje70a"/></devices>
  <initlist />
  <commands>
    <command device="mrje70a" function="R_REGISTERS" address="0x6099" haltype="HAL_U32">
      <pin name="rnumentries" modbustype="U_AB"/>
    </command>
    <command device="mrje70a" function="R_REGISTERS" address="0x609a" haltype="HAL_U32">
      <pin name="rspeedss" modbustype="U_CDAB"/>
      <pin name="rspeedsz" modbustype="U_CDAB"/>
    </command>
    <command device="mrje70a" function="W_REGISTERS" address="0x6099" haltype="HAL_U32">
      <pin name="wnumentries" modbustype="U_AB"/>
    </command>
    <command device="mrje70a" function="W_REGISTERS" address="0x609a" haltype="HAL_U32">
      <pin name="wspeedss" modbustype="U_CDAB"/>
      <pin name="wspeedsz" modbustype="U_CDAB"/>
    </command>
  </commands>
</mesamodbus>
[/code][/code][/code][/code]
  • pscott
  • pscott
28 Jun 2025 20:44
Replied by pscott on topic Blow back plasma torch start timing problem

Blow back plasma torch start timing problem

Category: Plasma & Laser

The timing problems are probably due to combining a ebay no-name torch with a aliexpress no-name inverter, and then unplugging the HF start from the inverter as it caused too much interference. But it runs good enough for our use when the torch gets its needed recovery time between starts.
I'll consider modifying the post, but I'll also take a look at the plasmac component to see if I can tweak it to do it like our MACH3 M3 macro does.
  • pscott
  • pscott
28 Jun 2025 20:36
Replied by pscott on topic Blow back plasma torch start timing problem

Blow back plasma torch start timing problem

Category: Plasma & Laser

Main thing is that MACH3 seems to have some problems blending moves together.
Our table is multi function and currently it is setup with a LED laser cutter head and at the speeds needed for that we could better see the lack of blending.

The second part is that it would be nice to have all the cut-recover features from plasmac.
  • PCW
  • PCW's Avatar
28 Jun 2025 20:20

How to write multipule data ( byte) mesambccc

Category: General LinuxCNC Questions

debug is described in the hm2_modbus manual page.
  • AdelRTP
  • AdelRTP
28 Jun 2025 19:40
Replied by AdelRTP on topic How to write multipule data ( byte) mesambccc

How to write multipule data ( byte) mesambccc

Category: General LinuxCNC Questions

Yes the second work perfect but when i want to add W_REGISTERS more then 2 byte i get hm2_modbus.0: error: Build data frame failed in write_flush for command 15, disabling

<command device="mrje70a" function="W_REGISTERS" address="0x2801">
<description>Write Point Table Data</description>
<pin name="wnumentries" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wposition" modbustype="U_CDAB" haltype="HAL_U32"/>
<pin name="wspeed" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wacceleration" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wdeceleration" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wdwell" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wsubfunction" modbustype="U_AB" haltype="HAL_U32"/>
<pin name="wmcode" modbustype="U_AB" haltype="HAL_U32"/>
</command>

Idont know how to use debug
  • jimmyrig
  • jimmyrig
28 Jun 2025 19:36
Replied by jimmyrig on topic Blow back plasma torch start timing problem

Blow back plasma torch start timing problem

Category: Plasma & Laser

Agreed, OP all you need to do is do a find/replace for m3 and replace it with g4 p15000 m3 (15 sec in millisecond)

G4 and m3 may need to be on different lines.

If that works then edit your post to include that.
  • PCW
  • PCW's Avatar
28 Jun 2025 19:33

How to write multipule data ( byte) mesambccc

Category: General LinuxCNC Questions

This is different from your first example:

<command device="mrje70a" function="W_REGISTERS" address="0x6099" >
<pin name= "hnumentries" modbustype="U_ABCD" haltype="HAL_U32" resend="1"/>

Do you have the same error?

Have you tried setting hm2_modbus's debug value to get a more detailed error? 
Displaying 14791 - 14797 out of 14797 results.
Time to create page: 0.450 seconds
Powered by Kunena Forum