Forum Replies Created
-
AuthorPosts
-
oley
ParticipantHi,
thank you, it works like a charm, but…
Every upload of the configuration rewrite my PlgMap.xml file.
What to do to prevent this?oley
ParticipantAll right, thank you!
oley
ParticipantThank you but I do not really understand that.
If I will read multiple strings from DB, should they have fixed length?
Is this length in characters?
If I have only one string from another table, do I have to create another “dummy” channel to set the length of the previous one?
@JurasskPark I will take a look at this module.oley
ParticipantThank you.
Yes, the events are sequentially arranged in the buffer.
The new ones are written at the top of the buffer.
I have to read as many, as value of 0x0501 register, which stores the count of the events written to the buffer since last read.oley
ParticipantThank you. To clarify: you mean to define 2 device pollings, first for data and second for this log events. Second one should poll only for command?
oley
ParticipantSince I am familiar with the .net framework and the C# programming language, I would most like to program the handling of these events as a driver.
From such a driver, would I be able to read any ModBus device registers and generate SCADA events based on them?
I understand that I need to create the device logic by creating a class inherited from DeviceLogic, access the data via class inherited from DeviceData and creating events using a class derived from DeviceEvent.
The question is, is there a minimal example of a ModBus device driver available that I could follow?oley
ParticipantNext registers contains events from the previous reading.
0x0006 will be the 0x0000 from the previous reading of 0x0501 because 5 new events have been created in the meantime and have been placed at the top of the list.
Next ones are historical data up to the value of 0x0502 (max 1024).
After restart of the device the list is empty and both 0x0501 and 0x0502 contains 0. After first event created both 0x0501 and 0x0502 contains 1, but if we read 0x0501 or 0x0502 and no event occurred 0x0501 is 0 and 0x0502 is 1.oley
ParticipantThis is a bit complicated, so I’ll try to explain again.
I read 0x0501 and can get:
– 0, that is, no new event has occurred since the last reading of 0x0501
– a value greater than 0, such as 5, and then I have to read addresses 0x1000 to 0x1005 to get 5 eventsoley
ParticipantHi,
it would be good to generate SCADA events based on those events, so I have it in standard event list.
oley
ParticipantHi,
I have got some information from the manufacturer of the device.
Address 0x0501 contains count of the new events since last reading.
Address 0x0502 contains total count of the events, max 1024.Address range 0x1000-0x13FF contains events from the most recent and it is locked until the register 0x0501 or 0x0502 is read again.
What if I create group of channels from 0x1000 to 0x13FF and every channel will have formula:
channel 0x1000 -> if (channel0x0501 > 0 and channel0x0502 > 0)
channel 0x1001 -> if (channel0x0501 > 1 and channel0x0502 > 1)and so on?
If I activate the events for each channel, so they will appear in the event log.
Is this possible?Best regards
oley
ParticipantHi,
thank you. The custom enumeration works properly.
Best regards
oley
ParticipantI am in contact with the manufacturer of the device, because the documentation does not specify this.
Is the code of this S2000-PP driver available for review?oley
ParticipantI’m familiar with .NET so driver that decomposes events is a good option.
Should it be a class derived from DevModbusLogic?oley
ParticipantDuring SCADA running, I can polling the counter for new events (separate register 0x0500) and read as many as occurred.
After a restart, I would have to read all the events that I did not save in the database to archive the full history.oley
ParticipantI’m not sure if I can make it with Automatic Control Module.
This device has a register range for events, which is a circular buffer.One event is written in 8 registers:
0 Event code
1 Value: Lo(Int1), Hi(Int2)
2,3 Value float
4 Lo(month), Hi(end of year)
5 Lo(hour), Hi(day)
6 Lo(second), Hi(minute)
7 millisecondsThe last event is under 0x1000, the pass under 0x1008, and so on.
I would like to save all events in the database and present them in a view already from the database. I think this is the easiest way. The complicated part is reading from the device and storing them in the database.
-
AuthorPosts