2

この PID 制御コードを VB.net プロジェクトに取り込もうとしていますが、すべての感嘆符については少しわかりません。このコードを VB.NET に実装する方法を誰かに説明してもらえますか?

Dim Er!, Derivative!, Proportional!

    Static Olderror!, Cont!, Integral!
    Static Limiter_Switch%
    Limiter_Switch% = 1

    Er = setpoint - process

    If ((Cont >= 1 And Er > 0) Or (Cont <= 0 And Er < 0) Or (Integ >= 9999)) Then
        Limiter_Switch = 0
    Else
        Limiter_Switch = 1
    End If
    Integral = Integral + Gain / Integ * Er * deltaT * Limiter_Switch

    Derivative = Gain * deriv * (Er - Olderror) / deltaT

    Proportional = Gain * Er

    Cont = Proportional + Integral + Derivative
    Olderror = Er

    If (Cont > 1) Then
        Cont = 1
    End If
    If (Cont < 0) Then
        Cont = 0
    End If
    Return ()
4

2 に答える 2

10

VB6 では、変数の型を指定するために特定のサフィックスを追加できます。例えば:

Dim x%

以下と同じです:

Dim x As Integer

サフィックスは VB.NET で引き続きサポートされていますが、広く推奨されていません。可能な接尾辞のリストは次のとおりです。

  • $のサフィックスですString
  • %のサフィックスですInteger
  • &のサフィックスですLong
  • !のサフィックスですSingle
  • #のサフィックスですDouble
  • @Currency(現在Decimalは .NET で)の接尾辞です。

VB6 では、すべてのコア データ型にサフィックス文字が提供されていませんでした。たとえば、、、または の有効なサフィックス文字はありBooleanませDateShort。VB6 でさえ、Asすべての変数宣言で常に使用することを多くの人が推奨していましたが、利用可能な場合はサフィックスを使用することを推奨する人がまだ多くいました。

したがって、そのコードを .NET に変換するには、変数宣言行の接尾辞記号をAs ...句に置き換えて、たとえば、次の代わりに同等の型を指定する必要があります。

Dim Er!, Derivative!, Proportional!
Static Olderror!, Cont!, Integral!
Static Limiter_Switch%

これを次のように変換します。

Dim Er, Derivative, Proportional As Single
Static OldError, Cont, Integral As Single
Static Limiter_Switch As Integer

そして、変数が使用されているときに接尾辞記号が表示される場所はいつでも、宣言行の外側で、記号を削除できます。たとえば、これの代わりに:

Limiter_Switch% = 1

これを次のように変換します。

Limiter_Switch = 1

VB6 から VB.NET に型を変換するときは、VB.NET の数値型の方が大きいことに注意してください。たとえば、IntegerVB6 では 16 ビットですが、VB.NET ではInteger32 ビットです。したがって、技術的には、VB.NET で VB6 に相当するものIntegerShort. Integer通常、それは問題ではなく、 forを使用したいだけですIntegerが、ビット数が重要な場合は注意が必要です。

于 2013-09-18T11:56:41.230 に答える
0

これらのシンボルは、VB6 までの古いバージョンの MS Basic で変数の型を指定していました。% = 整数、&=ロング、!=シングル、#=ダブル、@=通貨、$=文字列

于 2013-09-18T11:54:42.343 に答える