lib-tstcomm-3_3.mpam 1.94 KB
Newer Older
1
include("lib-list-1_10.mpam")
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

func{ id = "testar_comunicacao", name = "Testar Comunicao",
	description = [[Funo que itera sobre intncias de classes de pontos configurados e
		retorna lista de valores lidos/erros.

		A leitura  agrupada em blocos por classe.
		Se o parmetro 'Dimenso Mxima de Blocos' for definido, esses blocos
		so divididos em blocos menores.

		As leiutras so realizadas com intervalos de tempo definidos pelo parmetro 'Intervalo entre Blocos'.
	]],
	parameters = {
		{name = "Intervalo entre Blocos", type = "REAL"},
		{name = "Dimenso Mxima de Blocos", type = "INTEGER"},
	},
	results = {
		{name = "Valores Lidos", type = "STRING[]"},
	},
	code = [=[ function (intervalo, dmaxbloco)
		local vals = {}

		for classid, class in allclasses() do
			if classid:match("POINT") then
				local tags = {}
				for instid in instancesof(classid) do
					tags[#tags+1] = instid
				end

				local bloco = {}

				for i=1, #tags do
					bloco[#bloco+1] = tags[i]

					if i == #tags or #bloco == dmaxbloco then
						list_append(vals, calldiagram("TSTCOMM.ReadGroup", classid, bloco) )
						bloco = {}
						sleep(intervalo or 0)
					end
				end

			end
		end

		table.sort(vals)

		return vals
	end]=],
}

func{ id = "realizar_leitura_protegida", name = "Realizar Leitura Protegida",
	description = [[Retorna o valor obtido para um tag de ponto ou uma mensagem de erro.]],
	parameters = {
		{name = "Identificador de Classe", type = "STRING"},
		{name = "Identificador de Ponto", type = "STRING"},
	},
	results = {
		{name = "Sucesso na Leitura", type = "BOOLEAN"},
		{name = "Resultado da Leitura", type = "STRING"},
		{name = "Tipo do Resultado", type = "STRING"},
	},
	code = [=[ function (classid, ptid)
		local instance = getinstance(classid, ptid)
		local success, result = pcall(instance.read, instance)

		return success, tostring(result), success and type(result) or 'error'
	end]=],
}