pes01 SW ostatní 11. 4. 2023 16:37 7. 4. 2023 20:56

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

M.H. 6. 4. 2023 12:53

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.

 

pes01 7. 4. 2023 20:56

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ý.