Skip to content

Commit b232f88

Browse files
authored
Merge pull request #20 from jwszolek/network-component
code improvements added
2 parents 117adb0 + 32d160e commit b232f88

File tree

10 files changed

+94
-103
lines changed

10 files changed

+94
-103
lines changed

src/main/groovy/dsl/engine/GraphProducer.groovy

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,32 @@ class GraphProducer {
4949
}
5050

5151

52+
def parseSimObject(def input) {
53+
54+
def simItems = [:]
55+
56+
input.catalog.each { k, v ->
57+
if (v.toString().contains("'type':'action'")) {
58+
59+
def rawAdapter = v.toString().replace("[", "{").replace("]", "}").replace("\'", "\"")
60+
def valueMap = new JsonSlurper().parseText(rawAdapter)
61+
62+
def simTime = ""
63+
valueMap.each { ak, av ->
64+
if (ak.contains("stop")) simTime = av
65+
}
66+
67+
if(!simTime.isEmpty()){
68+
simItems.put("simTime",simTime)
69+
}
70+
}
71+
}
72+
return simItems
73+
}
74+
75+
76+
77+
5278
def formatInput(def input) {
5379

5480
//define central node

src/main/groovy/dsl/engine/SimDriver.groovy

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,20 @@ class SimDriver {
2525
NetworkModel model = new NetworkModel(null,"SMOL Simulation Engine",true,true, varList)
2626
Experiment exp = new Experiment("SMOLSimulationExperiment", new SingleUnitTimeFormatter(referenceUnit, epsilon,6,false))
2727

28-
model.connectToExperiment(exp)
29-
exp.stop(new TimeInstant(10000, TimeUnit.MILLISECONDS));
30-
28+
def simObject = (Map<String,String>)new GraphProducer().parseSimObject(properties)
29+
def simTime = Double.parseDouble(simObject.getOrDefault("simTime",""))
3130

32-
exp.tracePeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
33-
exp.debugPeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
31+
model.connectToExperiment(exp)
3432

33+
if(simTime != 0) {
34+
exp.stop(new TimeInstant(simTime, TimeUnit.MILLISECONDS));
35+
exp.tracePeriod(new TimeInstant(0), new TimeInstant(simTime, TimeUnit.MILLISECONDS));
36+
exp.debugPeriod(new TimeInstant(0), new TimeInstant(simTime, TimeUnit.MILLISECONDS));
37+
}else{
38+
exp.stop(new TimeInstant(1000, TimeUnit.MILLISECONDS));
39+
exp.tracePeriod(new TimeInstant(0), new TimeInstant(1000, TimeUnit.MILLISECONDS));
40+
exp.debugPeriod(new TimeInstant(0), new TimeInstant(1000, TimeUnit.MILLISECONDS));
41+
}
3542

3643
LogsWritrer lw = new LogsWritrer()
3744
exp.register(lw)
@@ -40,10 +47,8 @@ class SimDriver {
4047
exp.setShowProgressBarAutoclose(true)
4148
exp.setShowProgressBar(true)
4249

43-
4450
exp.start()
4551
exp.report()
46-
4752
exp.finish()
4853
}
4954
}

src/main/java/com/sim/network/NetworkModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ public void doInitialSchedules() {
162162
//TODO: it needs to be more genetic - we should support different types, not only RS232Adapter
163163
if(!converterInfo.isEmpty()){
164164
RS232MessageGenerator rs232MessageGenerator = new RS232MessageGenerator(this, name, true,
165-
converterInfo.values().stream().findFirst().get());
165+
converterInfo.values().stream().findFirst().get(),sensorObj.destAddress, sensorObj.freq);
166166
rs232MessageGenerator.schedule(new TimeSpan(0));
167167
}
168168
}

