Class: PlcUtil::Awl::DbAddress
- Inherits:
-
Object
- Object
- PlcUtil::Awl::DbAddress
- Defined in:
- lib/plcutil/siemens/awl/db_address.rb
Instance Attribute Summary collapse
-
#data_block_addr ⇒ Object
Returns the value of attribute data_block_addr.
Instance Method Summary collapse
- #bit ⇒ Object
- #byte ⇒ Object
-
#initialize(bit_addr, data_block_addr = nil) ⇒ DbAddress
constructor
A new instance of DbAddress.
- #next_byte ⇒ Object
- #next_word ⇒ Object
- #skip(bit_count) ⇒ Object
- #to_s ⇒ Object
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_addr ⇒ Object
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
#bit ⇒ Object
14 15 16 |
# File 'lib/plcutil/siemens/awl/db_address.rb', line 14 def bit @bit_addr % 8 end |
#byte ⇒ Object
18 19 20 |
# File 'lib/plcutil/siemens/awl/db_address.rb', line 18 def byte @bit_addr / 8 end |
#next_byte ⇒ Object
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_word ⇒ Object
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_s ⇒ Object
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 |