AdvancedHMI Software
General Category => Tips & Tricks => Topic started by: Vitor on August 07, 2015, 06:23:59 AM
-
Here is the result of one of mine experiments.
This uses the Raspberry to connect a PLC with a serial port trough a ethernet network to be accessed by AdvancedHMI.
Follow the link:
https://dl.dropboxusercontent.com/u/67765472/Instrutions-Software.zip
-
For those who would like to experiment but don't have a Pi, you can use a Windows based PC/laptop with a PLC connected to its real COM port or to a USB to RS232 adapter (I tried 2 different USB2RS232 adapters: Prolific PL2303 and Belkin F5U109).
Server/Client software that I used is SerialToIP GUI found here: http://sourceforge.net/projects/serialtoip/?source=directory
A good side of this software is that even RSLinx, with the help of com0com and SerialToIP, can connect to a remote PLC by using its DF1 driver thus providing access to RSLogix to the same PLC.
I tried bunch of other different serial to net applications and none of them worked to provide transparent access to a PLC.
Here is what you will need all together:
Server side (with PLC):
1) PLC connected to a serial port on a PC/Laptop (real COM port or USB2RS232 adapter) and you will need to know which COM port number it is as well as Baudrate
2) SerialToIP GUI program set as a server (check the attached picture)
3) This PC/Laptop can be connected to a network through a WiFi or LAN port and you will need to know its IP address
Client side (with AHMI):
1) PC/Laptop connected to the same network through wired or wireless connection
2) com0com program to create a set of paired COM ports (one used in SerialToIP and the other in AHMI)
3) SerialToIP GUI program set as a client pointing to the server's IP address (check the attached picture)
4) AHMI project with DF1Com driver
I have com0com paired ports as COM1-COM7 and have used COM1 in SerialToIP while COM7 was used in DF1Com1 AHMI driver (check the attached picture).
"Socket port" setting of the SerialToIP program I left as default 8282 on both server and client computers.
All COM ports were set to 38400/N/8/2 for use with MicroLogix 1000 Analog PLC (specific to my setup).
SerialToIP only requires Baudrate and doesn't pay attention to other settings, but in your case these other settings need to be correct so AHMI can communicate with the PLC.
This is definitely a way to connect any serial based PLC to ethernet network.
Another freeware program that could possibly be used is Serial-TCP by CommFront: https://www.commfront.com/collections/device-server-serial-tcp-ip
-
A good news for those who don't have a PLC either.
In previously mentioned setup with 2 PCs, RSEmulate 500 can be used instead of a PLC.
You can always use files from this topic: http://advancedhmi.com/forum/index.php?topic=516.0
-
For those who might be interested in SerialToIPGUI VB Net version with some additional features, here is the link to a complete solution:
https://www.dropbox.com/s/76c4b3gwy0gp1h5/SerialToIPGUI%20VBNet.zip?dl=0
Attached here is a picture of 2 instances of this program on the same computer. Server and Client communicating together over loopback IP address(127.0.0.1) while connecting 2 serial based applications (or it could be an application and a device). 2 sets of com0com paired ports were used as well.
Far simpler way of having these 2 serial based applications talk to each other, could have been done by using just 1 set of com0com paired ports and nothing else, but I wanted to show the packets that they were exchanging as well as GUI interface which was modified from original.
All credits go to the original author of the SerialToIPGUI software (the link to which is provided in one of the previous posts).
EDIT: This VB Net version was updated in December 2016 and the attached picture doesn't reflect those updates.
-
Hi everyone there!
This is Ignacio from Argentina!
I´m a C# developer with some experience in networks (Cisco CCNA), Win & Linux servers, Winforms, Webforms, SSQL Server and PosgreSQL, but I´m new to the HMI world!
Now, I´m starting some developing in order to communicate and control an Unitronics PLC.
I have started to try a lot of different things to connect in a secure way from Internet to the PLC.
I found SerialToIP very helpful, but I couldn´t make it work with the Unitronics PLC. I´m working hard on make it with com0com and hub4com.
I was planning to improve SerialToIP in order to add some authentication and SSL encryption in order to connect to the PLC from anywhere with full simplicity.
I´ve tried to contact the developer of SerialToIP but unit now I haven´t receive a response. Have you? I´ve seen Godra VB.Net version and it´s great!
And, could you please introduce me in a short way to this project about using a Raspberry Pi to connect to a PLC please? What is your scenario?
Thank you very much and have a happy new year!
Ignacio.
-
Ignacio,
You would have to follow scenario as it is in Vitor's experiment in order to see how Raspberry Pi works with PLC.
I cannot make any suggestion on how to modify SerialToIPGUI to have the new features and also work with Unitronics PLC.
-
Here is the result of one of mine experiments.
This uses the Raspberry to connect a PLC with a serial port trough a ethernet network to be accessed by AdvancedHMI.
Follow the link:
https://dl.dropboxusercontent.com/u/67765472/Instrutions-Software.zip
nice!
(https://s15.postimg.org/uywr6wjaz/PLC_RS232_Pi_PC_AAHMI.png)
-
I did some crazy thing today. using only one PC.
Here is the details:
(http://s24.postimg.org/u7p28mq2d/Capture.gif)
1. Run SerialtoIPGUI as server using rs232-USB adapter COM8.
2. Create a virtual pair COM13-14 using Com0Com.
3. Run SerialtoIPGUI as client : set IP address and COM13
4. Run AAHMI with driver SerialDF1forSLCMicroCom using COM14.
5. It worked!!
My plan is to use SerialtoIP command line version on the Pi with mono ( atleast that what is said from the web site)
-
You should be able to skip steps 2 and 3 and run AHMI with SerialDf1overTcpForSLCMicroCom and set its IP address as 127.0.0.1.
This way you can see how this driver works.
Since SerialToIPGUI program is not perfect, your current setup should be more responsive and have less communication lag.
As it appears, when the SerialToIPGUI server and client are connected to each other then the communication is continuous.
If either server or client is used alone then the program is cycling between disconnect/re-connect.
-
Good idea!! Thanks Godra.
it looks like I will have a few choices on the Pi: SerialToIP , Ser2net, Route_Serial_TCP_UDP
-
bachphi,
Have you tried using Mono serial DF1 driver from this topic: https://www.advancedhmi.com/forum/index.php?topic=1975.0
Archie might be introducing serial drivers compatible with Mono in the next patched version so a feedback from those who have tried the above mentioned drivers could help him pay attention to and avoid possible bugs/issues.
Also, for those who might be interested, here is a link to slightly different SerialToIPGUI VB Net version:
https://www.advancedhmi.com/forum/index.php?topic=2592.0
-
Does anyone have the original instructions? I'm wanting to use the pi zero as ethernet to serial interface for some MicroLogix processors. But the first post instructions are on a dropbox that the link is no longer valid for. If anyone can assist, I'd appreciate it.
Thanks,
Bad Sector
-
Hopefully Vitor might update the link but for now, I have attached the original pdf file with his instructions.
The other 2 files that were inside his zip file are:
- com0com_W7_x64_signed.exe (for this file, check this topic: https://www.advancedhmi.com/forum/index.php?topic=1961.0)
- Serial-TCP.msi (there is a link to this file in the 2nd post of this topic)
-
Thank you! This will get me going. Much appreciated.
-
Hello Jeremy
I dont have those instructions and i've closed my dropbox account.
But i think i can help you.
Open a terminal on Raspberry:
sudo apt update
sudo apt upgrade -y
sudo apt install ser2net -y
with your serial-usb adapter attached try find out wath port is with:
sudo dmesg | grep tty* or ls /dev/tty*
next let'sedit the configuration file of ser2net:
sudo nano /etc/ser2net.conf
the only line that should be uncommented is like this:
4000:raw:120/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT
Where:
4000 - is a tcp port on the raspberry not blocked for a firewall and also the same port to use on the PC.
raw - is the format of the data (other options could be for example telnet).
120 - is te timeout in seconds.
ttyUSB0 - is an example and must be that port you find above.
9600 - is the baud rate, must adjust to you PLC.
8DATABITS - the length of each block of information.
NONE - is the parity, others optios = ODD or EVEN
1STOPBIT - how the information block ends
To make ser2net autorun every time the raspberry is turned on, do this:
sudo nano /etc/rc.local
Add the following above exit 0
/usr/local/sbin/ser2net -n -c /etc/ser2net.conf
Now on the PC you need:
com0com
Serial-TCP or RealTerm (https://sourceforge.net/projects/realterm/)
The configuration of Serial-TCP or RealTerm is very simple, just match the tcp port. Both, Raspberry ant th PC must be on the same network or bridged by a gateway.
The connection to AHM is made by com0com.
PLC <=> ser2net <=====> Serial-TCP <=> com0com <=> AHMI
When i published in the forum, in 2015, i have used to connect a Micrologix 1000 via a TP-Link Wi-fi AP to a PC over 400m (1,312ft). But before i have tryed also with a Micrologix 1200, with DF1 and Modbus protocols and worked well without flaws.
Any questions?
-
I was able to get this working per instruction above. I extended it for my use by using hub4com to assign ip addresses to all 4 ports and be avaliable via Ethernet and/or its own Wifi DHCP.
This was useful when I wanted to always via KEP and walk around with my tablet and connect to the Pi to connect "direct" to each machine on it. (IT issues - but now I don't need tablet to make certain changes I couldn't thru shop network).
I will post a detail instruction on this soon - after I verify or fix any issues w/ using Raspberry Debain 12.
But Vitor post worked initially! Thanks for getting me learning ;)
-
this is the site I used to understand the serial/tcp: https://sourceforge.net/projects/com0com/