Home AMX User Forum NetLinx Studio

Two identical NX-3200s, one of them ignores Device [0:1] Online event

OK peeps, getting really, really frustrated with the project I'm working on. This is related to the posts I've been making in the RMS sub-forum, but I'm pretty sure this has nothing to do with RMS.

I originally had one controller controlling 7 classrooms. It was working beautifully. After connecting 6 more room's worth of devices (SDX, DX-RX, and MST-701), I suddenly could no longer upload my program to the controller. I keep getting "Insufficient memory for transfer" errors. I figured it was the RMS SDK modules eating up all the memory in my controller after the additional devices came online, so I set about setting up a 2nd controller as a test and to control the 2nd set of rooms.

I duplicated my entire project folder and renamed all my files in that with a "2" in the name (didn't rename any SDK files) so I wouldn't get confused with that, then built a new system with the "2" file names, updated include statments to use "2" files, and changed the "status" flags which are supposed to tel the controller whether a room and it's devices are online and should be connected to or not in the "2" files. Otherwise, the two programs are identical. I also reconfigured the SDX, DX-RX, and touchpanels to point to Controller 2.

In the new controller, all the devices (SDX, DX-RX, and touchpanels) are connecting to the new controller OK. I can look at my Debug and see the right status flags are set in each controller to connect to the appropriate devices. But the controller never executes any code inside the ONLINE tree of the master. Code in next post...

Comments

  • Here's the code for the master online event, same in both controllers:
    data_event[dvmaster] { //master init
        online: {
     //what here?
     
     timeline_create(99,feedbacktime,1,timeline_absolute,timeline_repeat) // Creates main room control & buffer processing timeline
     
     cobisbuffout = "''" //Clears COBIS help system buffers
     cobisbuffin = "''"
     timeline_create(21,feedbacktime,1,timeline_absolute,timeline_repeat) // Creates COBIS Helpsys comm & buffer processing timeline
     
     //force current occsense setting
     rm[tmp_idx2].occsensor = [occsense_all[tmp_idx2],5]
     
     // ADD REGULAR INITIALIZATION ROUTINES HERE , MOVE SOME DEFINE_START HERE ?
     //Initialize room buffers and IP connections
     for(tmp_idx2=1;tmp_idx2<=roomcount;tmp_idx2++) {
     
         /*
      4 = switch
      6 = audio
      8 = camera
      11 = projector
      12 = display
         */
       
         rm[tmp_idx2].d[4].buffout = "" //SWITCH BUFFER RESET
         rm[tmp_idx2].d[4].buffin = ""
         rm[tmp_idx2].d[6].buffout = "" //AUDIO BUFFER RESET
         rm[tmp_idx2].d[6].buffin = ""
         rm[tmp_idx2].d[8].buffout = "" //CAMERA BUFFER RESET
         rm[tmp_idx2].d[8].buffin = ""
         rm[tmp_idx2].d[11].buffout = "" //PROJECTOR BUFFER RESET
         rm[tmp_idx2].d[11].buffin = ""
         rm[tmp_idx2].d[12].buffout = "" //DISPLAY BUFFER RESET
         rm[tmp_idx2].d[12].buffin = ""
    
         call 'debug' ("'IP Connection Start for Rm:',rm[tmp_idx2].name,' ID:',itoa(tmp_idx2),' Status: ',itoa(rm[tmp_idx2].status)")
         if(rm[tmp_idx2].status==1) { //room is online, open ports
      //Audio (thru Moxa)
      if(rm[tmp_idx2].d[6].status == 1) {
          call 'debug' ("'Opening Audio Moxa Box Connection: DevID:',itoa(6),'-',rm[tmp_idx2].d[6].name,' AMX Port:',itoa(rm[tmp_idx2].d[6].devid.port),' IP:',rm[tmp_idx2].d[6].n[1].ipaddr,' PORT:',itoa(rm[tmp_idx2].d[6].n[1].ipport),' Status:',itoa(rm[tmp_idx2].d[6].status)")
          ip_client_open(rm[tmp_idx2].d[6].devid.port,rm[tmp_idx2].d[6].n[1].ipaddr,rm[tmp_idx2].d[6].n[1].ipport,IP_TCP)
      }
      //Projector (direct IP)
      if(rm[tmp_idx2].d[11].status == 1) {
          call 'debug' ("'Opening Projector Connection: DevID:',itoa(11),'-',rm[tmp_idx2].d[11].name,' AMX Port:',itoa(rm[tmp_idx2].d[6].devid.port),' IP:',rm[tmp_idx2].d[11].n[1].ipaddr,' PORT:',itoa(rm[tmp_idx2].d[11].n[1].ipport),' Status:',itoa(rm[tmp_idx2].d[11].status)")
          ip_client_open(rm[tmp_idx2].d[11].devid.port,rm[tmp_idx2].d[11].n[1].ipaddr,rm[tmp_idx2].d[11].n[1].ipport,IP_TCP)
      }
      //Display (direct IP)
      if(rm[tmp_idx2].d[12].status == 1) {
          call 'debug' ("'Opening ConfMon Connection: DevID:',itoa(12),'-',rm[tmp_idx2].d[12].name,' AMX Port:',itoa(rm[tmp_idx2].d[6].devid.port),'IP:',rm[tmp_idx2].d[12].n[1].ipaddr,' PORT:',itoa(rm[tmp_idx2].d[12].n[1].ipport),' Status: ',itoa(rm[tmp_idx2].d[12].status)")
          ip_client_open(rm[tmp_idx2].d[12].devid.port,rm[tmp_idx2].d[12].n[1].ipaddr,rm[tmp_idx2].d[12].n[1].ipport,IP_TCP)
      }
      
      timeline_create(tmp_idx2,feedbacktime,1,timeline_absolute,timeline_repeat) // Creates main room control & buffer processing timeline
      
     
      call 'debug' ("'Connections Opened For Rm:',rm[tmp_idx2].name,' ID:',itoa(tmp_idx2),' Status: ',itoa(rm[tmp_idx2].status)")
         }
         else { //room offline, clear buffers
      rm[tmp_idx2].d[4].buffout = "" //SWITCH BUFFER RESET
      rm[tmp_idx2].d[4].buffin = ""
      rm[tmp_idx2].d[6].buffout = "" //AUDIO BUFFER RESET
      rm[tmp_idx2].d[6].buffin = ""
      rm[tmp_idx2].d[8].buffout = "" //CAMERA BUFFER RESET
      rm[tmp_idx2].d[8].buffin = ""
      rm[tmp_idx2].d[11].buffout = "" //PROJECTOR BUFFER RESET
      rm[tmp_idx2].d[11].buffin = ""
      rm[tmp_idx2].d[12].buffout = "" //DISPLAY BUFFER RESET
      rm[tmp_idx2].d[12].buffin = ""
         }
     }
        }
    }
    
  • Currently trying to get a 3rd controller up, but... any idea what gives here? Why does the code in the dvmaster online event execute in one controller, but not the other?
  • My "force current occsense setting" code is in the wrong place, needs to be inside FOR loop, but it's wrong in both controllers. I've also added a very basic debug statement (string_to virtual port) as the first line inside the Online event, but it does not execute.
  • 3rd controller is up, exact copy of 2nd controller loaded onto it, 3rd controller runs Master Online code OK. Don't have all the other devices connected to it yet, but it's starting to look a lot more like a controller problem.

    I should be able to move Controller 1's code to a different controller this afternoon to push that issue further forward.
  • OK now all the devices are connecting to the 3rd controller (now in place of the 2nd controller) and everything is still working as expected: AMX devices connect to controller OK, Controller connects to IP devices OK. System appears to be running OK on this controller. I'll be pretty irked it if turns out I've got 2 bad controllers.
  • ericmedleyericmedley Posts: 4,177
    On occasion I will find a similar kind of behavior and it can be frustrating as well.

    The behavior is similar: the code is running, some xxx_event[] is not firing - even when I strip it down to the barest "if event fires, send string 0 'ping' "

    when I get to this point I usually have to go in and adjust the duet memory (even if there are no duet modules preset) The adjustment seems to unstick the master and it all starts working again.

    I'm not even saying its a memory issue per se, It's just something to do with changing the settings. I have not seen the behavior on the new NXs.
  • I've pretty much confirmed that it's two bad controllers. I brought up a 3rd controller, and have moved all 14 of my active rooms to it, without a problem. I can still upload code changes just fine. Any faith I had in the reliability of AMX/Harmon hardware has pretty much been shattered. So disappointed...
  • Quick kinda last update on this... When I told AMX reps what happened to me, they seemed pretty genuinely mortified. Here, I'll just reference my other post in the RMS forums: http://www.amxforums.com/forum/technical-forum/resource-management-suite/122237-transfer-aborted-insufficient-memory-to-complete-transfer?p=122325#post122325
Sign In or Register to comment.