step7 5.6如何更换CPU程序不变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了step7 5.6如何更换CPU程序不变相关的知识,希望对你有一定的参考价值。
参考技术A 如果已经在STEP 7中集成了ProTool 并且想要在HWnConfig中更换一个CPU。在这种情况下是不可能通过HW Config来直接更换nCPU 的。如需更换 CPU,可以按照以下步骤来操作:1.在HW Config中删除CPU
2.对于问题“是否也想要删除已分配给模块<<项目名站名CPU名>>的程序:?”
选择“不”。
3.将新的CPU插入空出来的槽中。
4.将CPU与可用的网络(MPI和/或PROFIBUS)链接。
5.使用原CPU组态的MPI/PROFIBUS地址并对于提示
“不建议使用该地址,是否想要修改地址?”
选择“不”。
6.检查组态的一致性,保存项目并关闭HW Config。
7.从SIMATIC站的块容器中复制系统数据。
8.在 SIMATIC 站中,有一个带块容器的目录“S7nProgram(x)”。将复制的系统数据粘贴到这个块容器中并点击“是”确认对原数据的覆盖。
9.切换到SIMATIC站的目录并删除“S7 Program (x)”目录。
10.剪切下剩余的程序容器并将其粘贴到被删除掉程序容器处
11.打开ProTool并双击“控制器”。
12.在对话框中,在“通讯对象/符号列表”窗口的“参数”中选择新的nCPU
用数字按字母顺序对数组进行排序
【中文标题】用数字按字母顺序对数组进行排序【英文标题】:Sorting array alphabetically with number 【发布时间】:2015-07-03 14:30:21 【问题描述】:myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9,
Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15]
我怎样才能以这种方式对上面的这个数组进行排序?
[Step 1, Step 2, Step 3, Step 4, ....]
我在 swift sort(&myArray, $0 < $1 )
中使用了这个函数,但它是这样排序的
[Step 1, Step 10, Step 11, Step 12, Step 13, Step 14, Step 15, Step 16, Step 2,
Step 3, Step 4, Step 5, Step 6, Step 7, Step 8, Step 9]
【问题讨论】:
对于 Objective-C,它在此处被回答(例如):***.com/questions/746200/…。 【参考方案1】:另一个变体是使用
localizedStandardCompare:
。来自文档:
当文件名或其他字符串是 出现在类似 Finder 的排序的列表和表格中 合适。
这将根据当前语言环境对字符串进行排序。 示例:
let myArray = ["Step 6", "Step 12", "Step 10"]
let ans = sorted(myArray, (s1, s2) in
return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending
)
println(ans)
// [Step 6, Step 10, Step 12]
更新: 上面的答案很老,适用于 Swift 1.2。 Swift 3 版本是(感谢@Ahmad):
let ans = myArray.sorted
(s1, s2) -> Bool in return s1.localizedStandardCompare(s2) == .orderedAscending
有关其他方法,请参阅https://***.com/a/31209763/1187415, 在https://***.com/a/39748677/1187415 翻译成Swift 3。
【讨论】:
让 ans = anArray.sorted$0.localizedStandardCompare($1) == NSComparisonResult.OrderedAscending sortedArray @LeoDabus,这更短,但我发现我和 Martin 的(稍长)语法一目了然更容易阅读,尤其是对于新手。 嗨马丁,谢谢你的回答,对我来说,这是最好的答案,也像 Ludovic 的评论 Swift 3 版本: let myArray = ["Step 6", "Step 12", "Step 10"] let ans = myArray.sorted (s1, s2) -> Bool 返回 s1。本地化标准比较(s2) == 比较结果.orderedAscending @Ahmad:是的,谢谢。其实我更喜欢 Duncan 的解决方案 ***.com/a/31209763/1187415,我在 ***.com/a/39748677/1187415 中将其翻译成 Swift 3。【参考方案2】:Duncan C's answer 的 Swift 3 版本是
let myArray = ["Step 6", "Step 12", "Step 10"]
let sortedArray = myArray.sorted
$0.compare($1, options: .numeric) == .orderedAscending
print(sortedArray) // ["Step 6", "Step 10", "Step 12"]
或者,如果您想对数组进行就地排序:
var myArray = ["Step 6", "Step 12", "Step 10"]
myArray.sort
$0.compare($1, options: .numeric) == .orderedAscending
print(myArray) // ["Step 6", "Step 10", "Step 12"]
【讨论】:
【参考方案3】:NSString 有一组丰富的字符串比较方法。可以使用compare:options:
的方法。
您需要NSNumericSearch
选项。如果您阅读该选项的描述,它会说:
字符串中的数字使用数值进行比较,即 Name2.txt
因此,您可以编写一个 Swift 排序行,使用该函数执行您想要的操作。
类似这样的:
let myArray = ["Step 6", "Step 12", "Step 10"]
let ans = myArray.sorted
(first, second) in
first.compare(second, options: .NumericSearch) == NSComparisonResult.OrderedAscending
println(ans)
// [Step 6, Step 10, Step 12]
【讨论】:
不需要转换为NSString
。只要 Foundation 被导入,方法也可用于 String。
嗨,Duncan C,感谢您抽出宝贵时间回答我的问题,您的回答是正确的,我很感激,但我找到了更好的答案。
如果您找到了更好的答案,那么您应该将其发布为您自己问题的答案并接受它。【参考方案4】:
在 Swift 2 中:
import Foundation
let myArray = ["Step 6", "Step 12", "Step 10"]
extension String
func extractIntFromEnd() -> Int?
return self.componentsSeparatedByString(" ").last.flatMapInt($0)
let ans = myArray.sort
(first, second) in
first.extractIntFromEnd() < second.extractIntFromEnd()
在 Swift 1 中:
let myArray = ["Step 6", "Step 12", "Step 10"]
extension String
func extractIntFromEnd() -> Int?
return self.componentsSeparatedByString(" ").last.flatMap$0.toInt()
let ans = myArray.sorted
(first, second) in
first.extractIntFromEnd() < second.extractIntFromEnd()
在这两种情况下,这个数组:
let myArray = [
"Step 6" ,
"Step 12",
"Step 5" ,
"Step 14",
"Step 4" ,
"Step 11",
"Step 16",
"Step 9" ,
"Step 3" ,
"Step 13",
"Step 8" ,
"Step 2" ,
"Step 10",
"Step 7" ,
"Step 1" ,
"Step 15"
]
会给你这个答案:
["Step 1", "Step 2", "Step 3", "Step 4", "Step 5", "Step 6", "Step 7", "Step 8", "Step 9", "Step 10", "Step 11", "Step 12", "Step 13", "Step 14", "Step 15", "Step 16"]
(在 Swift 2.0 版本中,您应该能够执行 last.flatMap(Int.init)
,但由于某种原因它对我不起作用。即使像 ["1", "2"].flatMap(Int.init)
这样的东西也会让我的操场崩溃。看起来像一个错误。)
【讨论】:
嗨oisdk,感谢您抽出宝贵时间回答我感谢您的回答,它也是正确的,但我找到了更好的答案【参考方案5】:NSArray *assorted = [@"1 2 3 9 ; : 구 , 결 A B C Z ! á" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSArray *sorted = [assorted sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2)
/* NSOrderedAscending, NSOrderedSame, NSOrderedDescending */
BOOL isPunct1 = [[NSCharacterSet punctuationCharacterSet] characterIsMember:[(NSString*)obj1 characterAtIndex:0]];
BOOL isPunct2 = [[NSCharacterSet punctuationCharacterSet] characterIsMember:[(NSString*)obj2 characterAtIndex:0]];
if (isPunct1 && !isPunct2)
return NSOrderedAscending;
else if (!isPunct1 && isPunct2)
return NSOrderedDescending;
return [(NSString*)obj1 compare:obj2 options:NSDiacriticInsensitiveSearch|NSCaseInsensitiveSearch|NSNumericSearch]|;
];
【讨论】:
【参考方案6】:在 Swift 2.0 Demo link 中进行排序,将语法从“sorted(myArray,)”更改为“myArray.sort()”。可扩展协议。
let myArray = ["Step 6", "Step 12", "Step 10"]
let sortedArray = myArray.sort( x, y in
return x.localizedStandardCompare(y) == NSComparisonResult.OrderedAscending
)
dump(sortedArray)
Swift 1.2 Demo
【讨论】:
【参考方案7】:让 myArray = ["Step 6", "Step 12", "Step 10"]
让 sortedArray = myArray.sorted(by: x, y in return x.field.name.compare(y.field.name, options: .numeric, range: nil, locale: nil) == .orderedAscending )
【讨论】:
【参考方案8】:您可以使用等于数组长度的循环,即 for(i=0;i<myArray.length;i++)
,然后可以使用变量按顺序对它们进行排序:
for (int i = 0; i < myArray.length; i++)
for (int j = i + 1; j < n; j++)
if (a[i] > a[j])
temp = a[i];
a[i] = a[j];
a[j] = temp;
【讨论】:
这并没有解决根据字符串的数值对字符串进行排序的问题(例如,“Step 6”以上是关于step7 5.6如何更换CPU程序不变的主要内容,如果未能解决你的问题,请参考以下文章