摘要:LabVIEW中关于ModBus TCP的两种编程方法,调入函数的方式较I/O服务器方式稳定,但需要进行地址转换,详述地址转换方法。
关键词:LabVIEW;ModBus TCP
0 引言
在LabVIEW进行ModBus TCP编程时通常可以采用两种方法:在项目中创建关于ModBus TCP的I/O服务器和调用数据通信函数中的ModBus TCP函数,通常使用第一种方法。但在使用过程中,虽然在项目中创建I/O服务器的方式可以批量创建和编辑绑定变量,编程效率高,操作简单,但时常出现第一次运行通信失败的故障,非常影响运行效率。采用调用函数的方式则不会出现这种故障,通信连接成功率几乎百分之百,但在编程时需要特别注意地址转换问题。
1 ModBus TCP的网络模型
ModBus TCP是ModBus协议和TCP/IP协议结合的产物,其网络模型如表1所示,可以看出ModBus协议在7层应用层,因此该协议本质是一种TCP/IP协议的应用,在设计ModBus TCP服务器时PC端IP和PLC端IP在设置在同一网段。
.png)
2 两种编程方法
2.1 ModBus TCP的I/O服务器创建
安装好DSC模块以后新建一个LabVIEW项目,右击我的电脑,新建,选择I/O服务器,出现如图1左所示的界面,选择Modbus。如图1右所示,设置ModBus服务器的参数,选择Modbus以太网,设置服务器地址、刷新率、PLC的IP地址等。如图2左所示,创建绑定变量,依据PLC中各个变量的ModBus TCP对应表进行选择,此处为6位长度地址,通常0开头为DO、1开头为DI、3开头为AI、4开头为保持寄存器值。如图2右所示,批量编辑变量名称、数据类型和访问方式。如图3所示,在VI文件中选择一个变量绑定网络地址(如按钮绑定地址为000001的数字输出1)。
图3 应用变量绑定网络变量
2.2 ModBus TCP调用函数创建
新建VI文件,打开Modbus Master函数栏,如图4左所示,该栏包含了ModBus服务器的全部函数。选用创建主设备函数,选择新建TCP主设备,输入PLC的IP地址和端口号(502),连接读取输入寄存器、写入线圈等业务函数,最后连接错误输出函数,在界面监视网络状态。如图4右所示,为写入单个保持寄存器函数,需要输入的参数主要有ModBus主设备数据流、地址和待写入寄存器值,需要注意的是地址的数据范围为0-65535,而PLC表中的地址为6位(如400001),此时需要进行转换。
.png)
图4 ModBus Master函数栏和写入保持寄存器函数
如表2所示,六位地址起始位为1,五位地址起始位为0,相互转换要去一位减1,I/O服务器中识别六位地址,调用函数识别五位地址的有效数字,通过不同的函数类型区分数据类型,即PLC地址的首位。
.png)
如图5、图6所示为调用四种业务函数的示例,读取模拟量和数字量分两个线程,线程中设置循环周期为100ms,该示例为一个伺服电机闭环恒压加载系统。如图5所示,模拟量选用读取输入寄存器函数,读取后进行量程换算显示,如压力、位移。如图6所示,伺服电机的控制根据压力值经过PID计算后设置增加的脉冲个数,选用写入保持寄存器函数,设置包括空载转速脉冲数、占空比、增加的脉冲数等;选用写入线圈函数,控制电机转向、电机伺服使能;选用读取线圈函数,读取行程两端限位开关。
.png)
图6 伺服电机控制
4 结语
在任何一个系统的设计中,稳定性是第一个必须完成的目标,系统不稳定的设备通常是不能投入生产的。针对ModBus TCP在LabVIEW中的编程,经过无数次的I/O服务器方法中网络连接失败,采用了调用函数的方式,最重要的是掌握了地址变换的规律,网络连接成功的几乎百分之百,系统具有了较好的稳定性。
参考文献:
[1] 林静. LabVIEW虚拟仪器程序设计从入门到精通[M].人民邮电出版社,2013.
[2] 贾华,朱高建,王臣,赵凤鸣.Modbus/TCP协议在抛光粉生产监控系统的应用[J].仪表技术与传感器,2012(11):98-100.
[3] 冯梅琳,周贤娟,王军.基于LabVIEW与ADAM模块的真空树脂灌封监控系统[J].化工自动化及仪表,2014,41(12):1417-1420.
[4] 王华忠. 工业控制系统及应用SCADA系统篇[M].清华大学出版社,2018.