src/main/java/com/sim/network/Runner.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ public static void main(String[] args) throws IOException {
2525

2626
model.connectToExperiment(exp);
2727
exp.setShowProgressBar(false);
28-
exp.stop(new TimeInstant(10000, TimeUnit.MILLISECONDS));
28+
exp.stop(new TimeInstant(1000, TimeUnit.MILLISECONDS));
2929

3030

31-
exp.tracePeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
32-
exp.debugPeriod(new TimeInstant(0), new TimeInstant(10000,TimeUnit.MILLISECONDS));
31+
exp.tracePeriod(new TimeInstant(0), new TimeInstant(1000,TimeUnit.MILLISECONDS));
32+
exp.debugPeriod(new TimeInstant(0), new TimeInstant(1000,TimeUnit.MILLISECONDS));
3333

3434
LogsWritrer lw = new LogsWritrer();
3535
//

src/main/java/com/sim/network/rs232/RS232Adapter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import desmoj.core.simulator.Queue;
77
import desmoj.core.simulator.TimeSpan;
88
import main.java.com.sim.network.EthAdapter;
9-
import main.java.com.sim.network.EthFrame;
109
import main.java.com.sim.network.TCPMessage;
1110

1211
import java.util.concurrent.TimeUnit;
@@ -30,9 +29,13 @@ public void eventRoutine() throws SuspendExecution {
3029
if(!inRS232AdapterQueue.isEmpty()){
3130
TCPMessage msg = inRS232AdapterQueue.first();
3231
inRS232AdapterQueue.remove(msg);
33-
ethAdapter.outMsgQueue.insert(msg);
32+
getEthAdapter().outMsgQueue.insert(msg);
3433
}
3534

3635
schedule(new TimeSpan(1, TimeUnit.MICROSECONDS));
3736
}
37+
38+
public EthAdapter getEthAdapter() {
39+
return ethAdapter;
40+
}
3841
}

