新しく発言する  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回)
Re: ラダー図からのシミュレーション  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/04/25 16:14:55 ** この記事は2回修正されてます
つづき



LET h=5 !行数
LET w=5 !列数 ※4接点+1コイル
!SET bitmap SIZE 500,500
SET WINDOW 0,w,0,h !表示領域 ※正方形

SET TEXT JUSTIFY "center","bottom"

DIM cTBL$(h,w),nTBL(h,w) !機器の配置位置

DIM vTMR(0 TO N) !タイマの設定値
MAT vTMR=ZER
DIM vCNT(0 TO N) !カウンタの設定値
MAT vCNT=ZER

DIM vTBL(h,w) !ラダーロジックのテーブルの値
MAT vTBL=ZER

DO
LET CurTime=TIME !現在の時刻

mouse poll mx,my,left,right !マウスの情報を得る

IF CurTime-oldtime>0.1 THEN !100msごとに ※ほぼ実時間
LET xx=INT(mx)+1 !該当する格子位置を計算する
LET yy=INT(my)+1 !※ドラッグして格子から外れないこと

IF xx<1 OR xx>w OR yy<1 OR yy>h THEN
ELSE !範囲内なら
LET tt$=UCASE$(cTBL$(yy,xx)) !機器を得る
IF tt$="SA" OR tt$="SB" THEN LET X(nTBL(yy,xx))=left !スイッチなら、左ボタンの状態に応じる

CALL ladder !ラダーロジックの計算
!!!PRINT S(0);S(1);Y(0); T(0);T(1);Y(2) !タイムチャート

SET DRAW mode hidden !ちらつき防止の開始
CLEAR
DRAW grid !目盛
CALL ladder_display !ラダー図
SET DRAW mode explicit !ちらつき防止の終了

LET oldtime=CurTime
END IF
END IF

LOOP UNTIL right=1 !右ボタンが押されるまで



FUNCTION xPrev(x,y) !横方向の計算
IF x>1 THEN !2列目以降なら
LET xPrev=vTBL(y,x-1) !1つ前の値
ELSE !1列目なら
LET xPrev=1 !母線
END IF
END FUNCTION

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

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