これはすべて完全に複雑すぎるようです。10000 でロールオーバーするエンコーダー インデックスと、特定のポイントで位置を追跡しているラインに沿って転がるオブジェクトがあります。ラインに沿ってプロジェクトの停止ポイントまたはアクション ポイントを進める必要がある場合は、必要な数のインチを追加し、目標結果が 10000 より大きい場合はすぐに 10000 を減算します。
あるいは、または加えて、PLC スキャンごとに常に新しいエンコーダ値を取得します。現在の値と最後の値の差が負の場合は、作業中の連絡先に通電してラップ イベントにフラグを立て、そのスキャンの計算に適切な修正を加えることができます。(**または、以下のようにセカンダリ カウンターをインクリメントします)
実際の問題について詳しく知らなければ、より具体的な解決策を提案することは困難ですが、より良い解決策があることは確かです。ここではMODの必要性はまったくありません。さらに、フロアの担当者は、難読化されたウィザードのものでマシンをいっぱいにしないことに感謝します.
私は引用します:
最後に、12345.678 MOD 10000 = 2345.678 のように、浮動小数点数に対して機能する必要があります。
これを行うために存在する素晴らしい関数があります - それは減算です。なぜそれよりも複雑にする必要があるのですか?コンベア ラインが実際に 833 フィートよりも長い場合は、必要な地面をカバーするのに十分な距離が得られるまで、プライマリ インデックスのロールオーバーで増加する 2 番目のカウンターをロールします。
たとえば、100000 インチのコンベア メモリが必要な場合は、10 でロールオーバーするセカンダリ カウンターを使用できます。プライマリ エンコーダーのロールオーバーは上記のように簡単に検出でき、毎回セカンダリ カウンターをインクリメントします。したがって、作業中のエンコーダーの位置は、カウンター値の 10000 倍に現在のエンコーダー値を加えたものになります。拡張ユニットのみで作業し、パーツを失わないように必要な値でセカンダリ カウンターをロールオーバーさせます。この場合も、問題は単純な減算になります (上記のように)。
たとえば、遊星歯車の回転部品ホルダーでこの手法を使用します。一次回転ごとに 1 回ロールオーバーするエンコーダーがありますが、遊星歯車衛星部品 (それ自体がステーター ギアの周りを回転します) は、同じ開始方向に戻るために 43 の一次回転を必要とします。プライマリ エンコーダーのロールオーバー ポイントでインクリメント (または方向に応じてデクリメント) する単純なカウンターを使用すると、部品の位置を完全に絶対的に測定できます。この場合、セカンダリ カウンタは 43 でロールオーバーします。
これはリニア コンベヤでも同じように機能しますが、唯一の違いは、リニア コンベヤが無限の距離を移動できることです。その場合、問題は、ライン上の最悪のケースの部分がたどる最長の線形経路によって制限されるだけで済みます。
RSLogix を使用したことがないことに注意してください。一般的な考え方は次のとおりです (ここでは一般的なシンボルを使用しました。構文はおそらく少し間違っていますが、理解できるはずです)。

ENC_EXT
上記により、エンコーダーを 10k インチから 100k インチに実質的に変換した値になります。コンベアが逆に実行できるかどうかはわかりません。可能であれば、ダウンカウントも処理する必要があります。プログラムの残りの部分全体がENC_EXT
値でのみ機能する場合は、エンコーダーが 10k しかないという事実について心配する必要さえありません。これは 100k (または任意のもの) になり、ラップアラウンドはモジュラスの代わりに減算で処理できます。
あとがき:
PLC は何よりもまずステート マシンです。PLC プログラムの最善の解決策は、通常、この考えに調和するものです。ハードウェアがマシンの状態を完全に表現するのに十分でない場合、PLC プログラムは、不足している状態情報のギャップを、持っている情報で埋めるために最善を尽くす必要があります。上記のソリューションはこれを行います - 不十分な 10000 インチの状態情報を取得し、プロセスの要件に合わせて拡張します。
このアプローチの利点は、コンベヤだけでなく、ライン上のすべての部品についても、絶対的な状態情報を保存できることです。トラブルシューティングとデバッグのためにそれらを前後に追跡でき、将来の拡張のために使用するはるかに単純で明確な座標系を使用できます。モジュラス計算では、状態情報を破棄し、機能的な方法で個々の問題を解決しようとします。これは多くの場合、PLC で作業するための最良の方法ではありません。他のプログラミング言語から知っていることを忘れて、別の方法で作業する必要があります。PLC は別の獣であり、そのように扱われると最適に機能します。