Many automation project requires S7 PLC communication. You can use S7 PPI ActiveX as a communication interface with it's flexible structure in your projects. License owners can use this ActiveX without any limitation. For who will purchase License a change can be made at free or paid ActiveX code. .NET Framework 3.5 is used at S7 PPI ActiveX.
ActiveX made by considering easily adding to the program and the easily meeting other probable needs. For this purpose some features that are not contained other ActiveXs like save project, fetch record added to ActiveX. Thus you can finish all operations about PPI communication in a couple minutes.









FULTEK MODBUS RTU SERVER

shape
S7 Ppi Vb 2005-2008 Example Project.
Licence price: 100 Usd.
General Explanation: S7 PPI ActiveX can easily be adapted to your applications. All settings for possible needs of users relevant to the S7 PPI made on the ActiveX. These are can be changed from your program also. You can disable this functions from ActiveX settings. For more information please look VB.NET 2005 and VB.NET 2008 samples.
ActiveX made with .NET Framework 3.5. Program demo runs 10 minutes.
There is no limitation with the ActiveX tag count. Very huge amount of data transfer takes long because PPI communicates serial.In our tests approximately serial adapter 352 byte data read in 1 second. The standart rs485 converter you can use. The serial port based S7 Adapter USB Adapter you can use. Used for this type of PLC adapter PlcVcom software ver.2.68 should be minimum. Siemens serial adapter select free protocol.

ActiveX made up by 4 sections:
ToolStrip: This button group has File menu, connect and disconnect buttons. It may become visible or hidden according your choice. You can configure button's functions using ActiveX properties inside your application.
File Menu: This menu contains the buttons for load, save and delete operations.It has New, Open, Save ,SaveAs buttons.
Connect Menu: The menu which has Connect and Disconnect buttons.

StatusStrip: Information group at the ActiveX subsection. The first data in this group is Tag count. Then "Good" successful communication count. "Bad" is the failed communication count.
Query Byte Count: Most important information for this section. According to entered variable address informations ActiveX automaticaly calculates PPI query and sends to the PLC. Here according to result of the query you can see the byte count that PLC should send. High number means less packet count. Packet number is more important than packet size for the PPI protocol. To improve performance it is necessary to keep down the number of packages.

Ppi Network Menu: PPI Network is the first element of this treeview menu. Second element is station, last element is the group. When element selected tag list at the right filled with that element's tags.
Ppi Network: You can see PC port settings and PPI .NET settings here. When you right click on this area the operation menu opens. Most important parameter of PPI network settings is the pool.interval parameter. By this parameter you can set the period of the queries that sent to the PLC. This has no effect when data written to the PLC. When write command taken data transfers to the PLC without delay.
Station: Station(PLC PPI) address must entered to this area.
Group: One of the most important matters in ActiveX.All serial communication methods have limited capacity. Different groups can be created in order to use this capacity with best way. With groups "cycle" parameter some groups can be read at every cycle some groups can be read less frequently. Thus some PLC values can be read fast some values can be read slow. Applicable number of groups is 128. Other benefit of the groups is the asists arranging query byte number which will detaily explained later. Moreover, it is useful in tracking the data when communicating a lot of data.

Tag List: Table for creating a new tag, monitoring tag's values and writing new values.  Group must be selected at the left side in order to make operation on this table. If group is not selected only set value can be write. When group selected only the tags that belong to that group are listed. When station or network selected all relevant tags are listed.
Adress: You need to write Tag's address inside the PLC this column. You can read and write  I, Q, M, V, S, SM, T, C, AI, AQ variables with Activex. Adress data specifies data size also. For example M 0.0 is one bit data.Md 8 is 4 byte data. Applicable value types specified by the address written here.
Tag Name: System gives the unused name to added tag. You can change it later then. All tag names must be unique.
Value Type: Siemens S7 PLC's data types are selected at this column. All options here read and transferred to PLC with S7 format. Presentation is made with Windows standart. Shown number types are:Boolean, Usigned int8, Signed int8, Usigned int16, Signed int16, Usigned int32, Signed int32, Floatpoint, Bcd.
Read Value: The values that read from PLC shown at this column.
Write Value: The value written on this column is checked if has error first. If it has not error sent to the PLC. Data input process to the PLC is a priority. As soon as after the active query completed write operation activated without waiting other operations.

To obtain the best performance issues must be considered: ActiveX tries to read all tags within the same group once. Calculates the query that will be sent according to the address data entered to the Tag list. If entered adress are consecutive reads all list at once.Number of bytes to be read at one time is limited to 32. ActiveX reports calculated query size with "Query byte count" which resides Statusstrip. If you see different number than your calculated query size probably you made a mistake.
Let's explain the subject with a couple example. Some query examples and total byte sizes are given below.

FULTEK MODBUS RTU SERVER

shape
S7 Ppi ActiveX
Mb 0
Mw 0
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Qw 10

