在这里使用了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使用示例相关推荐

  1. 新手入门电脑和S7 200Smart PLC 的自由口通信

    随着Smart系列的推广,CN系列的CPU渐渐越来越少,越来越贵. 今天便入手一个smart系列的PLC. 具体型号: CPU SR60 通信口有:1个485端口(即端口0),1个网口 一.通信连接 ...

  2. 西门子s7 200smart与力士乐VFC3610变频器通讯

    西门子s7 200smart与力士乐VFC3610变频器通讯原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展. ...

  3. 西门子s7 200smart与3台英威腾GD变频器通讯实战程序

    西门子s7 200smart与3台英威腾GD变频器通讯实战程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展 ...

  4. 西门子s7 200smart与英威腾GD系列变频器通讯程序 原创可直接用于生产的程序

    西门子s7 200smart与英威腾GD系列变频器通讯程序 原创可直接用于生产的程序,程序带注释,并附送触摸屏程序,有接线方式和设置,通讯地址说明等. 程序采用轮询,可以后续根据要求适当修改后扩展. ...

  5. 西门子s7 200smart与台达变频器485通讯 触摸屏与plc以太网通讯,PLC与变频器通讯485口相连

    西门子s7 200smart与台达变频器485通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网),中 ...

  6. 西门子s7 200smart与台达VFD M变频器通讯 触摸屏与plc以太网通讯,PLC与变频器通讯485口相连

    西门子s7 200smart与台达VFD M变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网) ...

  7. 西门子s7 200smart与台达伺服电机 运动控制的学习,目标:用触摸屏和西门子smart 控制

    西门子s7 200smart与台达伺服电机 运动控制的学习,目标:用触摸屏和西门子smart 控制 器件:西门子s7 200 smart PLC,台达伺服电机,昆仑通态触摸屏(带以太网),中途可以加路 ...

  8. 西门子s7 200smart与台达变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯

    西门子s7 200smart与台达变频器通讯 目标:用触摸屏和西门子smart 控制变频器通讯 器件:西门子s7 200 smart PLC,台达VFD-M变频器,昆仑通态触摸屏(带以太网),中途可以 ...

  9. 西门子s7 200smart与台达DTA温控modbus通讯

    西门子s7 200smart与台达DTA温控modbus通讯 功能:采用西门子s7 200smart ST20的PLC,对台达DTA系列温控器进行modbus通讯控制,通过昆仑通态触摸屏实现温度设定, ...

  10. 西门子S7 200smart与欧姆龙E5cc温控器通讯程序

    西门子S7 200smart与欧姆龙E5cc温控器通讯程序 功能:通过西门子s7 200smart与欧姆龙e5cc温控器modbus通讯,实现目标温度设定,实际温度读取,设定报警类型,报警值,报警值上 ...

最新文章

  1. android pjsip 2.5编译,在Android中构建PJSiP时出错
  2. 数据分析模块pandas
  3. Swagger UI
  4. SQL语句where,Group By,having order by 的详细使用方法
  5. oracle 表空间维护
  6. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
  7. Ubuntu12下安装redis(多图版)+ Jedis连接Redis
  8. python创建字符串数组_如何创建任意长度字符串的numpy数组?
  9. Python面向对象学习 1 (什么是面向对象,面向对象的应用场景,待更新)
  10. 高并发下如何保证数据的一致性
  11. ASP.Net学习笔记004--基于ashx方式的ASP.Net开发1
  12. MYSQL正在使用select发现现场记录方法,包括一个逗号分隔的字符串
  13. java与python比较之单引号 双引号用法
  14. 不要轻易在简历上写我热爱编程,我热爱学习—兄弟连IT教育
  15. gba模拟器ios_苹果手机iphone安装GBA游戏模拟器教程
  16. [译]连接池和 Timeout expired异常
  17. 【科普】气垫船是如何浮在水面上行驶的
  18. 循环体中continue、break语句的使用
  19. 用vs2015和qt5实现飞舞的蝴蝶
  20. python小白之路:第一章 初识python

热门文章

  1. day 6(时间命令、用户和组、密码破解)
  2. 理解lvalue和rvalue
  3. virsh 虚拟机内存不够用啦!!!磁盘扩容
  4. sublime快捷键:快速查找函数和快速匹配括号
  5. 水晶报表公式的典型用途示例汇总
  6. java为什么要实例化?实例化的对象和引用...
  7. vue 获取当前元素的父元素_vue获取dom元素内容
  8. MySQL增删改查的常用语句汇总
  9. 一起学AI:核心基础概念
  10. dll修复都有哪些方法?详细解析各种dll修复方法