Class: PlcUtil::Awl::DbAddress

Inherits:
Object
  • Object
show all
Defined in:
lib/plcutil/siemens/awl/db_address.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bit_addr, data_block_addr = nil) ⇒ DbAddress

Returns a new instance of DbAddress.



6
7
8
# File 'lib/plcutil/siemens/awl/db_address.rb', line 6

def initialize(bit_addr, data_block_addr = nil)
	@bit_addr, @data_block_addr = bit_addr, data_block_addr
end

Instance Attribute Details

#data_block_addrObject

Returns the value of attribute data_block_addr.



4
5
6
# File 'lib/plcutil/siemens/awl/db_address.rb', line 4

def data_block_addr
  @data_block_addr
end

Instance Method Details

#bitObject



14
15
16
# File 'lib/plcutil/siemens/awl/db_address.rb', line 14

def bit
  @bit_addr % 8
end

#byteObject



18
19
20
# File 'lib/plcutil/siemens/awl/db_address.rb', line 18

def byte
  @bit_addr / 8
end

#next_byteObject



32
33
34
# File 'lib/plcutil/siemens/awl/db_address.rb', line 32

def next_byte
  DbAddress.new(next_n(8), data_block_addr)
end

#next_wordObject



22
23
24
25
26
27
28
29
30
# File 'lib/plcutil/siemens/awl/db_address.rb', line 22

def next_word
  # simatic packing rules
  # 1. 16 bit values aligned at modulo 2 address 0.0, 2.0, 4.0, 8.0, ...
  # 2. 8 bit values aligned at each address, 0.0, 1.0, 2.0, ...
  # 3. Structs are aligned modulo 2
  # 4. Bools are aligned like 8 bit values, consecutive bools occupy a single byte

  DbAddress.new(next_n(16), data_block_addr)
end

#skip(bit_count) ⇒ Object



47
48
49
# File 'lib/plcutil/siemens/awl/db_address.rb', line 47

def skip(bit_count)
  DbAddress.new @bit_addr + bit_count, data_block_addr
end

#to_sObject



10
11
12
# File 'lib/plcutil/siemens/awl/db_address.rb', line 10

def to_s
	(data_block_addr || 'DB???') + ',' + byte.to_s + '.' + bit.to_s
end