开云体育

Date

Locked Re: JMRI Upgrades #upgrading

 

Thanks to all!

Allan


Locked Problem with unstable warrants #warrants

 

Getter frustrated trying to run warrants. I created several warrants and tested them through the editor auto run two or three time and they work perfectly. Save the warrant and the next time it is run the train will either run past the Oblock or fail to have the entire locomotive in the block. When this happens I need to quit the program and shut down the computer including the controller.?
My system is running JMRI 4.26 on a windows 10 laptop.
Is this normal when running warrants.?
I usually run transits through the dispatcher with no problems.
Does JMRI 5 give you the option the back a train into a siding and drive back out.


Locked Re: Throwing turnouts from NCE throttle #nce

 

Andy,
make
If you have the Power Pro system box (not PowerCab, SB5, Twin) you can see those
turnout operations. Add the turnout in JMRI and make sure the feedback mode is
set for MONITORING.

-Ken Cameron, Member JMRI Dev Team
www.jmri.org
www.fingerlakeslivesteamers.org
www.cnymod.com
www.syracusemodelrr.org


Locked Re: track doesn't accept custom loads even though track is configured to accept all loads #operationspro

 

Pete,

The "receive" load in a schedule can also be blank. That allows all custom loads and default loads to be accepted by the spur if the option to accept all load names is also selected.

So in Tom's case, all he needs to do is add a schedule with the car type "XM", and leave all of the line items blank.

Dan


Locked Re: Throwing turnouts from NCE throttle #nce

 

开云体育

Andy,

On 5 May 2023, at 7:53 pm, andy.keane@... wrote:

I have panel pro working well with my NCE system via a serial cable to the five amp Pro Cab system.
what I would like to happen is if a turnout gets thrown using an accessory command on the NCE throttle that panel pro would show the change on the computer screen. All is of course fine if I throw turnouts using panel pro.
apologies if this is obvious

From:
<>


MONITORING
Default for LocoNet Turnouts (and probably XpressNet soon), and available for NCE. When selected, the network is monitored for messages about the status of the Turnout. This mode is only available for certain systems, i.e. some systems can't do the monitoring properly, and don't have this choice

Dave in Australia?in.


Locked Re: RFID Connectivity #rfid

 

Steve,

Yeah, I agree. The debugging messages are still in there if you want to use them, but they kill the serial connection. They do work with the Ethernet connection though. They ARE sort of pointless if using the Serial connection to JMRI though. I would say enable them for the Ethernet connection, but disable them for the Serial connection. I think that they might be useful for users getting everything connected and set up, but after that... I am looking forward to you connecting as many readers as you can (6 for the Uno)!


Tom


Locked Re: RFID Connectivity #rfid

 

MRFC522, Nano/Uno/Mega Serial/Etherner

Tom

Success at last! Well spotted! I have both the Serial and Network connections working in JMRI.

Pity we had to lose the debugging messages, I found those useful to see what was going on. Oh well.

Okay, so now that this works, I will try connecting up multiple readers as they have now arrived.

Steve


Locked Throwing turnouts from NCE throttle #nce

 

I have panel pro working well with my NCE system via a serial cable to the five amp Pro Cab system.
what I would like to happen is if a turnout gets thrown using an accessory command on the NCE throttle that panel pro would show the change on the computer screen. All is of course fine if I throw turnouts using panel pro.
apologies if this is obvious
Andy


Locked Re: JMRI Upgrades #upgrading

 

开云体育

I did an upgrade from 4.24 to 5.3.5 including uninstalling J8 and installing J11 all from a thumb drive on a mate’s Windows 10 computer yesterday in about 10 minutes. ?It’s just not that hard….

Mick

________________________________
Mick Moignard
m: +44 7774 652504
Skype: mickmoignard

The week may start M,T but it always ends WTF.


Locked Re: RFID Connectivity #rfid

 

Steve,

Here:




Tom


Locked Re: New user to JMRI Ops Pro requesting assistance #operationspro

 

Mel,

I believe you have been using the Text Editor when previewing your Manifests and Switch Lists.? Take a look at the Manifest Print Options window below...



This should allow to view your manifest in the manner as shared in the video.? Note that in the video, on his screen, this box I have highlighted is unchecked.

Try this and then let me know what you find out...

Happy to help, hope it helps,
<Pete Johnson>


Locked Re: RFID Connectivity #rfid

 

MFRC522, Ethernet/Serial, Nano/Uno/Mega

Steve,

OK, so after much experimenting at home, it's simply the debugging messages being sent to the serial connection. I commented ALL of them out and now the sketch works via the serial connection as expected. LOL! The reason the Ethernet connection worked was because the debugging messages only were sent via Serial. Easy squeezy.

// 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);
?
? 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];
? ? readers[i].mfrc522 = MFRC522(readers[i].ssPin, readers[i].rstPin);
? ? readers[i].mfrc522.PCD_Init();
? ? readers[i].mfrc522.PCD_SetAntennaGain(readers[i].mfrc522.RxGain_max);
?
? ? // Check if the reader is connected
? ? if (readers[i].mfrc522.PCD_PerformSelfTest()) {
? ? ? readers[i].isConnected = true;
?
? ? ? // 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);
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? 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);
?
? ? ? ? // Send output to Ethernet client, if connected
? ? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? ? 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);
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? client.print(checksum < 0x10 ? "0" : "");
? ? ? ? client.print(checksum, HEX);
? ? ? }
?
? ? ? // Send output to Serial connection
? ? ? Serial.write(0x0D);
? ? ? Serial.write(0x0A);
? ? ? Serial.write('>');
?
? ? ? // Send output to Ethernet client, if connected
? ? ? if (isEthernetConnected && client.connected()) {
? ? ? ? client.write(0x0D); // CR
? ? ? ? client.write(0x0A); // LF
? ? ? ? client.write('>');? // ETX replaced by '>'
? ? ? }
?
? ? ? readers[i].mfrc522.PICC_HaltA();
? ? ? readers[i].mfrc522.PCD_StopCrypto1();
? ? }
? }
}


Tom


Locked Re: track doesn't accept custom loads even though track is configured to accept all loads #operationspro

 

Tom,
?
This particular conflict can arise when the car with the custom load has no final destination.? When the program encounters a car with a custom load but no place in mind to send it, it will search all spurs to try and find one with a schedule that calls for the car-type and load state (e.g. Box_paper, loaded, paper roll). This rule applies to cars NOT assigned a home division.
?
In the use of divisions, the search for where to move an Empty car involves the program trying to find a home division yard to which the car car be sent, then any staging in the home division.? Once that check has been made, it then tries to find a spur with a SCHEDULE to which to send the car (since it has a custom load).
?
Your issue stems from the fact that your car was unloaded at Salmon Arm (Banff Div.) where it became an "Empty".? The division rules then try to get it back to a Kamloops Div. yard or staging track.? Apparently, it cannot find a yard track or staging track in the Kamloops Div...
Could not find a reachable Yard for car (BCIT 1002) load (E(HP))
Could not find a reachable Staging for car (BCIT 1002) load (E(HP))
So then it tries to send it to a spur in the Kamloops Div.
When checking all spurs, it rejects those spurs that are in the wrong division (Banff Div.),

Ignoring spur (Revelstoke (GE-FM-Y), grain elevator) wrong division (Banff) for car (BCIT 1002) empty (E(HP))
Ignoring spur (Revelstoke (GE-FM-Y), feed mill) wrong division (Banff) for car (BCIT 1002) empty (E(HP))
Ignoring spur (Golden (MF), machinery factory) wrong division (Banff) for car (BCIT 1002) empty (E(HP))
Ignoring spur (Salmon Arm (DC-Y), distribution centre) wrong division (Banff) for car (BCIT 1002) empty (E(HP))
Ignoring spur (Banff (WH), warehouse) wrong division (Banff) for car (BCIT 1002) empty (E(HP))
?
And for those spurs that it finds in the Kamloops Div., it finds one which cannot service the car because it is the wrong type...
?
Destination (Blue River (CD-F), fuel) can't service car (BCIT 1002) with load (E(HP)) due to type (XM).
One that can service the car-type (and load) but has no room when the attempt to move was made...
?
Destination (Blue River (CD-F), cross-dock) can't service car (BCIT 1002) with load (E(HP)) due to rolling stock length 44 feet, available track space 18 feet
?
And finally, the other two spurs reject the car because (as Dan pointed out) there is no schedule calling for that custom load (which is actually a custom empty in your case).
?
Destination (Valemount (LM), lumber mill) can't service car (BCIT 1002) with load (E(HP)) due to car has a custom load (E(HP))
Destination (Jasper (FD), freight depot) can't service car (BCIT 1002) with load (E(HP)) due to car has a custom load (E(HP))
Sometimes the build report doesn't tell the whole tale, so to speak, about why the car is rejected.? In this case, you needed to have provided a optional schedule at Valemount.? This is pretty easy to do, just follow below...

Start by opening the Edit window for the "lumber mill" spur at Valemount.



This will open a new window as below...







Click "Save" and you should now have a schedule to which your XMs with their E(HP) status can be sent in the Kamloops Division.
The key is to provide a spur to which the empty (HP) cars can go.? If you have other types of cars, create additional schedules at suitable spurs at which those car-types can be accepted...

Happy to help, hope it helps,
<Pete Johnson>


Locked Re: Possible CMRI bugs #cmri

 

Bob-

I also just downloaded your fix and verified it works with my networked CMRI nodes.? I have been using a workaround for a while.? Appreciate the change.

-Eric
--
Eric Sitiko


Locked Re: New user to JMRI Ops Pro requesting assistance #operationspro

 

