Sběr dat ze strojů

Z Manta
Přejít na:navigace, hledání

Tabulky pro sběr dat ze strojů

TABMANTA_Intdata    

Column_name Type Length Prec Scale Nullable Popis
Id int 4 10   0   no Vnitřní identity – vyplňuje se automaticky
HwInputId int 4 10   0   no Vazba na ID z tabulky  TABMANTA_DeviceHardwareInput
SaveSQLDate datetime 8         no Datum založení na SQL
StartDate datetime 8         no Datum a čas zahájení události
FinishDate datetime 8         yes Datum a čas ukončení události
Value numeric 9 19   6   no Hodnota (pro cyklus vždy 1, pro ostatní hodnota z převodníku )
Status bit 1         no Status  - info pro další zpracování
IntervalTime numeric 9 19   6   no Čas sepnutí
OnTime numeric 9 19   6   no Čas náběhové hrany
OffTime numeric 9 19   6   no Čas sestupné hrany
CykleTime numeric 9 19   6   no Celkový čas cyklu
Uploaded bit 1         no Info za byl záznam zpracován do ERP
Complete bit 1         no Info zda je záznam kompletní a může se zpracovat do ERP
Author nvarchar 510         yes Autor záznamu   suser_sname()
Changed nvarchar 510         yes Autor změny záznamu suser_sname()
CreateDate datetime 8         no Datum vytvoření  -- nemusí se vyplňovat má default
ChangeDate datetime 8         yes Getdate() změny záznamu
Note nvarchar -1         yes Libovolná poznámka k záznamu

TABMANTA_DeviceHardwareInput

Column_name Type Length Prec Scale Nullable Popis
Id int 4 10   0   no Vnitřní identity – vyplňuje se automaticky
Name nvarchar 256         yes Libovolné  pojmenování vstupu
HwId int 4 10   0   no Vazba na ID z tabulky TABMANTA_DeviceHardware
InputNum int 4 10   0   no Číslo vstupu
WpId int 4 10   0   no Id pracoviště (ID z ViewMANTA_workplace)
Description nvarchar 510         yes Libovolný popis HW vstupu
Author nvarchar 510         yes Autor záznamu   suser_sname()
Changed nvarchar 510         yes Autor změny záznamu suser_sname()
CreateDate datetime 8         no Datum vytvoření -- nemusí se vyplňovat má default
ChangeDate datetime 8         yes Getdate() změny záznamu
Note nvarchar -1         yes Libovolná poznámka k záznamu

TABMANTA_DeviceHardware

Column_name Type Length Prec Scale Nullable Popis
Id int 4 10   0   no Vnitřní identity – vyplňuje se automaticky
Name nvarchar 200         no Jméno zařízení   (Např.  PLC1, PLC2 …….)
IpAdress nvarchar 60         yes IP adresa zařízení
Port int 4 10   0   yes Port na kterém komunikuje
Type nvarchar 510         yes Typ zařízení   (plc)
MacAdress nvarchar 400         yes Mac adresa zařízení
LoginName nvarchar 400         yes Přihlašovací jméno
Password nvarchar 400         yes Přihlašovací heslo
Author nvarchar 510         yes Autor záznamu   suser_sname()
Changed nvarchar 510         yes Autor změny záznamu suser_sname()
CreateDate datetime 8         no Datum vytvoření -- nemusí se vyplňovat má default
ChangeDate datetime 8         yes Getdate() změny záznamu
Note nvarchar -1         yes Libovolná poznámka k záznamu

Dále musí existovat funkce pro zpracování jednotlivých záznamů  z tabulky TABMANTA_Indata.

Funkce pro zpracování stavu

Jméno: dbo.FUMANTA_AC_Status_???     (??? – libovolný sufix např. dle pracoviště )

Vstup: @WPID – id pracoviště z ViewMANTA_Workplace, @autoIdleDelay - čas po který je tolerováno nekomunikace stroje, po uplynutí tohoto času by měl být nastaven prostoj

Výstup:  @status  bit   - stav pracoviště 1=pracuje, 0=nepracuje

Vzor:

create or alter function dbo.FUMANTA_AC_Status_HST(@WPID int,@autoIdleDelay int)

returns bit

AS

BEGIN

              DECLARE @Status bit

              set @autoIdleDelay=@autoIdleDelay*-1

               IF exists(               Select IND.ID from TABMANTA_Intdata IND

                             left outer join TABMANTA_DeviceHardwareInput DI on DI.ID=IND.HwInputId

                             where DI.WPID=@WPID and Ind.SaveSQLDate > DATEADD(ss,@autoIdleDelay, getdate())) -- existuje záznam,který je vyšší než teď-konstanta

                             SET @Status=1

                 else

                             SET @status=0

              return @status

END

Funkce pro zpracování  množství

Jméno :  dbo.FUMANTA_AC_Quantity_???

Vstup:  @WPID – id pracoviště z ViewMANTA_Workplace

Výstup:  @koeficient =koeficient pro vynásobení hodnoty value z tabulky TabMANTA_Outdata

Vzor :

create or alter function dbo.FUMANTA_AC_Quantity_HST(@WPID int)

returns numeric(19,6)

AS

BEGIN

              DECLARE @koeficient numeric(19,6)

              SET @koeficient=1.0000

              return @koeficient

END

Dále musí existovat procedura na zpracování vstupů, které se periodicky spouští SQL jobem. Procedura uloží vypočítané množství kusů do tabulky událostí terminálů


Vzor jobu:

create or alter procedure SPMANTA_processorSaveQuantity  @WPId int, @IDInt int, @value numeric(19,6),@Mesg nvarchar(max) OUTPUT

AS

DECLARE @Function nvarchar(max)=NULL,@return int=0,@koeficient numeric(19,6)=1,@IDOut int

DECLARE @SQL nvarchar(max)

SELECT @Function=FunctionQuantity from VIEWMANTA_WorkPlace where ID=@WPId

IF OBJECT_ID(@Function,'FN') IS NOT NULL

BEGIN

set @SQL='select @out=' +@Function + '(' + cast(@WPId as nvarchar(30)) + ')'

DECLARE @ParmDefinition nvarchar(255)

SET @ParmDefinition = '@Out numeric(19,6) OUTPUT';  

EXEC sp_executesql @SQL,@ParmDefinition,@out=@koeficient OUTPUT

Update TABMANTA_outdata set QuantityMachine=QuantityMachine+(@value*@koeficient),QuantityMachineLive=QuantityMachineLive+(@value*@koeficient)

where ID in (SELECT ID from TABMANTA_outdata where TerminalEvent=3 and CompleteRecord=0  and WorkplaceId=@WPId)

/*zápis do vazební tabulky TABMANTA_xInOut*/

INSERT INTO TABMANTA_xInOut([inDataId],[outDataId],[Value],[Coef]) values(@IDInt,@IDOut,@value,@koeficient)

set @return=1

set @Mesg='OK'

END

  ELSE

BEGIN

set @return=0

set @Mesg='Na pracovišti id='+cast(@WPId as nvarchar(30))+ ' není uvedena procedura pro zpracování'

END

RETURN @return