Автор |
Сообщение |
Сообщение создано: 18. 08. 2009 [20:28]
|
Unaie
Unai Ezta
Создатель темы
Зарегистрирован(а) с: 30.06.2009
Сообщения: 42
|
Severity: High
Affects: DAQ Templates
Versions: SVN
Description:
If in DAQ template you define registers type: OUTPUT LINK,
and LINK is set to PLC ModBus, when Oscada application is exiting (splash image before exit) it writes unknown values to PLC.
For example:
In DAQ Templates
----------------
Id Name Type Mode Attribute Access Value
R R Integer Output Full Access Link
Program: EMPTY
------------------------
In DAQ Logic Level
Parameter: ANY
Template: Previous
Parameters: R:MODBUS.ANY.ANY.T
-----------------
Then, When Oscada exits it writes to PLC, integer T is set to 1, erasing previous value in PLC.
It is tested also with REALs, it writes unknow values.
Test is done with ModBus, but perhaps this occurs with any other DAQ.
If necessary I could prepare a DB sample, but to test this it is needed a external PLC or Application, because it occurs when Oscada is exiting with a splash screen.
[Сообщение редактировалось 1 раз(а), в последний раз 18.08.2009 в 20:28.]
|
Сообщение создано: 18. 08. 2009 [22:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Unaie wrote:
If in DAQ template you define registers type: OUTPUT LINK,
and LINK is set to PLC ModBus, when Oscada application is exiting (splash image before exit) it writes unknown values to PLC
If this variable undefined then this correct. And by help OUTPUT LINK value allways will writed to ModBus.
Unaie wrote:
If necessary I could prepare a DB sample, but to test this it is needed a external PLC or Application, because it occurs when Oscada is exiting with a splash screen.
Send DB sample. External PLC do not need. For it can use self OpenSCADA.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 19. 08. 2009 [11:44]
|
Unaie
Unai Ezta
Создатель темы
Зарегистрирован(а) с: 30.06.2009
Сообщения: 42
|
roman wrote:
If this variable undefined then this correct. And by help OUTPUT LINK value allways will writed to ModBus.
is an OUTPUT LINK continuously written to PLC?
At frecuency 1000Hz same value again and again?
I attach a DB sample (pass 0000), see ModBus, LogicLevel and Templates.
There are two problems with this code.
1. Values are continuosly writen to PLC, and you cannot externally change it.
2. When Exiting, Oscada finally writes 1 to R1 and to R2 registers.
[Сообщение редактировалось 1 раз(а), в последний раз 19.08.2009 в 11:45.]
Вложенный файл
dbsample.zip (Тип файла: application/zip, Размер: 642.68 килобайт) — 4522 загрузок
|
Сообщение создано: 20. 08. 2009 [13:16]
|
Unaie
Unai Ezta
Создатель темы
Зарегистрирован(а) с: 30.06.2009
Сообщения: 42
|
More tests..
I have tried to use BLOCK BASED CALC instead of LOGIC LEVEL and TEMPLATES. I use the same JavaScript Code and I set links to ModBus in a Block.
Now OSCADA does not write values at exiting, it writes values at starting, curiously it reestablishes in PLC the old values from Oscada before last execution.
And, in any way, it is impossible to change externally values in PLC because OSCADA always reestablish the old values.
Then, at summary, if you use OUTPUT LINKS values not explicitly set are written to PLC:
---------------LOGIC LEVEL------------ BLOCK BASED CALC
STARTING---- NOTHING ----------------- Writes old values
AT EXIT------ Writes 1 to Integers ----- NOTHING
PROCESS ----( you cannot externaly change values in PLC. They are reestablished )
|
Сообщение создано: 20. 08. 2009 [13:43]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Unaie wrote:
PS: After a new Test... Really you can comment all javascript code.
Necessary and sufficient condition is R1,R2 declared as OUTPUT LINK and Logic Level Parameter Link to ModBus Enabled. Then old values are always reestablished.
With script all work fine:
if( R_old != R && R != EVAL_REAL ) Special.FLibSYS.floatSplitWord(R,R1,R2);
R_old = R = (R1==EVAL_INT || R2==EVAL_INT) ? EVAL_REAL : Special.FLibSYS.floatMergeWord(R1,R2);
P.S. I add writing to PLC only if value is new and not equal EVAL.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 20. 08. 2009 [19:00]
|
Unaie
Unai Ezta
Создатель темы
Зарегистрирован(а) с: 30.06.2009
Сообщения: 42
|
roman wrote:
P.S. I add writing to PLC only if value is new and not equal EVAL.
Great. Tested with last SVN and it is OK for me. Thank you.
Now I can externally change values and there are not writes on exit.
PS: Curiously, when I started my project with this new SVN I had lost all my recent javascript sources in VCA, they are old versions. I opened again with the old SVN and all my code is OK. (??). Then, manually I copied my javascript code to the opened project in new SVN. But I don't understand what happened. A locales problem again?
[Сообщение редактировалось 1 раз(а), в последний раз 20.08.2009 в 19:02.]
|
Сообщение создано: 21. 08. 2009 [09:32]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Unaie wrote:
PS: Curiously, when I started my project with this new SVN I had lost all my recent javascript sources in VCA, they are old versions. I opened again with the old SVN and all my code is OK. (??). Then, manually I copied my javascript code to the opened project in new SVN. But I don't understand what happened. A locales problem again?
You do not change new script perhaps. I have not this problem on multilingual DB.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 21. 08. 2009 [23:36]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
Unaie wrote:
PS: Curiously, when I started my project with this new SVN I had lost all my recent javascript sources in VCA, they are old versions. I opened again with the old SVN and all my code is OK. (??). Then, manually I copied my javascript code to the opened project in new SVN. But I don't understand what happened. A locales problem again?
It is real problem and it fixed now!
Learn, learn and learn better than work, work and work.
|