portal V15里面编程, 被一个逻辑难倒了。
我尽量简化, 抽象了一下,简化为一道题目:
假设有10个按钮,(DI地址不连续), 8个指示灯(DO地址也不连续)
现在有逻辑功能,简化为按下1个按钮时, 1个指示灯延时2秒l亮起。 (这是一个封装好的FB块,将来还可以无穷变化, 无穷复杂, 所以不要打改造它的主意)
同时运行的逻辑功能有2套。 所以很容易为其编织一个FB块,系统中调用2次。
但问题是, 按下哪个按钮,不是确定的, 对应到哪个灯亮, 也不是确定的。
而是需要在程序的运行中, 比如给两次调用实例, 分别输入参数8:5和4:3.
则当DI8按下时,DO5延时2S亮起。.
DI4按下时, DO3延时2S亮起。
同一时刻, 另外的其它的DI/DO待命,空闲不用。
我想象的是,分别建立数组A[10]和B[8], 程序中根据指令的i数值, 把对应的元素A[i]放入到FB的实参, 但高级语言很容易实现的事情, 在PLC里面怎么感觉困难重重, 没有头绪呢?
当然, 我要做的逻辑比这还复杂n倍, 这里只是抽象化表述。 即便实现后, 也还有更复杂的需求冒出。
*******************************************
看来, 我不做个引子, 只讲题目不行, 都不愿意动手, 只乐意爱那儿夸夸其谈讲愿理去了。
来吧,我打了个程序底子:
8543_V15_1.zip
V13SP1:
8543v13.zip