最优的郑州网站建设,wordpress 动静,桂林网页制作,能在线做英语题目的网站初级代码游戏的专栏介绍与文章目录-CSDN博客
我的github#xff1a;codetoys#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C的#xff0c;可以在任何平台上使用。 不是教程#xff0c;是避坑指…初级代码游戏的专栏介绍与文章目录-CSDN博客
我的githubcodetoys所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C的可以在任何平台上使用。 不是教程是避坑指南。使用了S7-200smart和S7-1200这两款PLC。
目录
什么是snap7
下载
编译
S7-200smart准备
IP要弄清楚
数据准备
使用Snap7采集S7-200smart
S7-1200准备
使用Snap7采集1200
交叉编译 什么是snap7 snap7是个开源库用来访问西门子PLC的S7协议支持C/C以及很多很多别的语言别的是啥咱不关心。
下载 搜官网下载啦很简单的。
编译 下载过来的压缩包打开进到build目录看有说明文件非常简单明了。以后有闲可以整教程出来不过真的很简单啊我重点记录遇到的困难
S7-200smart准备
IP要弄清楚 设置IP并牢记。Setp7-micro/win smart的搜索功能不好用这可能是操作系统加强了网络安全的原因。通过IP能连接到PLC就算正常了。
数据准备 200smart的数据区是Vsnap7是不支持的。我的数据放在VB0和VB1用HSL可以读取虽然地址示例没有V但是可以用snap7没有对应的函数所以创建了一个数据块。 如何创建数据块 先连接PLC底部状态栏显示PLC地址和“已连接”。左侧树“数据块”“插入数据页”右侧下部“数据块”窗口倒数第三个图标像个“R”的“通过RAM创建数据块”自动根据内存创建数据块数据块索引究竟是0还是1不确定没有地方设置多尝试几个看看。创建完数据块要下载程序然后把PLC设置为运行状态然后就可以用读数据块的函数来读取数据了。 下载程序之后读取数据一直不变我还以为是静态的看了一眼PLC发现处于暂停状态启动之后就一切正常了。因为开始我有两个数据块所以后一个索引是1是可以理解的但是删除前一个之后仍然是1这也可以理解啊固定坑位模式吧所以这个不能猜要靠试。
使用Snap7采集S7-200smart Snap7编译结果只有一个so没有头文件。C的包装文件是一对h和cpp在代码示例里面相同位置有个client的文件是客户端的代码把这三个文件拿去用就可以了。 client.cpp有main函数改个名就能合在自己的项目里面了。 由于snap7并未明确支持S7-200smart所以有点麻烦。 实际测试发现参数要用01机架号和槽位下同以及连接类型要设置为3示例代码没有设置连接类型不然可能无法连接。200smart其实是没有机架号和槽位参数的。 HSL的200smart并不需要设置这些。C#就是强些我现在同时用C和C#C#确实舒服很多啊但是程序太大放不进设备没办法。 实测连接类型为3参数00和01正常05和10则无法连接。 实测参数00连接类型不设置无法连接连接类型0、1、4无法连接2、3正常连接。 至于测试代码除了client的测试就是用了读数据块的函数。
S7-1200准备 S7-1200连接比较容易用正确的参数0、1直接就连上了不正确连不上但是读数据始终出错HSL也报错此时PLC里面还是原来的程序看不太懂。然后下载了我自己的程序读取指定的数据块一样报错这就抓狂了看各种设置都正确的却始终无法读取最后搜到一个帖子说“恢复出厂设置能解决问题”于是就恢复出厂设置重新下载程序一切OK了。
使用Snap7采集1200 我的程序包含一个数据块索引为2总长度为26个字节。使用DBRead读取成功数据都正确但是要注意数据块是有范围的读取位置不能超出范围否则失败。 实测无需设置连接类型或者设置为1、2、30或4就不行了文档里说3-10都是“S7 basic”啊当然0确实不是有效值。
交叉编译 交叉编译到arm64只需要把common.mkbuild/unix下面里面的指令换一下就可以了很简单。arm v6、arm v7啥意思我不懂我还是用的x86_64_linux.mk实测程序正常运行。 这里是结束