¿ªÔÆÌåÓý

Date

Locked Re: PanelPro CTC tools #ctc-tool

 

There is a Tutorial done to build panels, unfortunately it's a little old (2015), but you can get through it.? See the folliwing link below:



Ken G.


On Wed, Nov 27, 2019, 5:16 PM Bob Jacobsen <rgj1927@...> wrote:
There¡¯s also a set of script-based tools, completely separate from the GUI ones:



They¡¯re really meant to drive a physical USS CTC machine.? If you wanted to make a virtual panel, you¡¯d have to lay out all the icons for levers and lamps manually.? ?But it does a pretty good job of handling the actual running, with simulated transmission delays and priority handling, a simulated Christmas tree relay, etc.

There¡¯s not a lot of step-by-step documentation, unfortunately.? There¡¯s an example setup script, the into page (above) has some links, and there¡¯s class-by-class documentation:



If anybody is interested, I could put together some better documentation.? Basically, you write your own script with statements that define how your CTC is configured:? What each station contains for turnouts and signals, how those map to JMRI objects, how the track is sensed and the signals are interlocked, etc.? Then you run that script at JMRI startup to put all the logic into operation, and the panel will Just Work.

Bob

> On Nov 27, 2019, at 9:37 AM, Nick via Groups.Io <cornwall9=[email protected]> wrote:
>
> Friends,
>
> Has anyone done a tutorial on creating a US&S panel using the CTC tools ? I'm working on one now and if these tools can help with the process, I would gladly use them. I have looked over the instructions on the website but evidently I am too thick to understand them. A step-by-step get started description would help.
>
> I will muddle along with the process I am using but it is not easy.
>
> Thanks,
> Nick Kulp
>
> "I'm not a failure. I started at the bottom and I found it easily attainable. Life is too short to set unattainable goals"
>
> - Nick Kulp
>
>

--
Bob Jacobsen
rgj1927@...







Locked Re: jynstrument error for USB throttle in 4.17.6 #scripting

 

Matt,
I replaced that line and still get an error:

2019-11-27 16:03:14,671 startup.ScriptButtonModel???????????? ERROR - Unable to run script /home/allen/JMRI_417/jython/USBThrottleAsJynstrument.py. [AWT-EventQueue-0]
javax.script.ScriptException: AttributeError: instance attr: class in <script> at line number 15
??? at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:222)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:59)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:64)
??? at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
??? at jmri.script.JmriScriptEngineManager.eval(JmriScriptEngineManager.java:394)
??? at jmri.script.JmriScriptEngineManager.eval(JmriScriptEngineManager.java:331)
??? at apps.startup.ScriptButtonModel$ScriptButtonAction.actionPerformed(ScriptButtonModel.java:63)
??? at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
??? at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
??? at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
??? at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
??? at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
??? at java.desktop/java.awt.Component.processMouseEvent(Component.java:6632)
??? at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
??? at java.desktop/java.awt.Component.processEvent(Component.java:6397)
??? at java.desktop/java.awt.Container.processEvent(Container.java:2263)
??? at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
??? at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
??? at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
??? at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
??? at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
??? at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
??? at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
??? at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
??? at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
??? at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
??? at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
??? at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
??? at java.base/java.security.AccessController.doPrivileged(Native Method)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
??? at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
??? at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
??? at java.base/java.security.AccessController.doPrivileged(Native Method)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
??? at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
??? at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
??? at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
??? at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
??? at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
??? at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
??? at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: Traceback (most recent call last):
? File "<script>", line 15, in <module>
AttributeError: instance attr: class

??? at org.python.core.Py.AttributeError(Py.java:207)
??? at org.python.core.PyBeanProperty._doget(PyBeanProperty.java:24)
??? at org.python.core.PyObject._doget(PyObject.java:1173)
??? at org.python.core.PyObject.__get__(PyObject.java:3816)
??? at org.python.core.PyType.type___findattr_ex__(PyType.java:1620)
??? at org.python.core.PyType.__findattr_ex__(PyType.java:1599)
??? at org.python.core.PyObject.__getattr__(PyObject.java:1025)
??? at org.python.pycode._pyx14.f$0(<script>:12)
??? at org.python.pycode._pyx14.call_function(<script>)
??? at org.python.core.PyTableCode.call(PyTableCode.java:171)
??? at org.python.core.PyCode.call(PyCode.java:18)
??? at org.python.core.Py.runCode(Py.java:1614)
??? at org.python.core.__builtin__.eval(__builtin__.java:497)
??? at org.python.core.__builtin__.eval(__builtin__.java:501)
??? at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:57)
??? ... 40 more

