smithtek-mako-rf 3.4.2
Smithtek Mako RF and PassPort Connect nodes for Mako and Solaris readings and controls
Smithtek Mako RF and PassPort Connect
Node-RED nodes for communicating with Smithtek Mako and Solaris PLCs from a PassPort.
Included nodes
- PassPort Connect (PPC) is Smithtek’s proprietary communication link between PassPort, Mako and Solaris. It reads measurements and writes controls using the matching table created in V-NET2. Supports RF and RS485, plus USB for Mako.
- Original Mako RF provides basic Modbus communication and remains available for existing flows. Its settings and message formats are described in the original Mako RF guide. Use that guide when working with the original node.
Install
In Node-RED, open the menu, choose Manage palette, open Install, search for smithtek-mako-rf, and install it. If it is already installed, use the available update. Restart Node-RED if requested. The package includes both the original Mako RF node and the new PassPort Connect node.
Before updating an existing installation, export a backup of your flows. After installation, check that PassPort Connect appears in the Node-RED palette before importing your V-NET2 export.
Which guide should I use?
For a new V-NET2 PassPort Connect project, follow the instructions below. A separate copy is available in PassPort Connect setup and everyday use. For an existing original Mako RF flow, use the original Mako RF instructions. The two nodes use different message formats.
PassPort Connect · setup and everyday use
PassPort Connect (PPC) is Smithtek’s proprietary communication link between PassPort, Mako and Solaris. It lets your PassPort read measurements and send commands to a Mako or Solaris. For example, you can check a tank level, change a setting or start a pump.
The smithtek-mako-rf package includes two communication nodes. Original Mako RF is for basic Modbus reads and writes. PassPort Connect is for the matching PassPort Connect table in V-NET2. Choose PassPort Connect for this guide; the two nodes use different message formats.
In V-NET2, use the PassPort Connect logic block to choose the readings and controls you want to share. Export from that logic block to create matching Read and Write nodes in Node-RED. Read means “tell me the values”; Write means “change this value”.
Setup
- In V-NET2, click New project in the top toolbar. Enter a project name, choose Mako or Solaris, then create the project. Save any existing work you want to keep.
- In the logic-block library on the right of V-NET2, open Communication and click PassPort Connect. Read the introduction, then click Add PassPort Connect to place the logic block on your diagram.
- Click the PassPort Connect logic block on your V-NET2 diagram. In its Properties panel on the left, enter a Unit ID from 1 to 247. Give every PLC sharing a PassPort connection a different Unit ID. Set Connections to the number of communication links this logic block will use.
- In that same Properties panel, click Edit Analog & Digital table. Add a row for each reading or control, enter a clear name such as Tank level or Pump start, and choose its value type and starting value. Click Apply table to save the table to the logic block.
- On the V-NET2 diagram, wire each measurement to its named input on the left of the PassPort Connect logic block. Wire each control from its named output on the right to the equipment output or logic block it should operate.
- Select the PassPort Connect logic block again. In its left-hand Properties panel, click PassPort Connect · export nodes. This opens the connection and export window.
- In that window, under Match the connections, choose the communication port used on your Mako or Solaris and the port used on your PassPort. For example, choose RF on both sides for radio, or Solaris RS485 and PassPort RS485-1 for a wired link. Open Review or change settings before export and check the settings for your chosen connection.
- In the same window, click Export read & write nodes. Choose a filename and folder, then save. V-NET2 creates the Node-RED JSON file and adds any missing Send and Receive wires to the selected PLC port on your diagram. Existing wires are kept. Apply settings is available if you want to save these connection choices without exporting a file.
- Back in V-NET2, save the project using Save in the toolbar. When ready, use Build program to build and upload it to the selected PLC. The export file alone does not update the PLC. If using RF, also set the PassPort radio to match the PLC.
- In Node-RED, open the flow page where you want the nodes. Open the menu, choose Import, select the JSON file saved by V-NET2 and choose Current flow. Click Import and place the Read and Write nodes on that page. Do not paste this JSON into an existing node’s settings.
- In Node-RED, double-click each imported node to check its Action, Unit ID and Connection. Add an Inject node before Read and connect a Debug node to each output. Leave Inject once after startup and Repeat off for this first test. Click Deploy, then press the Inject button to read the PLC.
1 · Choose your connection
| Connection | How to connect |
|---|---|
| RF · Mako or Solaris | Choose RF at both ends. Match the frequency, range and Network ID on the PLC and PassPort. If you use an encryption key, match that too. |
| RS485 · Mako | Choose RS485-1 or RS485-2 on the Mako and the wired port you are using on PassPort. Connect A to A and B to B. Match the baud rate and serial format at both ends. |
| RS485 · Solaris | Choose RS485 for Solaris and RS485-1 or RS485-2 for PassPort. Connect A to A and B to B. Set the Solaris serial switch to RS485. It uses the shared Monitor / RS485 Send and Receive pins. Match the baud rate and serial format at both ends. |
| USB · Mako | Connect the Mako USB socket above RS485-1 to a PassPort USB slot with the specified USB-A to USB-A data cable. Choose USB in V-NET2. This uses the Mako Monitor Send and Receive pins. In Node-RED, USB · Auto detect finds a single connected USB serial device. If several are connected, use Refresh USB and choose your device in Connection. |
USB detection runs on the PassPort, where the cable is plugged in. It finds available USB connections; it cannot prove that a device is a Mako. Confirm the selected device and Unit ID with a test read before sending commands. With several devices connected, choose the right one rather than letting the software guess.
If no USB device is found, check power and the data cable, then refresh the list. Devices with a unique identity can be found again if their connection number changes. If a device has no unique identity, check the selection again after unplugging or restarting.
Solaris has one shared Monitor / RS485 port. In your V-NET2 diagram, if a sensor logic block already uses that port, choose RF for the PassPort Connect logic block. The same Send port cannot be connected to both the sensor logic block and the PassPort Connect logic block.
Changing the export settings does not change the PassPort radio. Set that separately. Short range and Long range are radio settings, not promises about how far a signal will travel.
Keep the selected connection for PassPort messages. Do not also send ordinary Monitor text over it: mixed messages can stop readings and commands from working.
2 · Make your channel table
| Choice | When to use it |
|---|---|
| Float | A 32-bit floating-point number, such as 12.5 volts. Stores about seven significant digits. Large whole numbers can round: 123456789 becomes 123456792. Choose 32-bit unsigned or 32-bit signed when you need that whole number exactly. |
| 16-bit signed | Whole numbers from −32768 to 32767. |
| 16-bit unsigned | Whole numbers from 0 to 65535. |
| 32-bit signed | Whole numbers from −2147483648 to 2147483647. |
| 32-bit unsigned | Whole numbers from 0 to 4294967295. |
| Digital | On or off: true or false. Use this for switches and simple controls. |
An Analog row holds a number. A Digital row holds on or off. Mako supports up to 64 rows; Solaris supports up to 16, with space also needed for the rest of your program.
Use a different name for each row, up to 40 characters. Capital letters matter: Pump and pump are different names. The editor will tell you if a name cannot be used.
V-NET2 works out the table addresses for you. An address is simply where a value is kept. Leave these alone when using an exported table.
Keep the PLC table and both Node-RED tables the same. After changing a table in V-NET2, upload the changed PLC program and export fresh nodes. Replace the old nodes so you do not accidentally read or send commands twice.
Starting values apply when the PLC starts. They do not make Node-RED send a command. A signal wired into a row on the left can keep replacing a command sent from PassPort. Leave that input unwired for a remote-only control.
Use a separate feedback row when you need to know what actually happened. A Pump start command and a Pump running sensor tell you different things.
3 · Read your measurements
A Read node waits until another node asks it to work. Connect an Inject node to its input and press the Inject button. Each press reads the whole table. The value inside the Inject message does not choose a channel.
To start, leave Repeat and Inject once after startup off. After a successful test, you can set Inject to repeat. Allow enough time for one reading to finish before asking again.
Connect a Debug node to the first output to see successful readings. Values are listed by their table names in msg.payload. For example, {"Level":12.5,"Pump":false} means the level is 12.5 and the Pump value is off.
The second output reports problems. If part of a read fails, the node reports an error instead of sending an incomplete set of readings.
The PLC may need several requests to return a table. Values are collected one after another, so they are not all measured at exactly the same moment.
Prefix helps you tell PLCs apart. Enter North Mako and a row called Level appears as North Mako Level in the readings. The row name used for commands is still Level.
For more detailed flows, msg.ts records when Node-RED finished the read. It is not the time the PLC measured each value. msg.channels holds the original, unscaled numbers and on/off values; msg.passport holds the result and progress details. Most everyday flows only need msg.payload.
4 · Send a command
| Write input | How to use it |
|---|---|
| Single channel · easiest | Choose the row in Write channel. Send a number for Analog, or Boolean true / false for Digital. Only that row changes. |
| Named values | Send a JSON object such as {"Pump":true,"Setpoint":25}. Only the named rows change. Use the exact table names, without a read Prefix. |
| Mapped arrays · advanced | Use this only if your flow already works with lists of values. Send the matching mappingId and the full Analog or Digital list in table order. The Digital list is called switches. |
Open the Write node, choose Single channel, then choose the row you want to control. Exported writers initially select the first row, so always check this before connecting commands.
In Inject, choose number for a numeric setting or Boolean for an on/off command. Do not choose string: the text “true” is not the same as the Boolean value true. For several named values, choose JSON.
Analog commands must fit the row type. Whole-number rows need whole numbers. Digital accepts true and false, or 1 and 0. Send an ordinary number even for a 32-bit row; the node handles its size.
The first output confirms that the PLC answered the command. It does not prove a motor turned or a valve moved. Read a feedback sensor to check the equipment.
Commands are not automatically repeated after a failed reply. A PLC can receive a command even when its reply is lost. Check the equipment or read it back before repeating a start, reset or pulse command.
If you change several values together and a later part fails, earlier values may already have changed. Read the values back before deciding what to send next.
Do not connect Read straight into Write. That can turn every repeat reading into another command. Make separate buttons or control logic for the changes you intend.
For advanced list-based flows, move the unscaled msg.channels object into msg.payload before using it as a Mapped arrays command. A one-Analog, one-Digital table could use {"mappingId":"the matching table ID","analog":[25],"switches":[true]}. Keep each supplied list complete and in order. The table ID checks the message against the node; it does not check which program was uploaded to the PLC.
5 · Short pulses, remote resets and lost communication
Pulse on write works like a quick button press. Turn it on for a Digital row in V-NET2. A command turns the output on briefly, then it turns off by itself. The default is 250 milliseconds, or a quarter of a second. You can choose 1 to 1000 milliseconds.
This is useful for remote resets or restarts. For example, connect a Reset pulse to the reset input of the equipment logic you want to restart. Connect it to the PLC Reset input only when you intend to restart the whole PLC. A PLC restart interrupts communication, so its reply may be lost.
Each accepted write triggers a pulse, even a repeated value or false. Send one true command for each intended press. Do not send a second false command to release it: that would trigger another pulse. Another command during a pulse extends it. Reading the row does not trigger it.
Pulse settings belong to the PLC program. Save and upload after changing them, then export matching nodes.
The communications watchdog is a way for your program to notice missing messages. Set Timeout to the number of seconds it should wait. Zero turns it off.
If no valid communication arrives for that whole time, Watchdog sends false once. It waits another full timeout before checking for recovery. It sends true once when recent communication has returned, or waits and checks again if it has not. It sends no startup command.
Choose the response by wiring Watchdog into your program. It does not stop a pump or clear other values by itself. Use regular reads if you rely on them to keep communication active; manual clicks leave gaps between messages.
6 · Copy a node and adjust how readings look
A useful tip: copy and paste your complete Read node, then change the copy’s Action to Write. This copies the entire channel table and connection settings, so you do not have to work out the table again. Choose Single channel and select the row you want to control before using it.
The copy is independent. Later edits to one node do not change the other. Keep both tables matched to the uploaded PLC program.
Scaling changes how a reading is displayed. For example, Math /100 turns 1250 into 12.5. None leaves it unchanged. Math allows one simple operation, such as *2, /100, +5 or -7. Do not enter a long formula.
Range converts between two scales. For example, Input low 4 and Input high 20, with Output low 0 and Output high 100, turns a 4–20 reading into 0–100. Clamp keeps the displayed result inside that range. Without Clamp, readings outside the input range can produce results below or above the output range.
Hide range only folds the settings away; it does not turn scaling off. Choose None to stop scaling. Scaling is for Analog rows.
Scaling and Prefix change named readings only. They do not change the PLC or commands. If /100 displays a stored value of 1250 as 12.5, a Write command still needs 1250 to request that original value.
You normally do not need to edit addresses. If you do, they must match the PLC. Moving rows in Node-RED does not change their addresses. Exporting again from V-NET2 uses the V-NET2 table and does not keep separate edits made in Node-RED.
7 · Sharing a connection and avoiding delays
PLCs using the same PassPort RF or wired port share one Connection setting. Select that existing Connection in each Read and Write node. Give each PLC its own Unit ID.
Think of the connection as a single lane: messages take turns. A long table or a PLC that does not answer can hold up the next message, including a command.
Timeout is how long PassPort waits for an answer. Read retries is how many extra times it tries a failed read. The exported defaults wait up to 8 seconds and allow 2 extra read attempts. Commands do not use these extra attempts.
A queue is a waiting list of messages. If you ask for readings too quickly, the list grows and replies get late. Slow down the Inject repeat rate and remove duplicate triggers if this happens.
Each Read or Write node can have up to 16 waiting messages. The shared connection also has a limit. Use a Catch node to show queue-full errors, as well as Debug on the second output for other problems.
Start with one PLC and manual reads. Add regular reads and other PLCs gradually, checking how long replies take. Signal conditions and the amount of information affect the speed.
Signal-strength options used by the older RF node do not add a signal-strength reading to PassPort Connect.
8 · If something is not working
| Problem | What to try |
|---|---|
| Unknown node after import | Check that PassPort Connect is available in your Node-RED palette. If it is missing, ask your installer to update PassPort Connect. |
| No reading after Deploy | Press the Inject button. Deploy saves the flow; it does not ask for a reading. |
| No answer or timeout | Check power, cables, Unit ID and matching communication settings. Confirm you uploaded the intended PLC program. For USB, refresh the detected-device list and confirm your selection. |
| Numbers look wrong | Compare the table and value types with V-NET2. Check whether scaling has changed the displayed number. |
| A command is rejected | Check the selected row, spelling and value type. If using lists, check they match the whole current table. |
| A command changes back immediately | Look for a local signal or other logic that keeps writing to that row. |
| A command reports an error | Check the equipment and read the value back. The command may have arrived even if its reply did not. |
| Replies are slow or the queue is full | Read less often. Remove duplicate Inject timers and make sure nodes sharing a port use the same Connection. |
Connect Debug to the second output to see the error message. Add a Catch node for errors such as a full waiting list. Both can report the same problem, so avoid making two automatic responses to one fault.
The error details can show how many parts completed and whether a command may already have reached the PLC. Use that information before trying again.
A green completed status means the last request worked. It does not prove the PLC is still connected now. A screen showing old readings should also show when they were last updated.
Before using a new setup unattended, test the readings, commands and loss-of-communication response on your equipment.
9 · Export and import into Node-RED
In V-NET2, click the PassPort Connect logic block on your diagram. In the left-hand Properties panel, click PassPort Connect · export nodes. Choose the connections in the window that opens, then click Export read & write nodes and save the JSON file.
In Node-RED, open the flow page you want to use. Open the menu and choose Import. Select the JSON file saved by V-NET2, choose Current flow, click Import and place the nodes. This adds complete Read and Write nodes with your table. It does not create a new flow tab.
You can also copy the contents of that JSON file and paste them into the text box in the Node-RED Import window. You must still click Import. Do not paste the complete file into a Read or Write node’s settings.
In Node-RED, double-click each imported node. Check Unit ID and Connection. If that PassPort port is already in use, choose the existing Connection. Click Done, add your Inject buttons and Debug nodes, then click Deploy.
The other button in the V-NET2 logic block’s Properties panel is Export connection setup JSON. It saves a reference copy of your table and settings. It does not create Node-RED nodes and cannot be imported as a flow or pasted into a node. Use PassPort Connect · export nodes when you want the Read and Write nodes.
Neither export uploads the PLC program or changes the PassPort radio. Save and upload the PLC project from V-NET2 separately.
If PassPort Connect is missing from the Node-RED palette, ask your installer to add or update it.
Older projects using the ordinary Modbus logic block still have their separate single-node export. Farming quick templates use the PassPort Connect logic block and export the complete Read and Write pair.
10 · Try it: battery reading and a relay command
Create a test project for your PLC. Add PassPort Connect with Unit ID 7 and one connection. Add Battery as a Float Analog row, and TestRelay as a normal Digital row with Pulse on write off.
Wire Battery Voltage to Battery on the left. Wire TestRelay on the right to a spare Mako output or Solaris relay. Leave TestRelay on the left unwired. Use an output whose connected equipment is suitable for your test.
In PassPort Connect, choose RF or an available RS485 connection and match the settings. Export the Read and Write nodes. Save and upload the PLC program when ready.
In Node-RED, import into Current flow. Connect Inject to Read and Debug to both outputs. Deploy and press Inject. The result should include a Battery number and TestRelay as true or false.
Open Write, choose Single channel and select TestRelay. Do not leave Battery selected. Make one Inject with Boolean true and another with Boolean false. Leave automatic startup and Repeat off. Wire both to Write, Deploy, and test each button.
Check the relay itself or a feedback sensor, as well as the reply. For an Analog setpoint later, select that row and send a number in the original units.
For a ready-wired farm project, open Farmers quick templates. Choose the picture, enter a unique Unit ID and the required sensor settings, then choose Load & export Node-RED. The project uses PassPort Connect, includes battery voltage and exports the complete Read and Write pair onto your current flow.