Dobrý den,
mám Foxtrot v regulaci TČ Regulus a přes SW PLCComS si z něho vyčítám hodnoty do domácí automatizace. Proměnné typu array (např. CIDLA[5].KOREKCE) se objeví v seznamu proměnných, ale nedávají žádné hodnoty. Jsou nadefinované jako public. Je možné nějak načítat hodnoty těchto proměnných nebo bude nutné udělat úpravu programu ve Foxtrotu a požadovaná data uložit do standardních proměnných? Standardní proměnné fungují bez problémů (i obousměrně). V případě array mi jde jen o čtení.
Děkuji PS
Odpovědi 2
Dobrý den,
Proměnné typu ARRAY nemají žádná omezení. PLCComS nerozlisuje mezi polem a proměnnou, protože prvky pole se exportuji jako samostatné proměnné. Tedy CIDLA[5].KOREKCE je jedna proměnná. Pokud prvky pole vidíte v seznamu příkazu LIST:, tak by s nimi mělo jít pracovat. To znamená, mělo by fungovat vyčtení hodnoty příkazem GET: a nastavení příkazem SET:. V případě že proměnné povolíte příkazem EN:, pak by měli fungovat i změny hodnot proměnných reportované jako DIFF:.
Zkoušeno na příkladu:
TYPE
tstr : struct
a : ARRAY [0..1] OF UDINT;
x : UDINT;
end_struct;
END_TYPE
VAR_GLOBAL
testA {PUBLIC} : ARRAY [0..9] OF tstr;
END_VAR
PROGRAM prgMain
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
i : UDINT := 0;
END_VAR
VAR_TEMP
END_VAR
IF System_S.R_EDGE_1SEC THEN
testA[5].x := i;
i := i + 1;
END_IF;
END_PROGRAM
PLCComS:
list:
LIST:TESTA[0].A[0],UDINT*
LIST:TESTA[0].A[1],UDINT*
LIST:TESTA[0].X,UDINT*
LIST:TESTA[1].A[0],UDINT*
LIST:TESTA[1].A[1],UDINT*
LIST:TESTA[1].X,UDINT*
LIST:TESTA[2].A[0],UDINT*
LIST:TESTA[2].A[1],UDINT*
LIST:TESTA[2].X,UDINT*
LIST:TESTA[3].A[0],UDINT*
LIST:TESTA[3].A[1],UDINT*
LIST:TESTA[3].X,UDINT*
LIST:TESTA[4].A[0],UDINT*
LIST:TESTA[4].A[1],UDINT*
LIST:TESTA[4].X,UDINT*
LIST:TESTA[5].A[0],UDINT*
LIST:TESTA[5].A[1],UDINT*
LIST:TESTA[5].X,UDINT*
LIST:TESTA[6].A[0],UDINT*
LIST:TESTA[6].A[1],UDINT*
LIST:TESTA[6].X,UDINT*
LIST:TESTA[7].A[0],UDINT*
LIST:TESTA[7].A[1],UDINT*
LIST:TESTA[7].X,UDINT*
LIST:TESTA[8].A[0],UDINT*
LIST:TESTA[8].A[1],UDINT*
LIST:TESTA[8].X,UDINT*
LIST:TESTA[9].A[0],UDINT*
LIST:TESTA[9].A[1],UDINT*
LIST:TESTA[9].X,UDINT*
LIST:__PF_CRC,DWORD
LIST:__PLC_RUN,BOOL
LIST:
get:TESTA[5].X
GET:TESTA[5].X,109
get:TESTA[5].X
GET:TESTA[5].X,112
en:TESTA[5].X
DIFF:TESTA[5].X,148
DIFF:TESTA[5].X,149
DIFF:TESTA[5].X,150
DIFF:TESTA[5].X,151
DIFF:TESTA[5].X,152
DIFF:TESTA[5].X,153
DIFF:TESTA[5].X,154
DIFF:TESTA[5].X,155
getinfo:
GETINFO:VERSION,Ver 6.0 Jun 24 2022 17:05:01
GETINFO:VERSION_EPSNET,Ver 3.5 Jun 24 2022 17:04:59
GETINFO:VERSION_INI,Ver 3.2 Jun 24 2022 17:05:06
GETINFO:VERSION_PLC,CP2080I B 2.7 2.3
GETINFO:IPADDR,127.0.0.1
GETINFO:EPSADDR,1
GETINFO:EPSPORT,61682
GETINFO:PUBFILE,2/32 [FIXED_Foxtrot.pub,../TecoSoft/DATA_PLC/PLC_0/ROOT/Empty.pub]
GETINFO:NETWORK,1/128 [192.168.134.6 2023-04-06 11:11:39]
GETINFO:
S pozdravem Martin Hošek.
Dobrý den,
děkuji za odpověď, našel jsem chybu až v návazném systému, který převádí komunikaci do MQTT.
S pozdravem, PS
Tento dotaz je vyřešený.