Script looks like:

numThrottles? = 0
for ctrl in jmri.jmrix.jinput.TreeModel.instance().controllers():
??? # The selection bellow might have to be modified
??? if ((ctrl.getType() == Controller.Type.GAMEPAD) or (ctrl.getType() == Controller.Type.STICK)) :
??????? tw = jmri.InstanceManager.getDefault(jmri.jmrit.throttle.ThrottleFrameManager.class).createThrottleWindow()
??????? tw.ynstrument("jython/Jynstruments/ThrottleWindowToolBar/USBThrottle.jyn")
??????? tw.setLocation(400 * numThrottles, 50 * numThrottles)
??????? numThrottles+=1
??????? tw.setVisible(True)

Regards,

Allen


Locked Re: JMRI not recognizing response to poll request

 

Perhaps you have the C/MRI configuration in JMRI not quite right.

That reply is the letters ¡°AP¡±, which is really unexpected from a C/MRI node.

Is it possible that when you put JMRI on the new hardware that you configured JMRI to look at the wrong COM port?

But then the USIC lights should not show that it¡¯s initialized OK, nor that you can set the output bits properly.

Or when you say "I can manually, from the computer keyboard, set or reset any output port¡±, are you _not_ referring to going through JMRI?

Bob

On Nov 27, 2019, at 3:44 PM, jstein462@... wrote:

