1, 功能描述
主要解决CPU1200,CPU1500系列串口卡作为Modbus RTU master通讯的多命令轮询问题,同时支持串口卡的冷冗余。
支持以下Modbus 命令
01 读取开关量DO信息
02 读取开关量DI信息
03 读取模拟量AI信息
04 读取内部寄存器HR信息
05 写单个DO信息
06 写单个HR信息
15 写多个DO信息
16 写多个HR信息
2, 版本区分
驱动程序分为两个版本,功能和使用方法完全相同。
1)1500版本,适用西门子1500系列CPU和ET200SP系列CPU的集成PN端口
MODRTU_1500_PtP_Portal_V44_20210309_pub.al15,驱动程序名称,存放在Lib_1500_MODRTU目录下,下载时请注意。适用博图(Portal) V15及以后版本
注意其中使用到的标准块的版本:
PtP Communication V3.1
Send_P2P V3.0
Receive_P2P V2.0
Receive_Reset V1.2
Get_IM_DATA V1.3
2)1200版本,适用西门子1200系列CPU的集成PN端口
MODRTU_1200_PtP_Portal_V44_20210309_pub.al15,驱动程序名称,存放在Lib_1200_MODRTU目录下,下载时请注意。适用博图(Portal) V15及以后版本
注意其中使用到的标准块的版本:
PtP Communication V3.1
Send_P2P V3.0
Receive_P2P V2.0
Receive_Reset V1.2
Get_IM_DATA V1.3
VB配置界面版本,用于配置Modbus命令,生成DB块
ModbusRTU_Portal_V4.0.exe 通用配置版本
3, 文件提供形式
库文件(例)
VB配置界面
授权EXCEL文件(例)
4, 使用方法
4.1 新的程序
配置系统硬件,根据实际硬件信息配置
本文档支持的CPU包括 S7-1200,S7-1500,S7-ET200SP所有CPU及对应的串口卡
4.2 配置通讯条件
在端口组态页面:将端口配置为485接口,根据从站情况配置通讯条件,默认9600,N,8,1
4.3 记下通讯卡的硬件标识地址
(一般这个地址也会是一个全局的变量,系统自动编号)
我们配置后的地址是269
4.4 设置完成编译程序,完成硬件组态,并下载硬件组态。
4.5 打开库文件
在编程界面,打开库目录
使用打开库按钮,找到对应的库文件打开
4.6 将以上的文件拖动到程序中,并在OB1中调用这个块
3.7 配置程序
LADDR 第一个串口卡的 硬件地址,可以通过”Local~CM_****”方式直接选用
LADDR2 第二个串口卡的 硬件地址,可以通过”Local~CM_****”方式直接选用,如果需要使用modbus串口冗余,则需要填写这个信息,否则可以直接空着
Redn_EN 冗余功能开放信号,0=不开放(默认),1=开放
Switch_NUM 开启冗余功能时,当前运行的设备出错次数达到这个值,则切换
BLKTYPE 开发者标识 必须为 ‘J’ (大写)
LIN 功能块授权号,通过购买获得
SysCycTime 两条命令之间的循环等待时间,默认500ms,可以自由设定,建议不小于20ms
STRT_SEQ 程序块启动信号,true=正常工作,False=停止工作
WORK_DB VB配置界中,“工作数据块”的实际数值
LIN_TYPE 软件授权方式,0=与串口卡绑定,1=与CPU绑定
CPUADDR CPU的硬件标识符,一般通过直接配置系统默认变量Local即可,软件授权与CPU绑定时使用
LINSTR1 软件授权码,8位字母和数字混合的字符串
如果LIN_TYPE=0,则此位为LADDR配置的串口卡对应的授权信息
如果LIN_TYPE=1,则此位为CPU对应的授权信息
LINSTR2 软件授权码,8位字母和数字混合的字符串,此位为LADDR2配置的串口卡对应的授权信息
QERR 0=正常 1=故障
QErr_val 故障代码,故障码意义及处理方法,请参见文档
<modbus驱动常见错误和解决方法[ span].pdf="">
QRunSeq 当前的循环命令号
5, Modbus命令的配置
5.1 运行文件ModbusRTU_Portal_V4.0.exe
以下看到的图片可能存在版本错误,请以下载到的最新文档为准
如果没法运行,请安装VB6,简易的或者完整的都可以。
5.2 主界面上部的各DB块,注意不要重复及和原程序中冲突
从站地址 总线上modbus的从站地址
Modbus命令 根据需要选择适合的命令
07 读取开关量DO信息
08 读取开关量DI信息
09 读取模拟量AI信息
10 读取内部寄存器HR信息
11 写单个DO信息
12 写单个HR信息
15 写多个DO信息
16 写多个HR信息
起始地址,需要读取的数据的开始位 去掉最高位,例 40001,填写 1;40016 填写16
数据个数:需要读取的数据数量,开关量最大800个,模拟量最大50个
超时时间:此时间为当没有从站时,系统的看门狗时间,单位是ms,默认500,如果出现无法读取到某个站的情况,可以适当放大这个值,比如3000
写命令模式 ,常写 每次都会把设定值写到从站去
仅改变时 需要写的数据出现改变,才将数据写到从站去
添加 依次添加命令
修改 将当前设置的参数替换被选中的行
删除 可以删除被选中的行的数据
复位 删除所有已经配置的命令
生成SCL 将所有命令转换成DB块中的配置
导出配置 可以将当前的配置到处成文件
导入配置 将以前的配置导入,进行修改
5.4 生成命令,并存为SCL文件
点击浏览按钮,选择文件地址和文件名称
点击 保存为SCL文件,将命令信息保存到指定地址
5.5 生成的SCL,默认会在VB程序目录下,生成CreateDB.SCL文件
6, 将配置导入程序
在外部源文件目录下,双击添加新的外部源文件
找到刚才生成的SCL文件
看到我们新的文件已经导入
右键点击这个文件,选择从源生成块
可以看到,我们需要的块已经生成了
DB 20 工作数据块
DB21 读命令数据块,如果配置了读取命令,则此块生成,否则不生成
DB22 写命令数据块,如果配置了写命令,则此块生成,否则不生成
DB23 写命令比较块,如果配置了写命令,则此块生成,否则不生成
DB24 数据存储数据块
注意:这一步很重要,需要把我们生成的所有DB块的“优化的块访问”选项去掉
右键点击DB块,选择“属性”,在常规à属性下
7, 确认下功能块上的 Work_DB 设置的参数与VB程序中工作数据块配置的数值是否一致
8, 编译所有的软硬件,并下载到PLC中
无错误情况下编译完成。
9, 以下信息很重要,请仔细阅读和理解
9.1 写命令数据块
注意:如果你没有配置写命令,则这个数据块将不会产生
根据你的命令条数,在对应的命令的DATA_?? 位置,修改你的数据,就可以被写入到从站去。
注意:不要修改其他位置的数据,否则会引起程序错误。如果修改了,则可以使用SCL文件从新生成的方法,再次生成这些数据。
特别注意:写命令 05
在对应位输入16#FF00 表示置1,16#0000 表示置0
9.2 数据存储数据块
返回每一条命令的信息
第一个字,返回这条命令的执行情况。
命令故障信息,
0 -------- OK
1 -------- No response
2 -------- The station id error
3 -------- The return command error
4 -------- CRC error
如果是读命令,则后续跟着的是所有读取到的数据
如果是写命令,则只有第0位的命令状态,没有返回信息
感谢关注 “地心客工作室” 公众号,获得更多资讯