Hi Pete, I've been digging, trying to find answers on my own these last couple days. I've been trying to print a switchlist using the Tabular, Two Column method like what is shown in this video at 3:30 as the way I was trying to do it before just wasn't working out. I've gone into the TRAINS/TOOLS/MANIFEST PRINT OPTIONS many times to look and see if maybe I don't have something set up correctly but not able to get the result I'm looking for. I have attached two files for your review, one is the Mina Turn Manifest, generated using the Build/Preview buttons on the TRAINS page. The attached Hanford Switchlist file was generated using the "Switchlist" button at the bottom of the TRAINS page.

My question is how can I generate a switchlist using the Tabular, Two Column method or even the Default method like what's used for the DEMO Files as well as what's shown in the video? I've been going back and forth comparing the DEMO files setup to my own setup but keep coming up empty handed.

Thanks again Pete for all your help. I know I keep saying it but I really do appreciate your assistance with all of this.

Mel


Locked Re: track doesn't accept custom loads even though track is configured to accept all loads #operationspro

 

On Thu, May 4, 2023 at 08:09 PM, <jmri@...> wrote:
However, I have tracks that won't accept a custom load according to the build report even though they are configured to accept all loads.?
A spur can't receive a car with a custom load unless the spur also has a schedule, use the following help links for more info:





From your build report for spur "freight depot":?

Destination (Jasper (FD), freight depot) can't service car (TTX 25000-B) with load (E(HP)) due to car has a custom load (E(HP))


Locked track doesn't accept custom loads even though track is configured to accept all loads #operationspro

 

Hello,

I have created a new custom load called E(HP) which purpose is to prioritize some empty cars over others.? However, I have tracks that won't accept a custom load according to the build report even though they are configured to accept all loads.? Therefore cars with these loads are excluded rather than prioritized.? This is making no sense to me.? I have attached the build report, as well as a screenshot of the section of the build report indicating that the lumber mill track at Valemount doesn't accept custom loads.? Also attached a screenshot of the track configuration indicating the track accepts all loads.? I did notice as well when adding classification tracks and checking them against the location that I was getting error messages indicating the locations did not accept custom loads.? Can't figure this one out.

Thank you for your help.
--
Tom


Locked Re: Loco moving only during sensing decoder type | Decoder Pro

 

Thomas,
Just to confirm clearly, from what you've said, you've done everything right with the programming. JMRI and the loco's decoder have responded as exactly expected so there's nothing wrong with your decoder and no compatibility issue.
You can do 'read all sheets' as was suggested. This is so you have a copy of all CVs stored in the roster entry on your computer so you may be able to use this to restore decoder settings if need be. It's not critical.

Your problem is getting mainline track power and throttle connected correctly. Trevor's advice looks good.

Regards,
Dave Mc.


Locked Re: NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel. #logixng #entryexit

 

John,

As a general rule, signals (and NX sensors) are used to protect points of conflict. ?Those are usually turnouts and level crossings. ?As such, attaching signals and NX sensors to turnouts and level crossings are for inbound traffic.

Another way to look at this is to pose the question: ?Where do want the train to stop if there is a conflict? ?Normally, signaling is configured to protect a turnout/level crossing and the block beyond up to the next signal in the direction of traffic.

Dave Sand


----- Original message -----
From: John Figie <zephyr9900@...>
Subject: Re: [jmriusers] NX Entry/Exit pairs used in LogixNG do not get put back into logixNG when restarting and reloading the panel. #logixng #entryexit
Date: Thursday, May 04, 2023 4:02 PM

I somewhat agree, however it is not as?clear to me. I did read this several times before beginning, and I am a new user so there is a lot to take in. Statements like "?It is not possible to add a sensor for the boundary going?out?from the turnout or crossing." are confusing to me because the software let's you do it. It just won't work correctly. Certainly it is OK to place a sensor at each boundary of a level crossing. You just can't use them both in a pair. Seems a little confusing. Keep in mind that what seems obvious to a experienced user is not for someone trying to learn. So I'm only trying to help.? I do greatly appreciate your help an patience.?

Regards

John


Locked Re: Pi4B 64 bit and GPIO #rpi

 

开云体育

Unless there is an issue between 32bit and 64bit, I don’t understand either. If you can select Pi simulator you should be able to add GPIOs.?

Did you enable the GPIOs in the Raspian software?

appended the following line to???

export WIRINGPI_GPIOMEM=1

and added the following value to?

default_options="-Dpi4j.linking=dynamic

Without making those two additions RPi and JMRI won’t know the GPIOs exist. That is what I was telling you about Steve Todd’s website, he spells out all the additions needed for the RPi image.


?

On May 4, 2023, at 4:18 PM, Colin Head <headcol@...> wrote:

The image uses the 32 bit platform.
I just thought that as I have a 64 bit board I should use it, it also allows the use of extended memory.
The Jmri just refuses to select GPIO and states this error iscexpected when not running on a pi.
As I said a bit odd, I can select simulator so Mt pi gpio can be included in the sensor tables and scripts.? I won't let this beat me ...