在西门子博图软件中组态ModbusTCP协议的IO-Link主站
视频摘要
本期视频将介绍如何使用西门子博图软件组态森特奈符合 Modbus/TCP协议的主站模块。
本次使用的是西门子S7-1200 PLC,以及森特奈的一款8端口的IO-Link主站ELMT-8IOL-L001,主站上连接的是一款 8路输出的M8子站SIOL-M8-8DO。
配置步骤包括设置模块IP地址、在博图中组态主站、通过拨码配置IO-Link端口、以及将程序下载到 PLC。
完成后,主站(BUS)和子站(RUN)指示灯变为绿色常亮,表示组态完成通信建立成功。
视频内容
图文教程
1、设定森特奈ModbusTCP协议IO-LINK主站模块的IP地址。
方法一:通过森特奈“DhcpTool”IP地址分配软件进行设置:
-
①、首先可在森特奈官网获取“DhcpTool V1.2”软件并安装(仅支持WIN10及以上系统),打开软件

-
②、将森特奈ModbusTCP协议IO-LINK主站模块与电脑连接,然后将模块IP地址设置 拨码拨到“0XFF” (窗口右侧ADDR_H拨到F,ADDR_L拨到F,可参考说明书),即“DHCP模式,上电一直等待分配IP”。拨完后,模块需要重新上电,此时,模块BUS红灯将闪烁。然后点击软件中“检测可用端口”,找到本地端口,然后点击“连接端口”

-
③、此时,下方将显示扫描出的森特奈ModbusTCP协议的IO-LINK主站模块,前面对 应MAC地址

-
④、在“IP Adderss”下方填入IP地址,如“192.168.0.20”,然后点击左上角“设置IP地址”,然后在模块后面“Status”下方将显示绿色IP地址,表示模块IP地址已经设置完成,此时可以关闭软件。设置完毕后,模块BUS红灯将不再闪烁。可以将模块IP地址设置拨码拨到“0X00”,即“按照上次的DHCP分配的IP地址运行”,那么每次断电上电后,模块都将按之前分配的地址运行(即192.168.0.20)。另外拨码也可以拨到0x01 - 0xFE,此时前3位网段,按照DHCP分配的运行,第4位按照该拨码设置运行(比如,将ADDR_H拨到1,ADDR_L拨到4,那么模块IP地址也是192.168.0.20)。

方法二:可以通过第三方设置软件进行IP地址设置。
-
①、本例中使用AB的“Bootp-DHCP Tool”软件,设置之前,先将模块IP地址设置拨码 (窗口右侧ADDR_H,ADDR_L,可参考说明书)拨到“0XFF”,即“DHCP模式,上电一直等待分配IP”。拨完后,模块需要重新上电,此时,模块BUS红灯将闪烁。打开该软件,选择本机相应网卡,点击“OK”。

-
②、双击扫描出的模块,输入要设置的IP地址(IP地址与本机IP地址要在同一网段),点击“OK”,设置完毕后,模块BUS红灯将不再闪烁。可以将模块IP地址设置拨码拨到“0X00”,即“按照上次的DHCP分配的IP地址运行”,那么每次断电上电后,模块都将按之前分配的地址运行。另外拨码也可以拨到0x01 - 0xFE,此时前3位网段,按照DHCP分配的运行,第4位按照该拨码设置运行。

2、打开博途软件,新建一个工程,组态PLC(过程略)。打开主程序OB,调用“MB_CLIENT”指令块,调用时会自动生成背景数据块

3、创建一个新的全局数据块DB2

4、双击打开BD2,自定义变量名称为“SSS”,数据类型为“TCON_IP_v4”(可在该对话框中直接输入),该数据类型结构创建完毕。

各参数定义说明如下

5、本例中IO-LINK主站模块IP地址为192.168.0.10,远程端口号设为502,ID设为1,ActiveEstablished为1,LocalPORT一般使用默认值0,意思是本地使用随机端口。所以客户端侧,该数据结构的各项值设置如下:

6、再创建一个新的全局数据块DB3,用于存放缓存数据。在DB3内新建一个Word数组的数据类型,以便存放数据

7、“MB_CLIENT”指令块中的“MB_DATA_PTR”所指定的数据缓冲区可以为DB块或者存储区域M地址,DB块可以是优化的数据块,也可以是标准的数据块结构,若为优化的数据块结构,必须是基本数据类型数组,如int、Real、BOOL、数组,编程时需要以符号寻址的方式填写该引脚;若为标准的数据块结构,可以以指针的方式填写该引脚。本例中使用标准的数据块结构(可以右键点击DB3,在“属性”中将“优化的块访问”前面的√去掉,如图)

