西门子PCS7系统中使用CP341实现MODBUS-RTU主站通讯的方法
1: 西门子PCS7系统的硬件配置环境,以工程实例介绍
1) PLC为 CPU414-5H 冗余PLC , CP341(使用IM153-2), CP341主站硬件狗 Dongle ( 6ES7 870-1AA0-0YA0 )
2) CP341可以扩展多个,目前最多用到10个CP341,但需要注意将CPU属性中的 Cycle/Clock Memory 中过程映像区的SIZE 由 "768"改为更大,如"1024"
2: 西门子PCS7系统的软件配置环境
1) PCS7 V8.1 西门子PCS7编程组态软件
2) CP PtP Param V5.1 SP14 串行通讯模块驱动程序
3) CP PtP Modbus Master V3.1 SP7 CP341的Modbus主站驱动协议,必须在安装CP PtP Param V5.1 SP14 之后再安装此驱动程序
3: CP341硬件组态
1) 双击打开CP341属性对话框, 点击"Parameters"按钮, 然后选择" Modbus Master ";
2) 双击Protocol , 设置Modbus通讯的波特率,停止位和奇偶校验位, 如图: 参数设置为: 9600, 8-N-1,各个从站必须与此处保持一致;
3) 设置电气接口,选择为半双工2线RS485 , 各个从站的电气接口标准必须与主站一致;
4) 配置完成后保存,并装载,装载时冗余CPU必须都设置为STOP模式.
4: 软件编程
1) 首先需要手动建立发送和接收数据块DB, 打开组件视图,在Blocks中进行建立,比如发送数据块定义为DB51,并定义符号名为:SOURCE_DB (此符号名必须定义),打开数据块后定义Modbus功能码的数据格式,如图中: address 从站地址为1 ,code 功能码为3(读取保持寄存器区如40001/400001),reg_startadr 寄存器起始地址为0,reg_count 读取25个寄存器数据,可按照此顺序定义多个不同从站地址, 不同功能码,不同寄存器。
2)定义接收数据块DB52,符号名为:DESTINATION_DB,用于存放来自从站的不同数据,从站寄存器地址在从站编程时最好将需要与主站通讯的数据规划到连续的寄存器区域,且数据类型最好保持一致,如果地址不连续,或者数据类型不同,那么在此处需要手动建立多个接收地址,如图中receive1定义为数组,包含25个实数类型,而对于地址不连续且数据类型不同的寄存器必须手动建立。
3)区别于STEP7 中的梯形图编程,PCS7中使用CFC进行编程,在工厂视图中,“Device Information”中建立CFC通讯程序"comm",此CFC程序中在OB33使用循环方式轮训各个读取功能块,当数字为1时,执行CFC 图2 中的第一个程序块,为2时,执行图2 中的第二个程序块,依次类推;
CFC 图2中 发送块FB8 (P_SND_RK)中的管脚定义如下图,LADDR 例子中为592,参考第三步CP341硬件组态;DBB_NO例子中第一发送块为0,第二个发送块为6,第三个发送块为12,此处参考DB51定义部分的地址;
CFC 图2中 接收块FB7 (P_RCV_RK)中的管脚定义如下图,LADDR 例子中为592,DB_NO例子中为DB52,DBB_NO例子中第一发送块为0,第二个发送块为100,第三个发送块为158,此处参考DB52定义部分的地址;
5: CP341故障诊断
故障诊断分五种方法:
1) 通过CP341的LED灯进行诊断, SF(红色)已发生错误(如硬件故障,固件错误,主从站之间通讯线断开)或者正在重新分配参数; TXD(绿色)发送数据时亮,RXD(绿色)接收数据时亮;
2) 通过FB7和FB8功能块的STATUS参数进行诊断,具体参数值代表意思参考西门子相关文档;
3) 通过CP341的诊断缓冲区进行诊断;
4) 通过诊断中断指示CP341的故障;
5) 通过串口调试助手监测,进行诊断。
6:注意点:
1)此种使用OB33定时中断的通讯程序存在弊端,会延长通讯时间,可能会造成丢包等现象,需要修改为在OB1中编写通讯程序,并使用FB8 的DONE和ERROR位激活接收请求,然后使用FB7的NDR和ERROR位激活下一个FB8,依次类推直到最后一个FB8,在编写完程序后,可以通过运行组,将默认的OB33中的通讯程序“comm”剪贴到OB1中,如下图:
2)在编写完程序下载到CPU后,如果修改了DB51或者DB52的相关设置,需要对DB进行初始化,否则将无法通讯,步骤如下:
打开DB块---“VIEW”---由“Declaration view” 切换“Data view”---“EDIT”---“Initialize Data Block”, 更改后需要检查当前数据是否为需要的数据,然后下载程序。
3)CP341的通讯只需接15针D型接头的4 和11管脚,不需要短接2和4管脚及9和11管脚。当实际的通信电缆长度大于50米时,要在总线的两端加阻值为330欧姆的终端电阻。确保A、B信号线的正确连接。
4)CP341读取到的数据如果要在画面上显示,除了在DB块中针对单个数据插入小红旗的方式上传到WINCC画面,还可以通过APL库的程序将数据上传到WINCC画面,此种方式生成的面板比较人性化,集成各种报警,高低限,趋势等。
下图为将CP341中数据规格化后上传到WINCC,并生成统一的面板
作者简介
罗永华:工控老男人,有工控行业10年从业经验,毕业后从事汽车制造行业,主要接触CNC加工中心,机器人,流水线等,之后一直从事石油行业,主要做油田数字化通讯,过程自动化等。希望通过剑指工控这个平台和大家一起交流,学习。