1 module tests.plc; 2 3 import std.stdio; 4 import unit_threaded; 5 6 import dinodave; 7 8 /* 9 S7 should be connected at 192.168.221.102o 10 11 Run with: 12 ./libdinodave-test -d tests.plc.set_bit_should_work 13 */ 14 @UnitTest 15 @HiddenTest 16 void set_bit_should_work() { 17 enum string IP = "192.168.221.102"; 18 enum DB = 23; 19 enum ADDR = 200; 20 try { 21 auto s7 = new IsoTcp(IP); 22 s7.openConnection(); 23 writeln("opened"); 24 scope(exit) s7.closeConnection(); 25 ubyte[] buf = [0, 0]; 26 s7.writeBytes(DB, ADDR, 1, buf); 27 s7.setBit(DB, ADDR, 1); 28 s7.setBit(DB, ADDR, 2); 29 s7.readBytes(DB, ADDR, 1); 30 int v = s7.getU8(); 31 writeln("set ", v); 32 v.shouldEqual(6); 33 s7.clearBit(DB, ADDR, 1); 34 35 s7.readBytes(DB, ADDR, 1); 36 v = s7.getU8(); 37 writeln("reset ", v); 38 39 v.shouldEqual(4); 40 41 } catch(Exception e) { 42 writeln(e); 43 } 44 45 } 46 import std.conv; 47 @HiddenTest 48 void testReadPLCTime() { 49 enum string IP = "192.168.221.102"; 50 enum DB = 23; 51 enum ADDR = 200; 52 try { 53 auto s7 = new IsoTcp(IP); 54 s7.openConnection(); 55 scope(exit) s7.closeConnection(); 56 57 int v = s7.readPLCTime(); 58 for (size_t i = 0; i < 10; ++i) { 59 int a = fromBCD(to!ubyte(s7.getU8())); 60 writefln("%d: %d ", i, a); 61 } 62 63 } catch(Exception e) { 64 writeln(e); 65 } 66 }