8、回到“MB_CLIENT”指令块,参考“MB_CLIENT”指令的参数表,依次填入各项参数,利用 CPU的时钟脉冲,每隔 0 .01s 触发一次第一个MB_Client 指令的 REQ进行读操作,使用F04功能码,MB_MODE为0,读输入字,MB_DATA_ADDR为30001开始,MB_DATA_LEN为读取长度(长度范围1-125),MB_DATA_PTR指向待从 Modbus 服务器接收数据的数据缓冲区或指向待发送到 Modbus 服务器的数据所在数据缓冲区的指针。CONNECT为指向连接描述结构的指针,如下

9、将程序下载后,就可以在MB_DATA_PTR引脚指定的DB块(DB3)变量中读取到输入数据。如:第一个字节数据“16#FF”表示8端口IO-LINK当前状态,即8个子站均通讯正常

10、参考森特奈ModbusTCP协议IO-Link主站模块说明书,发现输入占用Word[0]-Word[132],一共133个字,对于读输入数据,由于最大长度为125,所以一个“MB_CLIENT”不能完全读出所有输入数据,同理输出占用Word[0]-Word[127],一共128个字,但是一个“MB_CLIENT”最大长度是123,也不能完全写入所有输出数据,所以为了完整读取输入和写入输出,此时可以分两次调用“MB_CLIENT”读取和分两次调用“MB_CLIENT”写入数据(模块的具体字节分配,请看文末附录)如:
注:四次调用,用的是同一个块DB1,同时第一个块的“DONE”作为第二个块的“REQ”,以此类推

11、第一个MB_Client指令,使用F04功能码,MB_MODE为0,读输入字,MB_DATA_ADDR为30001开始,读取长度MB_DATA_LEN为117,正好是第8个端口之前的所有输入数据,MB_DATA_PTR指向DB3中的“IN1”(为了读写数据,已经在DB3中新建IN1、IN2、OUT1、OUT2用于读写数据,数据缓冲区必须足够大。)
第二个MB_Client指令,也使用F04功能码,MB_MODE为0,读输入字,MB_DATA_ADDR为30118开始,读取长度MB_DATA_LEN为16,是第8个端口的输入数据,MB_DATA_PTR指向DB3中的“IN2”
第三个MB_Client指令,使用F16功能码,MB_MODE为2,写保持寄存器,MB_DATA_ADDR为40001开始,写入长度MB_DATA_LEN为112,是第8个端口之前的所 有输出数据,MB_DATA_PTR指向DB3中的“OUT1”
第四个MB_Client指令,使用F16功能码,MB_MODE为2,写保持寄存器, MB_DATA_ADDR为40113开始,写入长度MB_DATA_LEN为16,是第8个端口的输出数 据,MB_DATA_PTR指向DB3中的“OUT2”
当TCP连接建立后,利用 CPU的时钟脉冲,每隔 0 .01s 触发一次第一个MB_Client 指令
的 REQ进行读操作,然后,利用其输出的 DONE触发第二个 MB_Client 指令的 REQ进行
读操作,再利用第二个 MB_Client输出的 DONE触发第三个 MB_Client 指令的 REQ进行
写操作,最后,利用第三个 MB_Client输出的 DONE触发第四个 MB_Client 指令的 REQ
进行写操作(注意:本例中为 0 .01 s 触发一次连续的操作,而在实际的项目中,请根据实
际的读/写操作次数和访问数据量,调整触发间隔,保证读/写操作都能正常完成)

附录
1、 IO-LINK过程数据输入(占用133 Word)
支持功能码F04(读输入寄存器)

2、IO-LINK过程数据输出(占用128 Word)
支持功能码F03(读保持寄存器)、F16(写保持寄存器)、F23(读、写保持寄存器)

客户支持与服务
天津森特奈电子深耕工业自动化领域 17 年,已为轨道交通、汽车制造、新能源等行业提供超过 170 个应用案例。我们提供从传感器选型、系统集成到售后诊断的全周期服务。如您想要了解森特奈产品的更多信息,请联系销售人员或致电公司 022-83726972。或您可登录森特奈的官网 www.sentinel-china.com 。
欢迎预约线上演示或申请样机试用,让我们的工程师为您量身定制从"数据入口"到"动作落地"的完整方案。
