ladder_converter 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Gemfile +4 -4
- data/exe/ladder_converter +19 -9
- data/lib/ladder_converter/kv_code.rb +6 -4
- data/lib/ladder_converter/ladder_converter.rb +2 -2
- data/lib/ladder_converter/mel2kv.rb +29 -17
- data/lib/ladder_converter/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4235ce3af1d0bd3a947ee1f378ecd56d1fe5322ef6fb8c07401d14496810b896
|
4
|
+
data.tar.gz: 3360d36110694cd1d4efba24675a44fe0ae2858d798bca71dd50ca04839b804c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81d69eeb8539a23d073ffc77a4be3c465ce29d0906fe6bbf33271c045a3cd463b5fa120db26e0474bb33058228ec9073d1f276dc00bfe644a9810494ac8d7e57
|
7
|
+
data.tar.gz: aa72168f6f99a5f8ab8e32cb51227abd19be6e45a7cc44c91a34a890904aabcac133af06790ba33a76304e25a470937b438dd2d7386e50b8d1b74ea03a10122f
|
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
# Specify your gem's dependencies in ladder_converter.gemspec
|
4
|
-
gemspec
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Specify your gem's dependencies in ladder_converter.gemspec
|
4
|
+
gemspec
|
data/exe/ladder_converter
CHANGED
@@ -8,11 +8,19 @@ include LadderConverter
|
|
8
8
|
@options = {ignore_unknown:true}
|
9
9
|
|
10
10
|
opt = OptionParser.new do |opt|
|
11
|
-
opt.banner = 'Usage: ladder_converter source_file target_file'
|
11
|
+
opt.banner = 'Usage: ladder_converter source_file target_file [options]'
|
12
12
|
opt.on('--[no-]ignore-unknown', "Skip a code if it's an unknown mnemonic or device. If set no- quit converting immediately.") {|v| @options[:ignore_unknown] = v }
|
13
|
+
opt.on('-f', '--force-converting', "Convert codes without querying to overwrite the target file.") {|v| @options[:force_converting] = v }
|
14
|
+
opt.on('-l file', '--logging-file file', "Set a path to write a logging file.") {|v| @options[:logging_file] = v }
|
15
|
+
opt.on('-v', '--version', "print the version number, then exit.") {|v| @options[:version] = v }
|
13
16
|
opt.parse!(ARGV)
|
14
17
|
end
|
15
18
|
|
19
|
+
if @options[:version]
|
20
|
+
puts "Ladder Converter #{LadderConverter::VERSION}"
|
21
|
+
exit 0
|
22
|
+
end
|
23
|
+
|
16
24
|
unless ARGV.size == 2
|
17
25
|
puts opt.help
|
18
26
|
exit -1
|
@@ -26,14 +34,16 @@ unless File.exist? src_path
|
|
26
34
|
exit -1
|
27
35
|
end
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
+
unless @options[:force_converting]
|
38
|
+
while File.exist? dst_path
|
39
|
+
print "Target file #{File.basename(dst_path)} is exist. Overwrite existing file (y/N) ? "
|
40
|
+
case STDIN.gets.chomp
|
41
|
+
when /^y$/i, /^yes$/i
|
42
|
+
break
|
43
|
+
when /^n$/i, /^no$/i
|
44
|
+
STDERR.puts "Abort converting!"
|
45
|
+
exit -1
|
46
|
+
end
|
37
47
|
end
|
38
48
|
end
|
39
49
|
|
@@ -44,7 +44,7 @@ module LadderConverter
|
|
44
44
|
when /^D((ADD|SUB|MUL|DIV|INC|DEC)P)$/
|
45
45
|
"#{own_mnemonic($1)}.D"
|
46
46
|
|
47
|
-
when 'MPS', 'MRD', 'MPP'
|
47
|
+
when 'MPS', 'MRD', 'MPP', 'NOP'
|
48
48
|
mnemonic
|
49
49
|
|
50
50
|
|
@@ -80,7 +80,9 @@ module LadderConverter
|
|
80
80
|
'LD<=', 'AND<=', 'OR<=',
|
81
81
|
'LD>=', 'AND>=', 'OR>=',
|
82
82
|
'CJ',
|
83
|
-
'CALL'
|
83
|
+
'CALL',
|
84
|
+
'FMOV', 'BMOV',
|
85
|
+
'FOR', 'NEXT'
|
84
86
|
mnemonic
|
85
87
|
else
|
86
88
|
n = {
|
@@ -117,7 +119,7 @@ module LadderConverter
|
|
117
119
|
when /^M8001$/i # 常時OFF
|
118
120
|
"CR2003"
|
119
121
|
when /^([A-Z]+.+)(Z\d+)/
|
120
|
-
"#{$1}:#{
|
122
|
+
"#{own_device $1}:#{own_device $2}"
|
121
123
|
when /^Z(\d+)$/
|
122
124
|
"Z#{($1.to_i + 1).to_s.rjust(2, '0')}"
|
123
125
|
when /^MR|^DM/i
|
@@ -132,7 +134,7 @@ module LadderConverter
|
|
132
134
|
when /^D/i
|
133
135
|
device.gsub(/^D+/i, "DM")
|
134
136
|
when /^K\d+([A-Z]+.+)/i
|
135
|
-
return
|
137
|
+
return own_device $1
|
136
138
|
when /^K\d+$/i
|
137
139
|
device.gsub(/^K+/i, "#")
|
138
140
|
when /^H(.+)/
|
@@ -1,3 +1,3 @@
|
|
1
|
-
require 'plc_code'
|
2
|
-
require 'kv_code'
|
1
|
+
require 'plc_code'
|
2
|
+
require 'kv_code'
|
3
3
|
require 'mel2kv'
|
@@ -7,12 +7,14 @@ class Mel2Kv
|
|
7
7
|
attr_reader :codes
|
8
8
|
attr_reader :converted
|
9
9
|
attr_reader :src, :dst
|
10
|
+
attr_reader :logging_file
|
10
11
|
|
11
12
|
attr_reader :ignore_unknown
|
12
13
|
|
13
14
|
def initialize options={}
|
14
15
|
@src = options[:src]
|
15
16
|
@dst = options[:dst]
|
17
|
+
@logging_file = options[:logging_file]
|
16
18
|
@ignore_unknown = options[:ignore_unknown]
|
17
19
|
@codes = nil
|
18
20
|
end
|
@@ -21,27 +23,37 @@ class Mel2Kv
|
|
21
23
|
return false unless File.exist? @src
|
22
24
|
return true if @codes
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
begin
|
27
|
+
logfile = File.open(logging_file, "w") rescue nil
|
28
|
+
|
29
|
+
@codes = []
|
30
|
+
has_end = false
|
31
|
+
CSV.open(@src, "rb:BOM|UTF-16:UTF-8", headers:true, skip_lines:Regexp.new(/^[^\t]+$|PC情報:/), col_sep:"\t").each_with_index do |row, i|
|
32
|
+
begin
|
33
|
+
mnemonic = row["命令"]
|
34
|
+
device = row["I/O(デバイス)"]
|
35
|
+
case mnemonic
|
36
|
+
when 'NOP'
|
37
|
+
# Skip
|
38
|
+
when ""
|
39
|
+
@codes.last.add_device device
|
40
|
+
when 'END', 'FEND'
|
41
|
+
unless has_end
|
42
|
+
@codes << KvCode.new(mnemonic, [device])
|
43
|
+
has_end = true
|
44
|
+
end
|
45
|
+
else
|
35
46
|
@codes << KvCode.new(mnemonic, [device])
|
36
|
-
has_end = true
|
37
47
|
end
|
38
|
-
|
39
|
-
|
48
|
+
rescue UnknownCodeError => e
|
49
|
+
mes = "[WARN] SKIPPED! : line #{i+(3+1)} : #{e}"
|
50
|
+
STDERR.puts mes
|
51
|
+
logfile.puts mes if logfile
|
52
|
+
raise unless ignore_unknown
|
40
53
|
end
|
41
|
-
rescue UnknownCodeError => e
|
42
|
-
STDERR.puts "[WARN] SKIPPED! : line #{i+(3+1)} : #{e}"
|
43
|
-
raise unless ignore_unknown
|
44
54
|
end
|
55
|
+
ensure
|
56
|
+
logfile.close if logfile
|
45
57
|
end
|
46
58
|
end
|
47
59
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ladder_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katsuyoshi Ito
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-09-
|
11
|
+
date: 2020-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -112,8 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: '0'
|
114
114
|
requirements: []
|
115
|
-
|
116
|
-
rubygems_version: 2.6.7
|
115
|
+
rubygems_version: 3.0.3
|
117
116
|
signing_key:
|
118
117
|
specification_version: 4
|
119
118
|
summary: The Ladder converter is to convert a ladder program of PLC to another maker.
|