src/main/java/com/sim/network/rs232/RS232ConverterEvent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ public void eventRoutine(RS232Message rs232Message) throws SuspendExecution {
2323
this.receivedMsg = rs232Message;
2424

2525
TCPMessage tcpMessage = new TCPMessage(model, "RS232 To TCP", true);
26-
// tcpMessage.setDstAddress();
27-
// tcpMessage.setDstAddress();
26+
tcpMessage.setDstAddress(rs232Message.getTcpDstAddress());
27+
tcpMessage.setDstAddress(rs232Adapter.getEthAdapter().getAdapterAddress());
2828
if(this.rs232Adapter.inRS232AdapterQueue != null) {
2929
this.rs232Adapter.inRS232AdapterQueue.insert(tcpMessage);
3030
}

src/main/java/com/sim/network/rs232/RS232Message.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,18 @@
55

66
public class RS232Message extends Entity {
77

8+
private String tcpDstAddress;
9+
10+
811
public RS232Message(Model owner, String name, boolean showInTrace) {
912
super(owner, name, showInTrace);
1013
}
14+
15+
public String getTcpDstAddress() {
16+
return tcpDstAddress;
17+
}
18+
19+
public void setTcpDstAddress(String tcpDstAddress) {
20+
this.tcpDstAddress = tcpDstAddress;
21+
}
1122
}

src/main/java/com/sim/network/rs232/RS232MessageGenerator.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,30 @@
1111
public class RS232MessageGenerator extends ExternalEvent {
1212

1313
private RS232Adapter rs232Adapter;
14+
private String destAddress;
15+
private double scheduleValue;
1416

15-
public RS232MessageGenerator(Model owner, String name, boolean showInTrace, RS232Adapter rsConverter) {
17+
18+
public RS232MessageGenerator(Model owner, String name, boolean showInTrace, RS232Adapter rsConverter, String destAddress, double scheduleValue) {
1619
super(owner, name, showInTrace);
1720
this.rs232Adapter = rsConverter;
21+
this.rs232Adapter = rsConverter;
22+
this.destAddress = destAddress;
23+
this.scheduleValue = scheduleValue;
1824
}
1925

2026
@Override
2127
public void eventRoutine() throws SuspendExecution {
2228
NetworkModel model = (NetworkModel)getModel();
2329
RS232Message msg = new RS232Message(model, "RS232 Message", true);
30+
msg.setTcpDstAddress(destAddress);
2431
sendTraceNote("RS232 Message Created ");
2532

33+
2634
RS232ConverterEvent converter = new RS232ConverterEvent(model, "RS232 Converter Event", true, this.rs232Adapter);
2735
converter.schedule(msg, new TimeSpan(10, TimeUnit.MICROSECONDS));
2836

2937

30-
schedule(new TimeSpan(100, TimeUnit.MILLISECONDS));
38+
schedule(new TimeSpan(this.scheduleValue, TimeUnit.MILLISECONDS));
3139
}
3240
}

src/main/resources/knx-schema2.smol

Lines changed: 19 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,6 @@ tn "eth3", {
1212
}
1313

1414

15-
san "temp-sensor-1", {
16-
connect "eth1"
17-
destAddress "2"
18-
freq "50"
19-
}
20-
2115
san "temp-sensor-2", {
2216
connect "eth3"
2317
destAddress "2"
@@ -38,105 +32,48 @@ san "temp-sensor-4", {
3832
}
3933

4034

41-
/*expander "rs485", {
35+
expander "rs485", {
4236
connect "eth1"
4337
}
4438

45-
expander "rs485-2", {
46-
connect "eth3"
47-
}
4839

49-
50-
san "temp-sensor-1", {
40+
san "temp-sensor-rs485-1", {
5141
connect "rs485"
5242
destAddress "2"
43+
freq "55"
5344
}
5445

55-
san "temp-sensor-2", {
46+
san "temp-sensor-rs485-2", {
5647
connect "rs485"
5748
destAddress "2"
49+
freq "56"
5850
}
5951

60-
san "temp-sensor-3", {
61-
connect "rs485-2"
62-
destAddress "2"
63-
}*/
64-
65-
/*san "temp-sensor-4", {
66-
connect "rs485-2"
67-
destAddress "2"
68-
}*/
69-
70-
71-
action "draw", {
72-
fullmap "true"
73-
}
74-
75-
76-
action "sim", {
77-
stop "1s"
78-
}
79-
80-
81-
82-
83-
84-
85-
86-
87-
88-
89-
90-
91-
92-
/*
93-
adapter "eth1", {
94-
ip "1"
95-
}
96-
97-
adapter "eth2", {
98-
ip "2"
99-
}
100-
101-
102-
converter "rs485", {
103-
connect "eth1"
104-
}
105-
106-
converter "rs485-2", {
107-
connect "eth2"
108-
}
109-
110-
111-
sensor "temperature1", {
52+
san "temp-sensor-rs485-3", {
11253
connect "rs485"
54+
destAddress "2"
55+
freq "57"
11356
}
11457

115-
sensor "temperature2", {
58+
san "temp-sensor-rs485-4", {
11659
connect "rs485"
60+
destAddress "2"
61+
freq "58"
11762
}
11863

119-
sensor "temperature3", {
120-
connect "rs485-2"
121-
}
122-
123-
sensor "humidity1", {
64+
san "temp-sensor-rs485-5", {
12465
connect "rs485"
66+
destAddress "2"
67+
freq "59"
12568
}
12669

127-
sensor "humidity2", {
128-
connect "rs485"
129-
}
13070

131-
sensor "alarm-module", {
132-
connect "rs485-2"
71+
action "draw", {
72+
fullmap "true"
13373
}
13474

135-
sensor "hvac-control-module", {
136-
connect "rs485-2"
75+
// stop after 1 sek
76+
action "sim", {
77+
stop "20000"
13778
}
13879

139-
sensor "dashboard", {
140-
connect "rs485"
141-
} */
142-

src/main/resources/network.smol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1+
adapter "Server", {
2+
ip "2"
3+
4+
}
5+
16
adapter "eth1", {
27
ip "1"
38
generator_connected "true"
49
dst "Server"
510
}
611

7-
adapter "Server", {
8-
ip "2"
9-
}
10-
1112
converter "rs485", {
1213
dst "Server"
1314
}

0 commit comments

Comments
 (0)