Keyboard Shortcuts
Likes
- Jmriusers
- Messages
Search
Locked
Re: New user to JMRI Ops Pro requesting assistance
#operationspro
Mel,
Once again, the .txt files are both for the manifest of the Mina Turn,?one built on 4/30 at 20:32 Manifest for train (Mina Turn) Arnold to Hearne Job Valid 4/30/1967 20:32 Works Arnold to HearneAnd one built on 4/30 at 21:06 Manifest for train (Mina Turn) Arnold to Hearne Job Valid 4/30/1967 21:06 Works Arnold to HearneSo, still lacking the details from the build report, let's at least get one of the question answered... Why doesn't the Dayton Transfer take any cars back to staging from Arnold Yard? Simple Answer:? The track to which the train returns doesn't service Eastbound trains. Dayton appears to be made up of 4 tracks
Destination (Dayton) does not service Eastbound trainsI suggest you change Dayton to service both directions, which is done by checking both direction boxes upper right area of the "Edit Location" window. As far as the other problem... ...one car going from the Hanford Team Trk. to the Mina Interchange Trk. without going to Arnold Yard first.This is because it can!? If the car in question is of a car-type allowed in both spurs, then try allowing only differing "load state" at each, In other words, allow Hanford TT to allow only Boxcars with "L" and Mina Interchange to allow only Boxcars with "E".? If you want the load state to be useable at both, then you need a schedule to point cars where you wish them to go. Establish a schedule for Hanford Team Track using the Optional Schedule section of the Edit Spur window.? I suggest you name the schedule something other than the name of the spur (gets confusing later) so try "Freight Forward". Add a Boxcar to the list and then choose to Receive "L" and Ship "E" and most crucial, choose a Destination of Arnold Yard.? This will point any Boxcar unloading at the Hanford Team Track back to Arnold and no other location will "grab" it! Of course, this trick can be put in place for all your spurs if you wish all cars to return to Arnold Yard first... Happy to help, hope it helps, <Pete Johnson> |
Locked
Re: I have apparently created a loop or message storm in Loconet - I don't know if it's JMRI or not -- any suggestions on how to diagnose?
Dave, thanks. Now I understand.? I'm using MQTT signal masts
-- Douwe |
Duncan,
On 2 May 2023, at 2:12 pm, Dave Heap via groups.io <dgheap@...> wrote:For a Power Pro system with Number of Recalls set to 6, the Show Cabs display would be up to round 384 rows and take a long time to display/refresh. For a Power Cab rhe table would be much shorter. Dave in Australia |
Locked
Re: Team track
#operationspro
Hey John,
Why not just create a new location named "Lakeview Team Spur"?? Then you can name the spurs found there after each industry you want represented.? This will have a side effect of the Team track being listed separately as far as the train's route visits, but this wouldn't be too obvious on the manifest. Example: Manifest for Train 123 Scheduled work for Enola? pick up car blah blah blah? ? ? ? ? ?from Yard 1 pick up car blah blah blah? ? ? ? ? ?from Yard 2 pick up car blah blah blah? ? ? ? ? ?from Yard 2 pick up car blah blah blah? ? ? ? ? ?from Yard 5 Scheduled work for Lakeview set out car blah blah blah to ABC factory, Door 1 set out car blah blah blah to XYZ warehouse, Dock Scheduled work for Lakeview Team Spur set out car blah blah blah? ? ? ? ? ? ?to Ryans Rebar set out car blah blah blah? ? ? ? ? ? ?to John's Mercantile pick up car blah blah blah? ? ? ? ? ? ?from Pete's Grocery Scheduled work for Enola? set out car blah blah blah? ? ? ? ? ? to Yard 1 Train 123 terminates in Enola This requires the location to allow the trains you want working the Team Spur of course, and only those trains. Alternately, I believe if you create Lakeview and Lakeview-(Team Spur) as separate locations, the manifest will show the train visiting only "Lakeview" as one stop.? It still needs to be listed separately on the route, so the program will allow the train to do it's moves as described for each location. Happy to help, hope it helps, <Pete Johnson> |
Duncan,
On 2 May 2023, at 2:23 am, Duncan via groups.io <dunradar09@...> wrote:Each row you see in the Show Cabs is the partial contents of the Cab Context Page for each Cab Bus Address. This part of command station memory also has a ";swap area for RECALL key" memory area but is not currently being read and decoded by JMRI. There is documentation of sorts in an NCE Technical Reference Manual (V2,3 for the Power Pro command station. The access method for for the Power Cab is different and may not even be accessible to JMRI. It was on my (longer than a lifetime) TO DO list. Unfortunately since a bout of Covid in mid 2022 I have multiple health problems and am no longer able to do much at all. Dave in Australia |
Locked
Re: Team track
#operationspro
Dan's correct. Use the pooling feature.
later Inspector Dave Onalaska WI |
On Mon, May 1, 2023 at 05:58 PM, <stephenjohnson500@...> wrote:
MFRC522, Nano/Uno/Mega, Serial/Ethernet Steve, ? Detects the type of board it's running on (Nano, Uno, or Mega) and sets the SS/RST pins accordingly. Determines the ReaderID based on the SS/RST pins used, not simply the number of readers connected. Blinks the LED to match the number of detected readers. Sends output to the Serial connection in all cases, even if the Ethernet shield is not connected. If connected, the output is sent via both Serial and Ethernet connections. The output consists of 16 ASCII characters: ReaderID, 5 bytes of tag data, the checksum for those 5 bytes, a CR (carriage return), LF (line feed), and '>'. This sketch handles multiple RFID readers, performs self-tests during setup, and sends card data through the serial or Ethernet connection depending on the Ethernet shield status. ? // Import Libraries
#include <SPI.h>? ? ? ? ? ?// SPI library for communicating with the MFRC522 reader
#include <MFRC522.h>? ? ? ?// MFRC522 library for reading RFID cards
#include <Ethernet.h>? ? ? // Ethernet library for the Ethernet shield
?
// Ethernet configuration
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 1, 177); // Replace with the desired IP address
unsigned int serverPort = 8888;? // Replace with the desired port number
?
EthernetServer server(serverPort);
?
// Define the SS (Slave Select) and RST (Reset) pins for each reader
#if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO)
const uint8_t ssPins[] = {5, 6, 7, A0, A1, A2};
const uint8_t rstPins[] = {4, 8, 9, A3, A4, A5};
const uint8_t readerAssignment[] = {1, 2, 3, 4, 5, 6}; // Assign reader numbers based on SS and RST pins
#elif defined(ARDUINO_AVR_MEGA2560)
const uint8_t ssPins[] = {5, 6, 7, 8, 9, A0, A1, A2};
const uint8_t rstPins[] = {22, 23, 24, 25, 26, 27, 28, 29};
const uint8_t readerAssignment[] = {1, 2, 3, 4, 5, 6, 7, 8}; // Assign reader numbers based on SS and RST pins
#endif
?
const int numReaders = sizeof(ssPins) / sizeof(ssPins[0]);
const char readerID[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'};
?
struct RFIDReader {
? char id;
? uint8_t ssPin;
? uint8_t rstPin;
? MFRC522 mfrc522;
? byte nuid[7];
? bool isConnected;
?
? RFIDReader() : id(0), ssPin(0), rstPin(0), mfrc522(MFRC522(0, 0)), isConnected(false) {}
};
?
RFIDReader readers[numReaders];
EthernetClient client;
bool isEthernetConnected = false;
?
void setup() {
? Serial.begin(9600);
? SPI.begin();
? pinMode(10, OUTPUT);
? digitalWrite(10, HIGH);
?
? // Set pin 53 as OUTPUT for the Arduino Mega 2560
? #if defined(ARDUINO_AVR_MEGA2560)
? ? pinMode(53, OUTPUT);
? #endif
?
? pinMode(4, OUTPUT);
? digitalWrite(4, HIGH);
?
? Ethernet.begin(mac, ip);
? delay(1000);
?
? if (Ethernet.hardwareStatus() == EthernetNoHardware || Ethernet.linkStatus() == LinkOFF) {
? ? Serial.println("Ethernet shield not connected or network not available");
? ? isEthernetConnected = false;
? } else {
? ? isEthernetConnected = true;
? }
?
? for (uint8_t i = 0; i < numReaders; i++) {
? ? readers[i].ssPin = ssPins[i];
? ? readers[i].rstPin = rstPins[i];
? ? readers[i].id = readerID[readerAssignment[i] - 1]; // Assign the reader ID based on readerAssignment array
? ? readers[i].mfrc522 = MFRC522(readers[i].ssPin, readers[i].rstPin);
? ? readers[i].mfrc522.PCD_Init();
?
? ? // Check if the reader is connected
? ? if (readers[i].mfrc522.PCD_PerformSelfTest()) {
? ? ? readers[i].isConnected = true;
? ? ? readers[i].mfrc522.PCD_SetAntennaGain(readers[i].mfrc522.RxGain_max);
?
? ? ? // Print debugging information
? ? ? Serial.print("Reader ");
? ? ? Serial.print(readers[i].id);
? ? ? Serial.print(" detected on SS pin ");
? ? ? Serial.println(readers[i].ssPin);
? ? } else {
? ? ? readers[i].isConnected = false;
? ? }
? }
?
? if (isEthernetConnected) {
? ? server.begin();
? }
?
? // Blink the LED to indicate the number of detected readers
? pinMode(LED_BUILTIN, OUTPUT);
? for (int i = 0; i < numReaders; i++) {
? ? if (readers[i].isConnected) {
? ? ? digitalWrite(LED_BUILTIN, HIGH);
? ? ? delay(300);
? ? ? digitalWrite(LED_BUILTIN, LOW);
? ? ? delay(300);
? ? }
? }
}
?
void loop() {
? if (isEthernetConnected) {
? ? if (!client.connected()) {
? ? ? client.stop();
? ? ? client = server.accept();
? ? ? if (client) {
? ? ? ? Serial.println("Client connected");
? ? ? }
? ? }
? }
?
? for (uint8_t i = 0; i < numReaders; i++) {
? ? if (readers[i].isConnected && readers[i].mfrc522.PICC_IsNewCardPresent() && readers[i].mfrc522.PICC_ReadCardSerial()) {
? ? ? for (uint8_t j = 0; j < readers[i].mfrc522.uid.size; j++) {
? ? ? ? readers[i].nuid[j] = readers[i].mfrc522.uid.uidByte[j];
? ? ? }
?
? ? ? byte checksum = readers[i].nuid[0];
? ? ? for (uint8_t j = 1; j < 5; j++) {
? ? ? ? checksum ^= readers[i].nuid[j];
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.write(readers[i].id);
?
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? // Send output to Ethernet client
? ? ? ? client.write(readers[i].id);
? ? ? }
?
? ? ? for (uint8_t j = 0; j < 5; j++) {
? ? ? ? // Send output to Serial connection
? ? ? ? Serial.print(readers[i].nuid[j] < 0x10 ? "0" : "");
? ? ? ? Serial.print(readers[i].nuid[j], HEX);
?
? ? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? ? // Send output to Ethernet client
? ? ? ? ? client.print(readers[i].nuid[j] < 0x10 ? "0" : "");
? ? ? ? ? client.print(readers[i].nuid[j], HEX);
? ? ? ? }
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.print(checksum < 0x10 ? "0" : "");
? ? ? Serial.print(checksum, HEX);
?
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? // Send output to Ethernet client
? ? ? ? client.print(checksum < 0x10 ? "0" : "");
? ? ? ? client.print(checksum, HEX);
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.write(0x0D);
? ? ? Serial.write(0x0A);
? ? ? Serial.write('>');
?
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? // Send output to Ethernet client
? ? ? ? client.write(0x0D); // CR
? ? ? ? client.write(0x0A); // LF
? ? ? ? client.write('>');? // ETX replaced by '>'
? ? ? }
?
? ? ? readers[i].mfrc522.PICC_HaltA();
? ? ? readers[i].mfrc522.PCD_StopCrypto1();
? ? }
? }
} Tom |
MFRC522, Nano/Uno/Mega, Serial/Ethernet
Tom, I tried this latest version of the sketch on two combinations. The first was an Uno and single reader being used in Serial mode. Unfortunately it didn't work as hoped. It detected all six readers despite only one being connected. It didn't read any tags either on the Serial Monitor or JMRI. The second combination was an Uno, Ethernet Shield and single reader. Again, it listed all six readers despite just one being connected. In did not read any tags in Serial Mode either on the Serial Monitor or JMRI. I then tried it with it connected to the network. Again it listed all readers, but would not read any tags on the Serial Monitor or JMRI. Switching JMRI to the network connection now. It listed all readers, then came up with 'Client Connected'. Unfortunately, it didn't read any tags. So we seem to have gone backwards here somewhere. Just as a check on the hardware, I uploaded the Serial only sketch to the Uno/Reader combo. It listed one reader with the right connection and read the tags correctly. So that combo was okay. I then uploaded v6 of the Ethernet/Serial sketch to the Uno, Ethernet Shield and Reader combo. It correctly identified the reader and its connection, but as before, would only read a tag when connected to JMRI. So, same as before, but working as before and therefore correctly. So I'm not sure what's happened there Tom? I wish I knew a bit more about coding but the Reader ID issue seems to have gone back to v5, which was solved in v6. I imagined that the Ethernet connection would be a sort of 'if, then, else' sort of argument. So IF the the shield is connected, THEN?connect to client and transmit the data on the Network and Serial, ELSE do not connect to client and transmit data on Serial only. I'm not sure if that sort of argument works on an Arduino, does it? Anyway, hopefully you will have a few ideas on this. Steve |
May I suggest one resistive axle per truck, and that one on the 'outside' or closest to its end of the car instead of every axle?? That wire you mention is to power the frog and can be powered by the TAM Valley Frog Juicer.? I've never had to remove the spring but then I use a different switch motor than you are planning on. Allison On Mon, May 1, 2023 at 4:37?PM Tim Kelley <tim.kelley@...> wrote: Thanks,? |
Tim Kelley
Thanks,?
Yes I know what resistive wheelsets are.? I'm planning to use them on my rolling stock (one for each car axle). I believe the resistive wheelsets draw current and that allows the Digitrax BXP88 to see that and mark that block as occupied. I have removed the "springs" that are in my Peco ElectrFrog turnouts. I'm planning to use Tortoise switch machines for controlling my Peco ElectrFrog turnouts. There is a single wire that drops down from the bottom of these Peco ElectroFrog turnouts. Is the purpose of that wire to "power the frog"? Can I use a Tam Valley depot frog juicer to power my frog? Thanks, Tim |
We would like to point out that this list is for discussions related to JMRI, and is intended to be a place that people, particularly beginners, can turn to for help with their JMRI problems from more experienced JMRI users.
General DCC and model railroading topics should be taken to a more appropriate forum and NOT be posted here. SPAM of any kind, politics, legal issues, and other off-topic matters should NOT be posted to the list and will be subject to deletion by the moderators, as will any responses to such off-topic matters. New members still on moderated status will find that off-topic posts will not be approved for posting, and old members making such posts may find themselves back on moderated status. BUY / SELL and ADVERTISING is NOT PERMITTED Let's keep things simple for all of us, and keep the discussion here on-topic. Your moderators |
Tim, Also bear in mind that it is very important that if the turnout reports as free, there must be no possibility of trains touching when attempting to pass. This has a huge bearing on where to actually cut the rails, and has mostly, but not exclusively, to do with the distance of the first non-isolating axle from the coupling closest to the turnout. Locos can easily be asymmetrical in this. Ideally, wagons/carriages/trailers will have resistive wheelsets, in which case the same applies at the tail end of the train. Without resistive wheelsets, automation is going to have to make assumptions (or be told about) train lengths at all times. Wouter On Mon, 1 May 2023 at 19:39, Tim Kelley <tim.kelley@...> wrote: Thanks guys! |
Locked
Re: Loco moving only during sensing decoder type | Decoder Pro
Good, that clears everything up, I think. You are clearly hoping that address 3007 is the one to use, and CVs 17 and 18 are set up correctly for that. However! That combination is a LONG address, and your loco is correctly configured to use that (as shown by CV29, which has bit 5 set, bit 0 being where you count from the right - if that interests you at all). Anyway: all good for address 3007. I hope your loco reacts to that. If not, then some real trouble begins! Looking at CV29, it appears you have DC operation witched ON. If you have no real reason to have that active, it is best to switch it off, which often prevents strange errors before they even occur. To do that, change CV29 to value 34 (bit 2 off). If you do need DC operation enabled, just leave it as it is, but you might run into weirdness at some point in the future. Wouter On Mon, 1 May 2023 at 18:36, Handrail-18 <thomas.mclaughlin2@...> wrote: Wow thank you guys for the help, It is greatly appreciated. Truly. |
Tim Kelley
Thanks guys!
So it looks like each of my Peco ElectroFrog turnouts needs to be it's own block. I think what that means is regardless of whether the train is in the throat of the turnout or in any of it's 2 legs, that block must report as occupied. I think there are a couple of different ways to wire up a Peco Eletrcofrog turnout so I will revisit the youtube video (if I can find it again). Thanks, Tim |
Tim Kelley
Hello again Jeremy,
Sorry...........I seem to remember that there may be 1 more step. Click on all of the SQUARES that are at the very bottom left hand corner of your screen. You might see your icons in there. If so drag them to the far left of the screen. Let me know if this works.........Or not! Tim |
Tim Kelley
PLEASE NOTE THAT MARK's ORIGINAL QUESTION / ISSUE IS NOT ABOUT LOCKING HIS DECODER!!!! -=Tim
On Monday, May 1, 2023 at 01:04:13 PM CDT, Mark Granville <mfgranville@...> wrote:
Read this and look at the Tsunami section. It' slightly different from the standard for locking: John, nice write-up. Just one comment about the statement: “Note: Although not specifically stated, legal values for CV16 are limited to 1 to 7. Even then, Digitrax mentions 0 as a legal value. The author cannot test this as he does not use Digitrax decoders.” As you note, the NMRA standard does not give “legal values” for CV15 & 16. ESU, for example, gives 0-255 as allowed values for these CVs in the decoder manuals. As far as I know, all manufacturers allow 0. It has always been my understanding that the NMRA standard implies that 0 in CV16 means no lock. Most decoders come with 0 as default for both CVs. I’m sure you will find 0 to work just fine in whatever decoders you have. Now I need to test a few decoders to see if CV16=0 results in no lock independent of CV15 value. It may be that the default for decoders is unlocked because both CV15 and CV16 are 0. Mark Granville (different Mark) |
Locked
Re: What would it take to enable "read full page" with Programming on the main? (when capable). Anyone have thoughts about thish?
Interesting
Its actually here?. Item 13. Apparently the local version, got from "Window Help" never updates the URL doesntalways update the URL as you hunt and peck. Steve G. |