T3 Simulator

That is a screenshot of the outputs, you can turn them on and off in your programs, this will cycle output1 on for 10 seconds and then off for 10 seconds.

10 IF TIME-ON( OUT1 ) > 0:0:10 THEN STOP OUT1

20 IF TIME-OFF( OUT1 ) > 0:0:10 THEN START OUT1

To program the vars its pretty much the same thing , this program will ramp the var1 up to 100 and then set it back to zero, and repeat. Make sure VAR1 is an analog range for this to work.

30 VAR1 = VAR1 + 1

40 IF VAR1 > 100 THEN VAR1 = 0

I have fixed the handling logic of digital variables in the virtual runtime. The new version of T3000 will be released in the next few days. Thanks!

Could you also help me check why, when I force a condition in the simulator to trigger an alarm, I don’t see the alarm in the corresponding section?

It is important to mention that I forced the PHS input to On and Off.

The following keywords are currently not yet supported; they will be fixed in the virtual runtime in a later version.

Function Issue
WAIT Timeout is hardcoded to 1 second; the actual time should be read from the bytecode (Note: fixed later).
FOR / NEXT Loop stack is managed internally in decode.c; the FOR/NEXT pairing has not been actually tested.
ALARM / DALARM In the adapter layer, generatealarm only outputs TRACE and does not actually trigger the alarm; ON-ALARM depends on alarm_flag, and the VM may not trigger it correctly.
TBL Table lookup depends on custom table data, which the VM may not have.
INTERVAL Scheduled execution; the timing logic needs to be verified.
TIME / TIME_ON / TIME_OFF Dependent on Rtc (Note: TIME was later fixed by syncing with system time).
PRINT The VM has no actual print output.

That’s great; I hope the simulation environment improves soon. I’m also using the RESET function, but I’m not sure if it’s actually working, as I don’t see anything happening.

I would like to know if, while in simulation mode, I can attempt to read values ​​from a Modbus device—for instance, I noticed that T3000 includes a Modbus Poll function (a tool I use frequently). I would like to simulate a couple of registers and view them in the simulator, or assign a specific register to a variable (e.g., mapping Device 1, ID 10, Register 20 to a T3000 simulator variable). Additionally, I would like to know if I can customize the Tstat10 LCD to display specific values ​​of my choice—such as the status of an input—and, if so, how to go about doing that.

As you know the simulator is a new feature. Please test the functions and report back here.

Regarding the tstat10 display, its not very customizable. The upcoming tstat11 has a lvgl like environment where you can customize the display. See the receipt post on this forum about the new web based t3000, it shows off a few of the features

Hi Maurice, thanks for the quick reply. I’ll migrate my project to the upcoming Tstat11 and keep an eye out for the launch—that actually leads right into my second question regarding the web version of T3000.
What is the difference between the current desktop version of T3000 and the new T3000 Beta version? I’d also like to know if the new version will replace the official one—or what the intended purpose is—and whether it will be possible to migrate my projects from the current version to the T3000 Web Beta.

There’s no difference, they are both running. You can switch between the two version by clicking the top right chrome/t3000 icon at the top right as shown in the blog.

I would like to know if the simulator supports the visualization of a simulated Modbus device, If possible—I’m not sure if what I’m doing is correct or if I’m doing something wrong—I would like to assign the value of a record to a variable so I can use it in my PRG.

Should work like a regular t3 device so the answer should be yes. You’ll have to experiment to be sure. This is a new feature as we mentioned.

Hi Maurice, I hope you’re having a great day. I’d like to know how to view data from Modbus with the simulator; since the T3-BB has a physical port, there’s no need to select a COM port.

I have a Modbus device that I can view on my PC using Modbus Slave and an RS485 to USB adapter—I can see the registers perfectly. However, I’d like to know if it’s possible to pass that data to a virtual device and how to go about it. I spent hours reading the Network Programming Overview but didn’t find anything regarding virtual devices. I’d really like this to be possible so I can start integrating my operational logic. I’ve attached some screenshots, Even if I want to query the virtual device for the value of a variable from a third-party device, how would I do that?

I would like to view this register in a simulator variable; how can I get the simulator to see my adapter’s COM port so I can access the register using its specific ID?

Fandu will check this over when we return from the local break this Thursday.