展开查看
以下是引用大树哈在2020-06-21 10:29:27的发言 >7楼:
我们也用C#来开发,按键可以直接对MCP变量赋值,比如给I3.7置1,隔20ms置0,模拟点动操作。也是可以实现的。
直接置位有硬件组态的输入点需要连续多次置位,高级语言是事件触发,触发后执行一次,需要加其他逻辑(例如定时器)实现多次反复触发。
为何要多次触发:因为plc每个周期都会从硬件输入映像区读硬件输入状态,只有外部强制修改的逻辑时间戳在ob1起始扫描(ob1起始时i点输入始终和硬件状态一致)和mcp处理块fc19之间才能起作用,所以单次触发失效几率很大(相当于输入点是双线圈,外部强制的线圈和plc周期无关,是随机的,可能在fc19之前,也可能在其后)。
缺点:高级语言逻辑复杂点,可靠性差点,就算fc19放在ob1最后,但fc19自身循环也有时间,面板输入这么多信号必然有fc19开始后才被外部触发的可能。
这种方法好处:不修改plc,置位后不用复位输入信号(因为下一个ob1开始时i状态自然被硬件状态接管了),所以如果硬件输入状态是0,用外部置位信号后最长保持也就是plc的一个扫描周期。