一、
双字、字、字节、位之间的关系
在PCS7的CFC中,有一个W_BO和一个DW_BO的功能块,十分方便,直接输入连接的状态字,输出便会列出bit0——bit15的值,这在做DP通讯时经常用过,比如控制变频器,它的状态常常是在一个字取某位,如运行信号、备妥信号等。
在一个老CPU中,也用到DP了通讯,要在一个双字中取某位显示状态,不支持用CFC编程,所以无法傻瓜式的取到了,只能手工指定其中的bit位了。这时竟然字中高字节与低字节的对应关系,自己把自己晕了半天,后来回顾了下,终于搞明白了,看来傻瓜的编程方式是把自己弄得更傻瓜!呵呵
直接上两个图吧,是关于双字、字、字节、位之间的关系的,看看便明白了!
一定要注意高8位与低8位与字的对应关系!
图1:字、字节、位之间的关系
二、
置位和复位指令的用法
设置、复原(N 位)
输入/输出 操作数 数据类型
位 I, Q, M, SM, T, C, V, S, L 布尔
N VB, IB, QB, MB, SMB, SB, LB, AC, 常数, *VD, *AC, *LD 字节
设置(S)和复原(R)指令设置(打开)或复原指定的点数(N),从指定的地址(位)开始。您可以设置和复原1至255个点。如果"复原"指令指定一个定时器位(T)或计数器位(C),指令复原定时器或计数器位,并清除定时器或计数器的当前值。
说白了,置位指令(S)就是往指定的存储区位里写“1”,复位指令(R)就是将指定的存储区位里的“1”写成“0”。一般在程序里置位指令(S)和复位指令(R)成对使用,举个例子:你可以用置位指令(S)将M0.0置“1”,或再用复位指令(R)将M0.0置“0”,然后用它的常开、常闭触点去做控制用途。在一个程序中可以对一个或多个位多次置位和复位,但是在编程时要注意:在一个程序中多次对一个或多个位多次置位和复位后,终这个(或多个)位到底是“1”,是“0”,取决于CPU在一个扫描周期结束时后一个指令是“置位”还是“复位”,以免程序运行时出现错误。
就目前而言,在中国的工控市场上,西门子仍然占了很大的份额,因此对于上位机开发而言,经常会存在需要与西门子PLC进行通信的情况。然后对于西门子PLC来说,通信方式有很多,下面简单列举一下:
(1) S7通信:PLC作为服务器,上位机作为客户端
(2) 开放式TCP通信:PLC作为服务器,上位机作为客户端
(3) 开放式TCP通信:PLC作为客户端,上位机作为服务器
(4) ModbusTCP通信:PLC作为服务器,上位机作为客户端
(5) ModbusTCP通信:PLC作为客户端,上位机作为服务器
(6) ModbusRTU通信:PLC作为主站,上位机作为从站
(7) ModbusRTU通信:PLC作为从站,上位机作为主站
(8) Simatic Net OPCDA通信
(9) Simatic Net OPCUA通信
(10) KepServer OPCDA通信
(11) KepServer OPCUA通信
由于篇幅有限,这次仅以西门子S7通信为例,说明下如何基于S7通信协议实现与西门子PLC之间的通信。
1. PLC软件安装及配置
目前西门子PLC主要使用的软件包括STEP7-MicroWIN SMART、SIMATIC STEP7以及TIA Portal。TIA Portal已经完全兼容STEP 7,因此以后应该是STEP 7-MicroWIN SMART作为小型PLC的编程软件,TIA作为中大型PLC的编程软件,这里主要以博途为例进行说明:
如果大家需要软件的,可以关注左上方公众号,或者搜索微信公众号:dotNet工控上位机,关注后发送关键词:200SMART编程软件即可获取STEP 7-MicroWIN SMART V2.5软件,发送关键词:博图V15即可获取TIA V15.1编程软件。
软件安装完成后,PLC的配置也很简单,如果大家手头没有实际的PLC,也可以通过仿真的方式搭建PLC环境,具体可以参考文章:戳↓
基于S7-PLCSIM Advanced搭建S7通信仿真环境
无论使用何种方式,以下两个地方需要进行配置一下:
PLC配置一:需要将PLC的允许来自远程对象的PUT/GET通信访问勾选。
PLC配置二:对于DB块的访问,需要取消勾选优化访问。
2. 通信平台测试
(1)完成以上配置后,就可以通过自己开发的喜科堂通信测试平台软件进行测试,导航栏中选择西门子PLC,然后输入正确的IP地址,在CPU类型中选择自己的CPU类型:
图表 1新阁通信测试平台
(1)输入完成之后,点击建立连接,建立连接之后,日志栏会有连接成功提示。
(2)在读写测试中,输入相应的变量地址及变量类型,即可实现相关变量的通信读写及测试。
图表 2新阁通信测试平台测试
3. 项目级别应用
通信测试平台仅仅只是用于测试通信是否正常,实现正常的单变量数据读取和写入。但是如果是项目级别开发,还需要有一套更完善的通信架构,这里我采用的是自主开发的上位机通信配置一体化软件(简称CMS配置软件)。
(1)通过PLC设备右击选择西门子PLC,在打开的窗体中设置好相关参数:
设备名称:根据实际情况填写(无特殊字符即可)
设备备注:根据实际情况填写(无特殊字符即可)
IP地址:根据实际PLC的IP地址填写
机架号、插槽号:根据实际PLC的情况填写
PLC类型:根据实际PLC的情况填写
连接超时:PLC连接时的超时时间,默认是2000ms
容错次数:判断连接故障的容错次数,默认为1,即表示某次读取出错,即判断连接故障,根据实际情况可以适当放大
重连周期:通信过程中,出现断线时,重连的周期,默认是5000ms
图表 3创建PLC
(2)在PLC设备下,右击添加通信组,根据需要填写相应的存储区及起始地址及长度:
图表 4添加通信组
(3)通信组下面,根据实际情况配置相应的变量,输入开始地址及变量类型即可,变量地址会自动变换,这里可以输入比例系数及偏移量,用于做线性变换使用:
图表 5添加变量
(4)对于变量配置,左下角会有一个报警归档配置,主要用于配置该变量的报警类型、归档方式及设定限制:
图表 6报警归档配置
(5)完成上述配置后,可以点击保存配置,再点击启动运行,即可实现实时通信:
图表 7实时通信
(6)同时可以通过另存为,存储为一个配置文件的形式,再基于配置dll,可以通过快速方式实现配置解析及通信数据解析,这样整个项目的通信框架即可搭建完成。
4. 整体总结
本文主要针对西门子PLC的通信配置、通信配置及项目应用做了较为详细的描述,希望可以给一些想要去开发西门子PLC项目的同学一些帮助。这样的一套思路同样适用于其他品牌的PLC,我们旨在节约大家开发项目中在通信方面的时间,而将更多的精力投放在项目工艺开发中。