Refresh ma ancora lettura assi NON funziona se leggo molti assi (vanno letti 1 alla volta?!?)

This commit is contained in:
Samuele E. Locatelli
2016-05-16 18:31:32 +02:00
parent a9ec5e21fd
commit 24f42160da
9 changed files with 243 additions and 41 deletions
Binary file not shown.
+172 -9
View File
@@ -107,7 +107,7 @@ Namespace CNC
End Set
End Property
Public Sub New(ByRef connectionType As ConnectionType, Optional ByRef szIp As String = "192.168.1.1", _
Public Sub New(ByRef connectionType As ConnectionType, Optional ByRef szIp As String = "192.168.1.1",
Optional ByRef nPortIp As Integer = 8193, Optional ByRef CncScreenHssb As ConnectionType = FANUC.ConnectionType.Ethernet)
MyBase.New()
_Type = NcType.FANUC
@@ -130,11 +130,11 @@ Namespace CNC
Me._Descrizione = "NC FANUC" & vbNewLine
Select Case _connectionType
Case FANUC.ConnectionType.Ethernet
Me._Descrizione = Me._Descrizione & "Connection type: Ethernet" & vbNewLine & _
"Ip address: " & _szIp & vbNewLine & _
Me._Descrizione = Me._Descrizione & "Connection type: Ethernet" & vbNewLine &
"Ip address: " & _szIp & vbNewLine &
"Port: " & _nPortIp
Case FANUC.ConnectionType.Hssb
Me._Descrizione = Me._Descrizione & "Connection type: HSSB" & vbNewLine & _
Me._Descrizione = Me._Descrizione & "Connection type: HSSB" & vbNewLine &
"Hssb node: " & Hssb_node.ToString
Case Else
Me._Descrizione = Me._Descrizione & "Connection type: " & _connectionType.ToString & " !!!"
@@ -405,8 +405,8 @@ Namespace CNC
_ManineMagazzino(i) = CInt(cValueB(i))
End If
Next
Case MemoryMapping.ToolManager, _
MemoryMapping.ToolTable, _
Case MemoryMapping.ToolManager,
MemoryMapping.ToolTable,
MemoryMapping.Default
Dim cValue(20 - 1) As Byte
F_RW_Byte(False, MemType.D, 3040, cValue)
@@ -434,8 +434,8 @@ Namespace CNC
Select Case Settings.MemoryMapping
Case MemoryMapping.ElsManager
F_RW_Byte(R, MemType.D, 6792, cVal)
Case MemoryMapping.ToolManager, _
MemoryMapping.ToolTable, _
Case MemoryMapping.ToolManager,
MemoryMapping.ToolTable,
MemoryMapping.Default
F_RW_Byte(R, MemType.D, 3330, cVal)
End Select
@@ -610,6 +610,167 @@ Namespace CNC
Return True
End Function
Public Function getAllAxisPos() As Focas1.ODBAXIS
Dim nPathIdx As Integer
Dim nNumAxisRead As Integer
Dim nReturn As Integer
'Dim sOdbExAxisName As New Focas1.ODBEXAXISNAME
Dim szAssi() As String = {String.Empty}
'Dim szAsse As String
Dim sOdbAxPos As New Focas1.ODBAXIS
'leggo il numero del processo attivo
nPathIdx = GetActivePath()
'serie 16
If Is16Series Then
Dim sbAxis(0)
'Dim ucAxisName()
Dim ucAssi, nMaxAxis As Byte
'leggo il parametro 1010 per sapere quanti assi
F_RW_Param_Integer(R, 0, 1010, 2, sbAxis)
ucAssi = sbAxis(0)
'leggo il parametro 9900 per sapere il numero massimo di assi
F_RW_Param_Integer(R, 0, 9900, 2, sbAxis)
nMaxAxis = sbAxis(0)
'leggo il 1020 per sapere i nomi degli assi
Dim sByteAxis As Focas1.IODBPSD_3
focas.cnc_rdparam(nLibHandle(1), 1020, -1, 4 + (1 * nMaxAxis), sByteAxis)
ReDim szAssi(ucAssi - 1)
For i = 0 To ucAssi - 1
szAssi(i) = Chr(sByteAxis.cdatas(i))
Next i
'serie 30
ElseIf Is30Series Then
'leggo num max assi dal cn
nNumAxisRead = Focas1.MAX_AXIS
'Focas1.cnc_rdaxisdata(nLibHandle(nPathIdx), 0, Short * Type, Short num, Short * Len(), ODBAXDT * axdata);
'nReturn = Focas1.cnc_absolute2(nLibHandle(nPathIdx), -1, 4 + 4 * nNumAxisRead, sOdbAxPos)
'nNumAxisRead = 4
'nReturn = Focas1.cnc_absolute2(nLibHandle(nPathIdx), 1, 8, sOdbAxPos)
' tento con ciclo diindovinare quanto deve essere lunga la struttura di memoria (teoria: 4 + 32*4 byte)
For index = 1 To 128
nReturn = Focas1.cnc_absolute2(nLibHandle(nPathIdx), -1, index, sOdbAxPos)
If (nReturn = 0) Then
Throw New CmsNcException(String.Format("TROVATO! era {0}", nReturn))
End If
Next
'nReturn = Focas1.cnc_exaxisname(nLibHandle(nPathIdx), 0, nNumAxisRead, sOdbExAxisName)
If F_CheckRetError_Cnc(nReturn, "cnc_absolute2 RefreshAxisPosition CNC.FANUC.CMS_CncLib") Then
'Throw New CmsNcException("ERR cnc_absolute2 RefreshAxisPosition CNC.FANUC.CMS_CncLib")
Else
' 'vettorizzo il risultato dell'interrigazione
' ReDim szAssi(nNumAxisRead - 1)
' With sOdbExAxisName
' If nNumAxisRead >= 1 Then szAssi(1 - 1) = .axname1
' If nNumAxisRead >= 2 Then szAssi(2 - 1) = .axname2
' If nNumAxisRead >= 3 Then szAssi(3 - 1) = .axname3
' If nNumAxisRead >= 4 Then szAssi(4 - 1) = .axname4
' If nNumAxisRead >= 5 Then szAssi(5 - 1) = .axname5
' If nNumAxisRead >= 6 Then szAssi(6 - 1) = .axname6
' If nNumAxisRead >= 7 Then szAssi(7 - 1) = .axname7
' If nNumAxisRead >= 8 Then szAssi(8 - 1) = .axname8
' If nNumAxisRead >= 9 Then szAssi(9 - 1) = .axname9
' If nNumAxisRead >= 10 Then szAssi(10 - 1) = .axname10
' If nNumAxisRead >= 11 Then szAssi(11 - 1) = .axname11
' If nNumAxisRead >= 12 Then szAssi(12 - 1) = .axname12
' If nNumAxisRead >= 13 Then szAssi(13 - 1) = .axname13
' If nNumAxisRead >= 14 Then szAssi(14 - 1) = .axname14
' If nNumAxisRead >= 15 Then szAssi(15 - 1) = .axname15
' If nNumAxisRead >= 16 Then szAssi(16 - 1) = .axname16
' If nNumAxisRead >= 17 Then szAssi(17 - 1) = .axname17
' If nNumAxisRead >= 18 Then szAssi(18 - 1) = .axname18
' If nNumAxisRead >= 19 Then szAssi(19 - 1) = .axname19
' If nNumAxisRead >= 20 Then szAssi(20 - 1) = .axname20
' If nNumAxisRead >= 21 Then szAssi(21 - 1) = .axname21
' If nNumAxisRead >= 22 Then szAssi(22 - 1) = .axname22
' If nNumAxisRead >= 23 Then szAssi(23 - 1) = .axname23
' If nNumAxisRead >= 24 Then szAssi(24 - 1) = .axname24
' If nNumAxisRead >= 25 Then szAssi(25 - 1) = .axname25
' If nNumAxisRead >= 26 Then szAssi(26 - 1) = .axname26
' If nNumAxisRead >= 27 Then szAssi(27 - 1) = .axname27
' If nNumAxisRead >= 28 Then szAssi(28 - 1) = .axname28
' If nNumAxisRead >= 29 Then szAssi(29 - 1) = .axname29
' If nNumAxisRead >= 30 Then szAssi(30 - 1) = .axname30
' If nNumAxisRead >= 31 Then szAssi(31 - 1) = .axname31
' If nNumAxisRead >= 32 Then szAssi(32 - 1) = .axname32
' End With
''leggo il parametro con l'ordine degli assi e riordono gli assi
'Static bParameterReaded As Boolean
'Static bParameterUsed As Boolean
'Static nValue(nNumAxisRead - 1) As Integer
'Try
' Dim oValue(0) As Object
' If Not bParameterReaded Then 'leggo solo una volta il parametro
' bParameterReaded = True
' For a = 0 To nNumAxisRead - 1
' F_RW_Param_Integer(R, a + 1, 3130, 1, oValue)
' nValue(a) = oValue(0)
' If nValue(a) <> 0 Then bParameterUsed = True 'se almeno un valore è diverso da 0
' Next
' End If
' If bParameterUsed Then
' Dim szAssi_Copy(szAssi.Length - 1) As String
' Array.Copy(szAssi, szAssi_Copy, szAssi.Length)
' Array.Clear(szAssi, 0, szAssi.Length)
' For i = 0 To nNumAxisRead - 1
' If nValue(i) > 0 Then
' szAssi(nValue(i) - 1) = szAssi_Copy(i)
' End If
' Next
' End If
'Catch ex As Exception
' Debug.Print("RefreshAxisName: Error on reading Fanuc parameter 3130 dor Axis Order")
' bParameterReaded = True
' bParameterUsed = False
'End Try
''pulisco le stringhe dei nomi assi letti
'Dim j As Integer
'For i = 0 To nNumAxisRead - 1
' For j = 1 To Len(szAssi(i))
' If Asc(Mid(szAssi(i), j, 1)) = 0 Or Asc(Mid(szAssi(i), j, 1)) = 12 Then Exit For
' Next j
' szAssi(i) = Mid(szAssi(i), 1, j - 1)
'Next i
End If
End If
''scrivo i nomi assi sui pulsanti
'For i = 0 To 11
' If szAssi.Length > i Then
' szAsse = szAssi(i)
' Else
' szAsse = String.Empty
' End If
' If OpPanel_ref.NCPanel.OpPanelButtons(i + 33).Text <> szAsse Then OpPanel_ref.NCPanel.OpPanelButtons(i + 33).Text = szAsse
'Next
Return sOdbAxPos
End Function
''' <summary>
''' Legge o scrive Byte da MEMORIE PLC
''' </summary>
@@ -1541,7 +1702,9 @@ Namespace CNC
End Select
'Stampo il messaggio
If Config.Settings.Settings.Debug > 0 Then
'If Config.Settings.Settings.Debug > 0 Then
' impostato a true x mostrare errore
If False Then
'If nReturn <> Focas1.EW_SOCKET Then 'tranne su errore di connessione
'CMSCncLib.App.Runtime.Log.WW("ERR pmc_wrpmcrng on F_RW_DWord CNC.FANUC", "Return=" & nReturn, True)
MsgBox(szErrorDesc & vbLf & "Occurred in: " & Position, MsgBoxStyle.Exclamation + MsgBoxStyle.ApplicationModal, "Error on Fanuc CNC Data Window")
+12 -1
View File
@@ -592,7 +592,18 @@ namespace MTC_Sim
public override void getAxis()
{
base.getAxis();
string answ = "";
//// Area di memoria x test... 84 byte (20 assi + intestazione)
//byte[] MemBlockTestData = new byte[84];
CMSCncLib.Focas1.ODBAXIS posAssi = FANUC_ref.getAllAxisPos();
string outMess = "";
outMess += string.Format("AX1:{0:N3}{1}", (decimal)(posAssi.data[0]) / 1000, Environment.NewLine);
outMess += string.Format("AX2:{0:N3}{1}", (decimal)(posAssi.data[1]) / 1000, Environment.NewLine);
outMess += string.Format("AX3:{0:N3}{1}", (decimal)(posAssi.data[2]) / 1000, Environment.NewLine);
outMess += string.Format("AX4:{0:N3}{1}", (decimal)(posAssi.data[3]) / 1000, Environment.NewLine);
parentForm.showMessage(posAssi.data[0].ToString());
}
}
+1 -1
View File
@@ -851,7 +851,6 @@ namespace MTC_Sim
mAdapter.AddDataItem(vettPath[i].mPathAlarmCNC);
mAdapter.AddDataItem(vettPath[i].mPathAlarmPLC);
// altre aggiunte
}
// UnOp
vettUnOp = new UnOp[adpConf.nUnOp];
@@ -1066,6 +1065,7 @@ namespace MTC_Sim
processStatus();
// processing degli strobes
processStrobe();
}
else if (ciclo == gatherCycle.MF)
{
+13 -1
View File
@@ -35,7 +35,19 @@
----------------------------------------------------------------
- ciclo 5ms
----------------------------------------------------------------
----------------------------------------------------------------
- ANALISI TEMPI MTConnect | IN MACCHINA
----------------------------------------------------------------
--------------- START TIMING DATA ---------------
2016-05-16 18:08:32.4414 INFO Chiamate R128-STRB_DW0: effettuate 20, tempo medio 31,54 msec
2016-05-16 18:08:32.4414 INFO Chiamate R32-STROBES: effettuate 5400, tempo medio 7,63 msec
2016-05-16 18:08:32.4414 INFO Chiamate R4-STRB_DW0: effettuate 58, tempo medio 1,61 msec
2016-05-16 18:08:32.4544 INFO Chiamate W4-ACK_DW0: effettuate 86, tempo medio 1,98 msec
2016-05-16 18:08:32.4544 INFO Chiamate R46-STRB_DW1: effettuate 55, tempo medio 11,96 msec
2016-05-16 18:08:32.4544 INFO Chiamate W4-DW1: effettuate 101, tempo medio 2,02 msec
2016-05-16 18:08:32.4544 INFO Chiamate GLOBALI: 5720, periodo: 28,25 minuti.cent, tempo medio 7,51 msec, impegno MEDIO del canale 2,534%
2016-05-16 18:08:32.4734 INFO
--------------- STOP TIMING DATA ---------------
----------------------------------------------------------------
- ANALISI TEMPI MTConnect | SIM
+1 -1
View File
@@ -7,7 +7,7 @@
<!--gestione TIMERS e periodi multipli x thread lenti-->
<add key="timerIntMs" value="5"/> <!--invio da adapter ad agent: 10ms-->
<add key="fastCount" value="20" /> <!--100ms-->
<add key="normCount" value="200" /> <!--1 sec-->
<add key="normCount" value="100" /> <!--500ms-->
<add key="slowCount" value="1000" /> <!--5 sec-->
<add key="alarmSyncCount" value="6000" /> <!--30 sec-->
+35 -10
View File
@@ -57,6 +57,7 @@
this.PlcErr_03 = new System.Windows.Forms.CheckBox();
this.PlcErr_01 = new System.Windows.Forms.CheckBox();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.ErrRT_03 = new System.Windows.Forms.CheckBox();
this.ErrRT_02 = new System.Windows.Forms.CheckBox();
this.CncErr_02 = new System.Windows.Forms.CheckBox();
this.CncErr_03 = new System.Windows.Forms.CheckBox();
@@ -208,7 +209,8 @@
this.lblCodaM = new System.Windows.Forms.Label();
this.addCodM = new System.Windows.Forms.TextBox();
this.label20 = new System.Windows.Forms.Label();
this.ErrRT_03 = new System.Windows.Forms.CheckBox();
this.label53 = new System.Windows.Forms.Label();
this.lblOutMessage = new System.Windows.Forms.Label();
this.groupBox4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.PosAct)).BeginInit();
this.groupBox3.SuspendLayout();
@@ -489,6 +491,17 @@
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Alarms";
//
// ErrRT_03
//
this.ErrRT_03.AutoSize = true;
this.ErrRT_03.Location = new System.Drawing.Point(268, 66);
this.ErrRT_03.Name = "ErrRT_03";
this.ErrRT_03.Size = new System.Drawing.Size(67, 17);
this.ErrRT_03.TabIndex = 11;
this.ErrRT_03.Text = "ERR_12";
this.ErrRT_03.UseVisualStyleBackColor = true;
this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged);
//
// ErrRT_02
//
this.ErrRT_02.AutoSize = true;
@@ -1249,6 +1262,8 @@
// tpStatus
//
this.tpStatus.BackColor = System.Drawing.Color.WhiteSmoke;
this.tpStatus.Controls.Add(this.lblOutMessage);
this.tpStatus.Controls.Add(this.label53);
this.tpStatus.Controls.Add(this.groupBox6);
this.tpStatus.Controls.Add(this.groupBox1);
this.tpStatus.Controls.Add(this.groupBox11);
@@ -1981,16 +1996,23 @@
this.label20.TabIndex = 52;
this.label20.Text = "AddM";
//
// ErrRT_03
// label53
//
this.ErrRT_03.AutoSize = true;
this.ErrRT_03.Location = new System.Drawing.Point(268, 66);
this.ErrRT_03.Name = "ErrRT_03";
this.ErrRT_03.Size = new System.Drawing.Size(67, 17);
this.ErrRT_03.TabIndex = 11;
this.ErrRT_03.Text = "ERR_12";
this.ErrRT_03.UseVisualStyleBackColor = true;
this.ErrRT_03.CheckedChanged += new System.EventHandler(this.SysErr_01_CheckedChanged);
this.label53.AutoSize = true;
this.label53.Location = new System.Drawing.Point(18, 281);
this.label53.Name = "label53";
this.label53.Size = new System.Drawing.Size(52, 13);
this.label53.TabIndex = 59;
this.label53.Text = "LBL OUT";
//
// lblOutMessage
//
this.lblOutMessage.AutoSize = true;
this.lblOutMessage.Location = new System.Drawing.Point(95, 281);
this.lblOutMessage.Name = "lblOutMessage";
this.lblOutMessage.Size = new System.Drawing.Size(16, 13);
this.lblOutMessage.TabIndex = 60;
this.lblOutMessage.Text = "...";
//
// CMS_MachineSim
//
@@ -2025,6 +2047,7 @@
this.menuStrip1.PerformLayout();
this.tabCtrlMain.ResumeLayout(false);
this.tpStatus.ResumeLayout(false);
this.tpStatus.PerformLayout();
this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
this.groupBox1.ResumeLayout(false);
@@ -2232,6 +2255,8 @@
private System.Windows.Forms.TextBox STATUS_ACK_DW1;
private System.Windows.Forms.Label label50;
private System.Windows.Forms.CheckBox ErrRT_03;
private System.Windows.Forms.Label lblOutMessage;
private System.Windows.Forms.Label label53;
}
}
+9
View File
@@ -1152,6 +1152,15 @@ namespace MTC_Sim
#endregion
/// <summary>
/// mostra il messaggio richiesto...
/// </summary>
/// <param name="messaggio"></param>
public void showMessage(string messaggio)
{
lblOutMessage.Text = messaggio;
}
private void CMS_MachineSim_FormClosing(object sender, FormClosingEventArgs e)
{
-18
View File
@@ -138,24 +138,6 @@
<metadata name="K.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="X.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Y.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Z.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="I.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="J.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="K.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>104, 17</value>
</metadata>