电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

西门子PLC的“ModbusRTU通讯”和“轮询”

2021-08-17 03:10分类:三菱PLC 阅读:

  Modbus是plc运用中常见的通信方式,轮循是在开展一个控制板联接好几个从站的通信时常见的程序编写方式,因为ST语言表达在数据处理方法上的优点,此方式 越来越更加简易。下边以西门子PLCS7 1214C PLC的ModbusRTU通信为例子,呈现ST语言表达下的modbus通信和轮循。
硬件配置联接
要提前准备的硬件配置和手机软件:
1.西门子PLCplc 1214C;
2.通信板CB1241;
3.USB转RS485转化器;
4.Modscan2/Modsim32电脑模拟手机软件仿真模拟主/从站,
5.SPU(serial port Utility),监控通信报文格式。
PLC做为主网,应用手机软件Modsim32仿真模拟从站,应用两铜芯电缆(最好带屏蔽双绞线)开展联接:


硬件配置联接
将通信板的AB两边与转化器的AB两边开展联接,要留意AB两边区别正负,接反不容易烧毁机器设备,可是没法一切正常通信。
程序编写
1.机器设备组态软件
在博图软件中配备西门子PLCPLC和通信板。modbus通信必须设定串口波特率、数据位、终止位和校验位等通信主要参数,在博图中的机器设备组态软件中设定此参数,主从关系站设定一致就可以通信。


通信主要参数
设定串口波特率9600,数据位8位,终止位1位,无校检,在PLC离线模式下下载硬件配置组态软件。


免费下载组态软件信息内容
2.启用modbus功能块
西门子PLC的通信一般都必须启用系统软件功能块,在“命令”-“通讯”-“通讯CPU”下能够寻找modbus通信功能块:


通信功能块
能够见到这儿给予两个modbus通信控制模块,这两个都能够应用(暂不清楚实际的差别),文中采用的是下边的版本号较低的控制模块。
新创建汇编程序,将配备控制模块MB_COMM_LOAD和主网控制模块MB_MASTER拖进程序流程中:


启用功能块
功能块启用后要对必需的脚位开展取值,每个脚位的作用能够按F1查询,创建一个DB数据信息块,申明一些自变量联网控制块的脚位:


申明自变量
上边申明了2个容积为5的字二维数组,用以数据信息的推送和接纳,这一容积能够依据要求随意设定。随后将这写自变量载入控制模块脚位:


控制模块取值
配备控制模块MB_COMM_LOAD的开启REQ只必须在联接时开启一次啊,因而立即将系统软件内嵌的自变量“firstscan”载入就可以,通电后实行一次。
因为通信的读和写都由主网控制模块MB_MASTER进行,因而大家对这一控制模块开展2次取值,第一次完成读的作用,由modbus详细地址40100逐渐,读五个数据信息,载入"ModbusData".Read_Data中;第二次完成写的作用,将"ModbusData".Sent_Data中的数据信息载入由modbus详细地址40110逐渐的五个数据信息中。
程序流程写到这儿早已能够开展通信了,假如要想线上试验一下,能够将自变量载入监管表,手动式开启读写能力开启脚位自变量,观查控制模块的輸出情况,这儿也不演试了。
3.撰写轮循程序流程
说白了轮循便是先后了解,假定大家有3个机器设备做为modbus从站,从站详细地址(站号)先后为1,2,3,应用case句子先后对这3个机器设备开展存取数据,而读取和载入的数据信息各自存进3套不一样的自变量之中。


创建机器设备自变量
应用一个建筑结构来叙述一个机器设备的全部信息内容,包含五个状态字(states:Array[0..4] of Word)和五个操纵字(ctrl:Array[0..4] of Word),将建筑结构申明为总数为3的二维数组,储放3个机器设备的数据信息。
在全部循环系统逐渐前,设置起止机器设备详细地址,随后依照“读实际操作开启,读取数据,读机器设备详细地址 1,延迟,写数据信息,写实际操作开启,写机器设备详细地址 1,延迟”的次序不断循环系统,依照机器设备详细地址号挑选上边的建筑结构自变量:


