diff --git a/example/plc-state.xml b/example/plc-state.xml new file mode 100644 index 0000000..d05a2c7 --- /dev/null +++ b/example/plc-state.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example/strolch-plc-example.csv b/example/strolch-plc-example.csv index 35767e5..70d6445 100644 --- a/example/strolch-plc-example.csv +++ b/example/strolch-plc-example.csv @@ -1,11 +1,11 @@ Description,Type,SubType,Device,Pin,Resource,Action1,Action2,Connection,DeviceId Material Flow,Group,,,,,,,,MaterialFlow -Conveyor 1,Input,PCF8574,1,1,Conveyor01,Occupied,,i2cInput.dev01 -Conveyor 2,Input,PCF8574,1,2,Conveyor02,Occupied,,i2cInput.dev01 -Conveyor 3,Input,PCF8574,1,3,Conveyor03,Occupied,,i2cInput.dev01 -Conveyor 4,Input,PCF8574,1,4,Conveyor04,Occupied,,i2cInput.dev01 -Conveyor 1,Output,PCF8574,1,1,Conveyor01,MotorOn,MotorOff,i2cOutput.dev01 -Conveyor 2,Output,PCF8574,1,2,Conveyor02,MotorOn,MotorOff,i2cOutput.dev01 -Conveyor 3,Output,PCF8574,1,3,Conveyor03,MotorOn,MotorOff,i2cOutput.dev01 -Conveyor 4,Output,PCF8574,1,4,Conveyor04,MotorOn,MotorOff,i2cOutput.dev01 -DataLogicScanner,DataLogicScanner,,,,Conveyor03,,,dataLogicScanner \ No newline at end of file +Conveyor 1,Input,DevPin0,1,1,Conveyor01,Occupied,,i2cInput.dev01, +Conveyor 2,Input,DevPin0,1,2,Conveyor02,Occupied,,i2cInput.dev01, +Conveyor 3,Input,DevPin0,1,3,Conveyor03,Occupied,,i2cInput.dev01, +Conveyor 4,Input,DevPin0,1,4,Conveyor04,Occupied,,i2cInput.dev01, +Conveyor 1,Output,DevPin0,1,1,Conveyor01,MotorOn,MotorOff,i2cOutput.dev01, +Conveyor 2,Output,DevPin0,1,2,Conveyor02,MotorOn,MotorOff,i2cOutput.dev01, +Conveyor 3,Output,DevPin0,1,3,Conveyor03,MotorOn,MotorOff,i2cOutput.dev01, +Conveyor 4,Output,DevPin0,1,4,Conveyor04,MotorOn,MotorOff,i2cOutput.dev01, +DataLogicScanner,DataLogicScanner,,,,Conveyor03,,,dataLogicScanner, \ No newline at end of file diff --git a/example/strolch-plc-simple.csv b/example/strolch-plc-simple.csv index b20c909..24c5761 100644 --- a/example/strolch-plc-simple.csv +++ b/example/strolch-plc-simple.csv @@ -1,5 +1,5 @@ Description,Type,SubType,Device,Pin,Resource,Action1,Action2,Connection,DeviceId Material Flow,Group,,,,,,,,MaterialFlow -Conveyor 1,Input,GPIO,,4,Conveyor,Occupied,,raspiBcmGpioInput -Conveyor 1,Input,GPIO,,17,Conveyor,BoxDetected,,raspiBcmGpioInput -Conveyor 1,Output,GPIO,,18,Conveyor,MotorOn,MotorOff,raspiBcmGpioOutput \ No newline at end of file +Conveyor 1,Input,Pin,,4,Conveyor,Occupied,,raspiBcmGpioInput +Conveyor 1,Input,Pin,,17,Conveyor,BoxDetected,,raspiBcmGpioInput +Conveyor 1,Output,Pin,,18,Conveyor,MotorOn,MotorOff,raspiBcmGpioOutput diff --git a/strolch-plc-util/src/main/java/li/strolch/plc/core/util/PlcAddressGenerator.java b/strolch-plc-util/src/main/java/li/strolch/plc/core/util/PlcAddressGenerator.java index 5841af0..6f40665 100644 --- a/strolch-plc-util/src/main/java/li/strolch/plc/core/util/PlcAddressGenerator.java +++ b/strolch-plc-util/src/main/java/li/strolch/plc/core/util/PlcAddressGenerator.java @@ -571,13 +571,13 @@ public class PlcAddressGenerator { throw new IllegalStateException("Pin missing for: " + record); String address; - if (subType.equals("GPIO")) { + if (subType.equals("Pin")) { int io = Integer.parseInt(pin); address = connection + "." + io; return address; } - if (subType.equals("PCF8574")) { + if (subType.equals("DevPin0") || subType.equals("DevPin")) { String device = record.get("Device"); if (isEmpty(device)) @@ -586,11 +586,11 @@ public class PlcAddressGenerator { int card = Integer.parseInt(device); int io = Integer.parseInt(pin); - // the device ID must be subtracted, as this defines the actual card - int dev = Integer.parseInt(connection.substring(connection.length() - 2)); - card -= dev; - // decrement, because pin 1 is actually 0 - io -= 1; + if (subType.equals("DevPin0")) { + int dev = Integer.parseInt(connection.substring(connection.length() - 2)); + card -= dev; + io -= 1; + } address = connection + "." + card + "." + io;