Query byte count:
1.query: 1 byte
2.query: 4 byte
3.query: 6 byte
4.query: 2 byte
Mb 0
Mw 1
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.query: 13 byte
Mb 0
Mw 0
Mw 3
Md 5
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.query: 1 byte
2.query: 12 byte
Mb 0
Mw 0
Mw 3
Md 6
M 8.6
M 8.7
M 9.5
Mw 10

Query byte count:
1.query: 1 byte
2.query: 4 byte
3.query: 4 byte
4.query: 4 byte
S7 Ppi ActiveX Propert:
Public AutoStart_ As Boolean False means close True means open. When PLC off or cannot established connection by other reason communication cannot be started. If this option set true ActiveX will try to connect continuously. Thus communication will start when PLC is ready.
Property Value_(ByVal TagId As UInt32) As String You can use for the writing set value or reading current value. TagId is the line number at the Tag list.
Public FileName_ As String You can read active file name from this variable.
Property LoadSettings_() As String If you give file path in this property automaticaly opens the file. Return value of this property is file path.
Public Sub SaveSettings_(ByVal value As String) Saves existing information with given file name. File name must contain path.
Property Connect_() As Boolean Connects to PLC when this property is true. Disconnects when false. You can query connection state from this property. Returns True when trying to connect to the PLC. You can get the real state from the variable at the bottom.
Public Connection_ As Boolean You can read connection state from this variable. This will true after the establishing connection.
Property PcPpiAdress_() As UInt16 You can query and change PC PPI Network address.
Property PcBaudrate_() As UInt32 You can query and change PC Baudrate value.
Property ComPort_() As String You can query and change PC serial port name.
Property PollInterval_() As UInt16 You can query and change Poll.Interval value.
Property StationAdress_(ByVal StationName As String) As UInt16 You can query and change PLC MPI adress.
Function TagList_() When this function runs returns all of the Tag list as an Array.
Function TagListErr_() Returns If tag list has erroneus value returns False if not returns True. 
Public Sub NotAvailableTagName(ByVal TagName As Array) When you use more than one MPI or when you have tags other than this ActiveX you can write existing tag list to the AcvtiveX with this function. Thus while checking tag names that in the ActiveX this list checked too. Thus providing unique tag names controlled in this list and at other tags.
Property GroupCycle_(ByVal GroupName As String) As UInt16 Returns or changes cycle values of entered group. 
Property FileMenu_() As Boolean Gets or sets visible or hidden states of file menu buttons.
Property ConnectButton_() As Boolean Gets or sets visible or hidden states of Connect and Disconnect buttons.
Property ToolStrip_() As Boolean Gets or sets visible or hidden states of ToolStrip.
Property StatusStrip_() As Boolean Gets or sets visible or hidden states of StatusStrip.
Property TreeviewMenu_() As Boolean Disables or enables right click menu on MPI Network treeview.
Property DataGridMenu_() As Boolean Disables or enables right click menu on Tag list.

Event:
Event MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Event KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
Event Connected_(ByVal sender As Object, ByVal Status As Boolean) Reports state data to main program as an interrupt when connection established or disconnected.
Event ReadValue_(ByVal sender As Object, ByVal TagId As UInt32, ByVal Value As String) When read operation from PLC occured if read value different from previously read value this interrupt reports tag value to the main program with line number at the tag list. All tag values sent once when communication first started.
Event ReadErr_(ByVal sender As Object, ByVal TagId As UInt32) The errors while PLC read operations reported to the main program with line number at the tag list.
Event SetErr_(ByVal sender As Object, ByVal TagId As UInt32) When set values not appropriate or can't written to the PLC the error reports to the main program with line number at the tag list. 
Event TimeOut_(ByVal sender As Object, ByVal StationName As String) When cannot established connection with the PLC reports timeout state of the ActiveX to the main program. 
Event GenericErr_(ByVal sender As Object, ByVal Message As String) Many error reports to main program with this interrupt. This interrupt contains error message also.
S7 Ppi Library
M x.x - Mb x - Mw x - Md x / I x.x - Ib x - Iw x - Id x / Q x.x - Qb x - Qw x - Qd x / V x.x - Vb x -
Vw x - Vd x / S x.x - Sb x - Sw x - Sd x / Sm x.x - Smb x - Smw x - Smd x / AQw x / AIw x / T / C
Boolean,Usigned int8,Signed int8,Usigned int16,Signed int16,Usigned int32,Signed int32
Floatpoint, Bcd.
S7 Activex
Siemens ActiveX
Plc ActiveX
S7 Mpi ActiveX
S7Mpi Activex
Mpi ActiveX
S7 Ppi ActiveX
S7Ppi ActiveX
Ppi ActiveX
Plc .Net
Plc Vb.
Plc VisualBasic
Plc Visual Basic
S7 .net
S7 Vb.
S7 Visualbasic
S7 Visual Basic
Sps Activex
S7 Ppi ActiveX
Türkçe