Class: Simatic::Sessions::WriteSession
- Inherits:
-
ExchangeSession
- Object
- Session
- ExchangeSession
- Simatic::Sessions::WriteSession
- Defined in:
- lib/simatic/sessions/write_session.rb
Overview
Write communication session
Instance Method Summary collapse
Methods inherited from Session
Instance Method Details
#make_request(memory_mappers) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/simatic/sessions/write_session.rb', line 8 def make_request memory_mappers @memory_mappers = memory_mappers param = [ FuncWrite, # 8bit function @memory_mappers.count, # count of read-requests ].pack('C2') data = '' @memory_mappers.each do |memory_mapper| param += write_request_param memory_mapper data += write_request_data memory_mapper end super param, data end |
#parse_response(raw_data) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/simatic/sessions/write_session.rb', line 26 def parse_response raw_data super raw_data unless FuncWrite == @function raise "unknown function 0x#{@function.to_s(16)} in #{self.class} response" end result_code = @data[0,1].unpack('C').first case result_code when 0xff result_code when 0x0A raise "Item not available, code #{result_code}" # for s7 300 when 0x03 raise "Item not available, code #{result_code}" # for s7 200 when 0x05 raise "Address out of range, code #{result_code}" when 0x07 raise "Write data size mismatch, code #{result_code}" else raise "Unknown error, code #{result_code}" end end |