1200PLC与第三方设备MODBUS TCP通讯,通讯不上是什么问题
西门子S7-1200紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。1.控制系统原理2.硬件需求S7-1200PLC目前有3种类型的CPU:1)S7-1211CCPU。2)S7-1212CCPU。3)S7-1214CCPU。这三种类型的CPU都可以连接三个串口通信模版。本例中使用的PLC硬件为:1)PM1207电源(6EP1332-1SH71)2)S7-1214C(6ES7214-1BE30-0XB0)3)CM1241RS232(6ES7241-1AH30-0XB0)3.软件需求1)编程软件Step7BasicV10.5(6ES7822-0AA0-0YA0)4.组态我们通过下述的实际操作来介绍如何在Step7BasicV10.5中组态S7-1214C和超级终端通信。点击桌面上的“TotallyIntegratedAutomationPortalV10”图标,打开如下图:首先需要选择“Createnewproject”选项,然后在“Projectname:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。创建后的窗口如下图所示:点击门户视图左下角的“ProjectView”切换到项目视图下,如下图:打开后,在“Devices”标签下,点击“Addnewdevice”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。选择后如下图:插入CPU后,点击CPU左边的空槽,在右边的“Catalog”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口,在属性窗口里有两个选项,一个是“general”;一个是“RS232interface”。在“General”里包括了此模块的“项目信息”和“订货信息”;而在“RS232interface”里包括“项目信息”、“端口的配置”、“发送信息的配置”、“接收信息的配置”和“硬件识别号”。在这里我们选择“RS232interface”,在“端口”配置的选项里,进行端口的参数配置,波特率为:9600;校验方式:无;数据位为:8;停止位:1;硬件流控制:无;等待时间:1ms设置参数如下图:此时确认一下“硬件识别号”为11。此时,完成了硬件的组态,接下来需要编写串口通讯程序,在这里我们实现两个功能:一、S7-1200发送数据给超级终端;二、超级终端发送数据给S7-1200对于第一个功能:S7-1200发送数据给超级终端,实际上是S7-1200是数据的发送方,超级终端是数据的接收方,对于S7-1200需要编写发送程序;而对于超级终端来说,只要打开超级终端程序,配置硬件接口参数与前面S7-1200的端口参数一只即可。下面的步骤将具体介绍此功能实现的步骤:①、在PLC中编写发送程序。在项目管理视图下双击“Device”下的程序块下的Main(OB1),打开OB1,在主程序中调用SEND_PTP功能块如下图所示:(注:SEND_PTP在指令库下的扩展指令中通讯指令下)要对SEND_PTP赋值参数,首先需要创建SEND_PTP的背景数据块和发送缓冲数据块,双击“Devices”——“PLC_1”——“ProgramBlock”——“Addnewblock”,在弹出的串口命名DB_Send_PTP,选择DB块,在Type后选择“SEND_PTP(SFB113)”插入背景DB后,再插入发送缓冲DB块,重复上面的步骤,只是在选择DB类型为“GlobalDB”,并去掉“Symbolicaccessonly”选项勾(这样可以对该DB块进行直接地址访问),并取名该DB块为DB_SEND_BUFF。建好这两个DB块后,双击打开DB_SEND_BUFF预先定义好要发送的数据,如下图所示:
西门子plc200与modbus通信。plc做从站,寄存器里的数值上位机怎么读取,地址映射怎么做
s7 200有modbus从站库,看看他的帮助文件就知道了
MBUS_INIT指令被用于启用和初始化或禁止Modbus通讯。在使用MBUS_SLAVE指令之前,必须正确执行MBUS_INIT指令。指令完成后立即设定"完成"位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。应当在每次通讯状态改变时执行MBUS_INIT指令。因此,EN输入应当通过一个边缘检测元素用脉冲打开,或者仅在首次扫描时执行。"模式"输入数值选择通讯协议:输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0则将端口0指定给PPI,并禁用Modbus协议。"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。"地址"参数将地址设为1和247之间(包括1和247)的数值。
"奇偶校验"参数被设为与Modbus主设备奇偶校验相匹配。可接受的数值为:
0-无奇偶校验
1-奇数校验
2-偶数校验
"延时"参数通过将指定的毫秒数增加至标准Modbus信息超时的方法延长标准Modbus信息结束超时条件。该参数的典型数值在有线网络上应为0。如果您在使用带有纠错功能的调制解调器,将延时设为50至100毫秒的数值。如果您在使用扩展频谱无线电,将延时设为10至100毫秒的数值。"延时"数值可以是0至32767毫秒。
MaxIQ参数将供Modbus地址0xxxx和1xxxx使用的I和Q点数设为0至128之间的数值。数值0禁止所有向输入和输出的读取。建议使用的MaxIQ数值是128,该数值可在S7-200
中存取所有的I和Q点。
MaxAI参数将供Modbus地址3xxxx使用的字输入(AI)寄存器数目设为0至32之间的数值。数值0禁止模拟输入的读数。建议使用的MaxAI数值如下,这些数值可允许存取所有的
S7-200模拟输入:
0用于CPU 221
16用于CPU 222
32用于CPU 224、224XP、226和226XM
MaxHold参数设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。例如,为了允许主设备存取2000个字节的V存储器,将MaxHold设为1000个字的数值(保持寄存器)。
HoldStart参数是V存储器中保持寄存器的起始地址。该数值一般被设为VB0,因此HoldStart参数被设为VB0 (VB0地址)。其它V存储器地址可指定为保持寄存器的起始地址,以便在项目的其它地方使用VB0。Modbus主设备可存取V内存MaxHold个字数,从HoldStart开始。
MBUS_INIT指令完成时,"完成"输出打开。"错误"输出字节包含执行指令的结果。请参阅Modbus从站协议执行错误代码中可能因执行指令而产生的错误条件。
程序举例
LAD
STL
NETWORK 1 // 首次扫描时初始化Modbus从站协议
// 将从站地址设为1,将端口0设为9600波特,将奇偶校验设为偶数,
// 允许存取所有的I、Q和AI数值,允许存取1000台保存寄存器(2000个字节)
// 从VB0开始。
LD SM0.1
CALL MBUS_INIT, 1, 1, 9600, 2, +0, +128, +32, +1000, VB0, M0.1, MB1
NETWORK 2
// 每次扫描时执行Modbus从站协议
LD SM0.0
CALL MBUS_SLAVE, M0.2, MB2
Modbus 从站寻址
返回顶端
Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能。Modbus从站指令支持下列地址:
00001至00128是映射至Q0.0 - Q15.7的离散输出
10001至10128是映射至I0.0 - I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器
40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。
Modbus地址 S7-200地址
00001 Q0.0
00002 Q0.1
00003 Q0.2
... ...
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
... ...
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
... ...
30032 AIW62
40001 Hold Start
40002 HoldStart+2
40003 HoldStart+4
... ...
4xxxx HoldStart+2 x (xxxx-1)
Modbus从站协议允许您限制Modbus主设备可存取的输入、输出、模拟输入和保持寄存器(V存储器)数量。
MBUS_INIT指令的MaxIQ参数指定Modbus主设备允许存取的离散输入或输出(I或Q)的最大数目。
MBUS_INIT指令的MaxAI参数指定Modbus主设备允许存取的输入寄存器(AIW)的最大数目。
MBUS_INIT指令的MaxHold参数指定Modbus主设备允许存取的保持寄存器(V存储器字)的最大数目。
请参阅MBUS_INIT指令说明,了解有关为Modbus从站设定存储器限制的进一步详情。
mbus_ctrl_p1用哪个口
全球抽奖用于S7-200端口0的MBUS_CTRL指令(或用于端口1的MBUS_CTRL_P1指令)可初始化、监视或禁用Modbus通讯。在使用MBUS_MSG指令之前,必须正确执行MBUS_CTRL指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。在每次扫描且EN输入打开时执行该指令。MBUS_CTRL指令必须在每次扫描时(包括首次扫描)被调用,以允许监视随MBUS_MSG指令启动的任何突出消息的进程。除非每次调用MBUS_CTRL,否则Modbus主设备协议将不能正确运行。”模式"输入数值选择通讯协议。输入值1将CPU端口分配给Modbus协议并启用该协议。输入值0将CPU端口分配给PPI系统协议并禁用Modbus协议。"波特"参数将波特率设为1200、2400、4800、9600、19200、38400、57600或115200波特。"奇偶校验"参数被设为与Modbus从站奇偶校验相匹配。所有设置使用一个起始位和一个停止位。可接受的数值为:0-无奇偶校验1、-奇校验2、-偶校验“超时"参数设为等待来自从站应答的毫秒时间数。"超时"数值可以设置的范围为1毫秒到32767毫秒。典型值是1000毫秒(1秒)。"超时"参数应该设置的足够大,以便从站有时间对所选的波特率作出应答。“超时"参数用于确定Modbus从站是否对请求做出应答。"超时"值确定Modbus主设备在发送了请求的最后一个字符后,将要等待多长时间才会有应答的第一个字符。如果在"超时"规定的时间内至少收到应答的一个字符,Modbus主设备将从Modbus从站接收到整个应答。MBUS_CTRL指令完成时,“完成”输出打开。"错误”输出包含执行该指令的结果。下表定义了在执行MBUS_CTRL指令时会产生的错误条件。MBUS_CTRL错误代码说明0无错误1、奇偶校验选择无效2、波特率选择无效3、超时选择无效4、模式选择无效。
西门子plcsmart与仪表modbus通讯怎么写
1、200PLC主站程序第一步初始化,复位modbus库完成位,初始化完成后,启动读写指令m0.1置位
2、网络3,填写从站通讯参数
3、M0.1置位读取从站数据,读取保持寄存器40001-40008 8个数据根据数据格式写入VB1000,如40001 40002为32位浮点数
4、查看bug
5、读取输入寄存器,读取完成M2.2置位,复位M2,.1
6、M2.2置位,写数据开始,VB3000写入00001中,写完成,M2.3置位,开始读,M2.2复位。
s7200modbus通讯报错5怎样设置
调用modbusrtu主站读写子程序mbus_msg:
error
错误代码:
只有在done位为1时,错误代码才有效
0=无错误
1=响应校验错误
2=未用
3=接收超时(从站无响应)
4=请求参数错误(slaveaddress,modbusaddress,count,rw)
5=modbus/自由口未使能
6=modbus正在忙于其它请求
7=响应错误(响应不是请求的操作)
8=响应crc校验和错误
-
101=从站不支持请求的功能
102=从站不支持数据地址
103=从站不支持此种数据类型
104=从站设备故障
105=从站接受了信息,但是响应被延迟
106=从站忙,拒绝了该信息
107=从站拒绝了信息
108=从站存储器奇偶错误
2、常见的错误:
如果多个mbus_msg指令同时使能会造成6号错误;
从站delay参数设的时间过长会造成主站3号错误;
从站掉电或不运行,网络故障都会造成主站3号错误
modbuspoll可以进行两个电脑链接吗
不可以,modbuspoll是仿真调试工具,不提供链接,但是可以用Virtual Serial Port Driver 9.0在一台电脑里创建虚拟机,实现链接的目的
Modbus学习必备的三大神器分别是ModbusPoll、ModbusSlave及VSPD,可以非常方便的进行modbus调试
ModbusPoll软件主要用于仿真Modbus主站或Modbus客户端
ModbusSlave软件主要用于仿真Modbus从站或Modbus服务器
而VSPD全称Configure Virtual Serial Port Driver,是用来给电脑创建虚拟串口使用的。
Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。
Modbus Slave: Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。主要用来模拟Modbus从站设备,接收主站的命令包,回送数据包。帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试,用于模拟、测试、调试Modbus通讯设备。可以32个窗口中模拟多达32个Modbus子设备。与Modbus Poll的用户界面相同,支持功能01, 02, 03, 04, 05, 06, 15, 16, 22和23,监视串口数据。
Virtual Serial Port Driver 9.0 虚拟com端口工具
Virtual Serial Port Driver 9.0使用
Modbus调试需要需要两台电脑联机或者上位机与下位机进行调试。有了这个工具后就可以在一个电脑上虚拟出两个连接的com端口,就可以在一台电脑上进行调试。
安装过程一直点next即可,这里不再阐述,安装完成之后打开软件,主体是下图
我们分成两个部分,左边是虚拟串口的设置,右边是虚拟串口的添加
注意添加虚拟串口时尽量选择较大的COM口,因为较小的COM口可能被电脑的键盘,鼠标,U盘等设备占用,会出现冲突。
我这里选择COM10跟COM11 点击Add virtual pair在左边就可以看到建立的虚拟串口。
在此电脑----右键----管理----设备管理器-端口中查看是否新加了两个端口:
Modbus Poll使用
安装过程一直点next即可,安装完成之后破解一下(输一下密钥,很简单),软件界面如下图所示。
状态框:
Tx = 0表示向主站发送数据帧次数,图中为0次;
Err = 0表示通讯错误次数,图中为0次;
ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;
F = 03表示所使用的Modbus功能码,图中为03功能码;
SR = 1000ms表示发送周期,1S一次。
红字部分,表示当前的错误状态,“No Connection”表示未连接状态。
单击Setup----Read/Write Definition… 或者按F8进行参数设置,会弹出参数设置对话框。
Slave ID为要访问的Modbus从机的地址,
Function 功能码的选择,
Address 为寄存器起始地址,根据功能码的不同,访问地址不同
Quantity:为访问寄存器个数,
Scan Rate为读取数据周期,轮询发送,单位毫秒,
Modbus协议同时规定了二十几种功能码,但是常用的只有8种,用于对存储区的读写,如下表所示:
功能码 功能说明
01H 读取输出线圈
02H 读取输入线圈
03H 读取保持寄存器
04H 读取输入寄存器
05H 写入单线圈
06H 写入单寄存器
0FH 写入多线圈
10H 写入多寄存器
当然我们用的最多的就是03和06 一个是读取数据,一个是修改数据。
关于功能码以及寄存器地址
看这篇讲解原理的文章:
详解Modbus通信协议—清晰易懂
点击Display可以设置数据的显示方式,默认为Signed方式(16进制无符号二进制),数据范围为-32768~32767
点击 Connection - Connect或者按“F3”进行连接
端口主从机分别选择我们虚拟出来的com10和com11端口,其他选项如波特率9600,比特位8,校验位1,无等价位等可以保持不变,然后点击确定进行连接,未连接成功窗口第二行会给出提示信息。
Response Timeout,表示读取超时时间,从站在超时时间内没有返回数据,则认为通讯失败。
Delay Between Polls,每次扫描的最小间隔时间,默认为20ms。
Remote Modbus Server,表示TCP/IP模式时的终端从站设备的网络设置。
IP Address,表示TCP/IP模式时从站IP地址。
Port,表示TCP模式时从站网络端口
Connect Timeout 表示TCP链接超时时间
IPV4/IPV6
0条大神的评论