Garage Door 2 - S7.Net ekleyelim
using Nakov.TurtleGraphics;
using S7.Net;
namespace garageDoor
{
public partial class MainForm : Form
{
Plc _S71200 = new Plc(CpuType.S71200, "127.0.0.1", 0, 1);
float y_pos=150; // min 10, max 150
bool Y; // true olursa aç
bool Y2; // true olursa kapat
bool Sensor;
bool Kumanda;
bool Lamba;
public MainForm()
{
InitializeComponent();
_S71200.Open();
}
void Timer1Tick(object sender, EventArgs e)
{
if(_S71200.IsConnected) {
ushort stepNo = (ushort)_S71200.Read("MW50"); // Adım numarası
lblAdim.Text = "Adım: " + stepNo;
Y = (bool)_S71200.Read("Q0.0"); // açma motoru
Y2 = (bool)_S71200.Read("Q0.1"); // kapatma motoru
Lamba = (bool)_S71200.Read("Q0.2");
if(Lamba) txbLamba.BackColor=Color.Yellow; else txbLamba.BackColor=Color.Black;
if(Sensor) btnSensor.BackColor=Color.LightGreen; else btnSensor.BackColor=Color.LightPink;
if(Kumanda) btnKumanda.BackColor=Color.LightGreen; else btnKumanda.BackColor=Color.LightPink;
// KAS : Kapı açık sensörü
if(y_pos==10) {
txbKapiAcik.BackColor=Color.LightGreen;
_S71200.Write("I0.2",1);}
else {
txbKapiAcik.BackColor=Color.White;
_S71200.Write("I0.2",0);}
// KKS : Kapı kapalı sensörü
if(y_pos==150) {
txbKapiKapali.BackColor=Color.LightGreen;
_S71200.Write("I0.3",1);}
else {
txbKapiKapali.BackColor=Color.White;
_S71200.Write("I0.3",0);}
lblYpos.Text="Kapı poz : "+y_pos;
if(Y && y_pos>10) y_pos -= 5; //animasyon hızına göre bu değerleri oynayabilirsin ama
if(Y2 && y_pos<150) y_pos += 5; //kapı açık/kapalı sensörlerini y_pos a göre ayarlaman gerekir
Turtle.Init(panel1);
Turtle.ShowTurtle=false;
// Kapı nın dış hatlarını yani dikdörtgen çizelim
Turtle.PenColor = Color.Green;
Turtle.PenSize=7;
Turtle.PenUp();
Turtle.MoveTo(-105,65); //X te sola Y de yukarı
Turtle.PenDown();
Turtle.Rotate(90);
Turtle.Forward(210);
Turtle.Rotate(90);
Turtle.Forward(155);
Turtle.Rotate(90);
Turtle.Forward(210);
Turtle.Rotate(90);
Turtle.Forward(155);
Turtle.Rotate(90);
// Hareketli tente çizelim
Turtle.PenUp();
Turtle.MoveTo(-100,57);
Turtle.PenDown();
Turtle.PenColor = Color.Gray;
Turtle.PenSize=10;
for (int i = 10; i <= y_pos; i = i + 10) {
Turtle.Forward(200);
Turtle.PenUp();
Turtle.MoveTo(-100,57-i);
Turtle.PenDown();
}
// Sensör çizelim
Turtle.PenUp();
Turtle.MoveTo(-130,-50);
Turtle.PenDown();
Turtle.PenColor = Color.Black;
Turtle.PenSize=10;
Turtle.Forward(5);
// Sensör bişey gördü
if(Sensor) {
Turtle.PenColor = Color.Red;
Turtle.PenSize=3;
Turtle.Forward(230);
}
}
}
// AS : Araç Sensörü
void BtnSensorClick(object sender, EventArgs e)
{
if (Sensor) {
Sensor=false;
_S71200.Write("I0.0",0);}
else {
Sensor=true;
_S71200.Write("I0.0",1);
}
}
void BtnKumandaMouseDown(object sender, MouseEventArgs e)
{
Kumanda=true;
_S71200.Write("I0.1",1);
}
void BtnKumandaMouseUp(object sender, MouseEventArgs e)
{
Kumanda=false;
_S71200.Write("I0.1",0);
}
void MainFormFormClosed(object sender, FormClosedEventArgs e)
{
_S71200.Close();
}
}
}
Yorumlar
Yorum Gönder