Beispiel #1
0
        public async Task MixedAccessWithDataChangeTest2()
        {
            var mapping = "DB_Safety2";

            var t = new Stopwatch();

            t.Start();
            short value = -1;
            await _papper.WriteAsync(PlcWriteReference.FromAddress($"{mapping}.SafeMotion.Header.NumberOfActiveSlots", (short)0));

            var result2 = await _papper.ReadBytesAsync(new List <PlcReadReference> {
                PlcReadReference.FromAddress($"{mapping}.SafeMotion")
            });

            var sub = _papper.SubscribeDataChanges((s, e) =>
            {
                value = (short)e[$"{mapping}.SafeMotion.Header.NumberOfActiveSlots"];
            }, PlcWatchReference.FromAddress($"{mapping}.SafeMotion.Header.NumberOfActiveSlots", 10),
                                                   PlcWatchReference.FromAddress($"{mapping}.SafeMotion.Header.States.ChecksumInvalid", 10));


            await _papper.WriteAsync(PlcWriteReference.FromAddress($"{mapping}.SafeMotion.Header.NumberOfActiveSlots", (short)1));

            await Task.Delay(2000);

            Assert.Equal((short)1, value);

            sub.Dispose();
            t.Stop();
        }
Beispiel #2
0
        public async Task TestMultiWrite(string mapping, Type type)
        {
            _client = new Dacs7Client("192.168.0.148:102,0,2", PlcConnectionType.Basic, 5000);
            await _client.ConnectAsync();

            if (_client.IsConnected && (_mapper == null || _mapper.PduSize > _client.PduSize))
            {
                var pduSize = _client.PduSize;
                _mapper = new PlcDataMapper(pduSize, Papper_OnRead,
                                            Papper_OnWrite,
                                            OptimizerType.Items);

                _mapper.AddMapping(type);
            }


            var data = await _mapper.ReadAsync(PlcReadReference.FromAddress($"{mapping}.This"));

            await _mapper.WriteAsync(PlcWriteReference.FromAddress($"{mapping}.This", data));


            await _client.DisconnectAsync();
        }
Beispiel #3
0
 public PlcWriteReference ParseWriteReference() => PlcWriteReference.FromAddress($"DB_Safety2.SafeMotion.Header.States.ChecksumInvalid", true);
Beispiel #4
0
 public void PerformReadWriteRaw()
 {
     var papper       = new PlcDataMapper(960, Papper_OnRead, Papper_OnWrite);
     var readResults  = papper.ReadAsync(PlcReadReference.FromAddress("DB2000.W2")).GetAwaiter().GetResult();
     var writeResults = papper.WriteAsync(PlcWriteReference.FromAddress("DB2000.W2", (UInt16)3)).GetAwaiter().GetResult();
 }