My system worked well for close to 20 years, outliving several Windows computers, using RS232 port and JLC Enterprises RS232/RS422 interface card between computer and USIC. A few months ago the Windows computer I had been using died. I replaced it with a Windows unit (actually have tried three) that has only USB ports (can't find a computer with RS232 port) so added a USB/RS232 conversion cable to the interface. I cannot re-establish two way communication.

When running, USIC indicator lights show reception and transmission as OK. I've disconnected connection to RR and installed loopback testors at both the RS232 and RS422 levels and CMRI Serial Command Monitor shows 'unrecognized rep: "41 50" '.

I can manually, from the computer keyboard, set or reset any output port. JMRI just responds "unrecognized rep: 41 50" to Poll requests.

Suggestions??????

--
Bob Jacobsen
rgj1927@...


Locked JMRI not recognizing response to poll request

 

My system worked well for close to 20 years, outliving several Windows computers, using RS232 port and JLC Enterprises RS232/RS422 interface card between computer and USIC.? A few months ago the Windows computer I had been using died.? I replaced it with a Windows unit (actually have tried three) that has only USB ports (can't find a computer with RS232 port) so added a USB/RS232 conversion cable to the interface.? I cannot re-establish two way communication.

When running, USIC indicator lights show reception and transmission as OK.? I've disconnected connection to RR and installed loopback testors at both the RS232 and RS422 levels and CMRI Serial Command Monitor shows 'unrecognized rep: "41 50" '.

I can manually, from the computer keyboard, set or reset any output port.? JMRI just responds "unrecognized rep: 41 50" to Poll requests.

Suggestions??????


Locked Re: Block and Memory Variables Values show TagID not User Name on Web Server in v4.17.5

 

Hi Steve
I'm not sure about the term ImageIcon, but I've always created images in memories by modifying the panel xml by hand as mentioned in /g/jmriusers/topic/32307293?

I've created an updated panel using some images from the resources directory - /g/jmriusers/files/ProblemsBeingWorkedOn/Andy%20Brown%20-%20161045/Block%20and%20Memory%20Variables%20Values%20show%20TagID/BlockOnWebProblem02.xml

You can use the same method to animate that was discussed earlier in /g/jmriusers/message/165625

Hope this helps
Andy


Locked Re: Decoder Pro & Tsunami Decoders #tsunami #pr3

 

Thanks Mick and Marc.? For a power supply I've switched to a fixed dc output on Tech 3 - 9500, 20 volts.? I suspected that the low voltage might be a contributing factor also and bumped up to a higher voltage source.? I heard back from SoundTraxx and the as you mentioned Mick, no Tsunami 2 and Econami no longer pulse.? Only earlier decoders did.? This wouldn't necessarily explain the 308 error, the decoder could ack without a pulse to the motor.? I mentioned the JMRI throttle to SoundTraxx support and the question wasn't addressed.? I wouldn't expect them to address it, but was hoping that there might be some light shed.? As long as the programming changes take, that's all that really matters.

I did retry Programming on Main and 308 still occurs.

Russ


Locked Re: Webserver layout editor panel showing incorrect block occupation for a crossover

 

Hi George
My mistake about not seeing turnout circles - I forgot to clear the cache!

In summary
  • I DO see the circles on slips and crossover.
  • The fill does work on the crossovers
However
  • Single and Double slip circles do not change colour when the turnouts are changed on panel or the web.
  • The fill does not work on Single and Double slip on panel or the web. (Mind you, I'm dubious about using the fill as it would mask the actual route selected!)
In terms of changes, everything looks good:
  • B leg now correct on single slip on web
  • routes appear to be consistent in operation on web and panel
I tried the separate blocks using the xml edit technique and it looked fine (GUI version not merged yet). However, the blocks seems to go CCW, corresponding to blockbname, blockcname, blockdname i.e. South, East North respectively not as you showed in your snippet.

I've created an updated xml with 4 sensors each on the slips /g/jmriusers/files/ProblemsBeingWorkedOn/Andy%20Brown%20-%20161045/CrossoverBlockOccupancyIssue03.xml

Thanks again
Andy


Locked Re: How do you get the Turnouts and Signal heads to update on loading a Panel File?

 

My Command station is already on, so I have to turn it off then back on to get the new loco-net data.
You are correct if the Command station is off before loading the startup file.

Dennis


Locked Re: PanelPro CTC tools #ctc-tool

 

There¡¯s also a set of script-based tools, completely separate from the GUI ones:



They¡¯re really meant to drive a physical USS CTC machine. If you wanted to make a virtual panel, you¡¯d have to lay out all the icons for levers and lamps manually. But it does a pretty good job of handling the actual running, with simulated transmission delays and priority handling, a simulated Christmas tree relay, etc.

There¡¯s not a lot of step-by-step documentation, unfortunately. There¡¯s an example setup script, the into page (above) has some links, and there¡¯s class-by-class documentation:



If anybody is interested, I could put together some better documentation. Basically, you write your own script with statements that define how your CTC is configured: What each station contains for turnouts and signals, how those map to JMRI objects, how the track is sensed and the signals are interlocked, etc. Then you run that script at JMRI startup to put all the logic into operation, and the panel will Just Work.

Bob

On Nov 27, 2019, at 9:37 AM, Nick via Groups.Io <cornwall9@...> wrote:

Friends,

Has anyone done a tutorial on creating a US&S panel using the CTC tools ? I'm working on one now and if these tools can help with the process, I would gladly use them. I have looked over the instructions on the website but evidently I am too thick to understand them. A step-by-step get started description would help.

I will muddle along with the process I am using but it is not easy.

Thanks,
Nick Kulp

"I'm not a failure. I started at the bottom and I found it easily attainable. Life is too short to set unattainable goals"

- Nick Kulp

--
Bob Jacobsen
rgj1927@...


Locked Re: speed matching

 

Hi Marc,
Still trying to determine if I can speed match my two engines below.
I did a "compare" in JMRI for the decoder I was working with, and apparently, a lot of the cv's did not get read. Some of the errors or statements are "same" which means the cv was the same. "timeout talking to decoder", "no acknowledgement from decoder" and "confirm failed". but many of the cv's did get read. I have to use a resistor on my programming track and the resistor is not soldered to the track but just wedged in between the tracks. This could be one thing against me. I'm not even sure it is the right resistor.?
The program says that I have a 36-550 decoder with 4 functions. The instructions say that it is a 28 step decoder.
When I check the cv 7 and 8 what should they read?
Don't know if it helps any or not. One engine is a Bachmann EZ GP-30 Atlantic Coast line number 902 and I bought it new before Christmas of 2018. It has a mfg. ID of 101, and mfg. version # of 46.
The other is a GP9 Bachmann number 1720 bought at the same time or near the other purchase. I did not get the mfg info this trip but I will if it helps.
Both engines say I have no roster entry. I saved it to where I can find it. That is about it for this exchange.
Thanks
George


Locked Re: Integrating JMRI to my MERG CBUS Layout #layouteditor

 

Hi Dave
Thanks for your reply. When I deleted the old turnout reference in the Turnout Table, I received a dialog listing where in JMRI it was referenced and in use. I confirmed that I wished to continue and it cleared in the Turnout Table. I suspected that this was causing problems in the Blocks Table from your earlier observation and corrections. I shall try your suggested method and see how I get on.
The other concern I have is that I had select each turnout/Edit and change the 'Continuing Route Turnout State' to the inverse of how I had set it up. Only then does my Control Panel and Panel Pro agree with each other and the hardware. What impact does this have please?
Best wishes
Peter


Locked Re: Integrating JMRI to my MERG CBUS Layout #layouteditor

 

Peter,

The problem is that the block information is not being updated when turnouts are changed from MERG to Internal. ?I don't know if this a program issue or a procedure issue.

For best results, use the following procedure:
  1. Create the new turnout without a user name.
  2. Move the user name from the old turnout to the new turnout.
  3. Save and re-start JMRI.
Normally the old turnout can be deleted if there are no remaining references. ?You could also give the old turnout a new user name if needed for other purposes.


Dave Sand



----- Original message -----
From: "peter.s.drury via Groups.Io" <peter.s.drury@...>
Subject: Re: [jmriusers] Integrating JMRI to my MERG CBUS Layout #panelpro #layouteditor
Date: Wednesday, November 27, 2019 12:56 PM

Apologies for. I note that the panel file link was not presented properly
Peter


Locked Re: PanelPro CTC tools #ctc-tool

Nick
 

Dave,

Thanks so much for the help. Perhaps you might have see the panel I am working on. A couple of weeks ago, I ha some problems transferring it from my system to my friends. The Logix would not work on his machine until I went in an edited them, one by one.

It is not finished so I thought the CTC tools might help.

Have a great Thanksgiving,
Nick

"I'm not a failure. I started at the bottom and I found it easily attainable. Life is too short to set unattainable goals"

- Nick Kulp



On Wednesday, November 27, 2019, 04:02:59 PM EST, Dave Sand <ds@...> wrote:


Nick, Greg,

The CTC tool is completely functional. ?It will generate all of the required sensors, a basic panel and the logic to put it all together. ?The basic prerequisite is a functional JMRI ABS signaling implementation.

I can put together a tutorial over the next several days. ?I will probably release it in phases.

Dave Sand



----- Original message -----
From: "Greg McCartney via Groups.Io" <gregmcty@...>
Subject: Re: [jmriusers] PanelPro CTC tools
Date: Wednesday, November 27, 2019 2:00 PM

Hey Nick,?
? ?I have tried to use the tools myself but I am not certain it is complete.? I haven't asked if it was complete, just got the impression after multiple times of trying to use it over different versions of JMRI.? I did get it to draw a panel once but it seems to be very hap hazard at this point.? I hope that work continues on it because it looks like an awesome product.

Greg McCartney


Locked Re: PanelPro CTC tools #ctc-tool

 

Nick, Greg,

The CTC tool is completely functional. ?It will generate all of the required sensors, a basic panel and the logic to put it all together. ?The basic prerequisite is a functional JMRI ABS signaling implementation.

I can put together a tutorial over the next several days. ?I will probably release it in phases.

Dave Sand



----- Original message -----
From: "Greg McCartney via Groups.Io" <gregmcty@...>
Subject: Re: [jmriusers] PanelPro CTC tools
Date: Wednesday, November 27, 2019 2:00 PM

Hey Nick,?
? ?I have tried to use the tools myself but I am not certain it is complete.? I haven't asked if it was complete, just got the impression after multiple times of trying to use it over different versions of JMRI.? I did get it to draw a panel once but it seems to be very hap hazard at this point.? I hope that work continues on it because it looks like an awesome product.

Greg McCartney


Locked Re: PanelPro CTC tools #ctc-tool

 

Hey Nick,?
? ?I have tried to use the tools myself but I am not certain it is complete.? I haven't asked if it was complete, just got the impression after multiple times of trying to use it over different versions of JMRI.? I did get it to draw a panel once but it seems to be very hap hazard at this point.? I hope that work continues on it because it looks like an awesome product.

Greg McCartney


Locked Re: jynstrument error for USB throttle in 4.17.6 #scripting

 

Allen,

Try changing line 15 of the script to:

`tw = jmri.InstanceManager.getDefault(jmri.jmrit.throttle.ThrottleFrameManager.class).createThrottleWindow()`

This is due to the `.instance()` method being removed after 4.16 due to having been deprecated for quite some time.

Please let me know if this works as I'll then get this updated for the next release.

Best regards,

Matt H


Locked Re: Integrating JMRI to my MERG CBUS Layout #layouteditor

 

Query file link?/g/jmriusers/files/JMRI-MERG%20Dale%20Junction/Dale%20Junction%201125%20DS%20new%20Query.xml
Apologies for. I note that the panel file link was not presented properly
Peter


Locked PanelPro CTC tools #ctc-tool

Nick
 

Friends,

Has anyone done a tutorial on creating a US&S panel using the CTC tools ? I'm working on one now and if these tools can help with the process, I would gladly use them. I have looked over the instructions on the website but evidently I am too thick to understand them. A step-by-step get started description would help.

I will muddle along with the process I am using but it is not easy.

Thanks,
Nick Kulp

"I'm not a failure. I started at the bottom and I found it easily attainable. Life is too short to set unattainable goals"

- Nick Kulp


Locked Re: How do you get the Turnouts and Signal heads to update on loading a Panel File?

 

Note: You don't have to do the off, just the GPON will trigger reading known
statuses. So clicking the 'on' in the power control will do the job. There
is a simple script, PoweOn.py, it will trigger the GPON for LocoNet.

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


Locked jynstrument error for USB throttle in 4.17.6 #scripting

 

I am running PanelPro 4.17.6 on Ubuntu 18.04 and see that the USB throttle script is crashing. The script is 'USBThrottleAsJynstrument' and the error is listed in line 15 per the console:

2019-11-27 08:41:01,530 startup.ScriptButtonModel???????????? ERROR - Unable to run script /home/allen/JMRI_417/jython/USBThrottleAsJynstrument.py. [AWT-EventQueue-0]
javax.script.ScriptException: AttributeError: type object 'jmri.jmrit.throttle.ThrottleFrameManager' has no attribute 'instance' in <script> at line number 15
??? at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:222)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:59)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:64)
??? at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
??? at jmri.script.JmriScriptEngineManager.eval(JmriScriptEngineManager.java:394)
??? at jmri.script.JmriScriptEngineManager.eval(JmriScriptEngineManager.java:331)
??? at apps.startup.ScriptButtonModel$ScriptButtonAction.actionPerformed(ScriptButtonModel.java:63)
??? at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
??? at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
??? at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
??? at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
??? at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
??? at java.desktop/java.awt.Component.processMouseEvent(Component.java:6632)
??? at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
??? at java.desktop/java.awt.Component.processEvent(Component.java:6397)
??? at java.desktop/java.awt.Container.processEvent(Container.java:2263)
??? at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
??? at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
??? at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
??? at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
??? at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
??? at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
??? at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
??? at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
??? at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
??? at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
??? at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
??? at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
??? at java.base/java.security.AccessController.doPrivileged(Native Method)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
??? at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
??? at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
??? at java.base/java.security.AccessController.doPrivileged(Native Method)
??? at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
??? at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
??? at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
??? at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
??? at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
??? at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
??? at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
??? at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: Traceback (most recent call last):
? File "<script>", line 15, in <module>
AttributeError: type object 'jmri.jmrit.throttle.ThrottleFrameManager' has no attribute 'instance'

??? at org.python.core.Py.AttributeError(Py.java:207)
??? at org.python.core.PyType.noAttributeError(PyType.java:1994)
??? at org.python.core.PyObject.__getattr__(PyObject.java:1027)
??? at org.python.pycode._pyx11.f$0(<script>:12)
??? at org.python.pycode._pyx11.call_function(<script>)
??? at org.python.core.PyTableCode.call(PyTableCode.java:171)
??? at org.python.core.PyCode.call(PyCode.java:18)
??? at org.python.core.Py.runCode(Py.java:1614)
??? at org.python.core.__builtin__.eval(__builtin__.java:497)
??? at org.python.core.__builtin__.eval(__builtin__.java:501)
??? at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259)
??? at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:57)
??? ... 40 more

It was working ok in 4.16. Something change?
Thanks,
Allen