EPICS S7-200SMART PLC使用示例
在这里使用了S7-200SMART系列中SR20作为主机和AM03扩张模块,如下图所示:
1) 新建一个目录s7-200smart,并且进入这个目录,用makeBaseApp.pl构建IOC程序架构:
[root@localhost EPICS]# mkdir s7-200smart
[root@localhost EPICS]# cd s7-200smart/
[root@localhost s7-200smart]#
[root@localhost s7-200smart]# makeBaseApp.pl -t ioc s7-200smart
[root@localhost s7-200smart]# makeBaseApp.pl -i -t ioc s7-200smart
Using target architecture linux-x86_64 (only one available)
The following applications are available:s7-200smart
What application should the IOC(s) boot?
The default uses the IOC's name, even if not listed above.
Application name?
[root@localhost s7-200smart]# ls
configure iocBoot Makefile s7-200smartApp
2)更改configure/RELEASE文件的内容,使得程序编译过程中,编译链接程序能够找到所需的库文件:
SUPPORT=/usr/local/EPICS/synApps/support
ASYN=$(SUPPORT)/asynS7NODAVE=/usr/local/EPICS/moudles/s7nodave
# If using the sequencer, point SNCSEQ at its top directory:
#SNCSEQ = $(MODULES)/seq-ver# EPICS_BASE should appear last so earlier modules can override stuff:
EPICS_BASE = /usr/local/EPICS/base# Set RULES here if you want to use build rules from somewhere
# other than EPICS_BASE:
#RULES = $(MODULES)/build-rules# These lines allow developers to override these RELEASE settings
# without having to modify this file directly.
-include $(TOP)/../RELEASE.local
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
-include $(TOP)/configure/RELEASE.local
3) 进入目录/s7-200smart/s7-200smartApp/src,编辑Makefile文件:
TOP=../..include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================#=============================
# Build the IOC applicationPROD_IOC = s7-200smart
# s7-200smart.dbd will be created and installed
DBD += s7-200smart.dbd# s7-200smart.dbd will be made up from these files:
s7-200smart_DBD += base.dbd# Include dbd files from all support applications:
s7-200smart_DBD += asyn.dbd
s7-200smart_DBD += drvAsynIPPort.dbd
s7-200smart_DBD += s7nodave.dbd# Add all the support libraries needed by this IOC
#s7-200smart_LIBS += xxx
s7-200smart_LIBS += asyn
s7-200smart_LIBS += s7nodave# s7-200smart_registerRecordDeviceDriver.cpp derives from s7-200smart.dbd
s7-200smart_SRCS += s7-200smart_registerRecordDeviceDriver.cpp# Build the main IOC entry point on workstation OSs.
s7-200smart_SRCS_DEFAULT += s7-200smartMain.cpp
s7-200smart_SRCS_vxWorks += -nil-# Add support from base/src/vxWorks if needed
#s7-200smart_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary# Finally link to the EPICS Base libraries
s7-200smart_LIBS += $(EPICS_BASE_IOC_LIBS)#===========================include $(TOP)/configure/RULES
4) 进入s7-200smartApp/Db/目录,并且新建一个名为aiRecord.db的文件:
record(ai, "$(P):AnalogInput")
{field(SCAN, "I/O Intr")field(DTYP, "s7nodave")field(INP, "@$(PORT)(DLV=0, DHV=10000) IW66")field(LINR, "LINEAR")field(EGUL, "0")field(EGUF, "10")field(EGU, "V")
}record(longout, "$(P):UInt32Out")
{field(SCAN, "Passive")field(DTYP, "s7nodave")field(EGUL, "0")field(EGUF, "10000")field(OUT, "@$(PORT) IW66")
}
# 读取一路模拟量输入
record(ai, "$(P):VoltageIn")
{field(SCAN, "I/O Intr")field(DTYP, "s7nodave")field(INP, "@$(PORT) QD10 float")
}# 设置一路模拟量输出
record(ao, "$(P):VoltageOut")
{field(DTYP, "s7nodave")field(OUT, "@$(PORT) ID10 float")
}
编辑相同目录下的Makefile:
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE#----------------------------------------------------
# Create and install (or just install) into <top>/db
# databases, templates, substitutions like this
DB += aiRead.db#----------------------------------------------------
# If <anyname>.db template is not named <anyname>*.template add
# <anyname>_template = <templatename>include $(TOP)/configure/RULES
5) 后退到这个IOC的顶层目录执行,make命令:
[root@localhost s7-200smart]# make
make -C ./configure install
make[1]: Entering directory `/usr/local/EPICS/s7-200smart/configure'
...
make[1]: Leaving directory `/usr/local/EPICS/s7-200smart/iocBoot'
6) 进入iocBoot/iocs7-200smart/目录,编译st.cmd文件:
#!../../bin/linux-x86_64/s7-200smart#- You may have to change s7-200smart to something else
#- everywhere it appears in this file< envPathscd "${TOP}"## Register all support components
dbLoadDatabase "dbd/s7-200smart.dbd"
s7_200smart_registerRecordDeviceDriver pdbbases7nodaveConfigureIsoTcpPort("s7-200smart", "192.168.3.83:102", 0, 1, 0)
s7nodaveConfigurePollGroup("s7-200smart", "1s", 1.0, 0)
s7nodaveConfigurePollGroup("s7-200smart", "default", 0.5, 0)## Load record instances
dbLoadRecords("db/aiRead.db","P=S7-200SMART,PORT=s7-200smart")cd "${TOP}/iocBoot/${IOC}"iocInit
7) 用以下命令启动这个程序:
[root@localhost iocs7-200smart]# ../../bin/linux-x86_64/s7-200smart st.cmd
8) 查看这个IOC下加载的记录:
epics> dbl
S7-200SMART:UInt32Out
S7-200SMART:AnalogInput
S7-200SMART:VoltageIn
S7-200SMART:VoltageOut
9) 用通道命令,将一个数值写用longout记录到PLC的输入映像位置:IW66,然后用ai记录将输入映像位置IW66,读出,并且进行线性转换;用ai记录读取PLC中模拟量转换后的浮点值,用ao记录将一个浮点数值写入输出模拟量所要转换的浮点数:
[blctrl@main-machine damaiaoApp]$ caget S7-200SMART:AnalogInput
S7-200SMART:AnalogInput 0
[blctrl@main-machine damaiaoApp]$ caput S7-200SMART:UInt32Out 100
Old : S7-200SMART:UInt32Out 0
New : S7-200SMART:UInt32Out 100
[blctrl@main-machine damaiaoApp]$ caget S7-200SMART:AnalogInput
S7-200SMART:AnalogInput 0.1
[blctrl@main-machine damaiaoApp]$ caput S7-200SMART:UInt32Out 5555
Old : S7-200SMART:UInt32Out 100
New : S7-200SMART:UInt32Out 5555
[blctrl@main-machine damaiaoApp]$ caget S7-200SMART:AnalogInput
S7-200SMART:AnalogInput 5.555
[blctrl@main-machine ~]$ caput S7-200SMART:VoltageOut 2.55
Old : S7-200SMART:VoltageOut 0
New : S7-200SMART:VoltageOut 2.55
[blctrl@main-machine ~]$ camonitor S7-200SMART:VoltageIn
S7-200SMART:VoltageIn 2023-03-09 14:10:55.370152 1.28834
S7-200SMART:VoltageIn 2023-03-09 14:10:56.321801 1.28979
S7-200SMART:VoltageIn 2023-03-09 14:10:58.319010 1.28942
S7-200SMART:VoltageIn 2023-03-09 14:10:59.366981 2.0298
S7-200SMART:VoltageIn 2023-03-09 14:11:00.317474 6.57335
S7-200SMART:VoltageIn 2023-03-09 14:11:01.365179 8.28631
S7-200SMART:VoltageIn 2023-03-09 14:11:02.315698 8.2874
S7-200SMART:VoltageIn 2023-03-09 14:11:03.362613 8.28885
S7-200SMART:VoltageIn 2023-03-09 14:11:06.312394 8.28921
在AM03的模拟量输入端,接入一个-10V到10V的值,S7-200SMART:AnalogInput就能读入这个模拟量值,将一个-10~10之间的浮点数设置到S7-200SMART:VoltageOut中,用电压表测试AM03的模拟量输出端,就能够测量出对应的电压值。
注释:
在此次实验中,设置了AM03扩展模块中模拟量输入范围为-10V ~ 10V,设置模拟量输出的范围也是-10V ~ 10V。
一个用于读取和设置模拟量简单的图形用户界面:
以下是一个CSS制作的smart 200的数字量输入/输出,以及寄存器的操作界面:
EPICS S7-200SMART PLC使用示例相关推荐
- 新手入门电脑和S7 200Smart PLC 的自由口通信
随着Smart系列的推广,CN系列的CPU渐渐越来越少,越来越贵. 今天便入手一个smart系列的PLC. 具体型号: CPU SR60 通信口有:1个485端口(即端口0),1个网口 一.通信连接 ...
- 西门子s7 200smart与力士乐VFC3610变频器通讯
西门子s7 200smart与力士乐VFC3610变频器通讯原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展. ...
- 西门子s7 200smart与3台英威腾GD变频器通讯实战程序
西门子s7 200smart与3台英威腾GD变频器通讯实战程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展 ...
- 西门子s7 200smart与英威腾GD系列变频器通讯程序 原创可直接用于生产的程序
西门子s7 200smart与英威腾GD系列变频器通讯程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展. ...
- 西门子s7 200smart与台达变频器485通讯 触摸屏与plc以太网通讯,PLC与变频器通讯485口相连
西门子s7 200smart与台达变频器485通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网),中 ...
- 西门子s7 200smart与台达VFD M变频器通讯 触摸屏与plc以太网通讯,PLC与变频器通讯485口相连
西门子s7 200smart与台达VFD M变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网) ...
- 西门子s7 200smart与台达伺服电机 运动控制的学习,目标:用触摸屏和西门子smart 控制
西门子s7 200smart与台达伺服电机 运动控制的学习,目标:用触摸屏和西门子smart 控制 器件:西门子s7 200 smart PLC,台达伺服电机,昆仑通态触摸屏(带以太网),中途可以加路 ...
- 西门子s7 200smart与台达变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯
西门子s7 200smart与台达变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网),中途可以 ...
- 西门子s7 200smart与台达DTA温控modbus通讯
西门子s7 200smart与台达DTA温控modbus通讯 功能:采用西门子s7 200smart ST20的PLC,对台达DTA系列温控器进行modbus通讯控制,通过昆仑通态触摸屏实现温度设定, ...
- 西门子S7 200smart与欧姆龙E5cc温控器通讯程序
西门子S7 200smart与欧姆龙E5cc温控器通讯程序 功能:通过西门子s7 200smart与欧姆龙e5cc温控器modbus通讯,实现目标温度设定,实际温度读取,设定报警类型,报警值,报警值上 ...
最新文章
- android pjsip 2.5编译,在Android中构建PJSiP时出错
- 数据分析模块pandas
- Swagger UI
- SQL语句where,Group By,having order by 的详细使用方法
- oracle 表空间维护
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
- Ubuntu12下安装redis(多图版)+ Jedis连接Redis
- python创建字符串数组_如何创建任意长度字符串的numpy数组?
- Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)
- 高并发下如何保证数据的一致性
- ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1
- MYSQL正在使用select发现现场记录方法,包括一个逗号分隔的字符串
- java与python比较之单引号 双引号用法
- 不要轻易在简历上写我热爱编程,我热爱学习—兄弟连IT教育
- gba模拟器ios_苹果手机iphone安装GBA游戏模拟器教程
- [译]连接池和 Timeout expired异常
- 【科普】气垫船是如何浮在水面上行驶的
- 循环体中continue、break语句的使用
- 用vs2015和qt5实现飞舞的蝴蝶
- python小白之路:第一章 初识python