Sběr dat ze strojů
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