PLC pro komunikaci s MySQL

Slavomir Skopalik skopalik na elektlabs.cz
Úterý Březen 28 23:35:11 CEST 2017


Pouzivame vlastni implementaci (jak klienta, tak server pro simulaci 
PLC), jenz vznikala reverse engeneeringem + pak kontrola proti libnodave.

Libnodave v te dobe melo nekolik chyb, napriklad inicializaci socketu 
jsem si delali sami, jinak to nefungovalo pres localhost.

Dalsi inspirace zde:

http://www.pascalscada.com/how-install-pascalscada/

K nasemu reseni:

Komunikace mame reseny pres abstraktni tridu, jenz obsahuje obstrakni 
transakci.

Transakce pak obsahuje request a respons pakety.

Pakety mohou byt litle i big endian.

Ukazka kodu:

procedure TDML4CZ.ISOTCPMasterAfterOpen(Sender: TObject);
begin
   ISOTCPMaster.AddR(nodave.daveDB,DB31.DB,0,DB31.Count,0);
ISOTCPMaster.AddR(nodave.daveDB,31,296,8,31,StringOfChar(AnsiChar(#0),8)); 
// send decoilers info
ISOTCPMaster.AddR(nodave.daveDB,31,4,9,4,StringOfChar(AnsiChar(#0),9)); 
// send decoilers info
   ISOTCPMaster.AddR(nodave.daveDB,53,0,DB53.Count);
   ISOTCPMaster.AddR(nodave.daveDB,99,0,DB99.Count);
   ISOTCPMaster.AddR(nodave.daveDB,206,0,DB206.Count);
end;

a prace a daty:

procedure TDML4CZ.ISOTCPMasterReceivePacket(Sender: TObject; Packet: 
TDataPacket);
var pm:TPLCMode; p:TISOTCPPacket; sp:integer;
begin
   p:=Packet as TISOTCPPacket;
   if p.Write or (p.Tag<>0) then exit;
   case p.DB of
     31:DB31.Data:=Packet.Data;
...
       if DB99.AsDBX[23,0] then begin
         if DB53.AsDBX[46,0] then pm:=PLC_Automatic else pm:=PLC_Manual;
        end else
         pm:=PLC_UnderPumaControl;

Pokud jsou v PLC nejake komplexni struktury, je velmi vhodne si je 
zapouzdrit.


TDB31=class(TISOTCPPacket)
   private
...
   public
     constructor Create;override;
     property PLCItemNumber:integer read GetPLCItemNumber write 
SetPLCItemNumber;
     property SheetLength:integer read GetSheetLength write SetSheetLength;
     property CutBackLength:integer read GetCutBackLength write 
SetCutBackLength;
     property CutBackType:char read GetCutBackType write SetCutBackType;
     property NumberOfPannelInPLC:integer read GetNumberOfPannelInPLC;
     property FlagBuffer_emptyFULL:boolean read GetFlagBuffer_emptyFULL 
write SetFlagBuffer_emptyFULL;
     property OrderNo:Ansistring read GetOrderNo write SetOrderNo;
     property ActEncoderCalibration:double read GetActEncoderCalibration;
     property idRealcut:Integer read GetIdRealcut write SetIdRealcut;
   end;

Toho pak vyuzivame pri psani simulatoru PLC.

Slavek

Ing. Slavomir Skopalik
Executive Head
Elekt Labs s.r.o.
Collection and evaluation of data from machines and laboratories
by means of system MASA (http://www.elektlabs.cz/m2demo)
-----------------------------------------------------------------
Address:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
---------------------------------------------------------------
Mobile: +420 724 207 851
icq:199 118 333
skype:skopaliks
e-mail:skopalik na elektlabs.cz
http://www.elektlabs.cz

On 28.3.2017 19:49, Zdeněk wrote:
> Kombinace S7 a Delphi mne zajímá. Můžete dát odkaz, kde načerpat podrobnější
> info?
> Zdeněk
>
> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Slavomir
> Skopalik
> Sent: Tuesday, March 28, 2017 3:25 PM
> To: HW-news
> Subject: Re: PLC pro komunikaci s MySQL
>
> Vyhoda S7 Communication(libnodave, ale i jine, mame vlastni impelmentaci
> nativne v delphi) je v tom,
>
> ze nemusite nic mapovat.
>
> Adresujete uplne stejne jako je tomu v PLC, respektive, mame utilitku, jenz
> nam na zaklade awl souboru udela
>
> z kazdeho databloku v PLC tridu s properties.
>
> Duvody proc to delame jsou dva.
>
> 1. Rychlejsi vyvoj
>
> 2. Mene chyb
>
> Co se tyka rychlosti, tak jedna transakce probehne obvykle v rady ms, tj.
> klidne 100 transakci/s.
>
> Prakticky vzdy davame sleep 10-200 ms, podle potreby aplikace.
>
> Slavek
>
> Ing. Slavomir Skopalik
> Executive Head
> Elekt Labs s.r.o.
> Collection and evaluation of data from machines and laboratories by means of
> system MASA (http://www.elektlabs.cz/m2demo)
> -----------------------------------------------------------------
> Address:
> Elekt Labs s.r.o.
> Chaloupky 158
> 783 72 Velky Tynec
> Czech Republic
> ---------------------------------------------------------------
> Mobile: +420 724 207 851
> icq:199 118 333
> skype:skopaliks
> e-mail:skopalik na elektlabs.cz
> http://www.elektlabs.cz
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>




Další informace o konferenci Hw-list