Visual Studio Community 2017およびAdvancedHMIを使用してPCベースのHMIアプリケーションを作成します。私はいくつかの新しい問題に移動するので、何の問題もなく走っています。 各行には、7つの配列(各配列500個の実数)があり、毎日このデータをキャプチャしてExcelに保存したいと考えています。 EPPlusとAdvancedHMIの使用次のコードがあります。Exception Throw:EPPlus.dllの 'System.IndexOutOfRangeException'
Private Sub DataSubscriber1_DataChanged(sender As Object, e As Drivers.Common.PlcComEventArgs) Handles DataSubscriber1.DataChanged
If e.ErrorId = 0 AndAlso e.Values.Count > 0 AndAlso e.Values(0) = "True" Then
Console.WriteLine("About to read the data")
Dim MyValues() As String = EthernetIPforCLXCom1.Read("VCell_1A_FES_Cycle_Average[0]", 500)
Console.WriteLine(MyValues.Length & "elements read.")
'* Transfer the values to Excel
Using ExcelPackage As New OfficeOpenXml.ExcelPackage(New System.IO.FileInfo("c:\Data.xlsx"))
For I = 0 To MyValues.Length - 1
Console.WriteLine("Element " & I & "=" & MyValues(I))
ExcelPackage.Workbook.Worksheets(1).Cells(1, I + 1).Value = MyValues(I)
Next
End Using
End If
End Sub
これを実行し、タグスキンを実行してデータスケジューラを実行すると、次のようなことが起こります。
500Elementsが読み取られたデータ
を読み取ることについて。要素0 = 87.945
例外がスローされます:それは動作するはずですが、私はVBまたはそのためのコードのいずれかのタイプに非常に新しいですLIKE「System.IndexOutOfRangeException」EPPlus.dllに
すべてが見えます問題。 My forte 'はPLCラダーロジックです。
ありがとうございました。
ラインの前にExcelファイルへのテスト値を(いない配列からの)書き込みをしてみ '* Excel'に値を転送1-500、新しいExcelファイルを作成し、列Aにデータを書き込みます。あなたはまだ範囲外の例外を取得していますか?そうでない場合は、ループ内のExcelファイルへの値の書き込みを停止し、値をコンソールに書き込んでください。それは動作しますか? –
ありがとう、私は今夜仕事に入るときに私はそれを撃つだろう。 – Bobby5184
私は500タグアレイを問題なくコンソールに書き込むことができました。私は自分のループを修正し、今はすべてOKになっています。ありがとう。 – Bobby5184