广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
浅谈IO映射(附西门子几种常用的IO映射方法)
发布时间:2024-11-26

最近看到有些工程师在讨论一个问题,就我们在写程序的过程中,会不会使用IO映射,或者是直接使用分配的物理I点和Q点。

我个人而言,我是一直在使用的,至于我为什么会使用,我认为它的优点是什么?请看下文!

何为IO映射?

即说的是,PLC的主程序中不要直接使用物理的I和O地址,而是在程序的一个批量映射,I信号批量复制到中间寄存器或者全局DB中, 把输出的全局DB的数据或寄存器区域的数据批量拷贝到O地址区。


在网上,大多数人都说IO映射有这么一个优点,那就是可以保证程序中所有的I/O物理地址只使用1次, 如果某个点坏了,可以直接把映射表改一下,既可以更换到另一个备用通道,而主程序逻辑可以丝毫不需要改动。

我个人认为这个观点是仅适用某些情况。

例如:

图片


但是

当我们项目中IO量很多是,大多数都会用PEEK/POKE指令,做了个循环,批量式地实现了IO映射

图片

或者用BLKMOV块移动指令

图片

或者VariantGet/VariantPut指令

图片或者用指针(AR)

图片

如果我们是用上述方法做的IO映射,假设某个点坏了,那我们该如何替换这个坏的点呢???会不会很麻烦???所以说,“在网上,大多数人都说IO映射有这么一个优点,那就是可以保证程序中所有的I/O物理地址只使用1次, 如果某个点坏了,可以直接把映射表改一下,既可以更换到另一个备用通道,而主程序逻辑可以丝毫不需要改动” 这个优点我认为在这种情况下是不存在的,反而变得更复杂。而目前,我一直用IO映射的主要两个有两个原因。
1.在我入行刚没多就的时候,领导安排我负责某主机厂4条线PLC程序编写,做过汽车行业的工程师都知道,主机厂线体程序的各种设备,他的命名,网络地址和IO信号等都是有着严格的要求,在项目前期,甲方的相关部门会提供该工厂的所有的设备,他的命名,网络地址和IO信号等相关规范给机械电气工程师等。当时的情况是这样子的,我拿到线体的IO分配表后,就着手开始编写程序,由于缺乏经验,在编写程序的时候,有使用到IO变量的地方,我都是直接有实际的物理变量,当我程序完成到百分之80的时候,甲方突然说,原来规划的地址有问题,需要变更一下,听到这个消息,我当时那个头大啊。后面只能自己加班加点,先通过映射到DB变量,再一个一个变量的替换。如果一开始,我就先将IO变量映射到DB变量,不管他的地址规划如何编号,都可以很快的修改。
2.做过汽车行业的工程师都知道,不管是主机厂的线体,还是零部件厂的工作站,基本都是柔性生产线,可生产多种车型,这种产线的夹具(载具)一般分为两种,一种是通用的(要求比较高,需要满足适用多种车型产品,一般是伺服夹具)一种就是专用夹具,即不同车型产品,对应不对的夹具(需要切换,有手动切换,也有自动切换,比通用夹具浪费节拍)。我这种情况针对于专用夹具。在一些可生产多种车型的工作站中,不同车型对应专用的夹具,一般的电气设计方案都是这样的,不同的夹具上的远程IO模块的IP地址(节点)应该是设置成一样的,所有夹具的物理地址也是一样的。这样只需要在第一次导入的时候设置网络即可,后面新增夹具不需要修改和增加网络。但这样子会有这样的一种情况出现,不同夹具的同一路气,它所带的气缸不一样,导致到位开关信号的数量不一样,这时候,如果直接用IO变量,可读性就会很差。例如有两套夹具的IO信号是这样的

图片

如果我们不做IO映射,这些信号的注释就会很乱,程序可读性会很差。

如果我们做了IO映射,就可以避免这个问题了。

图片

注释是写在DB信号里,程序需要用到的点也是用DB信号,这样子程序可读性会比较好


以上仅个人观点,是小潘在项目中用到情景

IO映射还有另外许多的优点,等待小潘和各位工程师发掘。


展开全文
拨打电话 微信咨询 发送询价