DCC++ Update Project 2020

FlightRisk Feb 16, 2020

  1. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    That would be the RailCom support and there are at least a few of us looking into it but no code yet for DCC++ that I'm aware of.
     
  2. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    Well you will have to ask someone who has been around longer than me about 9.3.2. My understanding is that really wasn't widely used and that it has to do with Railcom. It applies to DCC only tangentially in that people want a cutout in DCC++ EX to allow the Railcom support during the preamble.

    DCC++ handles all of the things that DCC was meant to do. It controls locos and accessories. Since the control is all in data packets, and that is almost a standard ;), we fill in the 1s and 0s the same way anyone else would and can control mobile and stationary controllers. The caveat is that because of politics, the standard was made purposely difficult and ambiguous in places. That is why there are so many options in things like JMRI to reverse what is thrown and what is closed and provide an offset or not, etc. And as I said before, if you need bi-directional communication for something, then DCC is not the answer. It can only send an ACK pulse. Sort of like a horse counting with its hoof. ;) It controls all sorts of things, but is mostly for controlling locos and throwing switches. DCC++ and EX also can control the I/O pins on the arduino, so that is a plus. Still, a lot of people like the idea of DCC++ for locos and another network, bi-directional, for controlling everything else. The purpose of DCC++ EX is as a starting point. It certainly is sophisticated enough for even club use, but it is an inexpensive way to start and to learn and expand as you get more acquainted with things. And if you replace it at some point, you haven't invested a ton of money. That said, we hope to eek every last bit of processing power out of an Uno and a Mega. And Atani is getting far along with an ESP32 and custom board for people who want that solution.

    Have you seen this?



    He did not incorporate that into the master version of DCC++. That could easily run in his version or DCC++ EX. In any case, the code that uses an "eggtimer" routine and a script in an "autopilot" file is here: https://github.com/DCC-EX/BaseStation-Classic/tree/development/DCCpp
     
    Last edited: May 19, 2020
  3. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    RailCom is quite extensively used outside the USA. Many manufactures have added support for this in their latest decoders, which include almost all sound decoders.
     
  4. esfeld

    esfeld TrainBoard Member

    442
    382
    17
    While you're researching you might want to look into jython scripting in JMRI ... I use several scripts to automate routes,turnouts and functions giving me several trains running automatically while I manually control others.
     
    FlightRisk likes this.
  5. UkBloke

    UkBloke TrainBoard Member

    42
    5
    3
    Can I suggest that you don't introduce <p1 MAIN> and <p1 PROG> in precisely that form... simply because that would be the only place that I can find where the command parameters are non integer.
    it would hugely simplify and speed up the the command parsing if all the sscanf calls and strings could be replaced with a single call like
    int parms[10];
    int parmcount=fillParms(cmd,parms);
    switch (opcode) {
    case 'a': if (parmcount==2) DCCsomething(parms[0],parms[1]);
    break;

    and so on..


    Oh, and why not have a param for the prog track to be switched to ne connected to main... like having a DPDT switch relay.)
     
    Last edited: May 20, 2020
  6. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    You are about five years late on opposition of that, JMRI even supports it today..
     
  7. UkBloke

    UkBloke TrainBoard Member

    42
    5
    3
    Oh well... shame how one dodgy design decision seems so simple when you have 1000 lines of code and only have to add 3 more... but when you have 20 lines of code doing the same job you probably have to add 30 more to handle it as a special case... .... such is life.
     
  8. Ash

    Ash TrainBoard Member

    106
    66
    8
    CMRI seems to be the answer, since JMRI can connect simultaneously to DCC++ and CMRI. And I will use the RS485 connection option for multiple nodes. I think this will work for the turnout servos, but have yet to learn what else is needed for lights, sensors and fascia buttons.
     
  9. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    Sorry that my decision to allow interacting with a specific track output is not to your liking. You are free to disable / alter it however you see fit in your code. And there are other considerations to make based on the DCC spec, <1> and <0> should only alter the state of the OPS track and PROG should only be enabled when it is actively in use. DCC++EX is moving in that direction for compliance reasons.
     
  10. UkBloke

    UkBloke TrainBoard Member

    42
    5
    3
    Just to be clear... I have no problem with wanting to manage the power separately... the thing I was commenting about was the choice to put a non integer parameter in the string sent from JMRI... Anyway, it is what it is so I would just cope with it. My original post on the subject misunderstood the the original post... I though it was something you (or someone) was thinking of implementing and I wanted to nudge in a particular direction...

    Sorry If I annoyed anyone.
     
  11. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    It was something I added roughly five years ago now, it does seem like a rather poor placement now looking back and thinking on the DCC spec compliance aspects.

    The original idea was to support N motor shield outputs for OPS that the CS would monitor (up to the number of analog inputs on the MCU) with each being individually controlled. Something along the lines of power districts. But the concept has been shelved for a while now and likely is not going to be used extensively in DCC++EX due to complexity in setting it up and managing it.
     
  12. KC Smith

    KC Smith TrainBoard Member

    109
    111
    12
    Atani, FlightRisk, esfeld, All,

    Many Thanks from those of us who have been around since DCC++ 2015 to you and many others for in putting so much of your time, talents & effort in to DCC++ 2020 and DCC++EX.

    Two original DCC++ heavy contributors that you have all worked with in the past, Twindad - Mark Underwood a JMRI Specialist, and UK Steve a Throttle Controller and ESP specialist, might be interested in at least having a high level quick conversation about the potential of DCC++ 2020 and the merits of a potential new direction of TPl Task Parallel Libraries that UkBloke is exploring? I know TwinDad once mentioned he was considering "turning JMRI on it's head", maybe he would be interested in working support for that side of the control interface.

    esfeld (Steve), Good to see you back on the board, Thank you for your past efforts and input.
    Are you still able to reach out and touch base with Twindad and UK Steve to see if they would be willing to reenter the DCC++ blog for a quick exploratory conversation with Atani & FlightRisk?

    Again, We Like and Appreciate all the additional enhancements & Support you've All made in the past i.e. Motor boards, ESP WiFi, JMRI, etc., to DCC++ Command Base Station core and encourage NMRA DCC complaints, and also with would like at a minimum JMRI and RailCom front end Controller compatibility.
    The idea of an API Application Program Interface opens up many other direct front end Controller interface possibilities with the core DCC++ Command Base Station.

    Like esfeld, I too have very recently been working with jython scripts to create Automatic Throttle Control ATC push buttons JMRI DecoderPro and PanelPro to automate one, two or three trains simultaneously running around the layout. I intend to use these scripts to encourage the 30 or so members of our train club to begin using JMRI for more than just a Decoder editor and manager, but to connect it and use it to Interact with their layouts i.e., currently Digitrax, Lenz, NCE, MRC and DCC++ Command Base stations. The more seamless and easy it is to do this for them and with them, and to Support it the better.

    I look forward to working with and testing the new DCC++ EX system and helping out were I can.

    Kind Regards,
    Kevin
     
    David Cutting, UkBloke and Atani like this.
  13. FlightRisk

    FlightRisk TrainBoard Member

    548
    237
    14
    It would be great if we could all have a brainstorming session, especially integrating JMRI and DCC++ EX. Let's explore. And I'm open to a Webex type conference call too if we decide on a path forward and have an agenda. I love when you jump in Kevin. You are quiet for a while and then always have some valuable nugget to share ;)
     
  14. Dex

    Dex TrainBoard Member

    55
    30
    5
    That could work but I would recommend Discord, Google Meet, Hangouts or even Skype, Discord also has the ability to create our own server to provide support for things as well as chat back and forth

    Sent from my Pixel 4 using Tapatalk
     
    David Cutting likes this.
  15. David Cutting

    David Cutting TrainBoard Member

    62
    29
    3
    +1 on discord, that's a great way to organize things all in one place

    Edit: Here's a channel link if people want to start joining. It will last for a day. If we go another direction, that's fine too! https://discord.gg/9DrHnV
     
    Last edited: May 22, 2020
  16. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    I'm not on discord but that is ok, I'd prefer to stick with more of an advisory type of role in this project since I have other priorities (ESP32 CS being one of them). I am on Google or Zoom platforms and can meet via those if / when necessary.
     
  17. Dex

    Dex TrainBoard Member

    55
    30
    5
    You can also bring ur self to discord to just float ideas around. Zoom is a horrible platform too many security issues. We would love to have u and it would help immensely. Please consider joining us you won't be disappointed.

    Sent from my Pixel 4 using Tapatalk
     
  18. Atani

    Atani TrainBoard Member

    1,460
    1,697
    36
    I won't disagree that there are some security issues in Zoom but most of those are due to poor security practices in the default settings (no password to connect to meeting, non-randomized meeting id, etc).

    As for joining on Discord, I don't have an account there or time to dedicate to that specifically right now.
     
  19. KC Smith

    KC Smith TrainBoard Member

    109
    111
    12

    Good idea on periodic high level brainstorm and consolidation sessions to clarify and keep a project participants in synergy.

    For the initial meeting and perhaps the higher level coordination meetings, I vote for Zoom with a Lead managing, initiating and securing the Meeting ID and Password.

    It would allow all levels of Invited participants from tech savvy to technology challenged to participate, and more importantly to Visually share there Ideas via desktop views of schematic, documentation, power point presentations etc., with very little effort. The other platforms my be as easy as well.
    A big plus of Zoom is the free version limits time to 40min before booting us off... (ergo be pithy and concise).
    We can always restart and continue the session if needed. I'm open to alternatives just haven't used google meet or Webex.

    The DCC++ team is composed of a variety of talent stacks and nothing prevents the core coders from interacting in additional forums (discord, google meet, etc) to coordinate and focus on key development issues as well as per-production Unit, System testing, pre release API real world applicability testing (JMRI, RailCom, Arduino, and third party Accessory interfaces).

    For others focused on the above pre and post release API real world applicability and testing, as well as final public user build and setup Documentation and Visual Aids, something like Zoom meetings would probably work better.

    IMO,

    This is a holiday weekend in the states and I will be in the wilderness disconnected from the internet until Tues 26th.

    FlightRisk, thanks for the kind thought, and invite.

    K
     
  20. Dex

    Dex TrainBoard Member

    55
    30
    5
    While zoom meetings are free I will not use it due to privacy and security concerns I would rather use a more seasoned platform like Discord, Hangouts(Meet) or Skype in that order we have a few users already on the Discord and the ideas are already flying thru the chat channels we have established. But everyone has there preference.

    Sent from my Pixel 4 using Tapatalk
     

Share This Page