新しく発言する  EXIT  インデックスへ

ラダーロジック-リレーによる論理回路


  ラダーロジック - リレーによる論理回路 山中和義 2008/04/23 17:12:03 
  つづき 山中和義 2008/04/23 17:15:13 
  │└つづき 山中和義 2008/04/23 17:16:33 
  │ └テストrunの結果 島村1243 2008/04/23 21:23:26 
  │  └試用、ありがとうございます。 山中和義 2008/04/23 22:30:51 
  ラダー図からのシミュレーション 山中和義 2008/04/25 16:14:17  (修正1回)
   └つづき 山中和義 2008/04/25 16:14:55  (修正2回)
    └つづき 山中和義 2008/04/25 16:16:32  (修正3回)
Re: つづき  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/04/25 16:16:32 ** この記事は3回修正されてます
つづき


SUB ladder !ラダーロジックのテーブルを計算する
FOR xx=1 TO w !1列目から(母線から順次右へ) ※サイクルタイム

!AND結線の計算
FOR yy=h TO 1 STEP -1 !1行目から(先頭行から末尾行まで1列ごと)
LET tt$=UCASE$(cTBL$(yy,xx)) !機器を得る

IF tt$<>"" THEN !機器なら
LET nm=nTBL(yy,xx) !番号を得る

LET v1=xPrev(xx,yy) !前列からの積を考慮して

SELECT CASE tt$
CASE "SA" !スイッチのa接点
LET v0=X(nm)
CASE "SB" !スイッチのb接点
LET v0=NT(X(nm))

CASE "A" !リレーのa接点
LET v0=Y(nm)
CASE "B" !リレーのb接点
LET v0=NT(Y(nm))

CASE "TA" !タイマのa接点
LET v0=T(nm)
CASE "TB" !タイマのb接点
LET v0=NT(T(nm))

CASE "CA" !カウンタのa接点
LET v0=C(nm)
CASE "CB" !カウンタのb接点
LET v0=NT(C(nm))

CASE "O" !リレーのコイル
CALL relay(nm,v1)
LET v0=Y(nm)
CASE "T" !タイマ
CALL tim(nm,vTMR(nm),v1)
LET v0=T(nm)
CASE "C" !カウンタ
CALL cnt(nm,vCNT(nm),v1)
LET v0=C(nm)
CASE "CR" !カウンタリセット
CALL cntclr(nm,v1)
LET v0=C(nm)

CASE "─","┬","┤","┘","┴" !結線
LET v0=1
CASE "│","├","└" !結線
LET v0=0 !前列とは無関係

CASE ELSE
PRINT cTBL$(yy,xx);" は未サポートです。"
STOP

END SELECT

LET vTBL(yy,xx)=AND(v1,v0) !状態を設定する
END IF
NEXT yy

!OR結線の計算
LET v1=0
FOR yy=h TO 1 STEP -1 !1行目から
SELECT CASE UCASE$(cTBL$(yy,xx)) !結線なら
CASE "┬" !開始
LET v1=vTBL(yy,xx)
LET sav_yy=yy !行を記録する
CASE "┤","│","├" !延長
LET v1=OR(v1,vTBL(yy,xx)) !1つ上との論理和
CASE "┘","└","┴" !終了
LET v1=OR(v1,vTBL(yy,xx))

FOR tmp=yy TO sav_yy !ここまでを同じにする
LET vTBL(tmp,xx)=v1
NEXT tmp
LET v1=0

CASE ELSE
END SELECT
NEXT yy

NEXT xx

!MAT PRINT vTBL !debug
END SUB

     └つづき 山中和義 2008/04/25 16:17:11 
      └つづき(DATA文) 山中和義 2008/04/25 16:18:46  (修正1回)

 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。