Recent Posts

Pages: [1] 2 3 ... 10
Technical support / Re: How to communicate with server (Nano10)
« Last post by garysdickinson on April 03, 2020, 12:36:00 PM »
The Nano-10 has built in support as a slave device via Modbus TCP/IP.  This is an industry standard communication protocol.  A server can access the PLCs, INPUTs, OUTPUTS, RELAYS, DM[], DM32[] and several other PLC internals.

This is how most HMI devices interact with PLCs.  This is how remote data logging is done with PLCs.

Modbus TCP/IP requires little or no software support in the .pc6 program for the Nano. If your server can act as a Modbus TCP/IP server then most of the programming is on the server end.

This is not the only approach that you can use, but it is my favorite. 

Gary Dickinson
Technical support / How to communicate with server (Nano10)
« Last post by kirk-wgt on April 02, 2020, 02:24:49 PM »
Apologies for any dumb questions; I'm new to this.

We've got a Nano10 connected to a few devices via RS485.  Across the internet, I've got a server application that needs to:
- Know when certain inputs on the Nano10 have changed
- Tell the Nano10 to set/clear certain outputs

Let's assume that routing & firewalls are figured out so that both the Nano10 and Server are able to reach each other.

In a perfect world, I would keep a permanent socket connection between the device and my Server application, where I could easily peek, poke, poll, etc.
Is that possible?  If yes, what protocol/technique do I use for this?  FWIW I prefer a device-initiated connection but Server-initiated also works.

If this model doesn't fit how the Nano10 ideally operates, then what's the next-best technique to accomplish my goal with minimal latency or connection hassles?
Technical support / Re: permanently latched input
« Last post by gillecaluim on March 28, 2020, 08:05:03 AM »
Never did anything to the SmartTILE-fx board.  I've already ordered another FX1616-BA because I need to get this HVAC equipment back to a functional status.  I'll email for an RMA.
Technical support / Re: permanently latched input
« Last post by support on March 28, 2020, 12:19:22 AM »
Did you ever remove the SmartTILE-Fx CPU board from the carrier board previously?

It sounds like the SmartTILE-Fx board may have suffered some damage.

However, the best way is to request for an RMA (email and ship the PLC back to our office for testing. It is likely to be repairable unless there was catastrophic damage to the board.

Please include your company name and contact person name when contacting us. Some explanation of what the PLC underwent would be helpful for diagnosis.
Technical support / permanently latched input
« Last post by gillecaluim on March 27, 2020, 09:32:17 PM »
I have a FX1616-BA.  The DIO channel led #14 remains lit, even without any input and DIO #14-16 don't properly sense any input.  I've reset the board but nothing seems to fix this the board toast?
Technical support / Re: FMD1616 - Open Socket TCP as server(slave)
« Last post by support on March 19, 2020, 07:40:44 PM »
You can only specify the destination port, not the source port. The source port is assigned by the OS and incremented after every connect disconnect which comply to internet RFC. You can't fix the source port number.

FMD1616 PLC server socket is to service the iTRILOGI client. It can also service HTTP protocol commands sent from a HTTPRequest process. Please refer to Chapter 2.7 of the FMD User Manual for details.
Technical support / Re: FMD1616 - Open Socket TCP as server(slave)
« Last post by Netanel on March 19, 2020, 02:54:21 AM »
while i connect, disconnect, and reconnect, the port changes, can I define const(hard) port?

another question:

"The FMD1616 PLC server socket is always open" which type of server this?

i succeed to connect to FMD1616 PLC server
but i try to send the string "abc/n", i got error, what i did wrong?

how i read the data from the controller?

my c# code:

tcpclnt.Connect("", 9080);
// use the ipaddress as in the server program
Console.Write("Enter the string to be transmitted : ");
String str = Console.ReadLine();
Stream stm = tcpclnt.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(str);
stm.Write(ba, 0, ba.Length);
Technical support / Re: FMD1616 - Open Socket TCP as server(slave)
« Last post by support on March 17, 2020, 12:21:15 AM »
Yes if the Linux server is listening on a TCP socket the FMD1616 PLC is able to using PRINT #4 "<TCPCONNECT ...>" command to connect to the server port and interact with the server.
Technical support / Re: FMD1616 - Open Socket TCP as server(slave)
« Last post by Netanel on March 16, 2020, 11:11:07 PM »
"iTRiLOGI is a client that can connect to the PLC's server socket", FMD1616 can connect to Linux server socket?
Technical support / Re: People Counter
« Last post by garysdickinson on March 16, 2020, 10:40:15 PM »

In trying to explain how the counting mechanism worked, I realized that my algorithm was not as robust as it could be.

So I modified the code and attached it to this post as V3.

Please look at the state machine diagram in an earlier post:;topic=2429.0;attach=235  as reference.

The idea of the new code is to ensure that the state machine went through all 4 states before updating the count of "people".  I used the #define mechanism to carve out two 32 bit variables:
  • TicCnt - count of the number of states from state 0. This value increments when going clockwise else it decrements
  • TotalCnt - running count of "people"

This is the the "new V3" version of the NextSate CF:
Code: [Select]
' NextState - This CF is called on each new state that is to the "right" of
' The previous state. Think of this as going clockwise through the states.
' 0-->1-->2-->3-->0-->1-->2-->3-->0 ...
' On entry: StateCntr has been updated and represents the current state
' On exit:
' RELAY[2] is updated the patterns for the next legal states
' TicCnt will be updated
' TotalCnt may be incremented
RELAY[2] = DM[StateTableBase + CtrPV[StateCntr]]
TicCnt = TicCnt + 1 ' we have advanced clockwise one state

' If the current state is 0. Check to see it we should increment
' the TotalCnt value.
If CtrPV[StateCntr] = 0

if TicCnt = 4
TotalCnt = TotalCnt + 1 ' We have gone one full turn

' The TicCnt is reset on transitions to state #0
' This makes it easy to "know" when to increment the TotalCnt value.
' The other issue is that the PLC scan rate must be significantly faster than
' the objects being counted. As there are 4 states the scan ran has to be
' about 8x faster in order to keep up.
TicCnt = 0


The PreviousState CF is substantially similar and deals with the counter-clockwise case.

This is a 1x decoder that only counts once each time the state machine goes full circle.  There are 2x and 4x encoders that count 2x or 4x for complete loops through the state machine.

Best regards,

Gary Dickinson
Pages: [1] 2 3 ... 10