TIA博途(V19)ModbusTCP仿真
使用工具:TIA博途(V19)与PLCSIM-Advance V6.0(以及测试ModbusTcp的工具Modbus Poll)
安装完TIA博途(V19)与PLCSIM-Advance V6.0后,电脑里应该会出现一个“Siemens PLCSIM Virtual Ethernet Adapter”:
配置一下该网络的ip网段与子网掩码:
打开PLCSIM-Advanced V6.0:
如果只是想仿真一个PLC服务器,就只点选“TCP/IP Single Adapter”(Advanced v6.0与之前V3.0稍微不同的地方估计就是这里了),TCP/IP communication选择“Local(本地)”,之后PLC的名字就以今天的日期命名,IP地址要与刚刚网络中配置的IP地址在同一个网段,PLC型号是1500系列,点击Start即可。
启动TIA博途 V19
创建新项目,随便起个名字,再选择“打开项目视图”:
右键自己的项目名称,点击“属性”,在“保护”栏中,勾选“支持在块编译过程中进行仿真”:
双击“添加新设备”,选择一个1500系列的CPU(1513、1515,1516...都行):
右键刚刚添加的新PLC,点击“属性”,在“常规”栏中,首先选择“保护PLC组态数据”——取消勾选“保护机密的PLC组态数据”,其次选择“访问控制”——点选“完全访问权限”,最后选择“连接机制(注意是父项)”——勾选“允许来自远程对象的PUT/GET通信访问”:
依旧是在PLC“属性”中的“常规”栏里找到“PROFINET接口 [X1]”——将IP地址修改成与PLC-SIM Advanced V6.0中的一样
这个时候就可以点击上方的“下载”按钮,将“PG/PC 接口”选择成“Siemens PLCSIM Virtual Ethemet Adapter”,这里其实点开的话就会自动搜索了,显示“已建立与地址为192.168.1.8的设备连接”、“扫描与信息检索已完成”字样后,“下载”按钮由灰变亮,就可以点击了。
弹出“该PLC不是一个可信任的设备”对话框时,不用管,点击“连接”:
点击“装载”之后,“完成”即可:
这时点击上方“启动CPU”的按钮,可以观察到PLC-SIM Advanced V6.0上黄色灯变为绿色闪烁,3秒后变成绿色长亮,表示PLC的TCP仿真已经成功一半儿了。
双击“程序块”——双击“添加新块”,选择“数据块(DB)”,名字取个带"Conn"字样的就行:
双击打开新建的DB块(应该新建完成后就会自动打开的),名称依旧随便,带个“Conn”字样就行,但是在"数据类型"一格中,需要手动输入“TCON_IP_V4”,回车会自动添加对应的类型:
之后就是配置这个“TCON_IP_V4”数据类型:
由上到下,interfaceId指的是接口的硬件标识符,西门子默认都是64,可以双击“设备组态”——双击PLC上的网口——在“系统常熟”栏中可以查看到对应的interfaceId。
ID默认就是1,如果想弄两个PLC仿真,你就一个1一个2,以此类推,ADDR是一个字节数组,长度为4,是填IP地址的,这里不填,所以任何设备的IP都可以访问;RemotePort是客户端端口,LocalPort是服务器端口,这里仿真的目的是将PLC作为服务器,所以只填写LocalPort就好,一般为502。
在数据块DB中配置好“TCON_IP_V4”数据类型后,点击“编译”按钮,每次在数据块中有数据操作,都需要在所有操作完成后点击“编译”按钮:
双击“Main[OB1]”——在界面右侧找到“通信”栏——在“其他”文件夹内找到“MB_SERVER”,右键点击“插入指令”,或鼠标左键按住拖放到程序段1中:
接下来,配置这个MB_SERVER,实际也就需要在两处“”位置,填写需要的东西,首先在CONNECT处,填写之前在数据块(DB1)中配置好的“TCON_IP_V4”数据类型的名称,至于MB_HOLD_REG,可以是新建的另一个数据块(比如新建个DB2),也可以是一个指针(比如 p# M0.0 BYTE 100)。这里是填数据块还是一个地址指针都不影响后面使用C#读取PLC中的数据。配置完毕后,点击上方“编译”,并“下载到设备”:
点击“启动CPU”,并在“程序块”上方点击“监视”按钮,可以看到MB_SERVER变绿,此时整个TIA博途V19 TCP仿真完成。
之后是验证测试该仿真,启动Modbus Poll
在Connection中将IP地址修改成仿真PLC端口的IP地址,连接方式与端口号,应该都是默认TCP/IP和502的:
连接成功后,此时软件上默认读取的数据即是在MB_HOLD_REG配置的指针指向的数据区域中的数据,可以在博途中的监控表里看该具体数据,双击“监控与强制表”——双击“添加新监控表”,在新的“监控表_1”中,添加一个地址,在西门子PLC中,指针M0.0 BYTE 100指向的数据区域就是MW0的地址,“显示格式”为了方便就改成十进制:
首先依旧点击“监视”按钮,在“修改值”格中输入想输入的数(10086),在“监视值”格中右键“修改”——“立即修改选择”,可以看到此时PLC中MW0的监视值为 10086,而Modbus Poll中,数值也同样跟着改变;同样的,在Modbus Poll中修改数值,在PLC中也能看到数值被成功修改了:
- 本节完。