读实际操作
iStep=0时,关掉读写能力开启,设置读写能力机器设备详细地址为1;
iStep=10时,读实际操作开启,控制模块传出读取数据指令,控制模块置位busy数据信号;
iStep=十一点左右,等候读实际操作进行,控制模块读到机器设备数据信息之后置位done信号,校准busy数据信号,依据数据信号情况将看到的数据信息(Read_Data)载入机器设备算法设计体(DeviceData.states),假如机器设备详细地址=1,则载入DeviceData[1].states,机器设备详细地址转变,写入的结构体也会相对应的转变,确保不一样机器设备的数据信息不容易相互之间干预。这儿加一个分辨,一段时间读不上数据信息回到10流程再次开展读实际操作。
iStep=12时,用记数的方法做一个简易的延迟作用,防止因读写能力頻率太快造成 机器设备反映不回来。


写实际操作
向机器设备载入信息内容,在载入实际操作开启前要先将相对应机器设备建筑结构中的数据信息(DeviceData.ctrl)载入传送数据缓存文件区(Sent_Data),随后再开展写实际操作,与读实际操作相近,载入进行后机器设备详细地址 1,自动跳转下一流程。
运作程序流程
将程序流程编译程序载入后重新启动PLC,能够见到通信板的显示灯早已逐渐闪动,而轮循流程iStep自始至终在10,1一两步,证实读取数据指令早已传出,可是沒有接纳到机器设备的意见反馈,自始至终在开展第一个机器设备的读实际操作。


尽管可以见到通信灯在闪,但大家依然不可以形象化的见到这一互联网中的情况,它是就必须前边提及的SPU手机软件,监控串口通信互联网中的报文格式。


监控报文格式
设置端口,挑选Hex数据类型,点一下逐渐,能够见到当今互联网中全部报文格式,依据modbus协议书的规格型号(能够自主百度搜索),能够分辨这种报文格式便是plc传出的读指令。
要想读到数据信息务必要有从站,大家应用modsim软件模拟3个从站:


modsim
将3个仿真模拟从站详细地址各自设成1,2,3,起止modbus详细地址与程序流程设为一致:40100,长短设成20,那样读写能力详细地址都能见到。点一下connection设置通信主要参数(串口波特率,数据位,终止位,校验位与程序流程中设为一致)。点一下明确后能后见到通信板和转化器的接纳推送显示灯逐渐闪动,程序流程中的机器设备详细地址也在1-3中循环系统转变:


通信显示灯
因为动态图的帧数选的较低,会跳开好多个灯的情况。。。


转变的机器设备详细地址
监看程序流程中机器设备详细地址,可以见到详细地址在1-3中间循环系统转变。遗憾的是modsim与SPU不可以同用一个串口通信,看不见modsim意见反馈的报文格式了。
下面我们在modsim中更改好多个详细地址的值,看一下PLC的机器设备算法设计体里能不能开展相对应的转变,将机器设备1的数据信息设置为:
40100设定为110,
40101设定为111,
40102设定为112,
40103设定为113,
40104设定为114,


设置数据信息
数据信息设置后在PLC的DB块中监控DeviceData的值:


获取数据
能够见到DeviceData[1].states的值早已转变(16进制),而DeviceData[2]和DeviceData[3]并沒有转变。
下边开展写数据信息的认证,在程序流程里将DeviceData[2].ctrl随意取值,随后再modsim中查询:


载入数据信息取值


载入取得成功
能够见到modsim 3中相对应详细地址的数据信息也早已转变,而别的仿真模拟机器设备中并沒有更改。
别的
在具体的新项目中,比如变频调速器操纵,通信主要参数和数据信息详细地址一般全是机器设备(从站)要求好的,大家必须查看机器设备指南,在程序流程中做相对应的设定就可以,根据通信获得的数据信息能够有触摸显示屏表明出去,便捷实际操作工作人员监控系统情况,还可以做一写分辨,用以机器设备的警报等解决。

上一篇:三菱plc编程用什么语言比较好?三菱编程语言的特点

下一篇:列举三菱PLC编程软件GX Works2的几个坑爹BUG

相关推荐

电工推荐

    电工技术基础_电工基础知识_电工之家-电工学习网
返回顶部