Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SOIL2OPC UA Translator
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
WZL-IQS-Public
Sensor Interfacing Language (SOIL)
SOIL2OPC UA Translator
Commits
5937270b
Commit
5937270b
authored
2 years ago
by
Susanna Weber
Browse files
Options
Downloads
Patches
Plain Diff
Stream added and robots init + events finished
parent
1055ec21
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
robot.py
+39
-13
39 additions, 13 deletions
robot.py
with
39 additions
and
13 deletions
robot.py
+
39
−
13
View file @
5937270b
import
logging
import
asyncio
import
numpy
from
asyncua
import
ua
,
Server
from
asyncua.common.methods
import
uamethod
...
...
@@ -86,7 +87,7 @@ async def main():
#tcp als variable mit properties
vartype
=
await
server
.
nodes
.
base_data_type
.
add_data_type
(
idx
,
"
Measurement
"
)
paratype
=
await
server
.
nodes
.
base_data_type
.
add_data_type
(
idx
,
"
Parameter
"
)
#tcpvar = await
myobj
.add_variable(idx, "TCP VAR" , [0,0,0] , datatype = vartype.nodeid)
#tcpvar = await .add_variable(idx, "TCP VAR" , [0,0,0] , datatype = vartype.nodeid)
#variable mit entsprechenden properties
#measurements evtl varianttype vom variabletype und datatype measurement
...
...
@@ -131,41 +132,66 @@ async def main():
await
openvar
.
set_modelling_rule
(
True
)
grip_desc
=
await
openvar
.
add_property
(
idx
,
"
Description
"
,
"
Flag to specify if something is open.
"
)
await
grip_desc
.
set_modelling_rule
(
True
)
robot
=
await
server
.
nodes
.
objects
.
add_object
(
idx
,
"
Robot
"
,
myobjtype
)
m
y
ob
j
=
await
server
.
nodes
.
objects
.
add_object
(
idx
,
"
Robot
"
,
myobjtype
)
mob
ilerobot
=
await
server
.
nodes
.
objects
.
add_object
(
idx
,
"
Mobile
Robot
"
,
myobjtype
)
#getting node ids of battery and position
robotposname
=
"
2:
"
+
positionobject
.
name
positionrobot
=
await
m
y
ob
j
.
get_child
([
robotposname
])
positionrobot
=
await
mob
ilerobot
.
get_child
([
robotposname
])
batteryvarname
=
"
2:
"
+
batteryobject
.
name
batterymeas
=
await
myobj
.
get_child
([
batteryvarname
])
batterymeas
=
await
mobilerobot
.
get_child
([
batteryvarname
])
tcpvarname
=
"
2:
"
+
tcpobject
.
name
tcpvarmeas
=
await
mobilerobot
.
get_child
([
tcpvarname
])
#adding function goTo to robot
goTofunc
=
await
m
y
ob
j
.
add_method
(
idx
,
"
goToset
"
,
goTo
,
[
vartype
,
positionrobot
])
goTofunc
=
await
mob
ilerobot
.
add_method
(
idx
,
"
goToset
"
,
goTo
,
[
vartype
,
positionrobot
])
#batterylow warning event
batterywarning
=
await
server
.
create_custom_event_type
(
idx
,
"
BatteryLowWarning
"
,
ua
.
ObjectIds
.
SystemEventType
)
batterywarninggen
=
await
server
.
get_event_generator
(
batterywarning
,
myobj
)
batterywarninggen
=
await
server
.
get_event_generator
(
batterywarning
,
)
#batterylow error event
batteryerror
=
await
server
.
create_custom_event_type
(
idx
,
"
BatteryLowError
"
,
ua
.
ObjectIds
.
SystemEventType
)
batteryerrorgen
=
await
server
.
get_event_generator
(
batteryerror
,
myobj
)
batteryerrorgen
=
await
server
.
get_event_generator
(
batteryerror
,
mobilerobot
)
batterywarninggen
.
event
.
Severity
=
800
batteryerrorgen
.
event
.
Severity
=
1000
#streamevents
tcpstream
=
await
server
.
create_custom_event_type
(
idx
,
"
Streaming
"
,
ua
.
ObjectIds
.
BaseEventType
,
[(
"
tcpstream
"
,
ua
.
VariantType
.
Float
)])
tcpstreamgenrob
=
await
server
.
get_event_generator
(
tcpstream
,
robot
)
tcpstreamgenrob
.
tcpstream
=
await
tcpvarmeas
.
get_value
()
tcpstreamgenmobrob
=
await
server
.
get_event_generator
(
tcpstream
,
mobilerobot
)
tcpstreamgenmobrob
.
tcpstream
=
await
tcpvarmeas
.
get_value
()
#server
async
with
server
:
print
(
"
Server läuft!
"
)
time
=
0
while
True
:
#checking triggering both events
tcppos
=
await
tcpvarmeas
.
get_value
()
if
time
%
10
==
0
:
await
tcpstreamgenrob
.
trigger
(
message
=
"
Robot updatet value [
"
+
str
(
tcppos
[
0
])
+
"
,
"
+
str
(
tcppos
[
1
])
+
"
,
"
+
str
(
tcppos
[
2
])
+
"
]
"
)
await
tcpstreamgenmobrob
.
trigger
(
message
=
"
MobileRobot updatet value [
"
+
str
(
tcppos
[
0
])
+
"
,
"
+
str
(
tcppos
[
1
])
+
"
,
"
+
str
(
tcppos
[
2
])
+
"
]
"
)
batteryload
=
await
batterymeas
.
get_value
()
batterywarninggen
.
event
.
Severity
=
800
batteryerrorgen
.
event
.
Severity
=
1000
#await batterymeas.set_value(19)
if
20
>
batteryload
>=
10
:
await
batterywarning
.
trigger
(
"
Battery level is below 20%. Load shortly.
"
)
await
batterywarning
gen
.
trigger
(
message
=
"
Battery level is below 20%. Load shortly.
"
)
if
batteryload
<
10
:
await
batteryerror
.
trigger
(
"
Battery level is below 10%. Please load the battery immediately.
"
)
await
batteryerror
gen
.
trigger
(
message
=
"
Battery level is below 10%. Please load the battery immediately.
"
)
await
asyncio
.
sleep
(
1
)
time
+=
1
batterysave
=
batteryload
-
1
await
batterymeas
.
set_value
(
batterysave
)
tcppossave
=
tcppos
[
0
]
+
1
await
tcpvarmeas
.
set_value
([
tcppossave
,
0.0
,
0.0
])
if
__name__
==
'
__main__
'
:
asyncio
.
run
(
main
())
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment