现场设备为S7-300,工控机中使用SimaticNET软件,PLC与工控机之间走的以太网;
目前合作方想使用高级语言读写PLC中数据,使用的语言是PB,我查看西门子提供的有关高级语言读写PLC的文献主要为C#和C++;看样子合作方无法实现PB和C#间的转换,开始跟我们要一个中间数据库!但是参考别的公司的项目,的确可以通过Simaticnet作为OPC媒介实现高级语言读写PLC,
请问:通过SimatiNet软件,是否满足合作方提出的所谓中间数据库的要求呢?最好能连带讲些相关知识!
请高手指点一下,比较急!谢谢
最佳答案
1.PowerBuilder,这个不需要C语言基础,主要用来开发数据库应用的,优点是开发的程序可以在各类数据库下工作,另外提供专业的数据库设计工具。
先从网上下载OPCDA20.EXE安装起来,然后从网上找个OPC控件包(有DACLTSDK.dll,DACLTSDK_ActiveX.ocx,OPC_AEPS.DLL,opccomn_ps.dll,opchda_ps.dll,OPCPROXY.DLL,OpcRcw.Comn.dll)拷贝到%WINDIR%\SySTem32文件夹下,然后执行命令注册:
REGSVR32/s%WINDIR%\System32\opccomn_ps.dll
REGSVR32/s%WINDIR%\System32\opcproxy.dll
REGSVR32/s%WINDIR%\System32\opc_aeps.dll
REGSVR32/s%WINDIR%\System32\opchda_ps.dll
REGSVR32/s%WINDIR%\System32\OpcRcw.Comn.dll
regsvr32/s%WINDIR%\System32\DACLTSDK_ActiveX.ocx
%WINDIR%\Opcenum/RegServer
在PB中创建一个opc控件,名字为ole_1,初始化
TRY
ifole_1.object.Connect(host,serverid)then
try
ifole_1.object.Addgroup("GROUP",updateRate)then
returntrue
else
returnfalse
endif
CATCH(runtimeerrorerAddgroup)
returnfalse
ENDTRY
else
returnfalse
endif
CATCH(runtimeerrorerConnect)
returnfalse
ENDTRY
然后加标签
TRY
IHandle=ole_1.object.AddItem(itemname)
ifIHandle>0then
returnIHandle
else
return0
endif
取值
Value=ole_1.object.readItem(IHandle)
其他详细参考资料见:htTP://hi.baidu.com/jiachang130/blog/item/5f8dfa3e3764e50cbba16776.html
参考资料:http://blog.tianya.cn/blogger/post_show.ASp?BlogID=2049916&PostID=21191751
提问者对于答案的评价:
感谢:lwp和T-C4!非常有指导的讲解!